Skip to content

Commit 79f3ffc

Browse files
authored
Merge branch 'GoodSpace-Kr:main' into main
2 parents 99b1c0a + ac3d288 commit 79f3ffc

42 files changed

Lines changed: 628 additions & 143 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/goodspace/backend/admin/dto/order/OrderInfoResponseDto.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
@Builder
1515
public record OrderInfoResponseDto(
1616
Long id,
17-
PaymentApproveResult approveResult,
17+
PaymentApproveResultResponseDto approveResult,
1818
DeliveryInfo deliveryInfo,
1919
OrderStatus status,
2020
LocalDateTime createAt,
@@ -26,10 +26,11 @@ public static OrderInfoResponseDto from(Order order) {
2626
.map(OrderCartItem::getItem)
2727
.map(ItemInfoResponseDto::from)
2828
.toList();
29+
PaymentApproveResult approveResult = order.getApproveResult();
2930

3031
return OrderInfoResponseDto.builder()
3132
.id(order.getId())
32-
.approveResult(order.getApproveResult())
33+
.approveResult(approveResult == null ? null : PaymentApproveResultResponseDto.from(approveResult))
3334
.deliveryInfo(order.getDeliveryInfo())
3435
.status(order.getOrderStatus())
3536
.createAt(order.getCreatedAt())
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
package goodspace.backend.admin.dto.order;
2+
3+
import goodspace.backend.order.domain.PaymentApproveResult;
4+
import lombok.Builder;
5+
6+
import java.util.List;
7+
8+
@Builder
9+
public record PaymentApproveResultResponseDto(
10+
String resultCode,
11+
String resultMsg,
12+
String tid,
13+
String cancelledTid,
14+
Long orderId,
15+
String ediDate,
16+
String signature,
17+
String status,
18+
String paidAt,
19+
String failedAt,
20+
String cancelledAt,
21+
String payMethod,
22+
Integer amount,
23+
Integer balanceAmt,
24+
String goodsName,
25+
String mallReserved,
26+
Boolean useEscrow,
27+
String currency,
28+
String channel,
29+
String approveNo,
30+
String buyerName,
31+
String buyerTel,
32+
String buyerEmail,
33+
String receiptUrl,
34+
String mallUserId,
35+
Boolean issuedCashReceipt,
36+
String cellphone,
37+
String messageSource,
38+
BankDto bank,
39+
List<CancelInfoDto> cancels,
40+
List<CashReceiptInfoDto> cashReceipts,
41+
VbankInfoDto vbank,
42+
CouponDto coupon,
43+
CardInfoDto card
44+
) {
45+
public static PaymentApproveResultResponseDto from(PaymentApproveResult approveResult) {
46+
return PaymentApproveResultResponseDto.builder()
47+
.resultCode(approveResult.getResultCode())
48+
.resultMsg(approveResult.getResultMsg())
49+
.tid(approveResult.getTid())
50+
.cancelledTid(approveResult.getCancelledTid())
51+
.orderId(approveResult.getOrderId())
52+
.ediDate(approveResult.getEdiDate())
53+
.signature(approveResult.getSignature())
54+
.status(approveResult.getStatus())
55+
.paidAt(approveResult.getPaidAt())
56+
.failedAt(approveResult.getFailedAt())
57+
.cancelledAt(approveResult.getCancelledAt())
58+
.payMethod(approveResult.getPayMethod())
59+
.amount(approveResult.getAmount())
60+
.balanceAmt(approveResult.getBalanceAmt())
61+
.goodsName(approveResult.getGoodsName())
62+
.mallReserved(approveResult.getMallReserved())
63+
.useEscrow(approveResult.getUseEscrow())
64+
.currency(approveResult.getCurrency())
65+
.channel(approveResult.getChannel())
66+
.approveNo(approveResult.getApproveNo())
67+
.buyerName(approveResult.getBuyerName())
68+
.buyerTel(approveResult.getBuyerTel())
69+
.buyerEmail(approveResult.getBuyerEmail())
70+
.receiptUrl(approveResult.getReceiptUrl())
71+
.mallUserId(approveResult.getMallUserId())
72+
.issuedCashReceipt(approveResult.getIssuedCashReceipt())
73+
.cellphone(approveResult.getCellphone())
74+
.messageSource(approveResult.getMessageSource())
75+
.bank(approveResult.getBank() != null ? BankDto.from(approveResult.getBank()) : null)
76+
.cancels(approveResult.getCancels() != null
77+
? approveResult.getCancels().stream().map(CancelInfoDto::from).toList()
78+
: null)
79+
.cashReceipts(approveResult.getCashReceipts() != null
80+
? approveResult.getCashReceipts().stream().map(CashReceiptInfoDto::from).toList()
81+
: null)
82+
.vbank(approveResult.getVbank() != null ? VbankInfoDto.from(approveResult.getVbank()) : null)
83+
.coupon(approveResult.getCoupon() != null ? CouponDto.from(approveResult.getCoupon()) : null)
84+
.card(approveResult.getCard() != null ? CardInfoDto.from(approveResult.getCard()) : null)
85+
.build();
86+
}
87+
88+
@Builder
89+
public record CancelInfoDto(
90+
String cancelDate,
91+
String cancelAmount,
92+
String cancelReason,
93+
String cancelType
94+
) {
95+
public static CancelInfoDto from(PaymentApproveResult.CancelInfo cancelInfo) {
96+
return CancelInfoDto.builder()
97+
.cancelDate(cancelInfo.getCancelDate())
98+
.cancelAmount(cancelInfo.getCancelAmount())
99+
.cancelReason(cancelInfo.getCancelReason())
100+
.cancelType(cancelInfo.getCancelType())
101+
.build();
102+
}
103+
}
104+
105+
@Builder
106+
public record CashReceiptInfoDto(
107+
String receiptId,
108+
String orgTid,
109+
String status,
110+
Integer amount,
111+
Integer taxFreeAmt,
112+
String receiptType,
113+
String issueNo,
114+
String receiptUrl
115+
) {
116+
public static CashReceiptInfoDto from(PaymentApproveResult.CashReceiptInfo info) {
117+
return CashReceiptInfoDto.builder()
118+
.receiptId(info.getReceiptId())
119+
.orgTid(info.getOrgTid())
120+
.status(info.getStatus())
121+
.amount(info.getAmount())
122+
.taxFreeAmt(info.getTaxFreeAmt())
123+
.receiptType(info.getReceiptType())
124+
.issueNo(info.getIssueNo())
125+
.receiptUrl(info.getReceiptUrl())
126+
.build();
127+
}
128+
}
129+
130+
@Builder
131+
public record CouponDto(
132+
int couponAmt
133+
) {
134+
public static CouponDto from(PaymentApproveResult.Coupon coupon) {
135+
return CouponDto.builder()
136+
.couponAmt(coupon.getCouponAmt())
137+
.build();
138+
}
139+
}
140+
141+
@Builder
142+
public record CardInfoDto(
143+
String cardCode,
144+
String cardName,
145+
String cardNum,
146+
int cardQuota,
147+
boolean interestFree,
148+
String cardType,
149+
boolean canPartCancel,
150+
String acquCardCode,
151+
String acquCardName
152+
) {
153+
public static CardInfoDto from(PaymentApproveResult.CardInfo cardInfo) {
154+
return CardInfoDto.builder()
155+
.cardCode(cardInfo.getCardCode())
156+
.cardName(cardInfo.getCardName())
157+
.cardNum(cardInfo.getCardNum())
158+
.cardQuota(cardInfo.getCardQuota())
159+
.interestFree(cardInfo.isInterestFree())
160+
.cardType(cardInfo.getCardType())
161+
.canPartCancel(cardInfo.isCanPartCancel())
162+
.acquCardCode(cardInfo.getAcquCardCode())
163+
.acquCardName(cardInfo.getAcquCardName())
164+
.build();
165+
}
166+
}
167+
168+
@Builder
169+
public record VbankInfoDto(
170+
String vbankName,
171+
String vbankNumber,
172+
String vbankCode,
173+
String vbankExpDate,
174+
String vbankHolder
175+
) {
176+
public static VbankInfoDto from(PaymentApproveResult.VbankInfo vbank) {
177+
return VbankInfoDto.builder()
178+
.vbankName(vbank.getVbankName())
179+
.vbankNumber(vbank.getVbankNumber())
180+
.vbankCode(vbank.getVbankCode())
181+
.vbankExpDate(vbank.getVbankExpDate())
182+
.vbankHolder(vbank.getVbankHolder())
183+
.build();
184+
}
185+
}
186+
187+
@Builder
188+
public record BankDto(
189+
String bankCode,
190+
String bankName
191+
) {
192+
public static BankDto from(PaymentApproveResult.Bank bank) {
193+
return BankDto.builder()
194+
.bankCode(bank.getBankCode())
195+
.bankName(bank.getBankName())
196+
.build();
197+
}
198+
}
199+
}

src/main/java/goodspace/backend/admin/image/ImageManager.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,5 @@ public interface ImageManager {
77

88
String createImageUrl(String prefixUrl, String fileName, MultipartFile image);
99

10-
void deleteImage(String imageUrl);
11-
1210
void updateImage(MultipartFile multipartFile, String imageUrl);
1311
}

src/main/java/goodspace/backend/admin/image/ImageManagerImpl.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import java.io.IOException;
88
import java.net.URI;
99
import java.net.URISyntaxException;
10-
import java.nio.file.*;
11-
import java.util.Base64;
10+
import java.nio.file.Files;
11+
import java.nio.file.Path;
12+
import java.nio.file.Paths;
13+
import java.nio.file.StandardCopyOption;
1214

1315
@Component
1416
public class ImageManagerImpl implements ImageManager {
@@ -55,16 +57,6 @@ public String createImageUrl(String prefixUrl, String fileName, MultipartFile im
5557
}
5658
}
5759

58-
@Override
59-
public void deleteImage(String imageUrl) {
60-
try {
61-
Path file = resolvePath(imageUrl);
62-
Files.deleteIfExists(file);
63-
} catch (IOException ex) {
64-
throw new RuntimeException("이미지 삭제에 실패했습니다.", ex);
65-
}
66-
}
67-
6860
@Override
6961
public void updateImage(MultipartFile multipartFile, String imageUrl) {
7062
if (multipartFile == null || multipartFile.isEmpty()) {
@@ -113,6 +105,15 @@ private ParsedUrl parseUrl(String imageUrl) {
113105
}
114106
}
115107

108+
private void deleteImage(String imageUrl) {
109+
try {
110+
Path file = resolvePath(imageUrl);
111+
Files.deleteIfExists(file);
112+
} catch (IOException ex) {
113+
throw new RuntimeException("이미지 삭제에 실패했습니다.", ex);
114+
}
115+
}
116+
116117
private String convertToRelativeUrl(String imageUrl) throws URISyntaxException {
117118
String path = imageUrl;
118119
if (path.startsWith("http://") || path.startsWith("https://")) {

src/main/java/goodspace/backend/admin/service/client/ClientManageServiceImpl.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import goodspace.backend.admin.image.ImageManager;
77
import goodspace.backend.client.domain.Client;
88
import goodspace.backend.client.domain.RegisterStatus;
9-
import goodspace.backend.global.domain.Item;
109
import goodspace.backend.client.repository.ClientRepository;
1110
import jakarta.persistence.EntityNotFoundException;
1211
import lombok.RequiredArgsConstructor;
@@ -92,23 +91,10 @@ public void delete(long clientId) {
9291
Client client = clientRepository.findById(clientId)
9392
.orElseThrow(CLIENT_NOT_FOUND);
9493

95-
removeEveryImage(client);
96-
9794
clientRepository.delete(client);
9895
}
9996

10097
private boolean hasImage(MultipartFile image) {
10198
return image != null && !image.isEmpty();
10299
}
103-
104-
private void removeEveryImage(Client client) {
105-
imageManager.deleteImage(client.getProfileImageUrl());
106-
imageManager.deleteImage(client.getBackgroundImageUrl());
107-
108-
for (Item item : client.getItems()) {
109-
for (String imageUrl : item.getImageUrls()) {
110-
imageManager.deleteImage(imageUrl);
111-
}
112-
}
113-
}
114100
}

src/main/java/goodspace/backend/admin/service/item/ItemManageServiceImpl.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44
import goodspace.backend.admin.dto.item.ItemInfoResponseDto;
55
import goodspace.backend.admin.dto.item.ItemRegisterRequestDto;
66
import goodspace.backend.admin.dto.item.ItemUpdateRequestDto;
7-
import goodspace.backend.admin.image.ImageManager;
87
import goodspace.backend.client.domain.Client;
98
import goodspace.backend.client.domain.RegisterStatus;
10-
import goodspace.backend.global.domain.Item;
119
import goodspace.backend.client.repository.ClientRepository;
10+
import goodspace.backend.global.domain.Item;
1211
import goodspace.backend.global.repository.ItemRepository;
1312
import jakarta.persistence.EntityNotFoundException;
1413
import lombok.RequiredArgsConstructor;
@@ -24,8 +23,6 @@ public class ItemManageServiceImpl implements ItemManageService {
2423
private static final Supplier<EntityNotFoundException> CLIENT_NOT_FOUND = () -> new EntityNotFoundException("클라이언트를 찾을 수 없습니다.");
2524
private static final Supplier<EntityNotFoundException> ITEM_NOT_FOUND = () -> new EntityNotFoundException("상품을 찾을 수 없습니다.");
2625

27-
private final ImageManager imageManager;
28-
2926
private final ClientRepository clientRepository;
3027
private final ItemRepository itemRepository;
3128

@@ -77,12 +74,8 @@ public void delete(ItemDeleteRequestDto requestDto) {
7774
.orElseThrow(CLIENT_NOT_FOUND);
7875
Item item = findItemFromClient(client, requestDto.itemId());
7976

80-
for (String imageUrl : item.getImageUrls()) {
81-
imageManager.deleteImage(imageUrl);
82-
}
83-
84-
item.removeEveryImages();
8577
client.removeItem(item);
78+
itemRepository.delete(item);
8679
}
8780

8881
private Item createItem(ItemRegisterRequestDto itemDto, RegisterStatus status) {

src/main/java/goodspace/backend/admin/service/itemImage/ItemImageManageServiceImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,7 @@ public void delete(ItemImageDeleteRequestDto requestDto) {
8888
.orElseThrow(ITEM_NOT_FOUND);
8989
ItemImage itemImage = findItemImageFromItem(item, requestDto.itemImageId());
9090

91-
imageManager.deleteImage(itemImage.getImageUrl());
92-
item.removeItemImage(itemImage);
91+
itemImageRepository.delete(itemImage);
9392
}
9493

9594
private ItemImage createEmptyItemImage(Item item) {

src/main/java/goodspace/backend/authorization/service/google/GoogleOAuthService.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.springframework.web.client.RestTemplate;
2020

2121
import java.net.URI;
22+
import java.util.List;
2223
import java.util.Map;
2324
import java.util.function.Supplier;
2425

@@ -108,8 +109,16 @@ private Map<String, String> getTokenParams(String code) {
108109
}
109110

110111
private ResponseEntity<String> sendTokenRequest(Map<String, String> params) {
111-
return new RestTemplate()
112-
.postForEntity(TOKEN_BASE_URL, params, String.class);
112+
HttpHeaders headers = new HttpHeaders();
113+
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
114+
headers.setAccept(List.of(MediaType.APPLICATION_JSON));
115+
116+
org.springframework.util.LinkedMultiValueMap<String, String> form = new org.springframework.util.LinkedMultiValueMap<>();
117+
form.setAll(params);
118+
119+
HttpEntity<org.springframework.util.MultiValueMap<String, String>> entity = new HttpEntity<>(form, headers);
120+
121+
return new RestTemplate().postForEntity(TOKEN_BASE_URL, entity, String.class);
113122
}
114123

115124
private String getAccessTokenFromResponse(ResponseEntity<String> responseEntity) {

0 commit comments

Comments
 (0)