Skip to content

Commit dd1a7d9

Browse files
authored
Merge pull request #78 from Leets-Official/feat#77
Feat #77 ์˜์ˆ˜์ฆ ์ˆ˜์ • ๊ธฐ๋Šฅ ์ถ”๊ฐ€
2 parents 9e56411 + e467330 commit dd1a7d9

File tree

7 files changed

+65
-20
lines changed

7 files changed

+65
-20
lines changed

โ€Žsrc/main/java/leets/weeth/domain/account/application/dto/ReceiptDTO.javaโ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,12 @@ public record Save(
2525
@NotNull Integer cardinal,
2626
@Valid List<@NotNull FileSaveRequest> files
2727
) {}
28+
29+
public record Update(
30+
String description,
31+
@NotNull Integer amount,
32+
@NotNull LocalDate date,
33+
@NotNull Integer cardinal,
34+
@Valid List<@NotNull FileSaveRequest> files
35+
) {}
2836
}
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package leets.weeth.domain.account.application.usecase;
22

33
import leets.weeth.domain.account.application.dto.ReceiptDTO;
4-
import org.springframework.web.multipart.MultipartFile;
5-
6-
import java.util.List;
74

85
public interface ReceiptUseCase {
96
void save(ReceiptDTO.Save dto);
107

8+
void update(Long receiptId, ReceiptDTO.Update dto);
9+
1110
void delete(Long id);
1211
}

โ€Žsrc/main/java/leets/weeth/domain/account/application/usecase/ReceiptUseCaseImpl.javaโ€Ž

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,14 @@
55
import leets.weeth.domain.account.application.mapper.ReceiptMapper;
66
import leets.weeth.domain.account.domain.entity.Account;
77
import leets.weeth.domain.account.domain.entity.Receipt;
8-
import leets.weeth.domain.account.domain.service.AccountGetService;
9-
import leets.weeth.domain.account.domain.service.ReceiptDeleteService;
10-
import leets.weeth.domain.account.domain.service.ReceiptGetService;
11-
import leets.weeth.domain.account.domain.service.ReceiptSaveService;
8+
import leets.weeth.domain.account.domain.service.*;
129
import leets.weeth.domain.file.application.mapper.FileMapper;
1310
import leets.weeth.domain.file.domain.entity.File;
1411
import leets.weeth.domain.file.domain.service.FileDeleteService;
1512
import leets.weeth.domain.file.domain.service.FileGetService;
1613
import leets.weeth.domain.file.domain.service.FileSaveService;
17-
import leets.weeth.domain.file.service.S3Service;
1814
import lombok.RequiredArgsConstructor;
1915
import org.springframework.stereotype.Service;
20-
import org.springframework.web.multipart.MultipartFile;
2116

2217
import java.util.List;
2318

@@ -28,6 +23,7 @@ public class ReceiptUseCaseImpl implements ReceiptUseCase {
2823
private final ReceiptGetService receiptGetService;
2924
private final ReceiptDeleteService receiptDeleteService;
3025
private final ReceiptSaveService receiptSaveService;
26+
private final ReceiptUpdateService receiptUpdateService;
3127
private final AccountGetService accountGetService;
3228

3329
private final FileGetService fileGetService;
@@ -49,6 +45,28 @@ public void save(ReceiptDTO.Save dto) {
4945
fileSaveService.save(files);
5046
}
5147

48+
@Override
49+
@Transactional
50+
public void update(Long receiptId, ReceiptDTO.Update dto){
51+
Account account = accountGetService.find(dto.cardinal());
52+
Receipt receipt = receiptGetService.find(receiptId);
53+
account.cancel(receipt);
54+
55+
if(!dto.files().isEmpty()){ // ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด ํŒŒ์ผ์„ ์ „์ฒด ์‚ญ์ œํ•œ ๋’ค ์ €์žฅ
56+
List<File> fileList = getFiles(receiptId);
57+
fileDeleteService.delete(fileList);
58+
59+
List<File> files = fileMapper.toFileList(dto.files(), receipt);
60+
fileSaveService.save(files);
61+
}
62+
receiptUpdateService.update(receipt, dto);
63+
account.spend(receipt);
64+
}
65+
66+
private List<File> getFiles(Long receiptId) {
67+
return fileGetService.findAllByReceipt(receiptId);
68+
}
69+
5270
@Override
5371
@Transactional
5472
public void delete(Long id) {

โ€Žsrc/main/java/leets/weeth/domain/account/domain/entity/Receipt.javaโ€Ž

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package leets.weeth.domain.account.domain.entity;
22

33
import jakarta.persistence.*;
4+
import leets.weeth.domain.account.application.dto.ReceiptDTO;
45
import leets.weeth.domain.file.converter.FileListConverter;
56
import leets.weeth.global.common.entity.BaseEntity;
67
import lombok.AccessLevel;
@@ -30,10 +31,13 @@ public class Receipt extends BaseEntity {
3031

3132
private LocalDate date;
3233

33-
@Convert(converter = FileListConverter.class)
34-
private List<String> images;
35-
3634
@ManyToOne
3735
@JoinColumn(name = "account_id")
3836
private Account account;
37+
38+
public void update(ReceiptDTO.Update dto){
39+
this.description = dto.description();
40+
this.amount = dto.amount();
41+
this.date = dto.date();
42+
}
3943
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package leets.weeth.domain.account.domain.service;
2+
3+
import leets.weeth.domain.account.application.dto.ReceiptDTO;
4+
import leets.weeth.domain.account.domain.entity.Receipt;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.stereotype.Service;
7+
8+
@Service
9+
@RequiredArgsConstructor
10+
public class ReceiptUpdateService {
11+
public void update(Receipt receipt, ReceiptDTO.Update dto) {
12+
receipt.update(dto);
13+
}
14+
}

โ€Žsrc/main/java/leets/weeth/domain/account/presentation/ReceiptAdminController.javaโ€Ž

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
package leets.weeth.domain.account.presentation;
22

3-
import static leets.weeth.domain.account.presentation.ResponseMessage.RECEIPT_DELETE_SUCCESS;
4-
import static leets.weeth.domain.account.presentation.ResponseMessage.RECEIPT_SAVE_SUCCESS;
5-
63
import io.swagger.v3.oas.annotations.Operation;
74
import io.swagger.v3.oas.annotations.tags.Tag;
85
import jakarta.validation.Valid;
96
import leets.weeth.domain.account.application.dto.ReceiptDTO;
107
import leets.weeth.domain.account.application.usecase.ReceiptUseCase;
118
import leets.weeth.global.common.response.CommonResponse;
129
import lombok.RequiredArgsConstructor;
13-
import org.springframework.http.MediaType;
1410
import org.springframework.web.bind.annotation.*;
15-
import org.springframework.web.multipart.MultipartFile;
16-
17-
import java.util.List;
11+
import static leets.weeth.domain.account.presentation.ResponseMessage.*;
1812

1913
@Tag(name = "ReceiptAdminController", description = "ํšŒ๋น„ ๋‚ด์—ญ ๊ด€๋ จ ์–ด๋“œ๋ฏผ ์ปจํŠธ๋กค๋Ÿฌ")
2014
@RestController
@@ -37,4 +31,11 @@ public CommonResponse<Void> delete(@PathVariable Long receiptId) {
3731
receiptUseCase.delete(receiptId);
3832
return CommonResponse.createSuccess(RECEIPT_DELETE_SUCCESS.getMessage());
3933
}
34+
35+
@PatchMapping("/{receiptId}")
36+
@Operation(summary="ํšŒ๋น„ ์‚ฌ์šฉ ๋‚ด์—ญ ์ˆ˜์ •")
37+
public CommonResponse<Void> update(@PathVariable Long receiptId, @RequestBody @Valid ReceiptDTO.Update dto) {
38+
receiptUseCase.update(receiptId, dto);
39+
return CommonResponse.createSuccess(RECEIPT_UPDATE_SUCCESS.getMessage());
40+
}
4041
}

โ€Žsrc/main/java/leets/weeth/domain/account/presentation/ResponseMessage.javaโ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public enum ResponseMessage {
1414

1515
// ReceiptAdminController ๊ด€๋ จ
1616
RECEIPT_SAVE_SUCCESS("์˜์ˆ˜์ฆ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."),
17-
RECEIPT_DELETE_SUCCESS("์˜์ˆ˜์ฆ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
17+
RECEIPT_DELETE_SUCCESS("์˜์ˆ˜์ฆ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."),
18+
RECEIPT_UPDATE_SUCCESS("์˜์ˆ˜์ฆ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
1819

1920
private final String message;
2021
}

0 commit comments

Comments
ย (0)