Compare commits
306 Commits
e4fc054a78
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ac836b5c6 | ||
|
|
fa3a84793f | ||
|
|
dd44db6c36 | ||
|
|
f1facf4612 | ||
|
|
92b9fc5df7 | ||
|
|
dbdca33aae | ||
|
|
eefe66a2e8 | ||
|
|
983d6f8069 | ||
|
|
dd2a26643f | ||
|
|
6ac4a735f6 | ||
|
|
ae684dcea4 | ||
|
|
fbd7b4758e | ||
|
|
4980c20c23 | ||
|
|
ebb473ea44 | ||
|
|
06f4fc1bcc | ||
|
|
9d53999ad4 | ||
|
|
1f61c6166d | ||
|
|
85bb5ec055 | ||
|
|
3a42bff138 | ||
|
|
53f5f0d3bb | ||
|
|
5fad79ea8a | ||
|
|
46b7a31d57 | ||
|
|
4e39452a01 | ||
|
|
7097616aa7 | ||
|
|
8f83f7c8df | ||
|
|
afcb21c435 | ||
|
|
a7bb3ec591 | ||
|
|
7e61bf91f2 | ||
|
|
9fcbc3d582 | ||
|
|
cc6599c9b4 | ||
|
|
c4ca12416a | ||
|
|
0311562483 | ||
|
|
ca8830256f | ||
|
|
40686ddba6 | ||
|
|
2dee0d76b2 | ||
|
|
5fd99d3bb1 | ||
|
|
cd8406094b | ||
|
|
07c145eee4 | ||
|
|
f2b57c5d00 | ||
|
|
dd7506d071 | ||
|
|
c311fb4a68 | ||
|
|
fa3c915183 | ||
|
|
1db509b04b | ||
|
|
51e7793f7b | ||
|
|
4088a38652 | ||
|
|
f79976b128 | ||
|
|
04d3506dd1 | ||
|
|
923bb4a1a4 | ||
|
|
f4df00c1d2 | ||
|
|
3458cfc963 | ||
|
|
8412f58b59 | ||
|
|
31fa5bf0ec | ||
|
|
afbc268b57 | ||
|
|
713bd6a64d | ||
|
|
5e4d837012 | ||
|
|
48af5d88f4 | ||
|
|
c96dde1323 | ||
|
|
00c5235366 | ||
|
|
64fcbdefea | ||
|
|
dee18f8605 | ||
|
|
331587ee56 | ||
|
|
dbe74eeb36 | ||
|
|
c5948e87ec | ||
|
|
44bc0104ce | ||
|
|
ec3718a2c4 | ||
|
|
89249429ad | ||
|
|
16b1ad14f4 | ||
|
|
cba5e39c8e | ||
|
|
5be8b39cd7 | ||
|
|
efda4e8471 | ||
|
|
edfd9e2474 | ||
|
|
02c35d87d2 | ||
|
|
ca00a15c57 | ||
|
|
2b2d00cdd0 | ||
|
|
ed4d0a98a7 | ||
|
|
5f90985157 | ||
|
|
49c8d6c20c | ||
|
|
1c3238a7b4 | ||
|
|
480a9997f3 | ||
|
|
de1dc3cea5 | ||
|
|
6bb7c4928d | ||
|
|
ee95e09d12 | ||
|
|
3ab6988fb8 | ||
|
|
beb9fbab7b | ||
|
|
b00534af6b | ||
|
|
3eda19f6fd | ||
|
|
3e2ebaabc8 | ||
|
|
04ee9f1275 | ||
|
|
9b2fdee768 | ||
|
|
913e5bd678 | ||
|
|
465cde8a16 | ||
|
|
923d74d37a | ||
|
|
2ec020ecd4 | ||
|
|
d55f52b752 | ||
|
|
3cddf4e038 | ||
|
|
99bbfec448 | ||
|
|
25fcfc3555 | ||
|
|
e298e9066c | ||
|
|
3668cc89b2 | ||
|
|
de463cbb8f | ||
|
|
e293ffe451 | ||
|
|
262c9ba03e | ||
|
|
acb8d314d9 | ||
|
|
45c85b6079 | ||
|
|
7be7a8851d | ||
|
|
f590507308 | ||
|
|
1e1ee301d6 | ||
|
|
472d5b07e9 | ||
|
|
6ea1568800 | ||
|
|
c08a3d3a90 | ||
|
|
edcf9f7ad7 | ||
|
|
5a5e9944da | ||
|
|
7805d58c94 | ||
|
|
77fb6d7e19 | ||
|
|
893a208c82 | ||
|
|
e5e4a72577 | ||
|
|
5da6ad42d0 | ||
|
|
f4370db796 | ||
|
|
8294c9c591 | ||
|
|
7e54dd22f9 | ||
|
|
5997dc8de8 | ||
|
|
99a3c126f6 | ||
|
|
fd419494b4 | ||
|
|
737ee90122 | ||
|
|
e282db97ed | ||
|
|
c014f00a13 | ||
|
|
2d777adeb6 | ||
|
|
5d94218e98 | ||
|
|
e4b5803f24 | ||
|
|
16c373cb14 | ||
|
|
59cf8da8e4 | ||
|
|
9cc4a26f0f | ||
|
|
3fbd19a1e7 | ||
|
|
f3918ed7b1 | ||
|
|
903374cbee | ||
|
|
891b0a7f4f | ||
|
|
fd385fe898 | ||
|
|
6bf80ca297 | ||
|
|
b0d1060dd7 | ||
|
|
d4d47751c0 | ||
|
|
16662c9e33 | ||
|
|
e649dc3eca | ||
|
|
174657ac2c | ||
|
|
739cd09e1a | ||
|
|
5bce776193 | ||
|
|
a6fdcbe2fb | ||
|
|
3d91eb6e52 | ||
|
|
8f1a53d048 | ||
|
|
70bf2e68dd | ||
|
|
c43eea70c5 | ||
|
|
60314eb74f | ||
|
|
08397d4e0a | ||
|
|
18bcf1e9de | ||
|
|
6505bfd975 | ||
|
|
21fb2f49d6 | ||
|
|
060ccf4e36 | ||
|
|
a26dcabe4a | ||
|
|
500dba1467 | ||
|
|
bbe2e20e4f | ||
|
|
2ecfaf72c9 | ||
|
|
017211f121 | ||
|
|
02e46d49e9 | ||
|
|
a08c67f7ff | ||
|
|
9807d160cd | ||
|
|
c68400a4e6 | ||
|
|
27ca12d172 | ||
|
|
329b1f4b4c | ||
|
|
8c63f6e8cf | ||
|
|
da46a84a69 | ||
|
|
d49666bac0 | ||
|
|
eff6ce35bd | ||
|
|
c78197583f | ||
|
|
b0c35f531f | ||
|
|
16523bba0a | ||
|
|
81757e1217 | ||
|
|
28a4552815 | ||
|
|
54b7b3ee45 | ||
|
|
7bfcae2f99 | ||
|
|
45202b0006 | ||
|
|
3fc2d38980 | ||
|
|
9722f2135f | ||
|
|
920ba7de31 | ||
|
|
7e13117ad4 | ||
|
|
46755ce33d | ||
|
|
da27656993 | ||
|
|
c02fc822ea | ||
|
|
7cb633a784 | ||
|
|
165d8c244f | ||
|
|
ef77395a37 | ||
|
|
b9749e8162 | ||
|
|
bb5dd223c9 | ||
|
|
cac103e3ec | ||
|
|
eda43b3d17 | ||
|
|
14fb6f8328 | ||
|
|
a1d95d1e01 | ||
|
|
b42eee8e8e | ||
|
|
71914f125e | ||
|
|
ce15736c9d | ||
|
|
81b9a872db | ||
|
|
576c5c5734 | ||
|
|
ce9b1c1bfc | ||
|
|
657ecc9d2e | ||
|
|
21c074500d | ||
|
|
1f96164136 | ||
|
|
85e1922188 | ||
|
|
9f8e6408aa | ||
|
|
308c515038 | ||
|
|
87b9da9475 | ||
|
|
3e430345ab | ||
|
|
f97b553071 | ||
|
|
c8c90d8d56 | ||
|
|
b059648cf0 | ||
|
|
e24049ae22 | ||
|
|
2738b519a4 | ||
|
|
e68507a5b5 | ||
|
|
b54c127330 | ||
|
|
92ab84e7f3 | ||
|
|
e40b140926 | ||
|
|
0718316c84 | ||
|
|
2f31b9b306 | ||
|
|
031a05ed03 | ||
|
|
089210a16e | ||
|
|
9d376958b7 | ||
|
|
c418d01f46 | ||
|
|
e648e7462d | ||
|
|
0bbd8e3891 | ||
|
|
a9c717e24c | ||
|
|
60ff733d4d | ||
|
|
21115a9c34 | ||
|
|
946f1f9a95 | ||
|
|
2274326754 | ||
|
|
ff6a4146c9 | ||
|
|
e567b3bbbc | ||
|
|
cb9c22ec5b | ||
|
|
925282fa2b | ||
|
|
56b1f70ce9 | ||
|
|
4bf7b05081 | ||
|
|
30025eaaad | ||
|
|
e6f8d4a5f1 | ||
|
|
c776165df5 | ||
|
|
f9f561d05a | ||
|
|
105da88530 | ||
|
|
58a1931f90 | ||
|
|
18a08fc439 | ||
|
|
43d819d5a1 | ||
|
|
86c0b9cd10 | ||
|
|
9f7916d913 | ||
|
|
cb4c9e6d97 | ||
|
|
497545f730 | ||
|
|
9301624be5 | ||
|
|
a88977dd6d | ||
|
|
8d4aa4277f | ||
|
|
936bfcb6a7 | ||
|
|
92347d3304 | ||
|
|
194d626b62 | ||
|
|
a9e098b238 | ||
|
|
eac94e1e2b | ||
|
|
9b9b28ede4 | ||
|
|
649f1d4ed6 | ||
|
|
ccde39374d | ||
|
|
71fe6c9a9a | ||
|
|
0f7938eec7 | ||
|
|
bff3e3f0c9 | ||
|
|
ef4b40682a | ||
|
|
f00a4eff6b | ||
|
|
cbb31223f1 | ||
|
|
3332952125 | ||
|
|
83aa30e4f5 | ||
|
|
ef37efc226 | ||
|
|
c39b50bf82 | ||
|
|
08240b57bc | ||
|
|
13fe17484d | ||
|
|
0bb0ad9102 | ||
|
|
9275c9189e | ||
|
|
31eeaec62c | ||
|
|
94f853d71d | ||
|
|
9d382d91ce | ||
|
|
80d8447eae | ||
|
|
59985dcede | ||
|
|
52f9c11244 | ||
|
|
09f40f62e2 | ||
|
|
569d5e8904 | ||
|
|
66df63b232 | ||
|
|
6c55f53647 | ||
|
|
fd5fb1db80 | ||
|
|
ac27213169 | ||
|
|
33bb861300 | ||
|
|
367ade4bad | ||
|
|
784ea1a6aa | ||
|
|
92a50f7b39 | ||
|
|
4a91b40254 | ||
|
|
6e48c10f60 | ||
|
|
5ac14532e2 | ||
|
|
93a00f0ac6 | ||
|
|
a434e3eade | ||
|
|
ed20ff652f | ||
|
|
9a61e308e1 | ||
|
|
dbaf3d8dfe | ||
|
|
7e98b7acfb | ||
|
|
2632b23056 | ||
|
|
0c2be2d1d2 | ||
|
|
1df2a1ab65 | ||
|
|
3a00e1ab65 | ||
|
|
f248c38d72 | ||
|
|
8bc5302f4f | ||
|
|
4b0b0b3c63 |
34
Jenkinsfile
vendored
34
Jenkinsfile
vendored
@@ -84,6 +84,26 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage('Web Server block activate') {
|
||||
when {
|
||||
expression { params.DEPLOY_TARGET in ['ALL', 'WAS_ONLY'] }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
// Nginx 서버에 점검 페이지로 블록 설정
|
||||
sshCommand remote: [
|
||||
name: 'Nginx Server',
|
||||
host: "${env.NGINX_SERVER_IP}",
|
||||
user: "${env.NGINX_USER}",
|
||||
identityFile: "${env.SSH_KEY_PATH}",
|
||||
allowAnyHosts: true
|
||||
], command: "/etc/nginx/weboff.sh"
|
||||
|
||||
echo "점검 web서버 config 구동"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare and Deploy Static Resources') {
|
||||
when {
|
||||
expression { params.DEPLOY_TARGET in ['ALL', 'WEB_ONLY'] }
|
||||
@@ -254,6 +274,20 @@ pipeline {
|
||||
${env.TOMCAT_HOME}/bin/startup.sh
|
||||
"""
|
||||
|
||||
// Nginx 서버에 정상 페이지로 블록 해제
|
||||
sshCommand remote: [
|
||||
name: 'Nginx Server',
|
||||
host: "${env.NGINX_SERVER_IP}",
|
||||
user: "${env.NGINX_USER}",
|
||||
identityFile: "${env.SSH_KEY_PATH}",
|
||||
allowAnyHosts: true
|
||||
], command: """
|
||||
sleep 30
|
||||
/etc/nginx/webon.sh
|
||||
"""
|
||||
|
||||
echo "점검 web서버 config 구동"
|
||||
|
||||
echo "Deploy 완료 (${params.ENVIRONMENT} 환경, ${env.GIT_BRANCH} 브랜치)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,8 @@ dependencies {
|
||||
runtimeOnly("io.jsonwebtoken:jjwt-impl:0.11.5")
|
||||
implementation("io.jsonwebtoken:jjwt-jackson:0.11.5")
|
||||
|
||||
|
||||
// stripe
|
||||
implementation "com.stripe:stripe-java:33.4.0"
|
||||
}
|
||||
|
||||
ext {
|
||||
|
||||
@@ -52,6 +52,9 @@ public interface BOMaMtngMapper {
|
||||
/** 주문 전 쿠폰정보 재확인*/
|
||||
public List<String> selectBOPreOrderValidationCouponList(BOPreOrderValidVO goods);
|
||||
|
||||
/** 구독서비스 주문 전 주문정보 재확인*/
|
||||
public List<DataMap> selectBOSubsvcPreOrderValidation(BOPreOrderValidVO goods);
|
||||
|
||||
/*쇼핑몰 구매요청 재검증 확인 여부*/
|
||||
public String selectPurchsValidUseAt(String sopmalCd);
|
||||
}
|
||||
|
||||
@@ -282,6 +282,9 @@ public class BOMaMtngService {
|
||||
int useMlgAmt = Integer.parseInt(goodsList.get(0).getUseMlgAmt());
|
||||
int useCashMlgAmt = Integer.parseInt(goodsList.get(0).getUseCashMlgAmt());
|
||||
Set<String> validKeys = new HashSet<>(); // 변경 구매정보 리스트
|
||||
InventoryShortageMessage inventoryMessage = new InventoryShortageMessage();
|
||||
Set<String> validationKeys = Arrays.stream(PurchsValidCode.values())
|
||||
.map(PurchsValidCode::getCode).collect(Collectors.toSet());
|
||||
|
||||
//마일리지 잔액 확인
|
||||
BOMlgSrchVO mlgVo = new BOMlgSrchVO();
|
||||
@@ -306,19 +309,25 @@ public class BOMaMtngService {
|
||||
}
|
||||
|
||||
for(BOPreOrderValidVO goods : goodsList) {
|
||||
|
||||
List<DataMap> resultValid = mapper.selectBOPreOrderValidation(goods);
|
||||
List<DataMap> resultValid = new ArrayList<>();
|
||||
if(goods.getSubsvcInnb() != "") {
|
||||
resultValid = mapper.selectBOSubsvcPreOrderValidation(goods);
|
||||
} else {
|
||||
resultValid = mapper.selectBOPreOrderValidation(goods);
|
||||
}
|
||||
|
||||
//구매정보 변경대상 필터링
|
||||
// 값이 1인 항목 == 변경항목
|
||||
List<String> rs = resultValid.stream()
|
||||
.flatMap(map -> map.entrySet().stream())
|
||||
.filter(entry -> validationKeys.contains(entry.getKey()))
|
||||
.filter(entry -> "1".equals(StringUtil.isNullToString(entry.getValue())))
|
||||
.map(entry -> StringUtil.isNullToString(entry.getKey()))
|
||||
.toList();
|
||||
|
||||
//구매정보 변경유형 저장
|
||||
validKeys.addAll(rs);
|
||||
inventoryMessage.add(goods, resultValid);
|
||||
|
||||
}
|
||||
|
||||
@@ -334,7 +343,9 @@ public class BOMaMtngService {
|
||||
StringBuilder returnMsg = new StringBuilder();
|
||||
|
||||
//상품구매수량제한걸렸을 경우
|
||||
if(validKeys.contains("purchsQyLmtt")){
|
||||
if (inventoryMessage.hasShortages()) {
|
||||
returnMsg.append(inventoryMessage.render());
|
||||
}else if(validKeys.contains("purchsQyLmtt")){
|
||||
|
||||
returnMsg.append("구매수량 제한 상품입니다.");
|
||||
returnMsg.append(System.lineSeparator()); //줄바꿈
|
||||
@@ -473,12 +484,14 @@ public class BOMaMtngService {
|
||||
goodsList.forEach(goods -> {
|
||||
|
||||
String goodsInnb = StringUtil.isNullToString(goods.get("goodsInnb"));
|
||||
|
||||
String subsvcInnb = StringUtil.isNullToString(goods.get("subsvcInnb"));
|
||||
|
||||
//상품별 수량합계
|
||||
int goodsTotalQy = 0;
|
||||
if(qySums.containsKey(goodsInnb)){
|
||||
goodsTotalQy = qySums.getOrDefault(goodsInnb, 0);
|
||||
} else if (qySums.containsKey(subsvcInnb)) {
|
||||
goodsTotalQy = qySums.getOrDefault(subsvcInnb, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -513,7 +526,10 @@ public class BOMaMtngService {
|
||||
BOPreOrderValidVO.builder()
|
||||
.sopmalCd(StringUtil.isNullToString(goods.get("sopmalCd")))
|
||||
.goodsInnb(StringUtil.isNullToString(goods.get("goodsInnb")))
|
||||
.goodsNm(StringUtil.isNullToString(goods.get("goodsNm")))
|
||||
.optionNm(StringUtil.isNullToString(goods.get("option")))
|
||||
.goodsOptnInnb(StringUtil.isNullToString(goods.get("goodsOptnInnb")))
|
||||
.subsvcInnb(StringUtil.isNullToString(goods.get("subsvcInnb")))
|
||||
.mbrInnb(StringUtil.isNullToString(goods.get("mbrInnb")))
|
||||
.mbrDvCd(StringUtil.isNullToString(goods.get("mbrDvCd")))
|
||||
.qy(StringUtil.isNullToString(goods.get("qy")))
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.wb.domainserver.domain.admin.instcSle.mtng.service;
|
||||
|
||||
import com.wb.domainserver.domain.admin.instcSle.mtng.vo.BOPreOrderValidVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/** 재고 판정은 변경하지 않고 조회된 재고 수량으로 안내문만 구성한다. */
|
||||
final class InventoryShortageMessage {
|
||||
private final Map<String, Goods> goodsById = new LinkedHashMap<>();
|
||||
|
||||
void add(BOPreOrderValidVO request, List<DataMap> rows) {
|
||||
if (rows.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
boolean subscription = StringUtils.hasText(request.getSubsvcInnb());
|
||||
String key = request.getSopmalCd() + ":" + (subscription
|
||||
? "subscription:" + request.getSubsvcInnb() : "goods:" + request.getGoodsInnb());
|
||||
Goods goods = goodsById.computeIfAbsent(key, ignored -> new Goods());
|
||||
goods.name = StringUtils.hasText(request.getGoodsNm()) ? request.getGoodsNm()
|
||||
: "상품번호 " + request.getGoodsInnb();
|
||||
goods.requested = request.getGoodsTotalQy();
|
||||
goods.unit = "SK".equals(request.getSopmalCd()) ? "병" : "개";
|
||||
String optionKey = subscription ? request.getSubsvcInnb() : request.getGoodsOptnInnb();
|
||||
Option option = goods.options.computeIfAbsent(optionKey, ignored -> new Option());
|
||||
option.name = StringUtils.hasText(request.getOptionNm()) ? request.getOptionNm()
|
||||
: "옵션번호 " + request.getGoodsOptnInnb();
|
||||
option.requested += Long.parseLong(request.getQy());
|
||||
for (DataMap row : rows) {
|
||||
if (row.get("stockGoodsNm") != null && StringUtils.hasText(row.get("stockGoodsNm").toString())) {
|
||||
goods.name = String.valueOf(row.get("stockGoodsNm"));
|
||||
}
|
||||
goods.shortage |= "1".equals(String.valueOf(row.get("invntry")))
|
||||
|| "1".equals(String.valueOf(row.get("invntryPolicy")));
|
||||
option.available = minimum(option.available, row.get("optionAvailableQy"));
|
||||
goods.available = minimum(goods.available, row.get("goodsAvailableQy"));
|
||||
}
|
||||
}
|
||||
|
||||
boolean hasShortages() {
|
||||
return goodsById.values().stream().anyMatch(goods -> goods.shortage);
|
||||
}
|
||||
|
||||
String render() {
|
||||
StringBuilder message = new StringBuilder("다음 상품의 구매 가능한 재고가 부족합니다.");
|
||||
boolean sharedLimit = false;
|
||||
for (Goods goods : goodsById.values()) {
|
||||
if (!goods.shortage) {
|
||||
continue;
|
||||
}
|
||||
message.append("\n\n· ").append(goods.name);
|
||||
if (goods.options.size() == 1) {
|
||||
Option option = goods.options.values().iterator().next();
|
||||
message.append("\n 주문 수량: ").append(goods.requested)
|
||||
.append(goods.unit).append(" / 현재 구매 가능: ")
|
||||
.append(quantity(minimum(option.available, goods.available), goods.unit));
|
||||
} else {
|
||||
sharedLimit = true;
|
||||
message.append("\n 총 주문 수량: ").append(goods.requested)
|
||||
.append(goods.unit).append(" / 상품 전체 재고 한도: ").append(quantity(goods.available, goods.unit));
|
||||
for (Option option : goods.options.values()) {
|
||||
message.append("\n - ").append(option.name).append(": 주문 ")
|
||||
.append(option.requested).append(goods.unit).append(" / 옵션별 구매 가능 ")
|
||||
.append(quantity(minimum(option.available, goods.available), goods.unit));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sharedLimit) {
|
||||
message.append("\n\n옵션별 가능 수량은 상품 전체 재고 한도 안에서 함께 적용됩니다.");
|
||||
}
|
||||
return message.append("\n\n주문 수량을 줄이거나 해당 상품을 제외한 후 다시 주문해 주세요.").toString();
|
||||
}
|
||||
|
||||
private static Long minimum(Long current, Object value) {
|
||||
if (value == null) {
|
||||
return current;
|
||||
}
|
||||
long quantity = Math.max(0L, Long.parseLong(value.toString()));
|
||||
return current == null ? quantity : Math.min(current, quantity);
|
||||
}
|
||||
|
||||
private static String quantity(Long value, String unit) {
|
||||
return value == null ? "확인 불가" : value + unit;
|
||||
}
|
||||
|
||||
private static final class Goods {
|
||||
String name;
|
||||
String unit;
|
||||
long requested;
|
||||
Long available;
|
||||
boolean shortage;
|
||||
final Map<String, Option> options = new LinkedHashMap<>();
|
||||
}
|
||||
|
||||
private static final class Option {
|
||||
String name;
|
||||
long requested;
|
||||
Long available;
|
||||
}
|
||||
}
|
||||
@@ -21,9 +21,16 @@ public class BOPreOrderValidVO {
|
||||
/*상품고유번호*/
|
||||
private String goodsInnb;
|
||||
|
||||
private String goodsNm;
|
||||
|
||||
private String optionNm;
|
||||
|
||||
/*상품옵션고유번호*/
|
||||
private String goodsOptnInnb;
|
||||
|
||||
/*구독서비스고유번호*/
|
||||
private String subsvcInnb;
|
||||
|
||||
/*회원고유번호*/
|
||||
private String mbrInnb;
|
||||
|
||||
|
||||
@@ -3,13 +3,13 @@ package com.wb.domainserver.domain.admin.store.sopmal.mapper;
|
||||
import java.util.List;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.Shop;
|
||||
import com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO;
|
||||
import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BOCouponVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOShopSetupVO;
|
||||
import com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
|
||||
/**
|
||||
@@ -81,6 +81,10 @@ public interface BOMaSopmalMapper {
|
||||
|
||||
public int updateBOSopmalUpdt(BOMaSopmalVO vo);
|
||||
|
||||
public int updateBOExchngrtSetup(BOMaSopmalVO vo);
|
||||
|
||||
public int updateBOGuidanceSetup(BOMaSopmalVO vo);
|
||||
|
||||
public int deteteBOShopFamilySite(BOMaSopmalVO vo);
|
||||
|
||||
public int deteteBOShopClause(BOMaSopmalVO vo);
|
||||
@@ -199,4 +203,7 @@ public interface BOMaSopmalMapper {
|
||||
|
||||
/*전체 쇼핑몰 목록*/
|
||||
List<DataMap> selectSopmalList();
|
||||
|
||||
// XML 수정 임시
|
||||
public List<DataMap> selectSitemapXml(String sopmalCd);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO;
|
||||
import com.wb.domainserver.domain.gcone.goods.goodsinfo.mapper.BOGoodsinfoMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.text.StringEscapeUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -437,39 +438,12 @@ public class BOMaSopmalService {
|
||||
log.debug("masopmal {}", vo);
|
||||
// update payLink
|
||||
mapper.updateBOShopPayLink(vo);
|
||||
// PC 결제 정보
|
||||
String pcSetleType = vo.getPcSetleTypeList();
|
||||
String[] pcSetleTypeArr = null;
|
||||
DataMap pcSetleInfoDm = new DataMap();
|
||||
if (!StringUtil.isEmpty(pcSetleType)) {
|
||||
pcSetleTypeArr = StringUtil.split(pcSetleType, "$");
|
||||
pcSetleInfoDm = ynSetParam(pcSetleTypeArr);
|
||||
pcSetleInfoDm.put("updusr", vo.getUpdusr());
|
||||
pcSetleInfoDm.put("setleInfoInnb", vo.getPcSetleInfoInnb());
|
||||
mapper.updateBOShopPayInfo(pcSetleInfoDm);
|
||||
} else {
|
||||
pcSetleInfoDm = ynSetParam(pcSetleTypeArr);
|
||||
pcSetleInfoDm.put("updusr", vo.getUpdusr());
|
||||
pcSetleInfoDm.put("setleInfoInnb", vo.getPcSetleInfoInnb());
|
||||
mapper.updateBOShopPayInfo(pcSetleInfoDm);
|
||||
}
|
||||
|
||||
// MOBILE 결제 정보
|
||||
String mobileSetleType = vo.getMobileSetleTypeList();
|
||||
String[] mobileSetleTypeArr = null;
|
||||
DataMap mobileSetleInfoDm = new DataMap();
|
||||
if (!StringUtil.isEmpty(mobileSetleType)) {
|
||||
mobileSetleTypeArr = StringUtil.split(mobileSetleType, "$");
|
||||
mobileSetleInfoDm = ynSetParam(mobileSetleTypeArr);
|
||||
mobileSetleInfoDm.put("updusr", vo.getUpdusr());
|
||||
mobileSetleInfoDm.put("setleInfoInnb", vo.getMobileSetleInfoInnb());
|
||||
mapper.updateBOShopPayInfo(mobileSetleInfoDm);
|
||||
} else {
|
||||
mobileSetleInfoDm = ynSetParam(mobileSetleTypeArr);
|
||||
mobileSetleInfoDm.put("updusr", vo.getUpdusr());
|
||||
mobileSetleInfoDm.put("setleInfoInnb", vo.getMobileSetleInfoInnb());
|
||||
mapper.updateBOShopPayInfo(mobileSetleInfoDm);
|
||||
}
|
||||
// 결제 정보 업데이트
|
||||
updateSetleInfo(vo.getPcSetleTypeList(), vo.getPcSetleInfoInnb(), vo.getUpdusr()); // PC
|
||||
updateSetleInfo(vo.getMobileSetleTypeList(), vo.getMobileSetleInfoInnb(), vo.getUpdusr()); // MOBILE
|
||||
updateSetleInfo(vo.getPcSubsvcSetleTypeList(), vo.getPcSubsvcSetleInfoInnb(), vo.getUpdusr()); // 구독서비스 PC
|
||||
updateSetleInfo(vo.getMobileSubsvcSetleTypeList(), vo.getMobileSubsvcSetleInfoInnb(), vo.getUpdusr()); // 구독서비스 MOBILE
|
||||
|
||||
if (!ObjectUtils.isEmpty(vo.getFamilySiteNmArr())) {
|
||||
String[] siteNm = vo.getFamilySiteNmArr();
|
||||
@@ -523,6 +497,26 @@ public class BOMaSopmalService {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 결제정보 업데이트
|
||||
* @param setleType 결제정보 List
|
||||
* @param setleInfoInnb 결제정보 고유번호
|
||||
* @param updusr 수정자 고유번호
|
||||
*/
|
||||
private void updateSetleInfo(String setleType, String setleInfoInnb, int updusr) {
|
||||
String[] setleTypeArr = null;
|
||||
|
||||
if (!StringUtil.isEmpty(setleType)) {
|
||||
setleTypeArr = StringUtil.split(setleType, "$");
|
||||
}
|
||||
|
||||
DataMap dm = ynSetParam(setleTypeArr);
|
||||
dm.put("updusr", updusr);
|
||||
dm.put("setleInfoInnb", setleInfoInnb);
|
||||
|
||||
mapper.updateBOShopPayInfo(dm);
|
||||
}
|
||||
|
||||
private void setBOMaSopmalVO(BOMaSopmalVO vo) {
|
||||
|
||||
if(!StringUtil.isEmpty(vo.getSmsAtmcSndngLmttBgntme()))
|
||||
@@ -849,6 +843,7 @@ public class BOMaSopmalService {
|
||||
mapping.put("memor", "MEMOR_USE_AT");
|
||||
mapping.put("npay", "NPAY_USE_AT");
|
||||
mapping.put("kpay", "KPAY_USE_AT");
|
||||
mapping.put("stripe", "STRIPE_USE_AT");
|
||||
|
||||
// 모든 매핑된 값의 기본값을 "N"으로 설정
|
||||
for (String key : mapping.values()) {
|
||||
@@ -991,4 +986,43 @@ public class BOMaSopmalService {
|
||||
return mapper.selectSopmalList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 사이트맵 XML
|
||||
* @param sopmalCd
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
public String selectSitemapXml(String sopmalCd) {
|
||||
List<DataMap> resultList = new ArrayList<>();
|
||||
StringBuilder xml = new StringBuilder();
|
||||
|
||||
try {
|
||||
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
|
||||
xml.append("<?xml-stylesheet type=\"text/css\" href=\"https://www.xml-sitemaps.com/css/sitemap.css\"?>");
|
||||
xml.append("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n");
|
||||
|
||||
resultList = mapper.selectSitemapXml(sopmalCd);
|
||||
for (DataMap data : resultList) {
|
||||
xml.append(" <url>");
|
||||
xml.append(" <loc>")
|
||||
.append(StringEscapeUtils.escapeXml11(String.valueOf(data.get("targetUrl"))))
|
||||
.append("</loc>");
|
||||
xml.append(" <lastmod>")
|
||||
.append(StringEscapeUtils.escapeXml11(String.valueOf(data.get("lastModified"))))
|
||||
.append("</lastmod>");
|
||||
xml.append(" <priority>")
|
||||
.append(StringEscapeUtils.escapeXml11(String.valueOf(data.get("priority"))))
|
||||
.append("</priority>");
|
||||
xml.append(" </url>");
|
||||
}
|
||||
|
||||
xml.append("</urlset>");
|
||||
} catch (WnbtRestException wre){
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
return xml.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -483,12 +483,24 @@ public class BOMaSopmalVO extends AbstractVO {
|
||||
/** mobile 결제정보 List */
|
||||
private String mobileSetleTypeList;
|
||||
|
||||
/** 구독서비스 pc 결제정보 List */
|
||||
private String pcSubsvcSetleTypeList;
|
||||
|
||||
/** 구독서비스 mobile 결제정보 List */
|
||||
private String mobileSubsvcSetleTypeList;
|
||||
|
||||
/** pc 결제정보 Innb */
|
||||
private String pcSetleInfoInnb;
|
||||
|
||||
/** mobile 결제정보 Innb */
|
||||
private String mobileSetleInfoInnb;
|
||||
|
||||
/** 구독서비스 pc 결제정보 Innb */
|
||||
private String pcSubsvcSetleInfoInnb;
|
||||
|
||||
/** 구독서비스 mobile 결제정보 Innb */
|
||||
private String mobileSubsvcSetleInfoInnb;
|
||||
|
||||
/** 회원가입 안내 타이틀 */
|
||||
private String joinGuidanceSj;
|
||||
|
||||
|
||||
@@ -393,6 +393,7 @@ public class BOBbsService {
|
||||
if (vo.getBbscttRedngAuthorDvCd() != null && "01".equals(vo.getBbscttRedngAuthorDvCd())) {
|
||||
vo.setBbscttRedngAuthorDvCd("[all]");
|
||||
} else if (vo.getBbscttRedngAuthorDvCd() != null && "02".equals(vo.getBbscttRedngAuthorDvCd())) {
|
||||
validateMemberGradeSelection(vo.getBbscttRedngAuthorDvCd_c(), "게시판 읽기");
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String mbrInnb : vo.getBbscttRedngAuthorDvCd_c()) {
|
||||
@@ -431,6 +432,8 @@ public class BOBbsService {
|
||||
if (vo.getBbscttRegistAuthorDvCd() != null && "01".equals(vo.getBbscttRegistAuthorDvCd())) {
|
||||
vo.setBbscttRegistAuthorDvCd("[all]");
|
||||
} else if (vo.getBbscttRegistAuthorDvCd() != null && "02".equals(vo.getBbscttRegistAuthorDvCd())) {
|
||||
validateMemberGradeSelection(vo.getBbscttRegistAuthorDvCd_c(), "게시판 쓰기");
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String mbrInnb : vo.getBbscttRegistAuthorDvCd_c()) {
|
||||
|
||||
@@ -465,6 +468,8 @@ public class BOBbsService {
|
||||
if (vo.getAnswRegistAuthorDvCd() != null && "01".equals(vo.getAnswRegistAuthorDvCd())) {
|
||||
vo.setAnswRegistAuthorDvCd("[all]");
|
||||
} else if (vo.getAnswRegistAuthorDvCd() != null && "02".equals(vo.getAnswRegistAuthorDvCd())) {
|
||||
validateMemberGradeSelection(vo.getAnswRegistAuthorDvCd_c(), "답글 쓰기");
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String mbrInnb : vo.getAnswRegistAuthorDvCd_c()) {
|
||||
|
||||
@@ -499,6 +504,8 @@ public class BOBbsService {
|
||||
if (vo.getCmRegistAuthorDvCd() != null && "01".equals(vo.getCmRegistAuthorDvCd())) {
|
||||
vo.setCmRegistAuthorDvCd("[all]");
|
||||
} else if (vo.getCmRegistAuthorDvCd() != null && "02".equals(vo.getCmRegistAuthorDvCd())) {
|
||||
validateMemberGradeSelection(vo.getCmRegistAuthorDvCd_c(), "댓글 쓰기");
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String mbrInnb : vo.getCmRegistAuthorDvCd_c()) {
|
||||
|
||||
@@ -685,15 +692,21 @@ public class BOBbsService {
|
||||
msgMap.put("bbsid", bbsId);
|
||||
|
||||
} catch (WnbtRestException wre){
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
throw wre;
|
||||
} catch (Exception e) {
|
||||
|
||||
log.error(e.getMessage(), e);
|
||||
throw new WnbtRestException("게시판 등록 중 오류가 발생했습니다.", e);
|
||||
}
|
||||
|
||||
return msgMap;
|
||||
}
|
||||
|
||||
private void validateMemberGradeSelection(String[] memberGradeArr, String authorizationName) {
|
||||
if (memberGradeArr == null || memberGradeArr.length == 0) {
|
||||
throw new WnbtRestException(authorizationName + " 권한의 회원등급을 선택해 주세요.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 게시판 삭제
|
||||
|
||||
@@ -232,6 +232,9 @@ public class BOGnrlbbscttService {
|
||||
BOGnrlbbscttVO resultCnt = new BOGnrlbbscttVO();
|
||||
switch (bbsTyCd) {
|
||||
case "01": //일반게시글 조회
|
||||
log.debug("일반게시글 getServerDv : {}",bbsctt.getServerDv());
|
||||
log.debug("일반게시글 getMbrDvCd : {}",bbsctt.getMbrDvCd());
|
||||
log.debug("일반게시글 getSopmalCd : {}",bbsctt.getSopmalCd());
|
||||
resultCnt = mapper.selectBOGnrlBbscttListCnt(bbsctt);
|
||||
totCnt = resultCnt.getTotCnt();
|
||||
if (StringUtil.isEmpty(bbsctt.getNtcAt())) {/*공지 제외 검색 조건*/
|
||||
@@ -567,19 +570,11 @@ public class BOGnrlbbscttService {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
// 게시글 연관상품 조회
|
||||
List<DataMap> goodsList = new ArrayList<>();
|
||||
DataMap result = new DataMap();
|
||||
|
||||
goodsList = mapper.selectBOBbscttDtlGoods(bbsctt);
|
||||
|
||||
/*게시판 설정 > 추천 상품 노출 선택 시 사용자 게시글 상세 상품 노출 */
|
||||
if (!goodsList.isEmpty()) {
|
||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||
result = goodsService.selectBoGoodsRelateList(goodsList);
|
||||
}
|
||||
}
|
||||
/*사용자 , 관리자 페이지 구분*/
|
||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||
map.put("goodsList", result);
|
||||
map.put("goodsList", goodsList);
|
||||
} else {
|
||||
map.put("goodsList", goodsList);
|
||||
}
|
||||
@@ -917,6 +912,7 @@ public class BOGnrlbbscttService {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new WnbtRestException("게시글 등록 중 오류가 발생했습니다.", e);
|
||||
}
|
||||
|
||||
return message;
|
||||
@@ -1103,7 +1099,7 @@ public class BOGnrlbbscttService {
|
||||
}
|
||||
}
|
||||
/*1:1 문의 게시판이 아닌경우만 처리 */
|
||||
if("12".equals(bbsctt.getBbsTyCd())){
|
||||
if(!"12".equals(bbsctt.getBbsTyCd())){
|
||||
//게시글 연관 상품 삭제
|
||||
mapper.deleteBOBbscttGoods(bbsctt);
|
||||
//게시글 연관 상품 등록(fm_boarddata_goods)
|
||||
@@ -1134,6 +1130,7 @@ public class BOGnrlbbscttService {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new WnbtRestException("게시글 수정 중 오류가 발생했습니다.", e);
|
||||
}
|
||||
|
||||
return message;
|
||||
|
||||
@@ -75,6 +75,8 @@ public class BOGnrlbbscttVO extends AbstractVO {
|
||||
@Length(max = 16777215, message = "내용")
|
||||
/** 내용 */
|
||||
private String cn;
|
||||
/** 내용 */
|
||||
private String relateGoodsWords;
|
||||
/** 조회건수 */
|
||||
private Integer inqireCnt;
|
||||
/** 댓글건수 */
|
||||
|
||||
@@ -46,6 +46,9 @@ public class BOCommonService {
|
||||
|
||||
@Value("${secret.key}")
|
||||
private String secretKey;
|
||||
|
||||
@Value("${aciexpress.apikey}")
|
||||
private String aciApiKey;
|
||||
|
||||
/**
|
||||
* <p>비밀번호를 암호화 한다</p>
|
||||
@@ -287,4 +290,10 @@ public class BOCommonService {
|
||||
return secretKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* aci Api키 조회
|
||||
* @return String
|
||||
*/
|
||||
public String selectAciApiKey() {return aciApiKey;}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.wb.domainserver.domain.gcone.goods.badge.mapper;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface BOGoodsBadgeMapper {
|
||||
List<DataMap> selectBOGoodsBadgeList(BOGoodsBadgeVO vo);
|
||||
int selectBOGoodsBadgeCount(BOGoodsBadgeVO vo);
|
||||
int insertBOGoodsBadge(BOGoodsBadgeVO vo);
|
||||
int updateBOGoodsBadge(BOGoodsBadgeVO vo);
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.wb.domainserver.domain.gcone.goods.badge.service;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.mapper.BOGoodsBadgeMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@Service
|
||||
public class BOGoodsBadgeService {
|
||||
private static final Pattern COLOR_PATTERN = Pattern.compile("^#[0-9A-Fa-f]{6}$");
|
||||
private static final Pattern BADGE_CODE_PATTERN = Pattern.compile("^[A-Za-z0-9_-]+$");
|
||||
|
||||
@Autowired
|
||||
private BOGoodsBadgeMapper mapper;
|
||||
|
||||
public List<DataMap> selectBOGoodsBadgeList(BOGoodsBadgeVO vo) {
|
||||
return mapper.selectBOGoodsBadgeList(vo);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public DataMap updateBOGoodsBadgeSetup(BOGoodsBadgeVO request) {
|
||||
DataMap message = new DataMap();
|
||||
String[] badgeCdArr = request.getBadgeCdArr();
|
||||
if (badgeCdArr == null || badgeCdArr.length == 0) {
|
||||
message.put("result", "success");
|
||||
return message;
|
||||
}
|
||||
|
||||
validateArrayLengths(request, badgeCdArr.length);
|
||||
Set<String> newBadgeCodes = new HashSet<>();
|
||||
for (int i = 0; i < badgeCdArr.length; i++) {
|
||||
BOGoodsBadgeVO badge = createBadge(request, i);
|
||||
validateBadge(badge);
|
||||
if ("Y".equals(badge.getNewAt())) {
|
||||
if (!newBadgeCodes.add(badge.getBadgeCd()) || mapper.selectBOGoodsBadgeCount(badge) > 0) {
|
||||
throw new WnbtRestException("이미 등록된 배지코드입니다.");
|
||||
}
|
||||
mapper.insertBOGoodsBadge(badge);
|
||||
} else {
|
||||
if (!badge.getBadgeCd().equals(trim(request.getOriginalBadgeCdArr()[i]))) {
|
||||
throw new WnbtRestException("기존 배지코드는 변경할 수 없습니다.");
|
||||
}
|
||||
if (mapper.selectBOGoodsBadgeCount(badge) == 0) {
|
||||
throw new WnbtRestException("존재하지 않는 배지코드입니다.");
|
||||
}
|
||||
mapper.updateBOGoodsBadge(badge);
|
||||
}
|
||||
}
|
||||
|
||||
message.put("result", "success");
|
||||
return message;
|
||||
}
|
||||
|
||||
private void validateArrayLengths(BOGoodsBadgeVO vo, int size) {
|
||||
if (vo.getOriginalBadgeCdArr() == null || vo.getBadgeNmArr() == null || vo.getFontColorArr() == null || vo.getBgColorArr() == null
|
||||
|| vo.getBorderColorArr() == null || vo.getSortOrdrArr() == null || vo.getUseAtArr() == null
|
||||
|| vo.getNewAtArr() == null || vo.getOriginalBadgeCdArr().length != size || vo.getBadgeNmArr().length != size || vo.getFontColorArr().length != size
|
||||
|| vo.getBgColorArr().length != size || vo.getBorderColorArr().length != size
|
||||
|| vo.getSortOrdrArr().length != size || vo.getUseAtArr().length != size || vo.getNewAtArr().length != size) {
|
||||
throw new WnbtRestException("배지 저장 요청 값이 올바르지 않습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
private BOGoodsBadgeVO createBadge(BOGoodsBadgeVO request, int index) {
|
||||
BOGoodsBadgeVO badge = new BOGoodsBadgeVO();
|
||||
badge.setSopmalCd(request.getSopmalCd());
|
||||
badge.setRegusr(request.getRegusr());
|
||||
badge.setUpdusr(request.getUpdusr());
|
||||
badge.setBadgeCd(trim(request.getBadgeCdArr()[index]));
|
||||
badge.setBadgeNm(trim(request.getBadgeNmArr()[index]));
|
||||
badge.setFontColor(trim(request.getFontColorArr()[index]));
|
||||
badge.setBgColor(trim(request.getBgColorArr()[index]));
|
||||
badge.setBorderColor(trim(request.getBorderColorArr()[index]));
|
||||
badge.setSortOrdr(trim(request.getSortOrdrArr()[index]));
|
||||
badge.setUseAt(trim(request.getUseAtArr()[index]));
|
||||
badge.setNewAt(trim(request.getNewAtArr()[index]));
|
||||
return badge;
|
||||
}
|
||||
|
||||
private void validateBadge(BOGoodsBadgeVO badge) {
|
||||
if (!StringUtils.hasText(badge.getBadgeCd()) || ("Y".equals(badge.getNewAt()) && !BADGE_CODE_PATTERN.matcher(badge.getBadgeCd()).matches())) {
|
||||
throw new WnbtRestException("배지코드는 영문, 숫자, 밑줄, 하이픈만 입력할 수 있습니다.");
|
||||
}
|
||||
if (!StringUtils.hasText(badge.getBadgeNm()) || !COLOR_PATTERN.matcher(badge.getFontColor()).matches()
|
||||
|| !COLOR_PATTERN.matcher(badge.getBgColor()).matches() || !COLOR_PATTERN.matcher(badge.getBorderColor()).matches()) {
|
||||
throw new WnbtRestException("배지명과 색상값을 확인해 주세요.");
|
||||
}
|
||||
try {
|
||||
if (Integer.parseInt(badge.getSortOrdr()) < 0) {
|
||||
throw new NumberFormatException();
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
throw new WnbtRestException("노출순서는 0 이상의 정수만 입력할 수 있습니다.");
|
||||
}
|
||||
if (!("Y".equals(badge.getUseAt()) || "N".equals(badge.getUseAt()))
|
||||
|| !("Y".equals(badge.getNewAt()) || "N".equals(badge.getNewAt()))) {
|
||||
throw new WnbtRestException("배지 저장 요청 값이 올바르지 않습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
private String trim(String value) {
|
||||
return value == null ? "" : value.trim();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.wb.domainserver.domain.gcone.goods.badge.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BOGoodsBadgeVO extends AbstractVO {
|
||||
|
||||
private String sopmalCd;
|
||||
private String badgeCd;
|
||||
private String badgeNm;
|
||||
private String fontColor;
|
||||
private String bgColor;
|
||||
private String borderColor;
|
||||
private String sortOrdr;
|
||||
private String newAt;
|
||||
private String[] badgeCdArr;
|
||||
private String[] originalBadgeCdArr;
|
||||
private String[] badgeNmArr;
|
||||
private String[] fontColorArr;
|
||||
private String[] bgColorArr;
|
||||
private String[] borderColorArr;
|
||||
private String[] sortOrdrArr;
|
||||
private String[] useAtArr;
|
||||
private String[] newAtArr;
|
||||
}
|
||||
@@ -34,6 +34,8 @@ public interface BOGoodsMapper {
|
||||
public Integer selectBOGoodsCount(BOGoodsVO vo);
|
||||
// 일반 상품 목록 리스트
|
||||
public List<DataMap> selectBOGoodsList(BOGoodsVO vo);
|
||||
// 관리자 상품 배지 목록
|
||||
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo);
|
||||
// 카테고리별 상품 목록 수정
|
||||
public void updateBOCtgryGoodsList(BOGoodsVO vo);
|
||||
// 관리자 > 일반 상품 상세
|
||||
@@ -85,6 +87,8 @@ public interface BOGoodsMapper {
|
||||
public void updateBOGoodsAdditionDtl(BOGoodsAdditionVO vo);
|
||||
// 일반 상품 > 추가정보 삭제
|
||||
public void deleteBOGoodsAddition(BOGoodsAdditionVO vo);
|
||||
// 사용자 - 검색 - 검색어 로그 저장
|
||||
public int insertBOSrchwrdLog(BOGoodsVO vo);
|
||||
// 사용자 - 검색 - 상품명 검색어 조회
|
||||
public List<DataMap> selectBOSrchGoodsNm(BOGoodsVO vo);
|
||||
// 일반 상품 > 일괄 업데이트
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.wb.domainserver.domain.gcone.common.service.BOCommonService;
|
||||
import com.wb.domainserver.domain.gcone.goods.goods.mapper.BOGoodsMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.goods.vo.*;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.math.BigInteger;
|
||||
@@ -74,6 +76,15 @@ public class BOGoodsService {
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 관리자 상품 배지 목록 조회
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo) {
|
||||
return mapper.selectBOGoodsBadgeList(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 > 상품 목록 조회
|
||||
* @param vo
|
||||
@@ -1505,6 +1516,27 @@ public class BOGoodsService {
|
||||
return mapper.selectBOGoodsCategoryLink(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 검색어 로그 저장
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public DataMap insertBOSrchwrdLog(BOGoodsVO vo){
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
mapper.insertBOSrchwrdLog(vo);
|
||||
|
||||
message.put("result", "success");
|
||||
} catch (WnbtRestException wre) {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품명 검색어 조회
|
||||
* @param vo
|
||||
|
||||
@@ -47,6 +47,10 @@ public class BOGoodsOptionVO extends AbstractVO {
|
||||
private String optnCd4;
|
||||
/** 옵션정보 */
|
||||
private String optnInfo;
|
||||
/** HS Code */
|
||||
private String hscode;
|
||||
/** 실무게(KG) */
|
||||
private String realWt;
|
||||
/** 재고수량 */
|
||||
private String invntryQy;
|
||||
/** 가용재고수량 */
|
||||
|
||||
@@ -41,6 +41,9 @@ public class BOGoodsVO extends AbstractVO {
|
||||
/** 상품명 */
|
||||
@NotBlank(message = "상품명")
|
||||
private String goodsNm;
|
||||
/** 상품명(영문) */
|
||||
@NotBlank(message = "상품명(영문)")
|
||||
private String goodsNmEn;
|
||||
/** 입점상품명 */
|
||||
private String tentMarktGoodsNm;
|
||||
/** ? */
|
||||
@@ -220,6 +223,10 @@ public class BOGoodsVO extends AbstractVO {
|
||||
private String optnCd4;
|
||||
/** 옵션정보 */
|
||||
private String optnInfo;
|
||||
/** HS Code */
|
||||
private String hscode;
|
||||
/** 실무게(KG) */
|
||||
private String realWt;
|
||||
/** 재고수량 */
|
||||
private Integer invntryQy;
|
||||
/** 가용재고수량 */
|
||||
@@ -478,6 +485,10 @@ public class BOGoodsVO extends AbstractVO {
|
||||
private String srchType;
|
||||
/** 검색어 */
|
||||
private String srchStr;
|
||||
/** 유입경로 */
|
||||
private String conectUrl;
|
||||
/** 유입경로 도메인 */
|
||||
private String conectDomn;
|
||||
/** 선택 삭제 */
|
||||
private List<HashMap<String, Object>> delInnbArr;
|
||||
/** 이미지 파일 업로드 */
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.wb.domainserver.domain.gcone.bbs.cnslt.vo.BOCnsltVO;
|
||||
import com.wb.domainserver.domain.gcone.common.service.BOCommonService;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.vo.*;
|
||||
import com.wb.domainserver.domain.gcone.goods.subsvc.service.BOSubsvcService;
|
||||
import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.mapper.BOOrdrMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrderRestAmtVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
@@ -25,6 +27,7 @@ import java.math.BigInteger;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -50,6 +53,9 @@ public class BOOrderService {
|
||||
@Autowired
|
||||
private BOOrderNoService orderNoService;
|
||||
|
||||
@Autowired
|
||||
private BOSubsvcService subsvcService;
|
||||
|
||||
/**
|
||||
* 관리자 주문 > 주문 등록
|
||||
* @param param
|
||||
@@ -207,7 +213,7 @@ public class BOOrderService {
|
||||
}
|
||||
|
||||
// else if ("03".equals(itemDlvyGroupDvCd)) { // 유료배송
|
||||
if ("03".equals(itemDlvyGroupDvCd) || subsvcAt) { // 유료배송
|
||||
if ("02".equals(itemDlvyGroupDvCd) || "03".equals(itemDlvyGroupDvCd) || subsvcAt) { // 유료배송
|
||||
|
||||
// 추가배송비 계산 (MUL)
|
||||
if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) {
|
||||
@@ -216,7 +222,7 @@ public class BOOrderService {
|
||||
}
|
||||
}
|
||||
|
||||
// 유료배송 + 수량 조건
|
||||
// 무료 or 유료배송 + 수량 조건
|
||||
if (("Y".equals(itemCntCndUseAt) && itemCntCndAditAmt.compareTo(BigDecimal.ZERO) > 0) || subsvcAt) {
|
||||
// 수량 조건 있을 경우
|
||||
for (DataMap goodsMap : goodsByDlvyGroupList) {
|
||||
@@ -375,8 +381,8 @@ public class BOOrderService {
|
||||
|
||||
// 금액 조건
|
||||
if ("Y".equals(itemAmtCndUseAt)) {
|
||||
// subSlepric(금액)이 무료배송 금액조건보다 클 경우 [상품 기준]
|
||||
if (subSlepric.compareTo(itemAmtCndAditAmt) > 0) {
|
||||
// subSlepric(금액)이 무료배송 금액조건보다 크거나 같을 경우 [상품 기준]
|
||||
if (subSlepric.compareTo(itemAmtCndAditAmt) >= 0) {
|
||||
itemDlvyAmt = new BigDecimal(0);
|
||||
}
|
||||
}
|
||||
@@ -385,8 +391,8 @@ public class BOOrderService {
|
||||
if ("Y".equals(itemCntCndUseAt)) {
|
||||
BigDecimal qy = new BigDecimal(String.valueOf(goodsMap.get("qy"))); // 수량
|
||||
|
||||
// qy(수량)이 무료배송 수량조건보다 클 경우 [상품 기준]
|
||||
if (qy.compareTo(itemCntCndAditAmt) > 0) {
|
||||
// qy(수량)이 무료배송 수량조건보다 크거나 같을 경우 [상품 기준]
|
||||
if (qy.compareTo(itemCntCndAditAmt) >= 0) {
|
||||
itemDlvyAmt = new BigDecimal(0);
|
||||
}
|
||||
}
|
||||
@@ -465,7 +471,7 @@ public class BOOrderService {
|
||||
|
||||
dlvylcListMulti.add(dlvyMap);
|
||||
|
||||
} else if ("02".equals(itemDlvyGroupDvCd)) { // 무료 배송일 경우
|
||||
} else { //if ("02".equals(itemDlvyGroupDvCd)) { // 무료 배송일 경우
|
||||
|
||||
// 추가배송비 계산 (MUL)
|
||||
if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) {
|
||||
@@ -569,7 +575,7 @@ public class BOOrderService {
|
||||
/* ***********************************
|
||||
4. 주문상품 등록(GC_ORDER_ITEM)
|
||||
*********************************** */
|
||||
List<BOOrderItemVO> insertedGoodsList = insertOrdrGoods(sopmalCd, "01", ordrInnb, goodsList);
|
||||
List<BOOrderItemVO> insertedGoodsList = insertOrdrGoods(sopmalCd, "01", ordrInnb, goodsList, subsvcAt);
|
||||
|
||||
BOOrderShippingVO shippingEscrowVO = new BOOrderShippingVO();
|
||||
if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "04".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원 개인결제, 정기배송
|
||||
@@ -869,8 +875,17 @@ public class BOOrderService {
|
||||
int goodsOptnInnb = (int) goods.get("goodsOptnInnb");
|
||||
int ordrQy = (int) goods.get("qy");
|
||||
|
||||
BOOrderItemVO orderItemVO = insertedGoodsList.stream().filter(obj-> Objects.equals(ordrInnb, obj.getOrdrInnb()) &&
|
||||
Objects.equals(BigInteger.valueOf(goodsInnb), obj.getGoodsInnb())).findAny().orElse(null);
|
||||
List<BOOrderItemVO> orderItemVOList = insertedGoodsList.stream().filter(obj-> Objects.equals(ordrInnb, obj.getOrdrInnb()) &&
|
||||
Objects.equals(BigInteger.valueOf(goodsInnb), obj.getGoodsInnb())).toList();
|
||||
BOOrderItemVO orderItemVO = new BOOrderItemVO();
|
||||
// 구독서비스 여부(subsvcAt)에 따라 주문상품 취급 방식 분기
|
||||
if(subsvcAt) {
|
||||
// 구독서비스 : 동일 상품이라도 순번에 따라 개별 옵션 유지
|
||||
orderItemVO = orderItemVOList.size() > allGoodsCount ? orderItemVOList.get(allGoodsCount) : null;
|
||||
} else {
|
||||
// 일반 주문 : 동일 상품과 옵션은 하나로 병합하여 처리
|
||||
orderItemVO = orderItemVOList.stream().findAny().orElse(null);
|
||||
}
|
||||
|
||||
/* ***********************************************
|
||||
6. 주문 상품 옵션 정보 등록(GC_ORDER_ITEM_OPTION)
|
||||
@@ -966,6 +981,10 @@ public class BOOrderService {
|
||||
***************************************** */
|
||||
BOOrderSetleVO setleVO = insertSetle(orderVO, setle, insertedGoodsList, enuri, purchsr); // 결제 정보 등록
|
||||
|
||||
if (orderVO.getSubsvcInnb() == null && "stripe".equals(setleVO.getPgCmpnyNm())) {
|
||||
setleVO.setGoodsNm(buildStripeGoodsName(insertedGoodsList.get(0).getGoodsNm(), goodsList));
|
||||
}
|
||||
|
||||
// 결제금액 원화로 변경
|
||||
// setleVO.setSetleAmt(setleVO.getWonSetleAmt());
|
||||
|
||||
@@ -977,6 +996,13 @@ public class BOOrderService {
|
||||
return content;
|
||||
}
|
||||
|
||||
static String buildStripeGoodsName(String firstGoodsName, List<LinkedHashMap> goodsList) {
|
||||
long totalQuantity = goodsList.stream()
|
||||
.mapToLong(goods -> ((Number) goods.get("qy")).longValue())
|
||||
.sum();
|
||||
return totalQuantity > 1 ? firstGoodsName + " 외 " + (totalQuantity - 1) + "병" : firstGoodsName;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void insertCnsltMemo(String sopmalCd, BigInteger ordrInnb, LinkedHashMap purchsr, LinkedHashMap enuri, AnonymousUser user) {
|
||||
try{
|
||||
@@ -1051,7 +1077,14 @@ public class BOOrderService {
|
||||
* @return
|
||||
*/
|
||||
public List<BOOrderItemVO> insertOrdrGoods(String sopmalCd, String goodsKndCd, BigInteger ordrInnb, List<LinkedHashMap> goodsList) {
|
||||
List<Integer> goodsInnbList = (goodsList.stream().map(obj-> (int) obj.get("goodsInnb")).toList()).stream().distinct().toList(); // 상품번호 목록(중복제거)
|
||||
return insertOrdrGoods(sopmalCd, goodsKndCd, ordrInnb, goodsList, false);
|
||||
}
|
||||
public List<BOOrderItemVO> insertOrdrGoods(String sopmalCd, String goodsKndCd, BigInteger ordrInnb, List<LinkedHashMap> goodsList, Boolean subsvcAt) {
|
||||
Stream<Integer> goodsInnbstream = goodsList.stream().map(obj -> (int) obj.get("goodsInnb"));
|
||||
if(!subsvcAt) // 상품번호 목록(중복제거)
|
||||
goodsInnbstream = goodsInnbstream.distinct();
|
||||
List<Integer> goodsInnbList = goodsInnbstream.toList();
|
||||
|
||||
boolean tmAt = goodsList.stream().anyMatch(map -> map.containsKey("tmAt")); //tm주문 여부
|
||||
List<BOOrderItemVO> insertedGoodsList = new ArrayList<>(); // 주문상품 목록
|
||||
|
||||
@@ -1077,6 +1110,7 @@ public class BOOrderService {
|
||||
itemVO.setGoodsKndCd((String) goods.get("goodsKndCd"));
|
||||
itemVO.setGoodsImgCours((String) goods.get("goodsImgWithoutHostImage"));
|
||||
itemVO.setGoodsNm((String) goods.get("goodsNm"));
|
||||
itemVO.setGoodsNmEn((String) goods.get("goodsNmEn"));
|
||||
itemVO.setTaxtTrgetAt((String) goods.get("taxtTrgetAt"));
|
||||
itemVO.setSubscrptWthdrawPosblAt((String) goods.get("subscrptWthdrawPosblAt"));
|
||||
itemVO.setIndvdlzCanclPosblAt((String) goods.get("indvdlzCanclPosblAt"));
|
||||
@@ -1213,7 +1247,16 @@ public class BOOrderService {
|
||||
|
||||
String goodsNm = "";
|
||||
|
||||
if (insertedGoodsList.size() > 1) {
|
||||
if (orderVO.getSubsvcInnb() != null) {
|
||||
BOSubsvcVO subscription = new BOSubsvcVO();
|
||||
subscription.setSopmalCd(sopmalCd);
|
||||
subscription.setSubsvcInnb(orderVO.getSubsvcInnb().toString());
|
||||
DataMap detail = subsvcService.selectBOSubsvcDetail(subscription);
|
||||
goodsNm = detail == null ? "" : StringUtil.isNullToString(detail.get("subsvcNm"));
|
||||
if (!StringUtils.hasText(goodsNm)) {
|
||||
throw new WnbtRestException("구독서비스명을 확인할 수 없습니다. 다시 시도해 주세요.");
|
||||
}
|
||||
} else if (insertedGoodsList.size() > 1) {
|
||||
goodsNm = insertedGoodsList.get(0).getGoodsNm() + " 외" + (insertedGoodsList.size() - 1);
|
||||
} else {
|
||||
goodsNm = insertedGoodsList.get(0).getGoodsNm();
|
||||
@@ -1905,6 +1948,10 @@ public class BOOrderService {
|
||||
itemOptnVO.setOptnCd2((String) goodsOptn.get("optnCd2"));
|
||||
itemOptnVO.setOptnCd3((String) goodsOptn.get("optnCd3"));
|
||||
itemOptnVO.setOptnCd4((String) goodsOptn.get("optnCd4"));
|
||||
itemOptnVO.setHscode((String) goodsOptn.get("hscode"));
|
||||
itemOptnVO.setRealWt((BigDecimal) goodsOptn.get("realWt"));
|
||||
itemOptnVO.setVolWt((BigInteger) goodsOptn.get("volWt"));
|
||||
itemOptnVO.setPackageCnt((Integer) goodsOptn.get("packageCnt"));
|
||||
itemOptnVO.setOptnInfo((String) goodsOptn.get("optnInfo"));
|
||||
itemOptnVO.setCnsmrpric((BigDecimal) goodsOptn.get("cnsmrpric")); // 소비자가
|
||||
itemOptnVO.setSlepric((BigDecimal) goodsOptn.get("slepric")); // 판매가
|
||||
@@ -2567,4 +2614,4 @@ public class BOOrderService {
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2215,7 +2215,7 @@ public class BOPurchsService {
|
||||
// BigDecimal amtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt"); // 금액조건 추가금액
|
||||
BigDecimal slepric = (BigDecimal) goodsMap.get("subSlepric"); // 판매가 * 수량
|
||||
|
||||
if (slepric.compareTo(amtCndAditAmt) > 0) {
|
||||
if (slepric.compareTo(amtCndAditAmt) >= 0) {
|
||||
dlvyAmt = new BigDecimal(0);
|
||||
}
|
||||
// else {
|
||||
@@ -2229,7 +2229,7 @@ public class BOPurchsService {
|
||||
// BigDecimal cntCndAditAmt = (BigDecimal) shippingGrouping.get("cntCndAditAmt"); // 금액조건 추가금액
|
||||
BigDecimal qy = (BigDecimal) goodsMap.get("qy"); // 수량
|
||||
|
||||
if (qy.compareTo(cntCndAditAmt) > 0) {
|
||||
if (qy.compareTo(cntCndAditAmt) >= 0) {
|
||||
dlvyAmt = new BigDecimal(0);
|
||||
}
|
||||
// else {
|
||||
@@ -2519,7 +2519,7 @@ public class BOPurchsService {
|
||||
BigDecimal amtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt"); // 금액조건 추가금액
|
||||
BigDecimal slepric = (BigDecimal) goodsMap.get("subSlepric"); // 판매가 * 수량
|
||||
|
||||
if (slepric.compareTo(amtCndAditAmt) > 0) {
|
||||
if (slepric.compareTo(amtCndAditAmt) >= 0) {
|
||||
dlvyAmt = new BigDecimal(0);
|
||||
}
|
||||
}
|
||||
@@ -2528,7 +2528,7 @@ public class BOPurchsService {
|
||||
BigInteger cntCndAditAmt = (BigInteger) shippingGrouping.get("cntCndAditAmt"); // 금액조건 추가금액
|
||||
BigInteger qy = (BigInteger) goodsMap.get("qy"); // 수량
|
||||
|
||||
if (cntCndAditAmt.intValue() < qy.intValue()) {
|
||||
if (cntCndAditAmt.intValue() <= qy.intValue()) {
|
||||
dlvyAmt = new BigDecimal(0);
|
||||
}
|
||||
}
|
||||
@@ -2544,7 +2544,7 @@ public class BOPurchsService {
|
||||
if (bundleDlvyCndAmt != null && bundleDlvyCndAmt.intValue() > 0) {
|
||||
BigDecimal subSlepric = goodsByDlvyGroupList.stream().map(o -> (BigDecimal) o.get("subSlepric")).reduce(BigDecimal.ZERO, BigDecimal::add); // 합 (판매가 * 수량)
|
||||
|
||||
if (subSlepric.compareTo(bundleDlvyCndAmt) > 0) {
|
||||
if (subSlepric.compareTo(bundleDlvyCndAmt) >= 0) {
|
||||
dlvyAmt = new BigDecimal(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +142,14 @@ public class BOOrderItemOptnVO extends AbstractVO {
|
||||
|
||||
private BigDecimal step85 = new BigDecimal(0);
|
||||
|
||||
private String hscode;
|
||||
|
||||
private BigDecimal realWt;
|
||||
|
||||
private BigInteger volWt;
|
||||
|
||||
private Integer packageCnt;
|
||||
|
||||
private String restUpdtDv;
|
||||
|
||||
private BigDecimal updtRestAmt = new BigDecimal(0);
|
||||
|
||||
@@ -23,6 +23,8 @@ public class BOOrderItemVO extends AbstractVO {
|
||||
|
||||
private String goodsNm;
|
||||
|
||||
private String goodsNmEn;
|
||||
|
||||
private String goodsKndCd;
|
||||
|
||||
private String taxtTrgetAt;
|
||||
|
||||
@@ -30,4 +30,13 @@ public interface BOSubsvcMapper {
|
||||
void insertBOMngrSubsvc(BOSubsvcVO vo);
|
||||
/** 관리자 구독서비스 명 중복체크*/
|
||||
int selectBOMngrSubsvcNmDupCheck(BOSubsvcVO vo);
|
||||
|
||||
/** 구독서비스 주문에 따른 판매재고수량 수정*/
|
||||
public void updateSubsvcOrdrUsefulInvntryQy(BOSubsvcVO vo);
|
||||
/** 구독서비스 환불에 따른 판매재고수량 수정*/
|
||||
public void updateSubsvcRefundUsefulInvntryQy(BOSubsvcVO vo);
|
||||
/** 구독서비스 주문취소에 따른 판매재고수량 수정*/
|
||||
public void updateSubsvcCancelOrderUsefulInvntryQy(BOSubsvcVO vo);
|
||||
/** 판매재고수량 변경에 따른 구독서비스 상태 수정*/
|
||||
public void updateInvntryPolicySubsvcSttusChng(BOSubsvcVO vo);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package com.wb.domainserver.domain.gcone.goods.subsvc.service;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO;
|
||||
import com.wb.domainserver.domain.gcone.goods.subsvc.mapper.BOSubsvcMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import io.micrometer.common.util.StringUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -137,4 +139,51 @@ public class BOSubsvcService {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 주문에 따른 판매재고수량 수정
|
||||
* @param ordrVO
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
public void updateSubsvcOrdrUsefulInvntryQy(BOOrdrVO ordrVO) throws Exception {
|
||||
BOSubsvcVO subsvcVO = new BOSubsvcVO();
|
||||
BeanUtils.copyProperties(ordrVO, subsvcVO);
|
||||
|
||||
//판매수량 수정
|
||||
mapper.updateSubsvcOrdrUsefulInvntryQy(subsvcVO);
|
||||
//구독서비스 상태 수정
|
||||
mapper.updateInvntryPolicySubsvcSttusChng(subsvcVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 환불에 따른 판매재고수량 수정
|
||||
* @param ordrVO
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
public void updateSubsvcRefundUsefulInvntryQy(BOOrdrVO ordrVO) throws Exception {
|
||||
BOSubsvcVO subsvcVO = new BOSubsvcVO();
|
||||
BeanUtils.copyProperties(ordrVO, subsvcVO);
|
||||
|
||||
//판매수량 수정
|
||||
mapper.updateSubsvcRefundUsefulInvntryQy(subsvcVO);
|
||||
//구독서비스 상태 수정
|
||||
mapper.updateInvntryPolicySubsvcSttusChng(subsvcVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 주문취소에 따른 판매재고수량 수정
|
||||
* @param ordrVO
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
public void updateSubsvcCancelOrderUsefulInvntryQy(BOOrdrVO ordrVO) throws Exception {
|
||||
BOSubsvcVO subsvcVO = new BOSubsvcVO();
|
||||
BeanUtils.copyProperties(ordrVO, subsvcVO);
|
||||
|
||||
//판매수량 수정
|
||||
mapper.updateSubsvcCancelOrderUsefulInvntryQy(subsvcVO);
|
||||
//구독서비스 상태 수정
|
||||
mapper.updateInvntryPolicySubsvcSttusChng(subsvcVO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@@ -12,14 +13,14 @@ public class BOSubsvcVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 구독서비스고유번호 */
|
||||
private String subsvcInnb;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 구독서비스명 */
|
||||
private String subsvcNm;
|
||||
/** 구독기간 */
|
||||
private String subPd;
|
||||
/** 구독서비스고유번호 */
|
||||
private String subsvcInnb;
|
||||
/** 구독서비스기수 */
|
||||
private String subsvcGnr;
|
||||
/** 구독서비스명 다음기수 */
|
||||
@@ -108,6 +109,8 @@ private static final long serialVersionUID = 1L;
|
||||
private Integer mbrInnb;
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
/** 주문고유번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
|
||||
/** 결제상품정보 */
|
||||
|
||||
@@ -101,6 +101,11 @@ public class BOMbrService {
|
||||
|
||||
List<DataMap> resultList = null;
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
|
||||
BOMaComncdVO comncdVO = new BOMaComncdVO();
|
||||
comncdVO.setGroupCd("SRCH_DV");
|
||||
bOMbrSrchVO.setSrchDv((String) selectCommCode(comncdVO).get(0).get("cd"));
|
||||
|
||||
// 건수 조회
|
||||
Integer totCnt = mapper.selectBOMbrListTotCnt(bOMbrSrchVO);
|
||||
// 건수 갯수 페이징vo에 set
|
||||
|
||||
@@ -26,35 +26,38 @@ import lombok.EqualsAndHashCode;
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BOMbrSrchVO extends AbstractVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**검색어 구분*/
|
||||
private String srchKywordDv;
|
||||
private String srchKywordDv;
|
||||
|
||||
/**검색어 키워드*/
|
||||
private String srchKyword;
|
||||
/**검색어 키워드*/
|
||||
private String srchKyword;
|
||||
|
||||
/*검색어 이름*/
|
||||
private String srchMbrNm;
|
||||
/*검색어 이름*/
|
||||
private String srchMbrNm;
|
||||
|
||||
/*검색어 아이디*/
|
||||
private String srchKywordID;
|
||||
/*검색어 아이디*/
|
||||
private String srchKywordID;
|
||||
|
||||
/*검색어 이메일*/
|
||||
private String srchKywordEmail;
|
||||
/*검색어 이메일*/
|
||||
private String srchKywordEmail;
|
||||
|
||||
/*검색어 휴대폰번호*/
|
||||
private String srchKywordMb;
|
||||
/*검색어 휴대폰번호*/
|
||||
private String srchKywordMb;
|
||||
|
||||
/*회원고유번호*/
|
||||
/*회원고유번호*/
|
||||
private String srchMbrInnb;
|
||||
|
||||
/**정렬 방식*/
|
||||
private String sortDv;
|
||||
/**검색조건 비교 방식*/
|
||||
private String srchDv;
|
||||
|
||||
/**정렬 방식*/
|
||||
private String sortDv;
|
||||
|
||||
/**쇼핑몰코드*/
|
||||
private String sopmalCd;
|
||||
private String sopmalCd;
|
||||
|
||||
/*회원 구분 코드*/
|
||||
/*회원 구분 코드*/
|
||||
private String srchMbrDvCd;
|
||||
|
||||
/*요청 페이지 구분 mngr인지 integ인지*/
|
||||
@@ -193,4 +196,7 @@ public class BOMbrSrchVO extends AbstractVO {
|
||||
/*회원구분코드*/
|
||||
private String mbrDvCd;
|
||||
|
||||
/*마케팅 동의 팝업 읽기모드 여부*/
|
||||
private String readonlyAt;
|
||||
|
||||
}
|
||||
|
||||
@@ -161,6 +161,14 @@ public interface BODlivyMapper {
|
||||
public List<BODlivyVO> selectBOOrdrDlvyDtlsInqireGroupOrdr(BODlivyVO boDlivyVO);
|
||||
|
||||
|
||||
/**
|
||||
* 주문 배송 추적 조회 : 송장번호 조회
|
||||
* @param boDlivyVO
|
||||
* @return
|
||||
*/
|
||||
public String selectBOOrdrInvcnb(BODlivyVO boDlivyVO);
|
||||
|
||||
|
||||
/**
|
||||
* 출고 상태 '상품 준비' or '배송중' 되돌리기 / 출고 상태 변경 단건
|
||||
* @param dlivyVO
|
||||
|
||||
@@ -1,59 +1,40 @@
|
||||
package com.wb.domainserver.domain.gcone.ordr.dlivy.service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOShopSetupVO;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.domain.gcone.common.service.BOCommonService;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO;
|
||||
import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService;
|
||||
import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO;
|
||||
import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.dlivy.mapper.BODlivyMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.dlivy.vo.*;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.mapper.BOOrdrMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrLogVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrShippingVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.service.BORtngudrefndService;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import io.micrometer.common.util.StringUtils;
|
||||
import jakarta.xml.bind.JAXBContext;
|
||||
import jakarta.xml.bind.JAXBException;
|
||||
import jakarta.xml.bind.Marshaller;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.dlivy.mapper.BODlivyMapper;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -83,6 +64,9 @@ public class BODlivyService {
|
||||
@Autowired
|
||||
BORtngudrefndService boRtngudrefndService;
|
||||
|
||||
@Autowired
|
||||
private BOCommonService boCommonService;
|
||||
|
||||
|
||||
/* ####################################
|
||||
출고 리스트 서비스 시작
|
||||
@@ -494,6 +478,167 @@ public class BODlivyService {
|
||||
return contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* ACI Key 발급 API
|
||||
* @param
|
||||
* @return List<DataMap>
|
||||
*/
|
||||
public DataMap selectBOAciKey() throws WnbtRestException {
|
||||
String apiKey = boCommonService.selectAciApiKey();
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
headers.set("USERID", "UNIHAN");
|
||||
headers.set("APIKEY", apiKey);
|
||||
|
||||
Map<String, Object> body = new HashMap<>();
|
||||
|
||||
HttpEntity<String> apiRequest =
|
||||
new HttpEntity<>("{}", headers);
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.exchange(
|
||||
"https://acieshop.com/api/kr/token/",
|
||||
HttpMethod.POST,
|
||||
apiRequest,
|
||||
String.class
|
||||
);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
JsonNode jsonNode = objectMapper.readTree(response.getBody());
|
||||
|
||||
message.put("status", jsonNode.get("Status").asText());
|
||||
message.put("aciKey", jsonNode.get("ACIKey").asText());
|
||||
message.put("errMsg", jsonNode.get("ErrMsg").asText());
|
||||
}catch (WnbtRestException wre){
|
||||
log.error(wre.getMessage());
|
||||
throw wre;
|
||||
}catch (RuntimeException re){
|
||||
log.error(re.getMessage());
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 화물 추적 - 운송장 조회 API
|
||||
* @param boDlivyVO
|
||||
* @return List<DataMap>
|
||||
*/
|
||||
public DataMap updateBOAciDelivery(BODlivyVO boDlivyVO) throws WnbtRestException {
|
||||
DataMap aciMap = selectBOAciKey();
|
||||
String aciKey = String.valueOf(aciMap.get("aciKey"));
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
headers.set("USERID", "UNIHAN");
|
||||
headers.set("ACIKey", aciKey);
|
||||
|
||||
Map<String, Object> body = new HashMap<>();
|
||||
body.put("BLNO", List.of(mapper.selectBOOrdrInvcnb(boDlivyVO)));
|
||||
|
||||
HttpEntity<Map<String, Object>> apiRequest =
|
||||
new HttpEntity<>(body, headers);
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.exchange(
|
||||
"https://acieshop.com/api/kr/pod/v1.5/",
|
||||
HttpMethod.POST,
|
||||
apiRequest,
|
||||
String.class
|
||||
);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
JsonNode jsonNode = objectMapper.readTree(response.getBody());
|
||||
|
||||
message.put("status", jsonNode.get("Status").asText());
|
||||
JsonNode podInfoNode = jsonNode.get("PODInfo");
|
||||
if(!podInfoNode.isNull()) {
|
||||
List<DataMap> podInfoList = new ArrayList<>();
|
||||
for(JsonNode podInfoItem : podInfoNode) {
|
||||
DataMap PODInfo = new DataMap();
|
||||
PODInfo.put("blno", podInfoItem.get("BLNO").asText());
|
||||
PODInfo.put("dateLocalwhin", podInfoItem.get("DATE_LOCALWHIN").asText());
|
||||
PODInfo.put("dateLocaldeparture", podInfoItem.get("DATE_LOCALDEPARTURE").asText());
|
||||
PODInfo.put("dateIcnarrival", podInfoItem.get("DATE_ICNARRIVAL").asText());
|
||||
PODInfo.put("dateCustomes", podInfoItem.get("DATE_CUSTOMES").asText());
|
||||
PODInfo.put("dateDelivery", podInfoItem.get("DATE_DELIVERY").asText());
|
||||
PODInfo.put("recipient", podInfoItem.get("RECIPIENT").asText());
|
||||
PODInfo.put("wta", podInfoItem.get("WTA").asText());
|
||||
PODInfo.put("wtdan", podInfoItem.get("WTDAN").asText());
|
||||
|
||||
List<DataMap> volumeList = new ArrayList<>();
|
||||
for(JsonNode volumeItem : podInfoItem.get("VOLUME")) {
|
||||
DataMap volume = new DataMap();
|
||||
volume.put("width", volumeItem.get("WIDTH").asText());
|
||||
volume.put("length", volumeItem.get("LENGTH").asText());
|
||||
volume.put("height", volumeItem.get("HEIGHT").asText());
|
||||
|
||||
volumeList.add(volume);
|
||||
}
|
||||
PODInfo.put("volume", volumeList);
|
||||
|
||||
List<List> customsList = new ArrayList<>();
|
||||
for(JsonNode customsItem : podInfoItem.get("CUSTOMS")) {
|
||||
List<DataMap> customDetail = new ArrayList<>();
|
||||
for(JsonNode customItem : customsItem) {
|
||||
DataMap Custom = new DataMap();
|
||||
Custom.put("dateEvent", customItem.get("DATE_EVENT").asText());
|
||||
Custom.put("traceStatus", customItem.get("TRACE_STATUS").asText());
|
||||
|
||||
customDetail.add(Custom);
|
||||
}
|
||||
customsList.add(customDetail);
|
||||
}
|
||||
PODInfo.put("customs", customsList);
|
||||
|
||||
List<DataMap> localPodList = new ArrayList<>();
|
||||
for(JsonNode localPodItem : podInfoItem.get("LOCAL_POD")) {
|
||||
DataMap localPod = new DataMap();
|
||||
localPod.put("traceStatus", localPodItem.get("TRACE_STATUS").asText());
|
||||
localPod.put("dateEvent", localPodItem.get("DATE_EVENT").asText());
|
||||
localPod.put("position", localPodItem.get("POSITION").asText());
|
||||
|
||||
localPodList.add(localPod);
|
||||
}
|
||||
PODInfo.put("localPod", localPodList);
|
||||
|
||||
podInfoList.add(PODInfo);
|
||||
}
|
||||
message.put("podInfo", podInfoList);
|
||||
} else {
|
||||
message.put("errMsg", jsonNode.get("ErrMsg").asText());
|
||||
}
|
||||
}catch (WnbtRestException wre){
|
||||
log.error(wre.getMessage());
|
||||
throw wre;
|
||||
}catch (RuntimeException re){
|
||||
log.error(re.getMessage());
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 송장번호 조회
|
||||
* @param boDlivyVO
|
||||
* @return List<DataMap>
|
||||
*/
|
||||
public String selectBOOrdrInvcnb(BODlivyVO boDlivyVO) throws WnbtRestException {
|
||||
return mapper.selectBOOrdrInvcnb(boDlivyVO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -497,6 +497,40 @@ public interface BOOrdrMapper {
|
||||
관리자 > 주문 > 주문관리 > 다운로드항목설정 종료
|
||||
#################################### */
|
||||
|
||||
/* ####################################
|
||||
관리자 > 주문 > 주문관리 > 발주서 관리 시작
|
||||
#################################### */
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 발주서 건수
|
||||
* @param ordrSrchVO
|
||||
* @return List<LinkedHashMap>
|
||||
*/
|
||||
public Integer selectExcelListPurchOrderTotCnt(BOOrdrSrchVO ordrSrchVO);
|
||||
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 발주서 목록 조회
|
||||
* @param ordrSrchVO
|
||||
* @return List<LinkedHashMap>
|
||||
*/
|
||||
public List<DataMap> selectExcelListPurchOrder(BOOrdrSrchVO ordrSrchVO);
|
||||
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 발주서 엑셀다운로드
|
||||
* @param ordrSrchVO
|
||||
* @return List<LinkedHashMap>
|
||||
*/
|
||||
public List<DataMap> selectExcelPoListDwld(BOOrdrSrchVO ordrSrchVO);
|
||||
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 엑셀 다운로드 일시 업데이트
|
||||
* @param ordrSrchVO
|
||||
* @return List<LinkedHashMap>
|
||||
*/
|
||||
public Integer updateExcelDownDt(BOOrdrSrchVO ordrSrchVO);
|
||||
/* ####################################
|
||||
관리자 > 주문 > 주문관리 > 발주서 관리 종료
|
||||
#################################### */
|
||||
|
||||
/* ####################################
|
||||
사용자 > 마이페이지 > MY쇼핑 > 개인결제 시작
|
||||
#################################### */
|
||||
|
||||
@@ -137,6 +137,9 @@ public class BOOrdrLogService {
|
||||
} else if ("05".equals(setleTyCd)) { // 가상계좌(에스크로)
|
||||
logDtlCn = mngrOrder + "이(가) 주문접수(가상계좌 에스크로) 하였습니다.";
|
||||
mngrOrder += "주문접수(가상계좌 에스크로)";
|
||||
}else if ("stripe".equals(setleTyCd)) { // Stripe(엔화결제)
|
||||
logDtlCn = mngrOrder + "이(가) 주문접수(엔화결제) 하였습니다.";
|
||||
mngrOrder += "주문접수(엔화결제)";
|
||||
} else {
|
||||
mngrOrder += resCd;
|
||||
logDtlCn = message;
|
||||
|
||||
@@ -3,12 +3,15 @@ package com.wb.domainserver.domain.gcone.ordr.ordr.service;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.nimbusds.jose.shaded.gson.Gson;
|
||||
import com.stripe.StripeClient;
|
||||
import com.stripe.model.Charge;
|
||||
import com.stripe.model.Charge.PaymentMethodDetails;
|
||||
import com.stripe.model.PaymentIntent;
|
||||
import com.stripe.model.checkout.Session;
|
||||
import com.wb.domainserver.common.prop.PropertyService;
|
||||
import com.wb.domainserver.domain.admin.instcSle.mtng.mapper.BOMaMtngMapper;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.mapper.BOMaSopmalMapper;
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO;
|
||||
import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderNoService;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderService;
|
||||
@@ -56,9 +59,7 @@ import org.springframework.util.StringUtils;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.*;
|
||||
@@ -1298,6 +1299,49 @@ public class BOOrdrService{
|
||||
관리자 > 주문 > 주문관리 > 다운로드항목설정 종료
|
||||
#################################### */
|
||||
|
||||
/* ####################################
|
||||
관리자 > 주문 > 주문관리 > 발주서 관리 시작
|
||||
#################################### */
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 발주서 다운로드 > 발주서 목록 조회
|
||||
* @param ordrSrchVO
|
||||
* @return List<LinkedHashMap>
|
||||
*/
|
||||
public List<DataMap> selectExcelPoList(BOOrdrSrchVO ordrSrchVO) {
|
||||
List<DataMap> excelListPO = null;
|
||||
|
||||
// 건수 조회
|
||||
Integer totCnt = mapper.selectExcelListPurchOrderTotCnt(ordrSrchVO);
|
||||
ordrSrchVO.getPaginationInfo().setTotalRecordCount(totCnt);
|
||||
|
||||
if(totCnt > 0) {
|
||||
excelListPO = mapper.selectExcelListPurchOrder(ordrSrchVO);
|
||||
}
|
||||
|
||||
return excelListPO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 발주서 다운로드 > 발주서 다운로드
|
||||
* @param ordrSrchVO
|
||||
* @return List<LinkedHashMap>
|
||||
*/
|
||||
public List<DataMap> selectExcelPoListDwld(BOOrdrSrchVO ordrSrchVO) {
|
||||
return mapper.selectExcelPoListDwld(ordrSrchVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 발주서 다운로드 > 엑셀 다운로드 일시 업데이트
|
||||
* @param ordrSrchVO
|
||||
* @return List<LinkedHashMap>
|
||||
*/
|
||||
public Integer updateExcelDownDt(BOOrdrSrchVO ordrSrchVO) {
|
||||
return mapper.updateExcelDownDt(ordrSrchVO);
|
||||
}
|
||||
/* ####################################
|
||||
관리자 > 주문 > 주문관리 > 발주서 관리 종료
|
||||
#################################### */
|
||||
|
||||
/* ####################################
|
||||
관리자 > 주문 > 개인결제관리 시작
|
||||
#################################### */
|
||||
@@ -2385,7 +2429,7 @@ public class BOOrdrService{
|
||||
BigDecimal returnPaidDlvyAmt = new BigDecimal(0); // 유료배송 반품 배송비
|
||||
|
||||
int loopCnt = 0;
|
||||
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvylcItemList)) {
|
||||
log.debug("환불 상품 목록 확인 : {}", dlvylcItemList);
|
||||
// 1. 주문 금액에서 환불 금액빼는 상품별 금액 합산 변수 선언
|
||||
@@ -3665,7 +3709,7 @@ public class BOOrdrService{
|
||||
// 보유마일리지가 1000 원 이상일 경우만 마일리지를 사용할 수 있음.
|
||||
if (mlgHoldUseAmt.compareTo(ableMlgAmt) > 0) {
|
||||
useMlgAmt = new BigDecimal(0);
|
||||
throw new WnbtRestException("보유마일리지가 " + mlgHoldUseAmt + "원 이상부터 사용할 수 있습니다.");
|
||||
throw new WnbtRestException("보유마일리지가 " + mlgHoldUseAmt + "점 이상부터 사용할 수 있습니다.");
|
||||
}
|
||||
|
||||
|
||||
@@ -3673,14 +3717,14 @@ public class BOOrdrService{
|
||||
if (mlgSetleAmtUseAmt.compareTo(setleAmt) > 0) {
|
||||
useMlgAmt = new BigDecimal(0);
|
||||
// throw new WnbtRestException("결제 금액이 적어 마일리지를 사용할 수 없습니다.");
|
||||
throw new WnbtRestException("상품금액 합산이 " + mlgSetleAmtUseAmt + "원 이상부터 마일리지 사용이 가능합니다.");
|
||||
throw new WnbtRestException("상품금액 합산이 " + mlgSetleAmtUseAmt + "점 이상부터 마일리지 사용이 가능합니다.");
|
||||
}
|
||||
|
||||
|
||||
// 사용할 경우 마일리지는 최소 1000원 부터 사용가능하며
|
||||
if (mlgMummUseAmt.compareTo(useMlgAmt) > 0) {
|
||||
useMlgAmt = new BigDecimal(0);
|
||||
throw new WnbtRestException(String.valueOf(mlgMummUseAmt), "마일리지 최소 사용금액인 " + mlgMummUseAmt + "원 이상부터 마일리지 사용이 가능합니다.");
|
||||
throw new WnbtRestException(String.valueOf(mlgMummUseAmt), "마일리지 최소 사용금액인 " + mlgMummUseAmt + "점 이상부터 마일리지 사용이 가능합니다.");
|
||||
} else {
|
||||
|
||||
if ("01".equals(mlgMxmmUseDv)) { // '01' 일 경우 제한없음
|
||||
@@ -3699,7 +3743,7 @@ public class BOOrdrService{
|
||||
if (useMlgAmt.compareTo(mlgMxmmUseAmt) > 0) {
|
||||
// useMlgAmt = new BigDecimal(0);
|
||||
useMlgAmt = ableMlgAmt.compareTo(mlgMxmmUseAmt) > 0 ? mlgMxmmUseAmt : ableMlgAmt;
|
||||
throw new WnbtRestException(String.valueOf(mlgMxmmUseAmt), "마일리지 최대 사용금액은 " + mlgMxmmUseAmt + "원 입니다.");
|
||||
throw new WnbtRestException(String.valueOf(mlgMxmmUseAmt), "마일리지 최대 사용금액은 " + mlgMxmmUseAmt + "점 입니다.");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3715,7 +3759,7 @@ public class BOOrdrService{
|
||||
|
||||
} else if (useMlgAmt.compareTo(BigDecimal.ZERO) < 0) {
|
||||
useMlgAmt = new BigDecimal(0);
|
||||
throw new WnbtRestException("마일리지는 1원부터 사용 가능합니다.");
|
||||
throw new WnbtRestException("마일리지는 1점부터 사용 가능합니다.");
|
||||
}
|
||||
|
||||
|
||||
@@ -3760,7 +3804,7 @@ public class BOOrdrService{
|
||||
setleAmt = setleAmt.add(dlvyAmt).subtract(dlvyCouponDscntAmt).subtract(enuriAmt).subtract(useMlgAmt).subtract(useCashMlgAmt).compareTo(BigDecimal.ZERO) > 0 ? setleAmt.add(dlvyAmt).subtract(dlvyCouponDscntAmt).subtract(enuriAmt).subtract(useMlgAmt).subtract(useCashMlgAmt) : BigDecimal.ZERO;
|
||||
// 환율계산
|
||||
setleAmtKr = setleAmt.multiply(buyRate);
|
||||
setleAmtKr = setleAmtKr.setScale(0,RoundingMode.HALF_UP);
|
||||
setleAmtKr = setleAmtKr.setScale(-1, RoundingMode.DOWN);
|
||||
lmttUseMlg = goodsAmt.subtract(dscntAmt.add(cartCouponDscntAmt));
|
||||
log.debug(" 결제 예정 금액 : {}", setleAmt);
|
||||
|
||||
@@ -5484,13 +5528,14 @@ public class BOOrdrService{
|
||||
orderVO.setMbrInnb(new BigInteger(payVO.getMbrInnb()));
|
||||
}
|
||||
|
||||
log.info("insertKiwoomSetle service start ::: ");
|
||||
|
||||
// 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 )
|
||||
orderCommService.commonOrderPreProcess(payVO, orderVO);
|
||||
|
||||
/* ===============================================
|
||||
결제 API >> DB select로 진행함
|
||||
================================================== */
|
||||
// todo :: api 연결이 아닌 db셀렉트로 변경.
|
||||
DataMap kiwoomPayMap = mapper.selectKiwoomPgApiLog(payVO);//payService.insertTossPayKeyin(payVO);
|
||||
|
||||
log.info("insertKiwoomSetle service kiwoomPayMap ::: {}", kiwoomPayMap);
|
||||
@@ -5506,23 +5551,17 @@ public class BOOrdrService{
|
||||
5. FM_ORDER_PG_LOG 등록값 셋팅
|
||||
================================================== */
|
||||
orderPgLogVO.setDelngNb(StringUtil.isNullToString(resultMap.get("DAOUTRX"))); // 거래번호 (결제키)
|
||||
orderPgLogVO.setConfmDt(selectDateFormat(StringUtil.isNullToString(resultMap.get("SETTDATE")))); // 승인일시
|
||||
orderPgLogVO.setConfmDt(StringUtil.isNullToString(resultMap.get("SETTDATE"))); // 승인일시
|
||||
orderPgLogVO.setApvlnb(StringUtil.isNullToString(resultMap.get("AUTHNO"))); //승인번호
|
||||
orderPgLogVO.setCardCmpnyCd(StringUtil.isNullToString(resultMap.get("CARDCODE"))); //카드사코드
|
||||
orderPgLogVO.setCardCmpnyNm(StringUtil.isNullToString(bOMaComncdService.selectBOCommcdDetail("KIWOOM_CARD_CD",orderPgLogVO.getCardCmpnyCd()))); //카드사명
|
||||
orderPgLogVO.setNintrAt((boolean) resultMap.get("NOINTFLAG") ? "Y" : "N"); //무이자여부
|
||||
orderPgLogVO.setNintrAt(StringUtil.isNullToString(resultMap.get("NOINTFLAG"))); //무이자여부
|
||||
orderPgLogVO.setInstlmtMtCnt(resultMap.get("INSTALL") != null ? Integer.parseInt(resultMap.get("INSTALL").toString()):0); //할부개월수
|
||||
|
||||
// todo ::: 주문금액을 api테이블과 넘어온 값이랑 비교해야 처리필요
|
||||
//if(!CollectionUtils.isEmpty(resultMap)) {} else {
|
||||
// throw new WnbtRestException("토스 결제 실패 [결제 금액 매칭 오류]");
|
||||
// }
|
||||
orderPgLogVO.setDelngAmt(resultMap.get("AMOUNT") != null ? new BigDecimal(resultMap.get("AMOUNT").toString()) : BigDecimal.valueOf(0));
|
||||
|
||||
orderPgLogVO.setEscwAt("N"); // 에스크로여부
|
||||
orderPgLogVO.setVirtlAcntVrifyKy(""); //매출증빙영수증URL
|
||||
orderPgLogVO.setRsltMssageCn("0000");
|
||||
orderPgLogVO.setRsltCd("정상처리-카드거래");
|
||||
orderPgLogVO.setRsltMssageCn("정상처리-카드거래");
|
||||
orderPgLogVO.setRsltCd("0000");
|
||||
|
||||
// 6. FM_ORDER_SETLE 수정 ==============================================
|
||||
BOOrderSetleVO orderSetleVO = new BOOrderSetleVO();
|
||||
@@ -5531,8 +5570,8 @@ public class BOOrdrService{
|
||||
orderSetleVO.setPgInnb(orderPgLogVO.getDelngNb());
|
||||
orderSetleVO.setCredtcardApvlnb(orderPgLogVO.getApvlnb());
|
||||
orderSetleVO.setSetleTyCd(payVO.getSetleTyCd());
|
||||
//orderSetleVO.setSetleMid(StringUtil.isNullToString(mapper.selectBOSopSetleMidKeyInqire(payVO))); // 쇼핑몰 결제 MID(상점키) 조회
|
||||
orderSetleVO.setSetleMid("CTS18056"); //todo : paylink 관련 정리 후 db형으로 바꿈
|
||||
orderSetleVO.setSetleMid(StringUtil.isNullToString(mapper.selectBOSopSetleMidKeyInqire(payVO))); // 쇼핑몰 결제 MID(상점키) 조회
|
||||
//orderSetleVO.setSetleMid(payVO.getCpId()); //todo : paylink 관련 정리 후 db형으로 바꿈 : CTS18056
|
||||
|
||||
log.info("insertKiwoomSetle service kiwoomPayMap_orderSetleVO ::: {}", orderSetleVO);
|
||||
|
||||
@@ -5574,6 +5613,123 @@ public class BOOrdrService{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > Stirpe 결제 정보 등록
|
||||
* @param payVO
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
@Transactional
|
||||
public Map<String, Object> insertStripeSetle(Session stripe, BOPayVO payVO) throws Exception {
|
||||
|
||||
boolean payResult = true;
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
BOOrderPgLogVO orderPgLogVO = new BOOrderPgLogVO();
|
||||
|
||||
orderPgLogVO.setOrdrInnb(new BigInteger(payVO.getOrderId()));
|
||||
orderPgLogVO.setSopmalCd(payVO.getSopmalCd());
|
||||
orderPgLogVO.setPgCmpnyNm(payVO.getPgCmpnyNm());
|
||||
orderPgLogVO.setSetlerNm(payVO.getSetlerNm());
|
||||
orderPgLogVO.setSetleMthCd(payVO.getSetleTyCd());
|
||||
|
||||
try{
|
||||
|
||||
// 1. 주문상태 수정 =====================================================
|
||||
BOOrderVO orderVO = new BOOrderVO();
|
||||
orderVO.setSopmalCd(payVO.getSopmalCd());
|
||||
orderVO.setOrdrInnb(new BigInteger(payVO.getOrderId()));
|
||||
orderVO.setOrdrSttusCd("25"); // 주문상태코드(25:결제확인)
|
||||
|
||||
if (StringUtils.hasText(payVO.getMbrInnb())) {
|
||||
orderVO.setMbrInnb(new BigInteger(payVO.getMbrInnb()));
|
||||
}
|
||||
|
||||
log.info("insertStripeSetle service start ::: ");
|
||||
|
||||
// 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 )
|
||||
orderCommService.commonOrderPreProcess(payVO, orderVO);
|
||||
|
||||
/* ===============================================
|
||||
결제 API >> DB select로 진행함
|
||||
================================================== */
|
||||
StripeClient stripeClient = payService.createStripeClient(payVO.getSopmalCd());
|
||||
int installmentCount = 0;
|
||||
PaymentIntent paymentIntent = stripeClient.v1()
|
||||
.paymentIntents()
|
||||
.retrieve(stripe.getPaymentIntent());
|
||||
Charge charge = paymentIntent.getLatestChargeObject();
|
||||
if(charge != null) {
|
||||
PaymentMethodDetails paymentMethodDetails = charge.getPaymentMethodDetails();
|
||||
if(paymentMethodDetails != null) {
|
||||
PaymentMethodDetails.Card card = paymentMethodDetails.getCard();
|
||||
if (card != null && card.getInstallments() != null) {
|
||||
PaymentMethodDetails.Card.Installments installments = card.getInstallments();
|
||||
if (installments.getPlan() != null && installments.getPlan().getCount() != null) {
|
||||
installmentCount = Integer.parseInt(installments.getPlan().getCount().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ===============================================
|
||||
5. FM_ORDER_PG_LOG 등록값 셋팅
|
||||
================================================== */
|
||||
orderPgLogVO.setDelngNb(StringUtil.isNullToString(stripe.getPaymentIntent())); // 거래번호 (결제키)
|
||||
orderPgLogVO.setConfmDt(StringUtil.isNullToString(Instant.ofEpochSecond(stripe.getCreated()).atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime())); // 승인일시
|
||||
orderPgLogVO.setApvlnb(StringUtil.isNullToString("")); //승인번호
|
||||
orderPgLogVO.setCardCmpnyCd(StringUtil.isNullToString("")); //카드사코드
|
||||
orderPgLogVO.setCardCmpnyNm(StringUtil.isNullToString("")); //카드사명
|
||||
orderPgLogVO.setNintrAt(StringUtil.isNullToString("")); //무이자여부
|
||||
orderPgLogVO.setInstlmtMtCnt(installmentCount); //할부개월수
|
||||
orderPgLogVO.setDelngAmt(stripe.getAmountTotal() != null ? new BigDecimal(stripe.getAmountTotal()) : BigDecimal.valueOf(0));
|
||||
orderPgLogVO.setEscwAt("N"); // 에스크로여부
|
||||
orderPgLogVO.setVirtlAcntVrifyKy(""); //매출증빙영수증URL
|
||||
orderPgLogVO.setRsltMssageCn("정상처리-카드거래");
|
||||
orderPgLogVO.setRsltCd("0000");
|
||||
|
||||
// 6. FM_ORDER_SETLE 수정 ==============================================
|
||||
BOOrderSetleVO orderSetleVO = new BOOrderSetleVO();
|
||||
orderSetleVO.setSopmalCd(payVO.getSopmalCd());
|
||||
orderSetleVO.setOrdrInnb(new BigInteger(payVO.getOrderId()));
|
||||
orderSetleVO.setPgInnb(orderPgLogVO.getDelngNb());
|
||||
orderSetleVO.setCredtcardApvlnb(orderPgLogVO.getApvlnb());
|
||||
orderSetleVO.setSetleTyCd(payVO.getSetleTyCd());
|
||||
//orderSetleVO.setSetleMid(StringUtil.isNullToString(mapper.selectBOSopSetleMidKeyInqire(payVO))); // 쇼핑몰 결제 MID(상점키) 조회
|
||||
|
||||
log.info("insertStripeSetle service StripePayMap_orderSetleVO ::: {}", orderSetleVO);
|
||||
|
||||
purchsMapper.updateOrderSetle(orderSetleVO);
|
||||
|
||||
log.info("insertStripeSetle service StripePayMap_orderSetleVO end::: ");
|
||||
|
||||
content.put("status", "0");
|
||||
content.put("message", "Stripe 결제 정보 등록을 완료 하였습니다.");
|
||||
|
||||
try {
|
||||
selectBOOrdrMssageSndngProcs(orderVO);
|
||||
} catch (Exception e) {
|
||||
log.debug("{} 메시지 발송 실패", payVO.getOrderId());
|
||||
}
|
||||
|
||||
} catch (WnbtRestException wre) {
|
||||
log.error("insertStripeSetle1 WnbtRestException : ", wre);
|
||||
payResult = false;
|
||||
throw wre;
|
||||
} catch (Exception wre) {
|
||||
log.error("insertStripeSetle1 Exception : ", wre);
|
||||
payResult = false;
|
||||
throw wre;
|
||||
} finally {
|
||||
log.info("insertStripeSetle1 order finally !!!!! {} ", payVO.getOrderId());
|
||||
// FM_ORDER_PG_LOG 등록
|
||||
ordrLogService.insertBOOrderPgLog(orderPgLogVO);
|
||||
// 주문 로그
|
||||
ordrLogService.insertSetleOrderLog(payVO, payResult, "0000", "Stripe 결제 실패 [결제 정보 NULL]");
|
||||
}
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@@ -5752,6 +5908,16 @@ public class BOOrdrService{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Stripe 주문 상태 조회
|
||||
* @param ordrVO
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
public DataMap selectOrdrSttus(BOOrdrVO ordrVO) {
|
||||
return mapper.selectOrdrDtl(ordrVO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > 주문완료 정보 조회
|
||||
* @param ordrVO
|
||||
@@ -6015,8 +6181,8 @@ public class BOOrdrService{
|
||||
LinkedHashMap subsvcOne = subsvcList.get(0);
|
||||
log.debug("subsvcOne : {}", subsvcOne);
|
||||
|
||||
goodsAmt = BigDecimal.valueOf((Integer) subsvcOne.get("selpric"));
|
||||
setleAmt = BigDecimal.valueOf((Integer) subsvcOne.get("selpric"));
|
||||
goodsAmt = BigDecimal.valueOf((Integer) subsvcOne.get("slepric"));
|
||||
setleAmt = BigDecimal.valueOf((Integer) subsvcOne.get("slepric"));
|
||||
log.debug("결제 예정 금액 : {}", setleAmt);
|
||||
|
||||
// 환율계산
|
||||
|
||||
@@ -29,60 +29,66 @@ public class BODwldItmVO extends AbstractVO {
|
||||
private String[] selItems;
|
||||
|
||||
public enum items {
|
||||
item01("export_group_innb", "출고그룹"),
|
||||
item02("ordr_innb_with_export_group_innb", "주문번호+출고그룹"),
|
||||
item03("ordr_innb", "주문번호"),
|
||||
item04("smrt_shopng_ordrnb", "npay주문번호"),
|
||||
item05("ordr_rcept_dt", "주문일"),
|
||||
item06("ordrr_nm", "주문자명"),
|
||||
item07("mbr_id", "주문자아이디"),
|
||||
item08("ordrr_mbtlnb", "주문자휴대폰"),
|
||||
item09("ordrr_email", "주문자이메일"),
|
||||
item10("order_memo", "사용자메모"),
|
||||
item11("lgstc_adm_memo", "물류담당자메모"),
|
||||
item12("inflow_cours_url", "주문경로"),
|
||||
item13("dlivy_dt", "출고일"),
|
||||
item14("dlvy_mth_nm", "받는방법"),
|
||||
item15("hdrycpn_nm", "택배사"),
|
||||
item16("invcnb", "운송장번호"),
|
||||
item17("dlvylc_adres_info", "받는정보"),
|
||||
item18("recpnt_nm", "수령인"),
|
||||
item19("recpnt_mbtlnb", "수령인휴대폰"),
|
||||
item20("dlvylc_zip", "우편번호"),
|
||||
item21("dlvylc_rnm_adres", "전체주소(도로명)"),
|
||||
item22("dlvy_amt", "배송비"),
|
||||
item23("ordr_goods_innb", "상품고유번호"),
|
||||
item24("npay_goods_ordrnb", "npay상품주문번호"),
|
||||
item25("goods_nm", "상품명"),
|
||||
item26("invntry_qy", "현재고"),
|
||||
item27("prchspric", "매입가"),
|
||||
item28("cnsmrpric", "정가"),
|
||||
item29("dscntpric", "할인가"),
|
||||
item30("pric_by_ordr_qy", "할인가x수량"),
|
||||
item31("taxt_trget_at", "과세여부"),
|
||||
item32("input_optn", "추가입력옵션"),
|
||||
item33("ordr_qy", "주문수량"),
|
||||
item34("refnd_qy", "취소수량"),
|
||||
item35("bfr_sndng_qy", "보낸수량"),
|
||||
item36("aftr_sndng_qy", "보낼수량"),
|
||||
item37("ordr_sttus_nm", "주문상품상태"),
|
||||
item38("goods_dscnt_amt", "상품쿠폰할인"),
|
||||
item39("event_dscnt_amt", "이벤트할인"),
|
||||
item40("mlt_dscnt_amt", "복수구매할인"),
|
||||
item41("dlvy_dscnt_amt", "배송비쿠폰"),
|
||||
item42("mlg_dscnt_amt", "마일리지사용"),
|
||||
item43("spbk_dscnt_amt", "장바구니할인쿠폰"),
|
||||
item44("enuri_dscnt_amt", "에누리"),
|
||||
item45("setle_amt", "결제금액"),
|
||||
item46("setle_dt", "결제일"),
|
||||
item47("setle_mth_nm", "결제방법"),
|
||||
item48("snggds_accml_mlg_amt", "지급마일리지"),
|
||||
item49("dlvylc_group_nb", "배송그룹번호"),
|
||||
item50("dlvy_amt_setle_mth_nm", "배송비결제방식"),
|
||||
item51("ordr_ty_nm", "주문유형"),
|
||||
item52("optn_cd_1", "상품코드"),
|
||||
item53("dlvy_mssage_cn", "배송메시지"),
|
||||
item54("shipping_sttus_nm", "출고상태");
|
||||
exportGroupInnb("export_group_innb", "출고그룹"),
|
||||
ordrInnbWithExportGroupInnb("ordr_innb_with_export_group_innb", "주문번호+출고그룹"),
|
||||
ordrInnb("ordr_innb", "주문번호"),
|
||||
smrtShopngOrdrnb("smrt_shopng_ordrnb", "npay주문번호"),
|
||||
ordrRceptDt("ordr_rcept_dt", "주문일"),
|
||||
ordrrNm("ordrr_nm", "주문자명"),
|
||||
mbrId("mbr_id", "주문자아이디"),
|
||||
ordrrMbtlnb("ordrr_mbtlnb", "주문자휴대폰"),
|
||||
ordrrEmail("ordrr_email", "주문자이메일"),
|
||||
orderMemo("order_memo", "사용자메모"),
|
||||
lgstcAdmMemo("lgstc_adm_memo", "물류담당자메모"),
|
||||
inflowCoursUrl("inflow_cours_url", "주문경로"),
|
||||
dlivyDt("dlivy_dt", "출고일"),
|
||||
dlvyMthNm("dlvy_mth_nm", "받는방법"),
|
||||
hdrycpnNm("hdrycpn_nm", "택배사"),
|
||||
invcnb("invcnb", "운송장번호"),
|
||||
dlvylcAdresInfo("dlvylc_adres_info", "받는정보"),
|
||||
recpntNm("recpnt_nm", "수령인"),
|
||||
recpntMbtlnb("recpnt_mbtlnb", "수령인휴대폰"),
|
||||
dlvylcZip("dlvylc_zip", "우편번호"),
|
||||
dlvylcRnmAdres("dlvylc_rnm_adres", "전체주소(도로명)"),
|
||||
dlvyAmt("dlvy_amt", "배송비"),
|
||||
ordrGoodsInnb("ordr_goods_innb", "상품고유번호"),
|
||||
npayGoodsOrdrnb("npay_goods_ordrnb", "npay상품주문번호"),
|
||||
goodsNm("goods_nm", "상품명"),
|
||||
goodsNmEn("goods_nm_en", "상품명(영문)"),
|
||||
invntryQy("invntry_qy", "현재고"),
|
||||
prchspric("prchspric", "매입가"),
|
||||
cnsmrpric("cnsmrpric", "정가"),
|
||||
dscntpric("dscntpric", "할인가"),
|
||||
pricByOrdrQy("pric_by_ordr_qy", "할인가x수량"),
|
||||
taxtTrgetAt("taxt_trget_at", "과세여부"),
|
||||
inputOptn("input_optn", "추가입력옵션"),
|
||||
ordrQy("ordr_qy", "주문수량"),
|
||||
refndQy("refnd_qy", "취소수량"),
|
||||
bfrSndngQy("bfr_sndng_qy", "보낸수량"),
|
||||
aftrSndngQy("aftr_sndng_qy", "보낼수량"),
|
||||
ordrSttusNm("ordr_sttus_nm", "주문상품상태"),
|
||||
goodsDscntAmt("goods_dscnt_amt", "상품쿠폰할인"),
|
||||
eventDscntAmt("event_dscnt_amt", "이벤트할인"),
|
||||
mltDscntAmt("mlt_dscnt_amt", "복수구매할인"),
|
||||
dlvyDscntAmt("dlvy_dscnt_amt", "배송비쿠폰"),
|
||||
mlgDscntAmt("mlg_dscnt_amt", "마일리지사용"),
|
||||
spbkDscntAmt("spbk_dscnt_amt", "장바구니할인쿠폰"),
|
||||
enuriDscntAmt("enuri_dscnt_amt", "에누리"),
|
||||
setleAmt("setle_amt", "결제금액"),
|
||||
setleDt("setle_dt", "결제일"),
|
||||
setleMthNm("setle_mth_nm", "결제방법"),
|
||||
snggdsAccmlMlgAmt("snggds_accml_mlg_amt", "지급마일리지"),
|
||||
dlvylcGroupNb("dlvylc_group_nb", "배송그룹번호"),
|
||||
dlvyAmtSetleMthNm("dlvy_amt_setle_mth_nm", "배송비결제방식"),
|
||||
ordrTyNm("ordr_ty_nm", "주문유형"),
|
||||
optnCd_1("optn_cd_1", "상품코드"),
|
||||
hscode("hscode", "HS Code"),
|
||||
realWt("realWt", "실무게"),
|
||||
volWt("volWt", "부피무게"),
|
||||
packageCnt("packageCnt", "포장개수"),
|
||||
dlvyMssageCn("dlvy_mssage_cn", "배송메시지"),
|
||||
shippingSttusNm("shipping_sttus_nm", "출고상태"),
|
||||
subsvcAt("subsvc_at", "주문구분");
|
||||
|
||||
private final String key;
|
||||
private final String value;
|
||||
|
||||
@@ -40,6 +40,9 @@ public class BOOrdrShippingVO extends AbstractVO {
|
||||
/** 받는자휴대폰번호 */
|
||||
private String recpntMbtlnb;
|
||||
|
||||
/** 개인통관부호 */
|
||||
private String cstmclerCd;
|
||||
|
||||
/** 배송지역코드 */
|
||||
private String dlvylcAreaCd;
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@ import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BOOrdrSrchVO extends AbstractVO{
|
||||
@@ -82,7 +86,15 @@ public class BOOrdrSrchVO extends AbstractVO{
|
||||
|
||||
private String[] srchOrdrInnbs; // 주문번호 배열
|
||||
|
||||
private String[] srchOrdrDlvyInnbs; // 배송번호 배열
|
||||
|
||||
private List<Map<String, String>> srchInnbPairs; // 발주서 주키 배열
|
||||
|
||||
private String srchDatePeriod; // 날짜구간코드
|
||||
|
||||
private String[] dlvylcAreaCds; // 배송지역코드
|
||||
|
||||
private String excelInclude; // 엑셀 다운여부
|
||||
/*
|
||||
####################################
|
||||
전체 주문 조회 검색 추가 조건 종료
|
||||
|
||||
@@ -20,6 +20,10 @@ import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.nimbusds.jose.shaded.gson.Gson;
|
||||
import com.stripe.StripeClient;
|
||||
import com.stripe.exception.StripeException;
|
||||
import com.stripe.model.Event;
|
||||
import com.stripe.net.Webhook;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrLogService;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
@@ -300,7 +304,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* KCP 결제
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> insertKcpPay(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -359,7 +363,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* KCP 수기결제
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> insertKcpPayKeyin(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -432,7 +436,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* KCP 결제 취소
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> cancelKcpPay(BOPayVO payVO) throws Exception {
|
||||
Map<String, Object> resParam = new HashMap<>();
|
||||
@@ -639,7 +643,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* KCP 에스크로 상태변경 : 배송정보전송
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> updateEscwKcpPay(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -758,7 +762,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* KCP 현금영수증 발급
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> insertKcpCashReceipt(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -819,7 +823,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* KCP 현금영수증 취소
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> cancelKcpCashReceipt(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -869,7 +873,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* KCP 현금영수증 조회
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> selectKcpCashReceipt(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -912,7 +916,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* 토스 현금영수증 발급
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> insertTossCashReceipt(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -952,7 +956,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* 토스 현금영수증 취소
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> cancelTossCashReceipt(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -983,7 +987,7 @@ public class BOPayService{
|
||||
/**
|
||||
* 토스 결제
|
||||
* 일반결제(toss), 토스페이(tossPay), 브랜드페이(brandPay) 같이 들어옴
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> insertTossPay(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -1020,7 +1024,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* 토스 수기결제
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> insertTossPayKeyin(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -1059,7 +1063,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* 토스 결제취소
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> cancelTossPay(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -1076,17 +1080,6 @@ public class BOPayService{
|
||||
obj.put("refundReceiveAccount", refundReceiveAccount);
|
||||
}
|
||||
|
||||
/* 취소 호출 시 setModGubun을 하기로 함
|
||||
String memorSetleAt = StringUtil.isNullToString(payVO.getMemorSetleAt());
|
||||
if("Y".equals(memorSetleAt)){
|
||||
payVO.setModGubun("keyIn");
|
||||
}else if("G".equals(memorSetleAt)){ //이부분에 대한 처리 필요
|
||||
payVO.setModGubun("brandPay");
|
||||
}else{
|
||||
payVO.setModGubun("toss");
|
||||
}
|
||||
// easyPay 추가되어야 함
|
||||
*/
|
||||
payVO.setType("cancel");
|
||||
|
||||
URL url = new URL("https://api.tosspayments.com/v1/payments/" + payVO.getPaymentKey() + "/cancel");
|
||||
@@ -1277,7 +1270,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* 토스 에스크로 상태변경 : 배송정보전송
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> updateEscwTossPay(BOPayVO payVO) throws Exception {
|
||||
//관련 키값 DB 조회
|
||||
@@ -1333,7 +1326,6 @@ public class BOPayService{
|
||||
rcvname = payVO.getRcvName(); // 실수령인명
|
||||
|
||||
boolean resp = false; //응답결과
|
||||
// mertkey = resultMap.get("tossPublicKey").toString(); //토스페이먼츠에서 발급한 상점키로 변경해 주시기 바랍니다. //TODO : 확인필요
|
||||
mertkey = payVO.getMertkey(); // 머트키(퍼블릭키)
|
||||
// mertkey = "9fd0de8489b4dc4af0dc40459958cd70"; //토스페이먼츠에서 발급한 상점키로 변경해 주시기 바랍니다.
|
||||
|
||||
@@ -1475,7 +1467,7 @@ public class BOPayService{
|
||||
|
||||
/**
|
||||
* Kiwoom 결제
|
||||
* @param BOPayVO
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> insertKiwoomPay(BOPayVO payVO) throws Exception {
|
||||
|
||||
@@ -1511,8 +1503,14 @@ public class BOPayService{
|
||||
|
||||
String kiwoom_ENC = "";
|
||||
try {
|
||||
String url = "https://apitest.kiwoompay.co.kr/pay/hash";
|
||||
URL goUrl = new URL(url);
|
||||
String targetURL = "";
|
||||
if(cpId.equals("CTS18056")) {
|
||||
targetURL = "https://apitest.kiwoompay.co.kr/pay/hash"; //개발서버
|
||||
}else{
|
||||
targetURL = "https://api.kiwoompay.co.kr/pay/hash"; //운영서버
|
||||
}
|
||||
log.info("insertKiwoomPay targetURL :::{} ",targetURL);
|
||||
URL goUrl = new URL(targetURL);
|
||||
|
||||
HttpURLConnection con = (HttpURLConnection) goUrl.openConnection();
|
||||
con.setRequestMethod("POST");
|
||||
@@ -1559,6 +1557,223 @@ public class BOPayService{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 키움 결제취소
|
||||
* @param payVO
|
||||
*/
|
||||
public Map<String, Object> cancelKiwoomPay(BOPayVO payVO) throws Exception {
|
||||
|
||||
log.debug("cancelKiwoomPay step1 payVO :::> {}", payVO);
|
||||
|
||||
//관련 키값 DB 조회
|
||||
DataMap resultMap = selectPayLink(payVO.getSopmalCd());
|
||||
|
||||
log.debug("cancelKiwoomPay step2 resultMap :::> {}", resultMap);
|
||||
|
||||
//요청코드
|
||||
String authKey = resultMap.get("kcpSecretKey").toString();
|
||||
String cpId = resultMap.get("kcpMid").toString();
|
||||
// 개발서버 네이버페이 CPID 관련 적용 취소
|
||||
// if ("naverpay".equals(payVO.getModGubun())) {
|
||||
// authKey = resultMap.get("bpaySecretKey").toString();
|
||||
// cpId = resultMap.get("bpayMid").toString();
|
||||
// }
|
||||
|
||||
String amount = payVO.getCancelAmount(); //취소금액
|
||||
String trxId = payVO.getTno(); //거래번호
|
||||
String cancelReason = payVO.getCancelReason(); //취소사유
|
||||
String payMethod = payVO.getPayMethod(); //취소결제수단
|
||||
String cancelReq = "Y"; //취소URL 요청여부
|
||||
//String TAXFREEAMT = nullCheck(request.getParameter("TAXFREEAMT")); //비과세 취소금액
|
||||
|
||||
//1차 요청코드
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put("cancelReason", cancelReason); //취소사유
|
||||
obj.put("cancelAmount", amount); //취소금액 (금액이 없으면 전체취소)
|
||||
|
||||
JSONObject jsonObj = new JSONObject();
|
||||
jsonObj.put("CPID", cpId);
|
||||
jsonObj.put("PAYMETHOD", payMethod);
|
||||
jsonObj.put("AMOUNT",amount);
|
||||
jsonObj.put("CANCELREQ",cancelReq);
|
||||
jsonObj.put("TRXID",trxId);
|
||||
jsonObj.put("CANCELREASON",cancelReason);
|
||||
//jsonObj.put("TAXFREEAMT",TAXFREEAMT);
|
||||
|
||||
log.debug("cancelKiwoomPay step3 JSONObject ::: {}", jsonObj.toString());
|
||||
|
||||
//로그 저장 셋팅
|
||||
JSONObject finalJObj = new JSONObject();
|
||||
DataMap pgApiLogReqVO = new DataMap();
|
||||
pgApiLogReqVO.put("reqParam", jsonObj.toString());
|
||||
pgApiLogReqVO.put("ordrInnb", StringUtil.isNullToString(payVO.getOrderId()));
|
||||
pgApiLogReqVO.put("sopmalCd", StringUtil.isNullToString(payVO.getSopmalCd()));
|
||||
pgApiLogReqVO.put("pgCmpnyNm", StringUtil.isNullToString(payVO.getPgCmpnyNm()));
|
||||
pgApiLogReqVO.put("mbrInnb", StringUtil.isNullToString(payVO.getMbrInnb()));
|
||||
|
||||
log.debug("cancelKiwoomPay step4 pgApiLogReqVO ::: {}", pgApiLogReqVO);
|
||||
|
||||
// ====== step 1. 취소URL 요청 ======
|
||||
try{
|
||||
|
||||
//결제 API URL
|
||||
String targetURL = "";
|
||||
if(cpId.equals("CTS18056")) {
|
||||
targetURL = "https://apitest.kiwoompay.co.kr/pay/ready"; //개발서버
|
||||
}else{
|
||||
targetURL = "https://api.kiwoompay.co.kr/pay/ready"; //운영서버
|
||||
}
|
||||
log.info("cancelKiwoomPay targetURL :::{} ",targetURL);
|
||||
URL goUrl = new URL(targetURL);
|
||||
|
||||
HttpURLConnection con = (HttpURLConnection) goUrl.openConnection();
|
||||
con.setRequestMethod("POST");
|
||||
con.setRequestProperty("Content-Type", "application/json");
|
||||
con.setRequestProperty("Authorization", authKey);
|
||||
con.setUseCaches(false);
|
||||
con.setDoOutput(true);
|
||||
con.setDoInput(true);
|
||||
|
||||
OutputStream os = con.getOutputStream();
|
||||
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
|
||||
|
||||
writer.write("");
|
||||
os.write((jsonObj.toString()).getBytes("UTF-8"));
|
||||
writer.flush();
|
||||
writer.close();
|
||||
os.close();
|
||||
con.connect();
|
||||
|
||||
//호출 결과 값
|
||||
int responseCode = con.getResponseCode();
|
||||
String responseMsg = con.getResponseMessage();
|
||||
|
||||
log.debug("cancelKiwoom STEP1 승인전 responseCode ====={}",responseCode);
|
||||
log.debug("cancelKiwoom STEP1 승인전 responseMsg ====={}",responseMsg);
|
||||
|
||||
String token = "";
|
||||
String returnUrl = "";
|
||||
|
||||
//정상 수신 했을경우 (응답코드:200)
|
||||
if(responseCode == 200){
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
String inputLine = null;
|
||||
StringBuffer response1 = new StringBuffer();
|
||||
|
||||
while((inputLine = in.readLine()) != null){
|
||||
response1.append(inputLine);
|
||||
}
|
||||
|
||||
in.close();
|
||||
|
||||
//응답 데이터 처리
|
||||
String responseBody = response1.toString();
|
||||
JSONObject jObj = (JSONObject)JSONValue.parse(responseBody);
|
||||
token = jObj.get("TOKEN").toString();
|
||||
returnUrl = jObj.get("RETURNURL").toString();
|
||||
|
||||
log.debug("cancelKiwoom STEP1 승인 responseBody ====={}", responseBody);
|
||||
log.debug("cancelKiwoom STEP1 승인 TOKEN200 ====={}",token);
|
||||
log.debug("cancelKiwoom STEP1 승인 URL200 ====={}",returnUrl);
|
||||
}
|
||||
|
||||
con.disconnect();
|
||||
|
||||
log.debug("cancelKiwoom STEP1 승인 TOKEN ====={}",token);
|
||||
log.debug("cancelKiwoom STEP1 승인 URL ====={}",returnUrl);
|
||||
|
||||
// ====== step 2. 취소 승인 요청 ======
|
||||
|
||||
targetURL = returnUrl;
|
||||
goUrl = new URL(targetURL);
|
||||
|
||||
con = (HttpURLConnection) goUrl.openConnection();
|
||||
con.setRequestMethod("POST");
|
||||
con.setRequestProperty("Content-Type", "application/json");
|
||||
con.setRequestProperty("Authorization", authKey);
|
||||
con.setRequestProperty("TOKEN", token);//TOKEN
|
||||
con.setUseCaches(false);
|
||||
con.setDoOutput(true);
|
||||
con.setDoInput(true);
|
||||
os = con.getOutputStream();
|
||||
writer = new BufferedWriter(new OutputStreamWriter(os));
|
||||
|
||||
writer.write("");
|
||||
os.write((jsonObj.toString()).getBytes("EUC-KR"));
|
||||
writer.flush();
|
||||
writer.close();
|
||||
os.close();
|
||||
con.connect();
|
||||
|
||||
//호출 결과 값
|
||||
responseCode = con.getResponseCode();
|
||||
responseMsg = con.getResponseMessage();
|
||||
|
||||
//정상 수신 했을경우 (응답코드:200)
|
||||
if(responseCode == 200){
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
|
||||
String inputLine = null;
|
||||
StringBuffer response1 = new StringBuffer();
|
||||
|
||||
while((inputLine = in.readLine()) != null){
|
||||
response1.append(inputLine);
|
||||
}
|
||||
|
||||
in.close();
|
||||
|
||||
//응답 데이터 처리
|
||||
String responseBody = response1.toString();
|
||||
finalJObj = (JSONObject)JSONValue.parse(responseBody);
|
||||
}
|
||||
|
||||
con.disconnect();
|
||||
|
||||
log.debug("Kiwoom 결제취소 jObj::: {}", finalJObj.toString());
|
||||
|
||||
pgApiLogReqVO.put("resParam", finalJObj.toString());
|
||||
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
||||
log.debug("cancelKiwoomPay finally pgApiLogReqVO ::: {}", pgApiLogReqVO);
|
||||
|
||||
ordrLogService.insertSetleOrderPgLog(payVO, pgApiLogReqVO);
|
||||
ordrLogService.insertBOPgApiLogReqRegist(pgApiLogReqVO);
|
||||
}
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("response", finalJObj.toString());
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* stripeClient 생성
|
||||
* @param sopmalCd
|
||||
*/
|
||||
public StripeClient createStripeClient(String sopmalCd) throws StripeException {
|
||||
String stripeSecretKey = selectPayLink(sopmalCd).get("stripeSecretKey").toString();
|
||||
StripeClient stripeClient = new StripeClient(stripeSecretKey);
|
||||
|
||||
return stripeClient;
|
||||
}
|
||||
/**
|
||||
* stripe WebhookEvent 생성
|
||||
* @param payload
|
||||
* @param sigHeader
|
||||
*/
|
||||
public Event createWebhookEvent(String payload, String sigHeader, String sopmalCd) throws StripeException {
|
||||
String stripeWebhookKey = selectPayLink(sopmalCd).get("stripeWebhookKey").toString();
|
||||
Event event = Webhook.constructEvent(
|
||||
payload,
|
||||
sigHeader,
|
||||
stripeWebhookKey
|
||||
);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,53 +1,48 @@
|
||||
package com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.stripe.StripeClient;
|
||||
import com.stripe.model.Refund;
|
||||
import com.stripe.param.RefundCreateParams;
|
||||
import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderService;
|
||||
import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO;
|
||||
import com.wb.domainserver.domain.gcone.goods.subsvc.service.BOSubsvcService;
|
||||
import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService;
|
||||
import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOCashVO;
|
||||
import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO;
|
||||
import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.mapper.BOOrdrMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrDlvyVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrRefundVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.mapper.BORtngudrefndMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BOOrderReItemVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORefundSetleVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndSrchVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.selngpruf.service.BOSelngprufService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO;
|
||||
import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService;
|
||||
import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BODwldCouponVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.site.mapper.BOSiteMapper;
|
||||
import com.wb.domainserver.domain.gcone.setup.site.vo.BOSetupContentsItemVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.mapper.BORtngudrefndMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndSrchVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.support.WebExchangeBindException;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -87,6 +82,9 @@ public class BORtngudrefndService {
|
||||
@Autowired
|
||||
private BOOrderService orderService;
|
||||
|
||||
@Autowired
|
||||
private BOSubsvcService subsvcService;
|
||||
|
||||
@Autowired
|
||||
private BORtngudrefndMapper mapper;
|
||||
|
||||
@@ -844,8 +842,8 @@ public class BORtngudrefndService {
|
||||
|
||||
} else { // 일반결제
|
||||
|
||||
// 토스페이
|
||||
if ("tosspay".equals(setle.getPgCmpnyNm()) || "gcpay".equals(setle.getPgCmpnyNm()) || "toss".equals(setle.getPgCmpnyNm()) || "naverpay".equals(setle.getPgCmpnyNm()) || "kakaopay".equals(setle.getPgCmpnyNm())) {
|
||||
// 토스페이 || "naverpay".equals(setle.getPgCmpnyNm()) >> 네이버페이는 토스에서 분리해서 키움으로 이동
|
||||
if ("tosspay".equals(setle.getPgCmpnyNm()) || "gcpay".equals(setle.getPgCmpnyNm()) || "toss".equals(setle.getPgCmpnyNm()) || "kakaopay".equals(setle.getPgCmpnyNm())) {
|
||||
log.debug("toss 취소 진입");
|
||||
BOPayVO payVO = new BOPayVO();
|
||||
payVO.setOrderId(ordrInnb); // 주문 고유번호
|
||||
@@ -1104,6 +1102,82 @@ public class BORtngudrefndService {
|
||||
|
||||
}
|
||||
|
||||
// kiwoom
|
||||
} else if ("kiwoom".equals(setle.getPgCmpnyNm()) || "naverpay".equals(setle.getPgCmpnyNm())) {
|
||||
log.debug("kiwoom 취소 진입");
|
||||
|
||||
BOPayVO payVO = new BOPayVO();
|
||||
payVO.setOrderId(ordrInnb); // 주문 고유번호
|
||||
payVO.setSopmalCd(sopmalCd); // 쇼핑몰 코드
|
||||
|
||||
payVO.setMId(setle.getSetleMid()); // 결제 MID(상점키)
|
||||
payVO.setSetleTyCd(setle.getSetleTyCd()); // 결제 유형 코드
|
||||
payVO.setCancelReason(refundVO.getRefundResnCn()); // 취소사유
|
||||
payVO.setTno(setle.getDelngNb()); // 거래번호
|
||||
|
||||
//부분 취소 처리 경우 승인금액보다 취소요청금액이 적으면 부분 취소 처리
|
||||
payVO.setCancelAmount(String.valueOf(wonCancelAmt)); // 취소금액
|
||||
|
||||
if ("Y".equals(setle.getMemorSetleAt())) {
|
||||
payVO.setMemorSetleAt("Y");
|
||||
}
|
||||
|
||||
// 개발서버 네이버페이 CPID 구분 적용 취소
|
||||
// payVO.setModGubun(setle.getPgCmpnyNm()); //결제키 구분용
|
||||
if ("kiwoom".equals(setle.getPgCmpnyNm())) {
|
||||
payVO.setPayMethod("CARD");
|
||||
} else if ("naverpay".equals(setle.getPgCmpnyNm())) {
|
||||
payVO.setPayMethod("NAVERPAY");
|
||||
}
|
||||
|
||||
log.info("kiwoom api 전달 파라미터 확인 : {}", payVO);
|
||||
setleCancelResultMessage = payService.cancelKiwoomPay(payVO);
|
||||
log.info("결제 취소 API 결과 확인 : {}", setleCancelResultMessage);
|
||||
log.info("결제 취소 API 결과 확인 response : {}", setleCancelResultMessage.get("response"));
|
||||
|
||||
String jsonString = (String) setleCancelResultMessage.get("response");
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
responseMap = objectMapper.readValue(jsonString, Map.class);
|
||||
log.debug("리스펀스 결과 : {}", responseMap);
|
||||
log.info("리스펀스 결과 값 : {}", responseMap.get("RESULTCODE"));
|
||||
|
||||
if ("0000".equals(responseMap.get("RESULTCODE"))) {
|
||||
// 0000 : 취소성공
|
||||
log.debug("0000");
|
||||
message.put("setleStatus", responseMap.get("RESULTCODE"));
|
||||
message.put("setleMessage", responseMap.get("ERRORMESSAGE"));
|
||||
} else {
|
||||
log.debug("1111");
|
||||
message.put("setleStatus", responseMap.get("RESULTCODE"));
|
||||
message.put("setleMessage", responseMap.get("ERRORMESSAGE"));
|
||||
logDtlCn = "잘못된 요청입니다. 관리자에게 문의하세요.";
|
||||
throw new WnbtRestException("잘못된 요청입니다. 관리자에게 문의하세요.");
|
||||
}
|
||||
|
||||
} else if ("stripe".equals(setle.getPgCmpnyNm())) {
|
||||
log.debug("stripe 취소 진입");
|
||||
|
||||
StripeClient stripeClient = payService.createStripeClient(sopmalCd);
|
||||
RefundCreateParams params =
|
||||
RefundCreateParams.builder()
|
||||
.setPaymentIntent(setle.getPgInnb())
|
||||
.setAmount(Long.valueOf(cancelAmt))
|
||||
.build();
|
||||
Refund refund = stripeClient.v1().refunds().create(params);
|
||||
String resultCode = refund.getStatus();
|
||||
|
||||
if ("succeeded".equals(resultCode)) {
|
||||
// succeeded : 취소성공
|
||||
log.debug(resultCode);
|
||||
message.put("setleStatus", resultCode);
|
||||
message.put("setleMessage", "Refund is expected to arrive in customer’s bank");
|
||||
} else {
|
||||
log.debug(resultCode);
|
||||
message.put("setleStatus", resultCode);
|
||||
message.put("setleMessage", resultCode);
|
||||
logDtlCn = "잘못된 요청입니다. 관리자에게 문의하세요.";
|
||||
throw new WnbtRestException("잘못된 요청입니다. 관리자에게 문의하세요.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1331,7 +1405,21 @@ public class BORtngudrefndService {
|
||||
if ("0".equals(message.get("status"))) {
|
||||
|
||||
// ########################################### 상품 재고 ###########################################
|
||||
boGoodsService.updateRefundUsefulInvntryQy(refundVO);
|
||||
BOOrdrVO ordrVO = new BOOrdrVO();
|
||||
ordrVO.setOrdrInnb(refundVO.getOrdrInnb());
|
||||
ordrVO.setSopmalCd(refundVO.getSopmalCd());
|
||||
|
||||
DataMap ordrDtl = ordrMapper.selectOrdrDtl(ordrVO);
|
||||
boolean subsvcAt = "Y".equals(ordrDtl.get("subsvcAt"));
|
||||
// 구독서비스 여부(subsvcAt)에 따라 재고 처리 로직을 분기
|
||||
if(subsvcAt) {
|
||||
// 구독서비스
|
||||
ordrVO.setSubsvcInnb(ordrDtl.get("subsvcInnb").toString());
|
||||
subsvcService.updateSubsvcRefundUsefulInvntryQy(ordrVO);
|
||||
} else {
|
||||
// 일반 주문
|
||||
boGoodsService.updateRefundUsefulInvntryQy(refundVO);
|
||||
}
|
||||
|
||||
|
||||
// ########################################### 쿠폰 복원 ###########################################
|
||||
@@ -1486,7 +1574,21 @@ public class BORtngudrefndService {
|
||||
|
||||
|
||||
// ########################################### 상품 재고 ###########################################
|
||||
boGoodsService.updateCancelOrderUsefulInvntryQy(ordrVO, ordrVO.getOrdrInnb());
|
||||
BOOrdrVO boOrdrVO = new BOOrdrVO();
|
||||
boOrdrVO.setOrdrInnb(ordrVO.getOrdrInnb());
|
||||
boOrdrVO.setSopmalCd(ordrVO.getSopmalCd());
|
||||
|
||||
DataMap ordrDtl = ordrMapper.selectOrdrDtl(boOrdrVO);
|
||||
boolean subsvcAt = "Y".equals(ordrDtl.get("subsvcAt"));
|
||||
// 구독서비스 여부(subsvcAt)에 따라 재고 처리 로직을 분기
|
||||
if(subsvcAt) {
|
||||
// 구독서비스
|
||||
boOrdrVO.setSubsvcInnb(ordrDtl.get("subsvcInnb").toString());
|
||||
subsvcService.updateSubsvcCancelOrderUsefulInvntryQy(boOrdrVO);
|
||||
} else {
|
||||
// 일반 주문
|
||||
boGoodsService.updateCancelOrderUsefulInvntryQy(ordrVO, ordrVO.getOrdrInnb());
|
||||
}
|
||||
|
||||
resotreResult.put("restoreResult", "0");
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -309,22 +309,8 @@ public class BOPurchsEvtService {
|
||||
}
|
||||
}
|
||||
|
||||
// 사은품 이벤트
|
||||
// 사은품 이벤트
|
||||
} else if ("02".equals(purchsEvtVO.getEvtDv())) {
|
||||
|
||||
|
||||
/*
|
||||
if (!StringUtils.isEmpty(Arrays.toString(purchsEvtVO.getDeleteGiftList()))) {
|
||||
log.debug(" 삭제 리스트 확인 purchsEvtVO . get getDeleteGiftList : {}", purchsEvtVO.getDeleteGiftList());
|
||||
for (String deleteGiftInnb : purchsEvtVO.getDeleteGiftList()) {
|
||||
log.debug("deleteGiftInnb : {}", deleteGiftInnb);
|
||||
purchsEvtVO.setDeleteGiftInnb(Integer.parseInt(deleteGiftInnb));
|
||||
mapper.deleteBOPurchsEvtGiftDel(purchsEvtVO);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
if (!StringUtils.isEmpty(Arrays.toString(purchsEvtVO.getDeleteBnefList()))) {
|
||||
log.debug(" 삭제 리스트 확인 purchsEvtVO . get deleteList : {}", (Object) purchsEvtVO.getDeleteBnefList());
|
||||
for (String deleteBnefInnb : purchsEvtVO.getDeleteBnefList()) {
|
||||
@@ -334,7 +320,6 @@ public class BOPurchsEvtService {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (purchsEvtVO.getDiscountBnefVOList() != null && !purchsEvtVO.getDiscountBnefVOList().isEmpty()) {
|
||||
log.debug("사은품 혜택 진입");
|
||||
for (BOPurchsEvtDiscountBnefVO tempVO : purchsEvtVO.getDiscountBnefVOList()) {
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.cost.mapper;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface BOCostMapper {
|
||||
|
||||
/**
|
||||
* 원가 설정 목록 조회
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public List<DataMap> selectBOCostPriceList(BOCostVO vo);
|
||||
|
||||
/**
|
||||
* 원가 설정 삭제
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public int deleteBOCostPrice(BOCostVO vo);
|
||||
|
||||
/**
|
||||
* 원가 설정 추가
|
||||
* @param dm
|
||||
* @return
|
||||
*/
|
||||
public int insertBOCostPrice(DataMap dm);
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.cost.service;
|
||||
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.mapper.BOCostMapper;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 원가 설정 BO Serivce
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-05-29 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-05-29
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class BOCostService {
|
||||
@Autowired
|
||||
private BOMaComncdService bOMaComncdService;
|
||||
@Autowired
|
||||
private BOCostMapper mapper;
|
||||
|
||||
/**
|
||||
* 원가 설정 목록 조회
|
||||
* @param vo
|
||||
* @return List<DataMap>
|
||||
*/
|
||||
public List<DataMap> selectBOCostPriceList(BOCostVO vo) {
|
||||
List<DataMap> costList = new ArrayList<>();
|
||||
costList = mapper.selectBOCostPriceList(vo);
|
||||
|
||||
return costList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 원가 설정 수정
|
||||
* @param vo
|
||||
*/
|
||||
@Transactional
|
||||
public DataMap updateBOCostPriceSetup(BOCostVO vo) {
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
mapper.deleteBOCostPrice(vo);
|
||||
|
||||
DataMap paramMap = new DataMap();
|
||||
paramMap.put("regusr", vo.getRegusr());
|
||||
|
||||
int[] ctInnbArr = vo.getCtInnbArr();
|
||||
if (!ObjectUtils.isEmpty(ctInnbArr)) {
|
||||
for (int i = 0; i < ctInnbArr.length; i++) {
|
||||
paramMap.put("stdrDe", vo.getStdrDeArr()[i]);
|
||||
paramMap.put("usdRate", vo.getUsdRateArr()[i]);
|
||||
paramMap.put("jpDlvyCt", vo.getJpDlvyCtArr()[i]);
|
||||
paramMap.put("intlDlvyAmt", vo.getIntlDlvyAmtArr()[i]);
|
||||
paramMap.put("pltfomFee", vo.getPltfomFeeArr()[i]);
|
||||
paramMap.put("expctTax", vo.getExpctTaxArr()[i]);
|
||||
paramMap.put("cstmsFee", vo.getCstmsFeeArr()[i]);
|
||||
paramMap.put("krDlvyCt", vo.getKrDlvyCtArr()[i]);
|
||||
|
||||
mapper.insertBOCostPrice(paramMap);
|
||||
}
|
||||
}
|
||||
|
||||
message.put("result", "success");
|
||||
} catch (WnbtRestException wre) {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.cost.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class BOCostVO extends AbstractVO {
|
||||
|
||||
/** 원가 고유번호 */
|
||||
private int[] ctInnbArr;
|
||||
|
||||
/** 기준일자 */
|
||||
private String[] stdrDeArr;
|
||||
|
||||
/** USD 환율 (1,000 円) */
|
||||
private BigDecimal[] usdRateArr;
|
||||
|
||||
/** 일본 내 물류비 */
|
||||
private int[] jpDlvyCtArr;
|
||||
|
||||
/** 운임비용(JP) */
|
||||
private int[] intlDlvyAmtArr;
|
||||
|
||||
/** 플랫폼 수수료율 */
|
||||
private BigDecimal[] pltfomFeeArr;
|
||||
|
||||
/** 예상세율 */
|
||||
private BigDecimal[] expctTaxArr;
|
||||
|
||||
/** 통관수수료 */
|
||||
private int[] cstmsFeeArr;
|
||||
|
||||
/** 운임비용(KR) */
|
||||
private int[] krDlvyCtArr;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.exchngrt.service;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.mapper.BOMaSopmalMapper;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 환율 설정 BO Serivce
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-04-27 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-04-27
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class BOExchngrtService {
|
||||
@Autowired
|
||||
private BOMaComncdService bOMaComncdService;
|
||||
@Autowired
|
||||
private BOMaSopmalMapper mapper;
|
||||
|
||||
/**
|
||||
* 환율 설정 수정
|
||||
* @param boMaSopmalVO
|
||||
*/
|
||||
@Transactional
|
||||
public DataMap updateBOExchngrtSetup(BOMaSopmalVO boMaSopmalVO) {
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
mapper.updateBOExchngrtSetup(boMaSopmalVO);
|
||||
message.put("result", "success");
|
||||
} catch (WnbtRestException wre) {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.exchngrt.vo;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class BOExchngrtVO extends AbstractVO {
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 1엔 환율(살때) */
|
||||
private String buyRate;
|
||||
|
||||
/** 1엔 환율(팔때) */
|
||||
private String sellRate;
|
||||
|
||||
/** BOMaSopmalVO로 변환 */
|
||||
public BOMaSopmalVO setBOMaSopmalVO() {
|
||||
BOMaSopmalVO boMaSopmalVO = new BOMaSopmalVO();
|
||||
boMaSopmalVO.setSopmalCd(this.getSopmalCd());
|
||||
boMaSopmalVO.setBuyRate(this.getBuyRate());
|
||||
boMaSopmalVO.setSellRate(this.getSellRate());
|
||||
boMaSopmalVO.setRegusr(this.getRegusr());
|
||||
boMaSopmalVO.setUpdusr(this.getUpdusr());
|
||||
|
||||
return boMaSopmalVO;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.family.service;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.mapper.BOMaSopmalMapper;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
* 패밀리사이트 설정 BO Serivce
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-04-27 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-04-27
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class BOFamilyService {
|
||||
@Autowired
|
||||
private BOMaComncdService bOMaComncdService;
|
||||
@Autowired
|
||||
private BOMaSopmalMapper mapper;
|
||||
|
||||
/**
|
||||
* 패밀리사이트 설정 수정
|
||||
* @param boMaSopmalVO
|
||||
*/
|
||||
@Transactional
|
||||
public DataMap updateBOFamilySetup(BOMaSopmalVO boMaSopmalVO) {
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
mapper.deteteBOShopFamilySite(boMaSopmalVO);
|
||||
|
||||
DataMap paramMap = new DataMap();
|
||||
paramMap.put("sopmalCd", boMaSopmalVO.getSopmalCd());
|
||||
paramMap.put("regusr", boMaSopmalVO.getRegusr());
|
||||
|
||||
if (!ObjectUtils.isEmpty(boMaSopmalVO.getFamilySiteNmArr())) {
|
||||
String[] siteNm = boMaSopmalVO.getFamilySiteNmArr();
|
||||
String[] siteUrl = boMaSopmalVO.getFamilySiteUrlArr();
|
||||
|
||||
for (int i = 0; i < siteNm.length; i++) {
|
||||
if (!StringUtil.isEmpty(siteNm[i])) {
|
||||
paramMap.put("familySiteNm", siteNm[i]);
|
||||
paramMap.put("familySiteUrl", siteUrl[i]);
|
||||
mapper.insertBOShopFamilySite(paramMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message.put("result", "success");
|
||||
} catch (WnbtRestException wre) {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.family.vo;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class BOFamilyVO extends AbstractVO {
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 패밀리사이트명 */
|
||||
private String[] familySiteNmArr;
|
||||
|
||||
/** 패밀리사이트URL */
|
||||
private String[] familySiteUrlArr;
|
||||
|
||||
/** BOMaSopmalVO로 변환 */
|
||||
public BOMaSopmalVO setBOMaSopmalVO() {
|
||||
BOMaSopmalVO boMaSopmalVO = new BOMaSopmalVO();
|
||||
boMaSopmalVO.setSopmalCd(this.getSopmalCd());
|
||||
boMaSopmalVO.setFamilySiteNmArr(this.getFamilySiteNmArr());
|
||||
boMaSopmalVO.setFamilySiteUrlArr(this.getFamilySiteUrlArr());
|
||||
boMaSopmalVO.setRegusr(this.getRegusr());
|
||||
boMaSopmalVO.setUpdusr(this.getUpdusr());
|
||||
|
||||
return boMaSopmalVO;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.guidance.service;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.mapper.BOMaSopmalMapper;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 안내문구 설정 BO Serivce
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-04-27 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-04-27
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class BOGuidanceService {
|
||||
@Autowired
|
||||
private BOMaComncdService bOMaComncdService;
|
||||
@Autowired
|
||||
private BOMaSopmalMapper mapper;
|
||||
|
||||
/**
|
||||
* 안내문구 설정 수정
|
||||
* @param boMaSopmalVO
|
||||
*/
|
||||
@Transactional
|
||||
public DataMap updateBOGuidanceSetup(BOMaSopmalVO boMaSopmalVO) {
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
mapper.updateBOGuidanceSetup(boMaSopmalVO);
|
||||
message.put("result", "success");
|
||||
} catch (WnbtRestException wre) {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.guidance.vo;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class BOGuidanceVO extends AbstractVO {
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 회원가입 안내 타이틀 */
|
||||
private String joinGuidanceSj;
|
||||
|
||||
/** 회원가입 안내문구 */
|
||||
private String joinGuidanceWords;
|
||||
|
||||
/** 회원가입 주요혜택 */
|
||||
private String joinBnef;
|
||||
|
||||
/** 회원가입 주요문구 */
|
||||
private String joinComptWords;
|
||||
|
||||
/** 구독서비스 안내문구 */
|
||||
private String subsvcGuidanceWords;
|
||||
|
||||
/** BOMaSopmalVO로 변환 */
|
||||
public BOMaSopmalVO setBOMaSopmalVO() {
|
||||
BOMaSopmalVO boMaSopmalVO = new BOMaSopmalVO();
|
||||
boMaSopmalVO.setSopmalCd(this.getSopmalCd());
|
||||
boMaSopmalVO.setJoinGuidanceSj(this.getJoinGuidanceSj());
|
||||
boMaSopmalVO.setJoinGuidanceWords(this.getJoinGuidanceWords());
|
||||
boMaSopmalVO.setJoinBnef(this.getJoinBnef());
|
||||
boMaSopmalVO.setJoinComptWords(this.getJoinComptWords());
|
||||
boMaSopmalVO.setSubsvcGuidanceWords(this.getSubsvcGuidanceWords());
|
||||
boMaSopmalVO.setRegusr(this.getRegusr());
|
||||
boMaSopmalVO.setUpdusr(this.getUpdusr());
|
||||
|
||||
return boMaSopmalVO;
|
||||
}
|
||||
}
|
||||
@@ -28,28 +28,48 @@ import lombok.EqualsAndHashCode;
|
||||
public class BOSetupOrdrVO extends AbstractVO {
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/**마일리지 지급 사용여부*/
|
||||
private String mlgPymntAt;
|
||||
/**마일리지 지급 구분코드*/
|
||||
private String mlgPymntDvCd;
|
||||
/**마일리지 지급 비율*/
|
||||
private String mlgPymntRt;
|
||||
/**마일리지 최대 지급 금액*/
|
||||
private String mlgMxmmPymntAmt;
|
||||
/**마일리지 최대 지급 금액 사용여부*/
|
||||
private String mlgMxmmPymntAmtAt;
|
||||
/**마일리지 유효기간*/
|
||||
private String mlgValidPd;
|
||||
/**마일리지 유효기간 사용여부*/
|
||||
private String mlgValidPdAt;
|
||||
/**여러곳배송여부*/
|
||||
|
||||
// 여러 곳 배송
|
||||
/** 여러곳배송여부 */
|
||||
private String multiDlvyAt;
|
||||
/**정기배송여부*/
|
||||
/** 정기배송여부 */
|
||||
private String fdrmDlvyAt;
|
||||
/**선물하기여부*/
|
||||
|
||||
// 선물하기
|
||||
/** 선물하기여부 */
|
||||
private String giftDlvyAt;
|
||||
/**선물하기자동취소기간*/
|
||||
/** 선물하기자동취소기간 */
|
||||
private String giftDlvyAtmcCanclPd;
|
||||
/*충전형마일리지 사용여부*/
|
||||
|
||||
// GC 머니
|
||||
/** 충전형마일리지 사용여부 */
|
||||
private String cashAt;
|
||||
|
||||
// 마일리지 지급
|
||||
/** 마일리지 지급 사용여부 */
|
||||
private String mlgPymntAt;
|
||||
/** 마일리지 지급 구분코드 */
|
||||
private String mlgPymntDvCd;
|
||||
/** 마일리지 지급 비율 */
|
||||
private String mlgPymntRt;
|
||||
/** 마일리지 최대 지급 금액 */
|
||||
private String mlgMxmmPymntAmt;
|
||||
/** 마일리지 최대 지급 금액 사용여부 */
|
||||
private String mlgMxmmPymntAmtAt;
|
||||
/** 마일리지 유효기간 */
|
||||
private String mlgValidPd;
|
||||
/** 마일리지 유효기간 사용여부 */
|
||||
private String mlgValidPdAt;
|
||||
|
||||
// 마일리지 사용 조건
|
||||
/** 마일리지 보유 사용 금액 */
|
||||
private String mlgHoldUseAmt;
|
||||
/** 마일리지 결제금액 사용 금액 */
|
||||
private String mlgSetleAmtUseAmt;
|
||||
/** 마일리지 최소 사용 금액 */
|
||||
private String mlgMummUseAmt;
|
||||
/** 마일리지 최대 사용 구분(MLG_MXMM_USE_DV) */
|
||||
private String mlgMxmmUseDv;
|
||||
/** 마일리지 최대 사용 금액 */
|
||||
private String mlgMxmmUseAmt;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.wb.domainserver.domain.mngr.goods.badge.controller;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.service.BOGoodsBadgeService;
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/mngr/goods/badge")
|
||||
public class GoodsBadgeController {
|
||||
|
||||
@Autowired
|
||||
private BOGoodsBadgeService service;
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping("/selectGoodsBadgeSetup")
|
||||
public String selectGoodsBadgeSetup(BOGoodsBadgeVO vo, ModelMap model,
|
||||
@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
DataMap content = new DataMap();
|
||||
content.put("badgeList", service.selectBOGoodsBadgeList(vo));
|
||||
model.addAttribute("resultMap", content);
|
||||
return "mngr/goods/badge/GoodsBadgeSetupU";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/updateGoodsBadgeSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateGoodsBadgeSetup(BOGoodsBadgeVO vo,
|
||||
@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
vo.setRegusr(user.getUserInnb());
|
||||
vo.setUpdusr(user.getUserInnb());
|
||||
|
||||
DataMap message = service.updateBOGoodsBadgeSetup(vo);
|
||||
return ResponseEntity.ok(WnbtResponse.builder().resBody(new WnbtResponseBody(message)).build());
|
||||
}
|
||||
}
|
||||
@@ -479,10 +479,8 @@ public class GoodsmngrController {
|
||||
List<?> cgo134List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List);
|
||||
|
||||
// 상품아이콘
|
||||
maComncdVO = new BOMaComncdVO();
|
||||
maComncdVO.setGroupCd("GOODS_ICON");
|
||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
// 상품 배지
|
||||
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||
content.put("iconList", iconList);
|
||||
|
||||
// 실시간수량배너구분코드
|
||||
@@ -664,10 +662,7 @@ public class GoodsmngrController {
|
||||
|
||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
||||
|
||||
maComncdVO = new BOMaComncdVO();
|
||||
maComncdVO.setGroupCd("GOODS_ICON");
|
||||
|
||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||
|
||||
//브랜드 목록조회
|
||||
|
||||
@@ -1466,10 +1461,7 @@ public class GoodsmngrController {
|
||||
|
||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
||||
|
||||
maComncdVO = new BOMaComncdVO();
|
||||
maComncdVO.setGroupCd("GOODS_ICON");
|
||||
|
||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||
|
||||
//브랜드 목록조회
|
||||
|
||||
|
||||
@@ -197,11 +197,12 @@ public class MngrLoginController {
|
||||
log.debug("리프레쉬 토큰이 없는 경우 realm :: {}", realm);
|
||||
|
||||
//엑세스토큰 삭제
|
||||
CookieUtils.deleteCookie("ACT","/"+realm, request, response);
|
||||
CookieUtils.deleteCookie("token_expire","/"+realm, request, response);
|
||||
CookieUtils.deleteCookie("ACT","/", request, response);
|
||||
CookieUtils.deleteCookie("RFT","/" + realm + "/tokens/refresh", request, response);
|
||||
CookieUtils.deleteCookie("token_expire","/", request, response);
|
||||
|
||||
response.sendRedirect("/"+realm);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//리프레쉬 토큰 있을 경우(존재한다는 자체가 refresh토큰이 만료된 상태가 아님)
|
||||
|
||||
@@ -76,16 +76,26 @@ public class MngrMainController {
|
||||
// public String selectMngrMainInqire(@CookieValue(value = "authSopmalCd") String authSopmalCd, ModelMap model, HttpServletRequest request) {
|
||||
public String selectMngrMainInqire(String authSopmalCd, ModelMap model, HttpServletRequest request, HttpServletResponse response ) {
|
||||
BOBbsVO vo = new BOBbsVO();
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
|
||||
// 작성자 정보 할당
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
// 쇼핑몰코드
|
||||
vo.setRegusr(user.getUserInnb()); // 등록자
|
||||
vo.setUpdusr(user.getUserInnb()); // 수정자
|
||||
// 쇼핑몰코드
|
||||
if(StringUtil.isEmpty(authSopmalCd)) {
|
||||
if(request.getCookies()!=null) {
|
||||
for(Cookie cookie : request.getCookies()){
|
||||
if("authSopmalCd".equals(cookie.getName())){
|
||||
authSopmalCd = cookie.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
|
||||
DataMap resultMap = new DataMap();
|
||||
resultMap = bbsService.selectBOBbscttDshboardInqireForm(vo);
|
||||
|
||||
@@ -677,6 +677,8 @@ public class MngrMbrController {
|
||||
content.put("sex", sex);
|
||||
content.put("grad", grad);
|
||||
|
||||
log.debug("BOMbrSrchVO : {}", vo);
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/mbr/mbr/selectBOMarketingTrgetSrchPopupForm", vo),
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
@@ -607,6 +608,24 @@ public class DlivyController {
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치 > 출고 상태 변경 ( 배송중, 배송완료 )
|
||||
* @param boDlivyVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateDlivySttusGetbackBatchUpdt", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateDlivySttusGetbackBatchUpdt(@RequestBody BODlivyVO boDlivyVO) {
|
||||
Map<String, Object> message = new HashMap<>();
|
||||
message = service.updateBODlivySttusGetbackUpdt(boDlivyVO);
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 다운로드 항목 조회
|
||||
|
||||
@@ -45,9 +45,12 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@@ -622,6 +625,8 @@ public class OrdrmngrController {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 주문내역서 팝업 화면 이동
|
||||
* @param model
|
||||
@@ -1056,6 +1061,14 @@ public class OrdrmngrController {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
String cstmclerCd = ordrShippingVO.getCstmclerCd();
|
||||
String cstmclerCdReg = "^P\\d{12}$";
|
||||
if (cstmclerCd == null || cstmclerCd.trim().isEmpty()) {
|
||||
throw new WnbtRestException("개인통관번호은(는) 필수 입력값입니다.");
|
||||
}else if (!cstmclerCd.matches(cstmclerCdReg)) {
|
||||
throw new WnbtRestException("개인통관번호는 P로 시작하는 13자리 부호만 입력할 수 있습니다.");
|
||||
}
|
||||
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
ordrShippingVO.setUpdusr(user.getUserInnb());
|
||||
|
||||
@@ -1682,6 +1695,239 @@ public class OrdrmngrController {
|
||||
다운로드항목설정 종료
|
||||
#################################### */
|
||||
|
||||
/* ####################################
|
||||
발주서 관리 시작
|
||||
#################################### */
|
||||
/**
|
||||
* 발주서 관리 화면 이동
|
||||
* @param ordrSrchVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectExcelPoListInqireRForm")
|
||||
public String selectExcelPoListInqireForm(ModelMap model, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||
model.addAttribute("sopmalCd", ordrSrchVO.getSopmalCd());
|
||||
model.addAttribute("ordrSrchVO", ordrSrchVO);
|
||||
|
||||
// 공통코드 호출
|
||||
BOMaComncdVO bOMaComncdVO = new BOMaComncdVO();
|
||||
bOMaComncdVO.setGroupCd("NATION_CD"); // 국가코드(NATION_CD)
|
||||
model.addAttribute("nationCdList", bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO));
|
||||
|
||||
return "mngr/ordr/ordrmngr/PurchOrdrListInqireRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 발주서 목록 조회
|
||||
* @param ordrSrchVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value= "/selectExcelPoListInqire" , method = RequestMethod.POST)
|
||||
public String selectExcelPoListInqire(ModelMap model, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd){
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
String secretKey = commonService.selectSecretkey();
|
||||
ordrSrchVO.setSecretKey(secretKey);
|
||||
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||
ordrSrchVO.setSrchOrdrSttusCd("35");
|
||||
|
||||
//페이징 처리를 위한 pagination 객체 생성
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(ordrSrchVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(ordrSrchVO.getPageUnit());
|
||||
paginationInfo.setPageSize(paginationProperties.getPageSize());
|
||||
ordrSrchVO.setPaginationInfo(paginationInfo);
|
||||
|
||||
//페이징 처리를 위한 값 설정
|
||||
ordrSrchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
ordrSrchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
ordrSrchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
//회원 목록 조회 결과 및 페이징정보 넣기
|
||||
content.put("paginationInfo", ordrSrchVO.getPaginationInfo());
|
||||
content.put("resultList", service.selectExcelPoList(ordrSrchVO));
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
model.addAttribute("ordrSrchVO", ordrSrchVO);
|
||||
|
||||
return "mngr/ordr/ordrmngr/PurchOrdrListInqireR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 주문내역서 팝업 화면 이동
|
||||
* @param model
|
||||
* @param ordrSrchVO
|
||||
* @return OrdrDtstmnDwldPopupR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectPurchOrdrDtstmnDwldPopupForm")
|
||||
public String selectPurchOrdrDtstmnDwldPopupForm(ModelMap model, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) throws Exception {
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
BOOrdrVO ordrVO = new BOOrdrVO();
|
||||
ordrVO.setOrdrInnbs(ordrSrchVO.getSrchOrdrInnbs());
|
||||
ordrVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
content.put("ordrDtstmnDwldList", service.selectOrdrDtstmnDwld(ordrVO));
|
||||
model.addAttribute("data", content);
|
||||
model.addAttribute("ordrSrchVO", ordrSrchVO);
|
||||
|
||||
return "mngr/ordr/ordrmngr/PurchOrdrDtstmnDwldPopupR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 발주서 엑셀다운로드
|
||||
* @param response
|
||||
* @param ordrSrchVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectExcelPoDwldListInqire")
|
||||
public void selectPurchOrderExcelList(HttpServletResponse response, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
String secretKey = commonService.selectSecretkey();
|
||||
ordrSrchVO.setSecretKey(secretKey);
|
||||
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||
ordrSrchVO.setSrchOrdrSttusCd("35");
|
||||
|
||||
//엑셀 항목별 제목에 출력될 내용 설정
|
||||
LinkedHashMap<String, String> headerMap = new LinkedHashMap<String, String>();
|
||||
List<String> headerValues = List.of(
|
||||
"날짜",
|
||||
"업체코드",
|
||||
"업체명",
|
||||
"업체TEL",
|
||||
"업체주소",
|
||||
"특별통관업체명",
|
||||
"특별통관번호",
|
||||
"주문번호",
|
||||
"용도구분",
|
||||
"수취인",
|
||||
"수취인TEL",
|
||||
"수취인HP",
|
||||
"개인통관고유부호",
|
||||
"우편번호",
|
||||
"주소",
|
||||
"나머지주소",
|
||||
"메모",
|
||||
"고객 구입사이트",
|
||||
"무게",
|
||||
"포장개수",
|
||||
"HS CODE",
|
||||
"상거래유형",
|
||||
"내용물",
|
||||
"Unit Value",
|
||||
"상품개수",
|
||||
"Value",
|
||||
"Brand",
|
||||
"사전식품신고 종류",
|
||||
"제조국",
|
||||
"제조회사명",
|
||||
"중문상품명",
|
||||
"Shipper 구입사이트",
|
||||
"판매중개업체명",
|
||||
"판매중개업체 등록부호",
|
||||
"구매(배송)대행업체명",
|
||||
"구매(배송)대행업체 등록부호",
|
||||
"해외판매자명",
|
||||
"해외판매자 등록부호",
|
||||
"사이트 주문번호"
|
||||
);
|
||||
for (int i = 0; i < headerValues.size(); i++) {
|
||||
headerMap.put(String.format("item%02d", i + 1), headerValues.get(i));
|
||||
}
|
||||
|
||||
String[] ordrInnbs = ordrSrchVO.getSrchOrdrInnbs();
|
||||
String[] ordrDlvyInnbs = ordrSrchVO.getSrchOrdrDlvyInnbs();
|
||||
List<Map<String, String>> srchInnbPairs = new ArrayList<>();
|
||||
if (ordrInnbs != null && ordrDlvyInnbs != null) {
|
||||
for (int i = 0; i < ordrInnbs.length; i++) {
|
||||
Map<String, String> pair = new HashMap<>();
|
||||
pair.put("srchOrdrInnb", ordrInnbs[i]);
|
||||
pair.put("srchOrdrDlvyInnb", ordrDlvyInnbs[i]);
|
||||
|
||||
srchInnbPairs.add(pair);
|
||||
}
|
||||
}
|
||||
ordrSrchVO.setSrchInnbPairs(srchInnbPairs);
|
||||
|
||||
//엑셀 항목에 출력될 내용 설정
|
||||
List<DataMap> resultList = service.selectExcelPoListDwld(ordrSrchVO);
|
||||
List<Map<String, Object>> excelList = new ArrayList<>();
|
||||
if (resultList != null) {
|
||||
for (int i = 0; i < resultList.size(); i++) {
|
||||
HashMap<String, Object> dataMap = new HashMap<>();
|
||||
// int cellInt = 1; // 셀 타입 = 숫자
|
||||
List<Object> dataValues = Arrays.asList(
|
||||
resultList.get(i).get("ordrRceptDt"),
|
||||
resultList.get(i).get("entrpsCd"),
|
||||
resultList.get(i).get("entrpsNm"),
|
||||
resultList.get(i).get("entrpsTel"),
|
||||
resultList.get(i).get("entrpsAdres"),
|
||||
resultList.get(i).get("spclCstmclerEntrps"),
|
||||
resultList.get(i).get("spclCstmclerCd"),
|
||||
resultList.get(i).get("ordrInnb"),
|
||||
resultList.get(i).get("purpsDv"),
|
||||
resultList.get(i).get("recpntNm"),
|
||||
resultList.get(i).get("recpntMbtlnb"),
|
||||
resultList.get(i).get("recpntHp"),
|
||||
resultList.get(i).get("cstmclerCd"),
|
||||
resultList.get(i).get("dlvylcZip"),
|
||||
resultList.get(i).get("dlvylcRnmLnbAdres"),
|
||||
resultList.get(i).get("dlvylcAdresDtl"),
|
||||
resultList.get(i).get("dlvyMssageCn"),
|
||||
resultList.get(i).get("cstmrPurchsSite"),
|
||||
resultList.get(i).get("realWt"),
|
||||
resultList.get(i).get("packageCnt"),
|
||||
resultList.get(i).get("hscode"),
|
||||
resultList.get(i).get("cmmrcTy"),
|
||||
resultList.get(i).get("cn"),
|
||||
resultList.get(i).get("unitValue"),
|
||||
resultList.get(i).get("ordrQy"),
|
||||
resultList.get(i).get("value"),
|
||||
resultList.get(i).get("brand"),
|
||||
resultList.get(i).get("preFoodDcl"),
|
||||
resultList.get(i).get("provdNation"),
|
||||
resultList.get(i).get("provdCmpnyNm"),
|
||||
resultList.get(i).get("chnlngGoodsNm"),
|
||||
resultList.get(i).get("shipperPurchsSite"),
|
||||
resultList.get(i).get("sleAgntEntrpsNm"),
|
||||
resultList.get(i).get("sleAgntEntrpsRegistCd"),
|
||||
resultList.get(i).get("purchsDlvyAgencyNm"),
|
||||
resultList.get(i).get("purchsDlvyAgencyRegistCd"),
|
||||
resultList.get(i).get("ovseaSelerNm"),
|
||||
resultList.get(i).get("ovseaSelerRegistCd"),
|
||||
resultList.get(i).get("siteOrdrInnb")
|
||||
);
|
||||
|
||||
for (int j = 0; j < dataValues.size(); j++) {
|
||||
dataMap.put(String.format("item%02d", j + 1), dataValues.get(j));
|
||||
}
|
||||
excelList.add(dataMap);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************/
|
||||
try {
|
||||
//엑셀생성 및 다운로드
|
||||
/*LocalDateTime now = LocalDateTime.now();
|
||||
String excelFileName = "발주서_";
|
||||
|
||||
excelFileName += String.format("%s~%s", ordrSrchVO.getSrchStartDate(), ordrSrchVO.getSrchEndDate()); // 엑셀 다운로드 파일명*/
|
||||
|
||||
String excelFileName = "발주서";
|
||||
String encodedFileName = URLEncoder.encode(excelFileName, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20");
|
||||
ExcelDownloadUtil.createExcel(encodedFileName, headerMap, excelList, response);
|
||||
|
||||
service.updateExcelDownDt(ordrSrchVO);
|
||||
} catch (IOException ioe) {
|
||||
log.error("엑셀다운로드 중 오류가 발생하였습니다.", ioe);
|
||||
throw new WnbtRestException("엑셀다운로드 중 오류가 발생하였습니다.");
|
||||
}
|
||||
}
|
||||
/* ####################################
|
||||
발주서 관리 종료
|
||||
#################################### */
|
||||
|
||||
/* ####################################
|
||||
주문조회 팝업 시작
|
||||
#################################### */
|
||||
|
||||
@@ -393,14 +393,6 @@ public class PurchsEvtController {
|
||||
tempVO.setEndAmt(null);
|
||||
}
|
||||
|
||||
if ("01".equals(purchsEvtVO.getDscntBnefDvCd())) {
|
||||
tempVO.setBgnAmt("0");
|
||||
tempVO.setEndAmt("0");
|
||||
} else if ("02".equals(purchsEvtVO.getDscntBnefDvCd())) {
|
||||
tempVO.setBgnCnt("0");
|
||||
tempVO.setEndCnt("0");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (BOPurchsEvtDiscountBnefVO tempVO : purchsEvtVO.getDiscountBnefVOList()) {
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.wb.domainserver.domain.mngr.setup.cost;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.service.BOCostService;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
/**
|
||||
* 원가 설정 Controller
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-05-29 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-05-29
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/mngr/setup/cost")
|
||||
@Slf4j
|
||||
public class CostController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Autowired
|
||||
private BOCostService service;
|
||||
|
||||
/**
|
||||
* 원가 설정 페이지 이동
|
||||
*
|
||||
* @param vo
|
||||
* @return CostPriceUpdtU.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCostPriceSetup")
|
||||
public String selectCostPriceSetup(BOCostVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
DataMap content = new DataMap();
|
||||
|
||||
content.put("costList", service.selectBOCostPriceList(vo));
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
|
||||
return "mngr/setup/cost/CostPriceUpdtU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 원가 설정 수정
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/updateCostPriceSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateCostPriceSetup(@Validated BOCostVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
DataMap message = service.updateBOCostPriceSetup(vo);
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
package com.wb.domainserver.domain.mngr.setup.exchngrt;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.exchngrt.service.BOExchngrtService;
|
||||
import com.wb.domainserver.domain.gcone.setup.exchngrt.vo.BOExchngrtVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
/**
|
||||
* 환율 설정 Controller
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-04-27 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-04-27
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/mngr/setup/exchngrt")
|
||||
@Slf4j
|
||||
public class ExchngrtController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Autowired
|
||||
private BOExchngrtService service;
|
||||
|
||||
@Autowired
|
||||
private BOMaSopmalService bOMaSopmalService;
|
||||
|
||||
/**
|
||||
* 환율 설정 페이지 이동
|
||||
*
|
||||
* @param boMaSopmalVO
|
||||
* @return NbkkSetupListR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectExchngrtSetup")
|
||||
public String selectExchngrtSetup(BOMaSopmalVO boMaSopmalVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
DataMap content = new DataMap();
|
||||
|
||||
boMaSopmalVO.setSopmalCd(authSopmalCd);
|
||||
content.put("sopmalDetailList", bOMaSopmalService.selectBOSopmalUpdtForm(boMaSopmalVO));
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
|
||||
return "mngr/setup/exchngrt/ExchngrtUpdtU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 환율 설정 수정
|
||||
*
|
||||
* @param boExchngrtVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/updateExchngrtSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateExchngrtSetup(@Validated BOExchngrtVO boExchngrtVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
//등록자 수정자 set
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
boExchngrtVO.setRegusr(user.getUserInnb());
|
||||
boExchngrtVO.setUpdusr(user.getUserInnb());
|
||||
boExchngrtVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
DataMap message = service.updateBOExchngrtSetup(boExchngrtVO.setBOMaSopmalVO());
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.wb.domainserver.domain.mngr.setup.family;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.family.service.BOFamilyService;
|
||||
import com.wb.domainserver.domain.gcone.setup.family.vo.BOFamilyVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
/**
|
||||
* 패밀리사이트 설정 Controller
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-04-27 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-04-27
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/mngr/setup/family")
|
||||
@Slf4j
|
||||
public class FamilyController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Autowired
|
||||
private BOFamilyService service;
|
||||
|
||||
@Autowired
|
||||
private BOMaSopmalService bOMaSopmalService;
|
||||
|
||||
/**
|
||||
* 패밀리사이트 설정 페이지 이동
|
||||
*
|
||||
* @param boMaSopmalVO
|
||||
* @return NbkkSetupListR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectFamilySiteSetup")
|
||||
public String selectFamilySiteSetup(BOMaSopmalVO boMaSopmalVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
DataMap content = new DataMap();
|
||||
|
||||
boMaSopmalVO.setSopmalCd(authSopmalCd);
|
||||
content.put("siteList", bOMaSopmalService.selectBOSopmalUpdtFormSitelList(boMaSopmalVO));
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
|
||||
return "mngr/setup/family/FamilySiteUpdtU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 패밀리사이트 설정 수정
|
||||
*
|
||||
* @param boFamilyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/updateFamilySiteSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateNbkkSetup(@Validated BOFamilyVO boFamilyVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
//등록자 수정자 set
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
boFamilyVO.setRegusr(user.getUserInnb());
|
||||
boFamilyVO.setUpdusr(user.getUserInnb());
|
||||
boFamilyVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
DataMap message = service.updateBOFamilySetup(boFamilyVO.setBOMaSopmalVO());
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
package com.wb.domainserver.domain.mngr.setup.guidance;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.guidance.service.BOGuidanceService;
|
||||
import com.wb.domainserver.domain.gcone.setup.guidance.vo.BOGuidanceVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
/**
|
||||
* 안내문구 설정 Controller
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-04-27 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-04-27
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/mngr/setup/guidance")
|
||||
@Slf4j
|
||||
public class GuidanceController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Autowired
|
||||
private BOGuidanceService service;
|
||||
|
||||
@Autowired
|
||||
private BOMaSopmalService bOMaSopmalService;
|
||||
|
||||
/**
|
||||
* 안내문구 설정 페이지 이동
|
||||
*
|
||||
* @param boMaSopmalVO
|
||||
* @return NbkkSetupListR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectGuidanceSetup")
|
||||
public String selectNbkkSetupList(BOMaSopmalVO boMaSopmalVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
DataMap content = new DataMap();
|
||||
|
||||
boMaSopmalVO.setSopmalCd(authSopmalCd);
|
||||
content.put("sopmalDetailList", bOMaSopmalService.selectBOSopmalUpdtForm(boMaSopmalVO));
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
model.addAttribute("sopmalCd", authSopmalCd);
|
||||
|
||||
return "mngr/setup/guidance/GuidanceUpdtU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 안내문구 설정 수정
|
||||
*
|
||||
* @param boGuidanceVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/updateGuidanceSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateGuidanceSetup(@Validated BOGuidanceVO boGuidanceVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
//등록자 수정자 set
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
boGuidanceVO.setRegusr(user.getUserInnb());
|
||||
boGuidanceVO.setUpdusr(user.getUserInnb());
|
||||
boGuidanceVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
DataMap message = service.updateBOGuidanceSetup(boGuidanceVO.setBOMaSopmalVO());
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.wb.domainserver.domain.mngr.setup.ordr.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService;
|
||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
@@ -13,6 +15,7 @@ import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -63,6 +66,8 @@ public class SetupOrdrController {
|
||||
|
||||
@Autowired
|
||||
private BOOrdrMngrService service;
|
||||
@Autowired
|
||||
private BOMaSopmalService bOMaSopmalService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -73,15 +78,14 @@ public class SetupOrdrController {
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectOrdrSetupList")
|
||||
public String selectOrdrSetupList(ModelMap model, BOSetupOrdrVO boOrdrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
DataMap content = new DataMap();
|
||||
|
||||
boOrdrVO.setSopmalCd(authSopmalCd);
|
||||
content.put("ordrSetupList", service.selectBOOrdrSetupList(boOrdrVO));
|
||||
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
boOrdrVO.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
|
||||
Map<String, Object> content = service.selectBOOrdrSetupList(boOrdrVO);
|
||||
BOMaSopmalVO boMaSopmalVO = new BOMaSopmalVO();
|
||||
boMaSopmalVO.setSopmalCd(authSopmalCd);
|
||||
content.put("sopmalDetailList", bOMaSopmalService.selectBOSopmalUpdtForm(boMaSopmalVO));
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
@@ -154,6 +158,19 @@ public class SetupOrdrController {
|
||||
vo.setMlgMxmmPymntAmt(null);
|
||||
}
|
||||
|
||||
//마일리지 사용 조건 파라미터 정제
|
||||
if(!StringUtil.isEmpty(vo.getMlgHoldUseAmt()))
|
||||
vo.setMlgHoldUseAmt(StringUtil.removeCommaChar(vo.getMlgHoldUseAmt()));
|
||||
|
||||
if(!StringUtil.isEmpty(vo.getMlgSetleAmtUseAmt()))
|
||||
vo.setMlgSetleAmtUseAmt(StringUtil.removeCommaChar(vo.getMlgSetleAmtUseAmt()));
|
||||
|
||||
if(!StringUtil.isEmpty(vo.getMlgMummUseAmt()))
|
||||
vo.setMlgMummUseAmt(StringUtil.removeCommaChar(vo.getMlgMummUseAmt()));
|
||||
|
||||
if(!StringUtil.isEmpty(vo.getMlgMxmmUseAmt()))
|
||||
vo.setMlgMxmmUseAmt(StringUtil.removeCommaChar(vo.getMlgMxmmUseAmt()));
|
||||
|
||||
//등록자 수정자 set
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
|
||||
@@ -1385,6 +1385,8 @@ public class CscController {
|
||||
url = this.selectSubPageListForm(request, model, bbsctt); //서브페이지
|
||||
} else if ("useGuidance".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectUseGuidanceForm(request, model, bbsctt); //이용안내
|
||||
} else if ("detail".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectBbscttDtlInqire(request, model, bbsctt); //기타(상세보기)
|
||||
}
|
||||
} else if ("REGIST".equals(bbsctt.getAuthDv())) { //등록 이동
|
||||
if ("modal".equals(bbsctt.getReqUrl())) {
|
||||
@@ -1571,9 +1573,24 @@ public class CscController {
|
||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||
DataMap bbsInfo = new DataMap();
|
||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||
|
||||
// 등록 기능 사용 여부와 별개로 현재 사용자의 등록 권한을 확인한다.
|
||||
BOGnrlbbscttVO registAuthBbsctt = new BOGnrlbbscttVO();
|
||||
registAuthBbsctt.setSopmalCd(user.getSopmalCd());
|
||||
registAuthBbsctt.setBbsId(bbsctt.getBbsId());
|
||||
registAuthBbsctt.setServerDv("sopmal");
|
||||
registAuthBbsctt.setAuthDv("REGIST");
|
||||
if (user.getUserInnb() > 0) {
|
||||
registAuthBbsctt.setRegusr(user.getUserInnb());
|
||||
registAuthBbsctt.setMbrDvCd(user.getMbrDvCd());
|
||||
} else {
|
||||
registAuthBbsctt.setRegusr(0);
|
||||
}
|
||||
DataMap registAuth = service.selectBOBbscttAuth(registAuthBbsctt);
|
||||
DataMap content = new DataMap();
|
||||
|
||||
content.put("bbsInfo", bbsInfo);
|
||||
content.put("registAuthResult", registAuth.get("resultAuth"));
|
||||
content.put("bbsctt", bbsctt);
|
||||
content.put("resultList", resultList);
|
||||
content.put("paginationInfo", bbsctt.getPaginationInfo());
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService;
|
||||
import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService;
|
||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO;
|
||||
import com.wb.domainserver.realm.util.UrlExtractor;
|
||||
import com.wb.domainserver.response.ApiResponse;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
@@ -189,6 +190,23 @@ public class GoodsController {
|
||||
return Util.getDeviceType(request)+"/goods/GoodsSrchRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 화면 상품 배지 목록 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsBadgeList", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<List<DataMap>> selectGoodsBadgeList() {
|
||||
BOGoodsVO vo = new BOGoodsVO();
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
|
||||
return ResponseEntity.ok(service.selectBOGoodsBadgeList(vo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 검색 리스트
|
||||
* @param vo
|
||||
@@ -210,6 +228,42 @@ public class GoodsController {
|
||||
return Util.getDeviceType(request)+"/goods/GoodsSrchR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 검색어 로그 저장
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/insertSrchwrdLog", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> insertSrchwrdLog(HttpServletRequest request, BOGoodsVO vo) {
|
||||
//사용자 정보 추출 및 적용
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
vo.setMbrInnb(String.valueOf(user.getUserInnb()));
|
||||
}
|
||||
|
||||
//요청 URL
|
||||
String url = request.getRequestURI();
|
||||
vo.setConectUrl(url);
|
||||
//host 정보
|
||||
String host = request.getHeader("X-Original-Host") != null ? request.getHeader("X-Original-Host") : UrlExtractor.getOriginalHost(request);
|
||||
vo.setConectDomn(host);
|
||||
|
||||
DataMap message = service.insertBOSrchwrdLog(vo);
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOSrchGoodsNm", vo),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품명 검색어 조회
|
||||
* @param vo
|
||||
@@ -251,6 +305,14 @@ public class GoodsController {
|
||||
public String selectGoodsListForm(HttpServletRequest request,
|
||||
BOGoodsVO vo,
|
||||
ModelMap model) {
|
||||
String mobileParentCtgryId = request.getParameter("mobileParentCtgryId");
|
||||
String mobileCurrentCtgryId = request.getParameter("mobileCurrentCtgryId");
|
||||
boolean mobileSubCategorySelected = mobileParentCtgryId != null && !mobileParentCtgryId.isBlank()
|
||||
&& mobileCurrentCtgryId != null && !mobileCurrentCtgryId.isBlank();
|
||||
if (mobileSubCategorySelected) {
|
||||
vo.setCtgryId(mobileParentCtgryId);
|
||||
}
|
||||
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
@@ -268,7 +330,7 @@ public class GoodsController {
|
||||
//검색한 카테고리 정보로 vo 세팅
|
||||
if(!CollectionUtils.isEmpty(goodsCategoryList)){
|
||||
vo.setUpperCtgryId(goodsCategoryList.get(0).get("baseCtgryId").toString());
|
||||
vo.setCtgryId(goodsCategoryList.get(0).get("baseCtgryId").toString());
|
||||
vo.setCtgryId(mobileSubCategorySelected ? mobileCurrentCtgryId : goodsCategoryList.get(0).get("baseCtgryId").toString());
|
||||
}else{
|
||||
vo.setUpperCtgryId("0");
|
||||
vo.setCtgryId("0");
|
||||
@@ -425,6 +487,7 @@ public class GoodsController {
|
||||
|
||||
// 상세 조회
|
||||
DataMap goodsDtl = service.selectBOGoodsDtlInfo(vo);
|
||||
List<DataMap> goodsBadgeList = service.selectBOGoodsBadgeList(vo);
|
||||
|
||||
//상품 옵션 조회
|
||||
DataMap goodsOptList = service.selectBOGoodsOptionList(vo);
|
||||
@@ -476,6 +539,7 @@ public class GoodsController {
|
||||
//담기
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
content.put("goodsDtl", goodsDtl);
|
||||
content.put("goodsBadgeList", goodsBadgeList);
|
||||
content.put("evtBannerList", evtBannerList);
|
||||
content.put("goodsOptList", goodsOptList);
|
||||
content.put("GoodsRelateInfo", goodsReleateInfo);
|
||||
|
||||
@@ -153,6 +153,8 @@ public class LoginController {
|
||||
CookieUtils.deleteCookie("token_expire", "/", request, response);
|
||||
|
||||
response.sendRedirect("/sopmal/login/page/" + RealmContextHolder.getRealm() + "?redirect_uri=" + URLEncoder.encode(request.getParameter("redirect_uri"), StandardCharsets.UTF_8));
|
||||
// 로그인 이동을 확정한 뒤 원래 URL로 다시 리다이렉트하지 않는다.
|
||||
return;
|
||||
|
||||
}else{
|
||||
//리프레쉬 토큰 있을 경우(존재한다는 자체가 refresh토큰이 만료된 상태가 아님)
|
||||
|
||||
@@ -198,6 +198,20 @@ public class MainController {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 사이트맵 XML
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sitemap", produces = MediaType.APPLICATION_XML_VALUE)
|
||||
public ResponseEntity<String> selectSitemapXml() {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
String xml = boMaSopmalService.selectSitemapXml(user.getSopmalCd());
|
||||
|
||||
return ResponseEntity.ok().contentType(MediaType.APPLICATION_XML).body(xml);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 비회원 휴대폰번호 확인
|
||||
* @return OrdrDtlR.jsp
|
||||
@@ -1015,4 +1029,14 @@ public class MainController {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 연령확인 팝업
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/selectAgeChkPopup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public String selectAgeChkPopup(HttpServletRequest request) {
|
||||
return Util.getDeviceType(request)+"/main/AgeChkPopupR";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -48,22 +48,22 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* MyActController Class (back)
|
||||
*
|
||||
* @author 홍길동
|
||||
* @since 2024-02-05
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-05 김혜인 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
* MyActController Class (back)
|
||||
*
|
||||
* @author 홍길동
|
||||
* @since 2024-02-05
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-05 김혜인 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/mpage/act")
|
||||
@@ -72,7 +72,7 @@ public class MyActController {
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@@ -102,10 +102,10 @@ public class MyActController {
|
||||
|
||||
|
||||
/**
|
||||
* 상품 Q&A 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
* 상품 Q&A 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGoodsQnaInqire")
|
||||
public String selectGoodsQnaInqire(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt, BOMbrVO vo){
|
||||
@@ -115,35 +115,127 @@ public class MyActController {
|
||||
|
||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
|
||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
model.addAttribute("mpageResultMap", content2);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
// model,
|
||||
// "mpageResultMap"
|
||||
// );
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQaR";
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQaR";
|
||||
}
|
||||
/**
|
||||
* 상품 Q&A ajax 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
|
||||
/**
|
||||
* 일반문의 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGoodsQnaInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> selectGoodsQnaInqireAjax(BOGnrlbbscttVO bbsctt){
|
||||
bbsctt.setBbsTyCd("05");
|
||||
@RequestMapping(value="/selectNormalQnaInqire")
|
||||
public String selectNormalQnaInqire(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt, BOMbrVO vo){
|
||||
bbsctt.setBbsTyCd("01");
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setReqUrl("mpage");
|
||||
|
||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||
model.addAttribute("resultMap", content);
|
||||
|
||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||
model.addAttribute("mpageResultMap", content2);
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyNormalQaR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 일반문의 수정 폼 이동
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectNormalQnaDtlUpdtForm")
|
||||
public String selectNormalQnaDtlUpdtForm(HttpServletRequest request, ModelMap model,BOGnrlbbscttVO bbsctt, BOMbrVO vo){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setBbsTyCd("01");
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
;
|
||||
if (user.getUserInnb() > 0) {
|
||||
if ("mngr".equals(bbsctt.getServerDv())) {
|
||||
bbsctt.setRegusrDvCd("02"); //관리자
|
||||
} else {
|
||||
bbsctt.setRegusrDvCd("01"); //회원
|
||||
bbsctt.setAnswMbtlnb(user.getMbtlnb());
|
||||
}
|
||||
} else {
|
||||
bbsctt.setRegusrDvCd("99");//비회원
|
||||
}
|
||||
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
||||
BOBbsVO bbsVO = new BOBbsVO();
|
||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||
DataMap bbsInfo = new DataMap();
|
||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||
|
||||
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
||||
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
||||
|
||||
List<DataMap> itmList = new ArrayList<>();
|
||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||
|
||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||
|
||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||
|
||||
Map<String, Object> content = new HashMap<String, Object>();
|
||||
content.put("bbsInfo", bbsInfo);
|
||||
content.put("bbscttVO", bbsctt);
|
||||
content.put("bbscttInfo", bbscttInfo);
|
||||
content.put("itmList", itmList);
|
||||
content.put("qesitmList", qesitmList);
|
||||
content.put("rvwQesitmList", rvwQesitmList);
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
model.addAttribute("bbsctt", bbsctt);
|
||||
|
||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||
model.addAttribute("mpageResultMap", content2);
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyNormalQnaDtlUpdtU";
|
||||
}
|
||||
|
||||
/**
|
||||
* 일반문의 ajax 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectNormalQnaInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> selectNormalQnaInqireAjax(BOGnrlbbscttVO bbsctt){
|
||||
bbsctt.setBbsTyCd("01");
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setReqUrl("mpage");
|
||||
|
||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 Q&A ajax 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGoodsQnaInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> selectGoodsQnaInqireAjax(BOGnrlbbscttVO bbsctt){
|
||||
bbsctt.setBbsTyCd("05");
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setReqUrl("mpage");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
|
||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||
return ResponseEntity.ok(
|
||||
@@ -151,10 +243,6 @@ public class MyActController {
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,12 +266,8 @@ public class MyActController {
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOFileInfo",bbsctt),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상품 Q&A 수정 폼 이동
|
||||
* @param bbsctt
|
||||
@@ -209,28 +293,22 @@ public class MyActController {
|
||||
bbsctt.setRegusrDvCd("99");//비회원
|
||||
}
|
||||
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
||||
// 게시판 설정 정보
|
||||
BOBbsVO bbsVO = new BOBbsVO();
|
||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||
DataMap bbsInfo = new DataMap();
|
||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||
|
||||
// 게시글 상세 조회
|
||||
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
||||
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
||||
|
||||
// 분류 조회
|
||||
List<DataMap> itmList = new ArrayList<>();
|
||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||
|
||||
//추가 항목 조회, 추가항목 항목 조회
|
||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||
|
||||
//리뷰항목 리스트, 리뷰항목 항목 리스트
|
||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||
|
||||
@@ -243,24 +321,14 @@ public class MyActController {
|
||||
content.put("rvwQesitmList", rvwQesitmList);
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
model.addAttribute("bbsctt", bbsctt);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||
model.addAttribute("mpageResultMap", content2);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
// model,
|
||||
// "mpageResultMap"
|
||||
// );
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQnaDtlUpdtU";
|
||||
}
|
||||
|
||||
/**
|
||||
* 1:1 문의 조회
|
||||
* @param bbsctt
|
||||
@@ -275,23 +343,13 @@ public class MyActController {
|
||||
|
||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
|
||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
model.addAttribute("mpageResultMap", content2);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
// model,
|
||||
// "mpageResultMap"
|
||||
// );
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyM2mQaR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 1:1 문의 ajax 조회
|
||||
* @param bbsctt
|
||||
@@ -303,7 +361,6 @@ public class MyActController {
|
||||
bbsctt.setBbsTyCd("12");
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setReqUrl("mpage");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
|
||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||
return ResponseEntity.ok(
|
||||
@@ -311,10 +368,6 @@ public class MyActController {
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -343,28 +396,22 @@ public class MyActController {
|
||||
bbsctt.setRegusrDvCd("99");//비회원
|
||||
}
|
||||
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
||||
// 게시판 설정 정보
|
||||
BOBbsVO bbsVO = new BOBbsVO();
|
||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||
DataMap bbsInfo = new DataMap();
|
||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||
|
||||
// 게시글 상세 조회
|
||||
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
||||
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
||||
|
||||
// 분류 조회
|
||||
List<DataMap> itmList = new ArrayList<>();
|
||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||
|
||||
//추가 항목 조회, 추가항목 항목 조회
|
||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||
|
||||
//리뷰항목 리스트, 리뷰항목 항목 리스트
|
||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||
|
||||
@@ -377,21 +424,10 @@ public class MyActController {
|
||||
content.put("rvwQesitmList", rvwQesitmList);
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
model.addAttribute("bbsctt", bbsctt);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||
model.addAttribute("mpageResultMap", content2);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
// model,
|
||||
// "mpageResultMap"
|
||||
// );
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyM2mQnaDtlUpdtU";
|
||||
}
|
||||
@@ -407,28 +443,17 @@ public class MyActController {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||
|
||||
/*리뷰 조회 폼*/
|
||||
DataMap rvwBnefInfo = new DataMap();
|
||||
rvwBnefInfo = service.selectBORvwBnefInfo(bbsctt);
|
||||
|
||||
model.addAttribute("mlgAccmlNtc", rvwBnefInfo);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo",bbsctt),
|
||||
// model,
|
||||
// "mlgAccmlNtc"
|
||||
// );
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
|
||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||
model.addAttribute("mpageResultMap", content2);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
// model,
|
||||
// "mpageResultMap"
|
||||
// );
|
||||
model.addAttribute("vo",bbsctt);
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyRvwRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 나의 리뷰 조회 작성 가능한 리뷰
|
||||
* @param rvwVO
|
||||
@@ -442,13 +467,9 @@ public class MyActController {
|
||||
|
||||
Map<String, Object> content = selectBOWritPosblRvw(rvwVO);
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
return Util.getDeviceType(request)+"/mpage/act/WritngPosblRvwR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 나의 리뷰 조회 작성 가능한 리뷰 ajax(인피니트스크롤)
|
||||
* @param rvwVO
|
||||
@@ -466,10 +487,6 @@ public class MyActController {
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -486,11 +503,6 @@ public class MyActController {
|
||||
|
||||
DataMap content = selectBOMyRvwListInqire(rvwVO);
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyRvwR";
|
||||
}
|
||||
|
||||
@@ -512,10 +524,6 @@ public class MyActController {
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -528,15 +536,9 @@ public class MyActController {
|
||||
public String selectRvwWritngPopupForm(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO rvwVO){
|
||||
rvwVO.setRvwBbscttDv("rvw");
|
||||
rvwVO.setServerDv("sopmal");
|
||||
//리뷰 등록 가능 여부 true시 등록폼 호출
|
||||
|
||||
Map<String, Object> content = selectBOBbscttRegistPopupForm(rvwVO);
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",rvwVO),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/RvwWritngPopupC";
|
||||
}
|
||||
@@ -556,30 +558,24 @@ public class MyActController {
|
||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
|
||||
// 작성자 정보 추출
|
||||
if (user.getUserInnb() > 0) { //회원 , 관리자
|
||||
if (user.getUserInnb() > 0) {
|
||||
bbsctt.setUpdusr(user.getUserInnb());
|
||||
} else { // 비회원
|
||||
} else {
|
||||
bbsctt.setUpdusr(0);
|
||||
}
|
||||
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
|
||||
/*게시글 삭제*/
|
||||
DataMap bbscttDelResult = service.updateBOBbscttDel(bbsctt);
|
||||
content.put("result", bbscttDelResult);
|
||||
/*삭제 성공 시*/
|
||||
if ("success".equals(bbscttDelResult.get("result"))) {
|
||||
//리뷰 관련 처리
|
||||
if ("06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd())) {
|
||||
if (!CollectionUtils.isEmpty(bbsctt.getDelInfoArr())) {
|
||||
/*해당 정보로 마일리지 금액 조회하기*/
|
||||
List<Object> accmlmnyAmtInfoArr = new ArrayList<>();
|
||||
BOMlgVO mlgVo = new BOMlgVO();
|
||||
for (BODelInfoVO delInfo : bbsctt.getDelInfoArr()) {
|
||||
if ("01".equals(delInfo.getRegusrDvCd())) {
|
||||
if ("03".equals(user.getSysDvCd())) { //관리자 삭제시 마일리지 회수
|
||||
/*공통 파라미터*/
|
||||
if ("03".equals(user.getSysDvCd())) {
|
||||
mlgVo.setMbrInnb(String.valueOf(delInfo.getRegusr()));
|
||||
mlgVo.setMbrDvCd(delInfo.getMbrDvCd());
|
||||
mlgVo.setSopmalCd(bbsctt.getSopmalCd());
|
||||
@@ -591,8 +587,7 @@ public class MyActController {
|
||||
mlgVo.setRegusr(user.getUserInnb());
|
||||
mlgVo.setUpdusr(user.getUserInnb());
|
||||
|
||||
/*마일리지 수동 회수 여부*/
|
||||
if ("N".equals(bbsctt.getMlgPassivRtrvlAt())) { // 선택 삭제시
|
||||
if ("N".equals(bbsctt.getMlgPassivRtrvlAt())) {
|
||||
DataMap accmlmnyAmtInfo = new DataMap();
|
||||
accmlmnyAmtInfo = mlgService.selectBOMlgByBbscttInnb(mlgVo);
|
||||
if (accmlmnyAmtInfo != null) {
|
||||
@@ -603,7 +598,7 @@ public class MyActController {
|
||||
mlgVo.setAccmlmnyAmt((BigDecimal) accmlmnyAmtInfo.get("accmlmnyAmt"));
|
||||
mlgService.insertBOMngrMlgDn(mlgVo);
|
||||
}
|
||||
} else { //단독 삭제시*/
|
||||
} else {
|
||||
if (delInfo.getRtrvlMlgAmt() != null) {
|
||||
if (delInfo.getRtrvlMlgAmt().compareTo(BigDecimal.valueOf(0)) > 0) {
|
||||
mlgVo.setAccmlmnyAmt(delInfo.getRtrvlMlgAmt());
|
||||
@@ -612,7 +607,6 @@ public class MyActController {
|
||||
}
|
||||
}
|
||||
}
|
||||
//회원 관련
|
||||
if (delInfo.getRegusr() != null) {
|
||||
BOGnrlbbscttVO mbrSite = new BOGnrlbbscttVO();
|
||||
mbrSite.setSopmalCd(bbsctt.getSopmalCd());
|
||||
@@ -627,26 +621,20 @@ public class MyActController {
|
||||
}
|
||||
}
|
||||
|
||||
//상품관련 집계와 회원관련 집계는 관리자혹은 사용자가 모두 삭제 시 처리가 되어야해
|
||||
//상품 관련
|
||||
if (delInfo.getGoodsInnb() != null) {
|
||||
BOGoodsVO goodsVO = new BOGoodsVO();
|
||||
goodsVO.setGoodsInnb(String.valueOf(delInfo.getGoodsInnb()));
|
||||
goodsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||
/*상품정보 > 상품후기건수 차감*/
|
||||
goodsService.updateRvwRelateSm(goodsVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ("05".equals(bbsctt.getBbsTyCd())) {//상품qna는 상품문의 집계만
|
||||
//상품 관련
|
||||
} else if ("05".equals(bbsctt.getBbsTyCd())) {
|
||||
if (!CollectionUtils.isEmpty(bbsctt.getGoodsInnbArr())) {
|
||||
for (String goodsInnb : bbsctt.getGoodsInnbArr()) {
|
||||
BOGoodsVO goodsVO = new BOGoodsVO();
|
||||
goodsVO.setGoodsInnb(goodsInnb);
|
||||
goodsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||
|
||||
/*상품정보 > 상품후기건수 차감*/
|
||||
goodsService.updateGoodsInqryCnt(goodsVO);
|
||||
}
|
||||
}
|
||||
@@ -658,10 +646,6 @@ public class MyActController {
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel",bbsctt),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -677,11 +661,6 @@ public class MyActController {
|
||||
|
||||
Map<String, Object> content = selectBOBbscttRegistPopupForm(vo);
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", vo),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
return Util.getDeviceType(request)+"/mpage/act/RvwEasyRegistC";
|
||||
}
|
||||
|
||||
@@ -693,7 +672,7 @@ public class MyActController {
|
||||
public DataMap selectBOBbscttListInqire(BOGnrlbbscttVO bbsctt) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
|
||||
if ("01".equals(user.getSysDvCd())) {//사용자 조회 일 경우
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
|
||||
@@ -710,7 +689,6 @@ public class MyActController {
|
||||
bbsctt.setRegusrDvCd("99");
|
||||
}
|
||||
}
|
||||
// pagination
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
||||
@@ -721,13 +699,10 @@ public class MyActController {
|
||||
bbsctt.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
// 게시글 목록조회
|
||||
Map<String, Object> resultList = new HashMap<String, Object>();
|
||||
resultList = service.selectBOBbscttListInqire(bbsctt);
|
||||
|
||||
// 게시판 설정 정보 조회
|
||||
BOBbsVO bbsVO = new BOBbsVO();
|
||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||
@@ -747,13 +722,11 @@ public class MyActController {
|
||||
*
|
||||
*/
|
||||
public Map<String, Object> selectBOMpageInfoInqire(BOMbrVO vo) {
|
||||
// 사용자 정보 추출 및 적용
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
vo.setMbrInnb(String.valueOf(user.getUserInnb()));
|
||||
vo.setMbrDvCd(user.getMbrDvCd());
|
||||
|
||||
// 상품 옵션 조회
|
||||
Map<String, Object> message = new HashMap<>();
|
||||
message = boMbrService.selectBOMpageInfoInqire(vo);
|
||||
|
||||
@@ -778,7 +751,6 @@ public class MyActController {
|
||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||
bbsctt.setRegusr(user.getUserInnb());
|
||||
bbsctt.setMbrDvCd(user.getMbrDvCd());
|
||||
// pagination
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
||||
@@ -811,7 +783,6 @@ public class MyActController {
|
||||
if (!"crm".equals(bbsctt.getReqUrl())) {
|
||||
bbsctt.setRegusr(user.getUserInnb());
|
||||
}
|
||||
// pagination
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
||||
@@ -821,7 +792,7 @@ public class MyActController {
|
||||
bbsctt.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
bbsctt.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
// 게시글 목록조회
|
||||
|
||||
Map<String, Object> resultList = new HashMap<String, Object>();
|
||||
resultList = service.selectBOMyRvwListInqire(bbsctt);
|
||||
|
||||
@@ -837,7 +808,6 @@ public class MyActController {
|
||||
*/
|
||||
public Map<String, Object> selectBOBbscttRegistPopupForm(BOGnrlbbscttVO bbsctt) {
|
||||
Map<String, Object> content = new HashMap<String, Object>();
|
||||
// 작성자 정보 추출
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
@@ -850,9 +820,9 @@ public class MyActController {
|
||||
if (user.getUserInnb() > 0) {
|
||||
bbsctt.setRegusr(user.getUserInnb());
|
||||
if (!"01".equals(user.getSysDvCd())) {
|
||||
bbsctt.setRegusrDvCd("02"); //관리자
|
||||
bbsctt.setRegusrDvCd("02");
|
||||
} else {
|
||||
bbsctt.setRegusrDvCd("01"); //회원
|
||||
bbsctt.setRegusrDvCd("01");
|
||||
bbsctt.setMbrDvCd(user.getMbrDvCd());
|
||||
DataMap mbr = new DataMap();
|
||||
mbr.put("mbrInnb", String.valueOf(bbsctt.getRegusr()));
|
||||
@@ -868,31 +838,25 @@ public class MyActController {
|
||||
regusrInfo.setRegusrDvCd(bbsctt.getRegusrDvCd());
|
||||
} else {
|
||||
regusrInfo.setRegusr(0);
|
||||
regusrInfo.setRegusrDvCd("99");//비회원
|
||||
regusrInfo.setRegusrDvCd("99");
|
||||
}
|
||||
|
||||
// 게시판 설정 정보
|
||||
BOBbsVO bbsVO = new BOBbsVO();
|
||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||
DataMap bbsInfo = new DataMap();
|
||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||
|
||||
// 분류
|
||||
List<DataMap> itmList = new ArrayList<>();
|
||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||
|
||||
//리뷰항목 리스트, 리뷰항목 항목 리스트
|
||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||
|
||||
//추가항목 리스트, 추가항목 항목 리스트
|
||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||
|
||||
//사용자 > 리뷰 상품 조회
|
||||
DataMap rvwGoodsInfo = new DataMap();
|
||||
DataMap mlgInfo = new DataMap();
|
||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||
@@ -904,7 +868,6 @@ public class MyActController {
|
||||
|
||||
List<DataMap> rvwItmList = new ArrayList<>();
|
||||
List<DataMap> starItmList = new ArrayList<>();
|
||||
//사용자 별표 평점 역으로 리스트 set(퍼블리싱으로 인한 역처리)
|
||||
if (rvwQesitmList.get("starItmCnList") != null) {
|
||||
rvwItmList = (List<DataMap>) rvwQesitmList.get("starItmCnList");
|
||||
for (int i = rvwItmList.size() - 1; i >= 0; i--) {
|
||||
@@ -915,7 +878,6 @@ public class MyActController {
|
||||
}
|
||||
}
|
||||
|
||||
//사용자 > 상품q&a 상품 조회
|
||||
DataMap qnaGoodsInfo = new DataMap();
|
||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||
if ("modal".equals(bbsctt.getReqUrl())) {
|
||||
@@ -931,4 +893,4 @@ public class MyActController {
|
||||
content.put("rvwQesitmList", rvwQesitmList);
|
||||
return content;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,7 @@ import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrDlvyVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrShippingVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.ApiResponse;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
@@ -54,6 +55,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.logging.log4j.util.Base64Util;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
@@ -65,6 +67,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -733,17 +736,13 @@ public class MyOrdrController {
|
||||
boDlivyVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드
|
||||
}
|
||||
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
content = dlivyService.selectBOOrdrDlvyDtlsInqire(boDlivyVO);
|
||||
BOOrdrDlvyVO ordrDlvyVO = new BOOrdrDlvyVO();
|
||||
ordrDlvyVO.setSopmalCd(boDlivyVO.getSopmalCd());
|
||||
ordrDlvyVO.setOrdrInnb(boDlivyVO.getOrdrInnb());
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
model.addAttribute("ordrInfo", boOrdrService.selectMbrOrdrDtlInqire(ordrDlvyVO));
|
||||
model.addAttribute("resultMap", dlivyService.updateBOAciDelivery(boDlivyVO));
|
||||
|
||||
// return "sopmal/mpage/ordr/DlvyInqireR";
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR";
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,9 @@ package com.wb.domainserver.domain.sopmal.ordr.controller;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.nimbusds.jose.shaded.gson.Gson;
|
||||
import com.stripe.model.Event;
|
||||
import com.stripe.model.checkout.Session;
|
||||
import com.stripe.net.Webhook;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import com.wb.domainserver.common.prop.PaginationProperties;
|
||||
@@ -67,10 +70,7 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
@@ -412,7 +412,7 @@ public class OrdrController {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
|
||||
//결재 플랫폼 구분 코드
|
||||
ordrVO.setSetlePltfomTyCd("PC".equals(request.getAttribute("env"))?"01":"02");
|
||||
ordrVO.setSetlePltfomTyCd("PC".equals(request.getAttribute("env"))?"03":"04");
|
||||
|
||||
//약관정보 세팅
|
||||
BOStplatVO stplatVO = new BOStplatVO();
|
||||
@@ -795,6 +795,7 @@ public class OrdrController {
|
||||
|
||||
LinkedHashMap goodsOne = ((List<LinkedHashMap>) paramData.get("goodsList")).get(0);
|
||||
Boolean subsvcAt = goodsOne.containsKey("subsvcInnb");
|
||||
// 구독서비스에 포함된 상품 목록 세팅
|
||||
if(subsvcAt) {
|
||||
model.addAttribute("subsvcInnb", goodsOne.get("subsvcInnb"));
|
||||
|
||||
@@ -837,7 +838,7 @@ public class OrdrController {
|
||||
String pgCmpnyNm = setle.getPgCmpnyNm();
|
||||
String setleTyCd = setle.getSetleTyCd();
|
||||
|
||||
if ("kiwoom".equals(pgCmpnyNm)) {
|
||||
if ("kiwoom".equals(pgCmpnyNm)||"naverpay".equals(pgCmpnyNm)) {
|
||||
url = "sopmal/ordr/OrdrReqstKiwoomPayR";
|
||||
} else if ("gcpay".equals(pgCmpnyNm)) {
|
||||
url = "sopmal/ordr/OrdrReqstGcpayPayR";
|
||||
@@ -849,8 +850,10 @@ public class OrdrController {
|
||||
}
|
||||
} else if ("toss".equals(pgCmpnyNm)) {
|
||||
url = "sopmal/ordr/OrdrReqstTossPayR";
|
||||
} else if ("tosspay".equals(pgCmpnyNm)||"naverpay".equals(pgCmpnyNm)||"kakaopay".equals(pgCmpnyNm)) {
|
||||
} else if ("tosspay".equals(pgCmpnyNm)||"kakaopay".equals(pgCmpnyNm)) { //||"naverpay".equals(pgCmpnyNm) 키움으로 이동
|
||||
url = "sopmal/ordr/OrdrReqstTosspayPayR";
|
||||
} else if ("stripe".equals(pgCmpnyNm)) { // Stripe
|
||||
url = "sopmal/ordr/OrdrReqstStripePayR";
|
||||
} else if ("02".equals(setleTyCd)||"08".equals(setleTyCd)||"12".equals(setleTyCd)) { // 무통장, 마일리지, 충전형마일리지
|
||||
url = "sopmal/ordr/OrdrReqstPayR";
|
||||
}
|
||||
@@ -1387,7 +1390,6 @@ public class OrdrController {
|
||||
|
||||
/**
|
||||
* 키움 결제 연계 전 getEnc 값 받아오기
|
||||
* @return PayKiwoomSucsC.jsp
|
||||
* @author 이경숙
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@@ -1423,13 +1425,35 @@ public class OrdrController {
|
||||
|
||||
log.info("insertKiwoomPay step5 ::: {}", message.get("KIWOOM_ENC"));
|
||||
|
||||
//model.addAttribute("message", message);
|
||||
//return "sopmal/ordr/PayKiwoomSucsC";
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 키움 결제 연계처리 - 사전 승인 후 결제요청 페이지 이동
|
||||
* @return PayKiwoomSucsC.jsp
|
||||
* @author 이경숙
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/kiwoomPayPreSuccss")
|
||||
public String confirmKiwoom(HttpServletRequest request, ModelMap model) throws Exception {
|
||||
|
||||
return "sopmal/ordr/OrdrReqstKiwoomPreR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 키움 결제 연계처리 - 결제창 취소버튼 클릭 시 페이지 이동
|
||||
* @return PayKiwoomSucsC.jsp
|
||||
* @author 이경숙
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/kiwoomPayCancelUrl")
|
||||
public String cancelUrlKiwoom(HttpServletRequest request, ModelMap model) throws Exception {
|
||||
|
||||
return "sopmal/ordr/OrdrReqstKiwoomCnclR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > 키움 결제 정보 등록
|
||||
* @param model
|
||||
@@ -1439,9 +1463,12 @@ public class OrdrController {
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/insertKiwoomSetle")
|
||||
public String insertKiwoomSetle(ModelMap model, HttpServletRequest request) {
|
||||
|
||||
log.info("insertKiwoomSetle controller start ::: ");
|
||||
|
||||
BOPayVO payVO = new BOPayVO();
|
||||
|
||||
payVO.setOrderId(request.getParameter("orderId"));
|
||||
payVO.setOrderId(request.getParameter("ordrInnb"));
|
||||
payVO.setAmount(request.getParameter("setleAmt"));
|
||||
payVO.setSopmalCd(request.getParameter("sopmalCd"));
|
||||
payVO.setMbrInnb(request.getParameter("mbrInnb"));
|
||||
@@ -1449,9 +1476,15 @@ public class OrdrController {
|
||||
payVO.setSesionId(request.getParameter("sesionId"));
|
||||
payVO.setPgCmpnyNm(request.getParameter("pgCmpnyNm"));
|
||||
payVO.setSetleTyCd(request.getParameter("setleTyCd"));
|
||||
payVO.setSetlerNm(request.getParameter("ordrrNm"));
|
||||
|
||||
log.info("insertKiwoomSetle controller payVO ::: {}", payVO);
|
||||
String ordrrNm = request.getParameter("ordrrNm");
|
||||
try {
|
||||
payVO.setSetlerNm(new String(Base64.getDecoder().decode(ordrrNm), "UTF-8"));
|
||||
}catch(Exception e){
|
||||
log.debug("throws UnsupportedEncodingException:::::");
|
||||
}
|
||||
|
||||
log.info("insertKiwoomSetle controller payVO 3 ::: {}", payVO);
|
||||
|
||||
String agentId = "";
|
||||
String jSesionId = "";
|
||||
@@ -1518,17 +1551,116 @@ public class OrdrController {
|
||||
}
|
||||
|
||||
model.addAttribute("data", content);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTosspaySetle", payVO),
|
||||
// model,
|
||||
// "data"
|
||||
// );
|
||||
model.addAttribute("paramVO", payVO);
|
||||
|
||||
return "sopmal/ordr/OrdrRspnsKiwoomPayR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > Stripe 결제 정보 등록 (webhook)
|
||||
* @param payload
|
||||
* @param sigHeader
|
||||
* @return OrdrRspnsKiwoomPayR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/{sopmalCd}/insertStripeSetle")
|
||||
public ResponseEntity<String> insertStripeSetle(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader, @PathVariable String sopmalCd) {
|
||||
|
||||
try {
|
||||
log.info("insertStripeSetle webhook start ::: ");
|
||||
|
||||
Event event = payService.createWebhookEvent(payload, sigHeader, sopmalCd);
|
||||
|
||||
if ("checkout.session.completed".equals(event.getType())) {
|
||||
Session session = (Session) event
|
||||
.getDataObjectDeserializer()
|
||||
.getObject()
|
||||
.orElseThrow();
|
||||
|
||||
log.info("insertStripeSetle controller start ::: ");
|
||||
|
||||
BOPayVO payVO = new BOPayVO();
|
||||
payVO.setOrderId(session.getMetadata().get("ordrInnb"));
|
||||
payVO.setAmount(session.getMetadata().get("setleAmt"));
|
||||
payVO.setSopmalCd(session.getMetadata().get("sopmalCd"));
|
||||
payVO.setMbrInnb(session.getMetadata().get("mbrInnb"));
|
||||
payVO.setMbrId(session.getMetadata().get("mbrId"));
|
||||
payVO.setSesionId(session.getMetadata().get("sesionId"));
|
||||
payVO.setPgCmpnyNm(session.getMetadata().get("pgCmpnyNm"));
|
||||
payVO.setSetleTyCd(session.getMetadata().get("setleTyCd"));
|
||||
payVO.setSetlerNm(session.getMetadata().get("ordrrNm"));
|
||||
|
||||
log.info("insertStripeSetle controller payVO ::: {}", payVO);
|
||||
|
||||
/* 쿠키 데이터 세팅 시작 */
|
||||
String agentId = session.getMetadata().get("agentId");
|
||||
String jSesionId = session.getMetadata().get("jSesionId");
|
||||
String ipAdres = session.getMetadata().get("ipAdres");
|
||||
String uMbrNm = session.getMetadata().get("uMbrNm");
|
||||
String uSysDvCd = session.getMetadata().get("uSysDvCd");
|
||||
String uSopmalCd = session.getMetadata().get("uSopmalCd");
|
||||
String uMbrDvCd = session.getMetadata().get("uMbrDvCd");
|
||||
|
||||
//agentId 쿠키 있을 경우 가져옴
|
||||
if (!"".equals(jSesionId)) {
|
||||
payVO.setSessionId(jSesionId);
|
||||
}
|
||||
//gc_agent_id 가져옴
|
||||
if (!"".equals(agentId)) {
|
||||
payVO.setAgentId(agentId);
|
||||
}
|
||||
payVO.setIpAdres(ipAdres);
|
||||
|
||||
if (!"".equals(uMbrNm)) {
|
||||
payVO.setMbrNm(uMbrNm); //회원명(관리자명)
|
||||
}
|
||||
if ("01".equals(uSysDvCd)) {
|
||||
payVO.setDvCd("01");
|
||||
payVO.setSopmalCd(uSopmalCd);
|
||||
payVO.setMbrDvCd(uMbrDvCd);
|
||||
} else {
|
||||
payVO.setDvCd("02");
|
||||
}
|
||||
/* 쿠키 데이터 세팅 끝 */
|
||||
|
||||
Map<String, Object> content;
|
||||
|
||||
try {
|
||||
content = service.insertStripeSetle(session, payVO);
|
||||
|
||||
log.info("insertStripeSetle controller content ::: {}", content);
|
||||
} catch (WnbtRestException wre) {
|
||||
log.info("insertStripeSetle : Stripe 결제 정보 등록 : 실패 WnbtRestException");
|
||||
log.error(wre.getMessage(), wre);
|
||||
content = new HashMap<>() {{
|
||||
put("status", "1");
|
||||
put("message", wre.getMessage());
|
||||
}};
|
||||
} catch (Exception e) {
|
||||
log.info("insertStripeSetle : Stripe 결제 정보 등록 : 실패");
|
||||
log.error(e.getMessage(), e);
|
||||
|
||||
content = new HashMap<>() {{
|
||||
put("status", "1");
|
||||
put("message", "Stripe 결제 정보 등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다.");
|
||||
}};
|
||||
}
|
||||
|
||||
if ("0".equals(content.get("status"))) {
|
||||
commonOrderPostProcess(payVO);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.debug("Webhook error ::: {}", e);
|
||||
|
||||
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
|
||||
}
|
||||
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > 주문완료 화면 이동
|
||||
* @return OrdrComptR.jsp
|
||||
@@ -2898,7 +3030,21 @@ public class OrdrController {
|
||||
|
||||
// 2.가용재고수량 수정 ==============================================================
|
||||
try {
|
||||
boGoodsService.updateOrdrUsefulInvntryQy(orderVO);
|
||||
BOOrdrVO ordrVO = new BOOrdrVO();
|
||||
ordrVO.setOrdrInnb(orderVO.getOrdrInnb().toString());
|
||||
ordrVO.setSopmalCd(orderVO.getSopmalCd());
|
||||
|
||||
DataMap ordrDtl = (DataMap) service.selectOrdrDtlInqire(ordrVO).get("dtl");
|
||||
boolean subsvcAt = "Y".equals(ordrDtl.get("subsvcAt"));
|
||||
// 구독서비스 여부(subsvcAt)에 따라 재고 처리 로직을 분기
|
||||
if(subsvcAt) {
|
||||
// 구독서비스
|
||||
ordrVO.setSubsvcInnb(ordrDtl.get("subsvcInnb").toString());
|
||||
subsvcService.updateSubsvcOrdrUsefulInvntryQy(ordrVO);
|
||||
} else {
|
||||
// 일반 주문
|
||||
boGoodsService.updateOrdrUsefulInvntryQy(orderVO);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logVO.setFailContent("상품 재고수량 업데이트 실패");
|
||||
log.error("{} 상품 재고수량 업데이트 실패!", payVO.getOrderId());
|
||||
|
||||
@@ -644,7 +644,7 @@ public class PayController {
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectKiwoomSample2")
|
||||
@RequestMapping(value="/selectKiwoomApiSample")
|
||||
public String selectKiwoonPay2(ModelMap model) throws Exception {
|
||||
log.debug("selectKiwoonPay = {}");
|
||||
return "sopmal/ordr/PayKiwoomPay2C";
|
||||
@@ -710,9 +710,9 @@ public class PayController {
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/kiwoomPaySuccss")
|
||||
public String confirmPaymentkiwoom(HttpServletRequest request, ModelMap model) throws Exception {
|
||||
public String confirmPaymentKiwoom(HttpServletRequest request, ModelMap model) throws Exception {
|
||||
|
||||
System.out.println("콜백 수신 ::: "+request.getQueryString());
|
||||
System.out.println("성공결과페이지 ::: "+request.getQueryString());
|
||||
|
||||
BOPayVO payVO = new BOPayVO();
|
||||
|
||||
@@ -722,15 +722,6 @@ public class PayController {
|
||||
payVO.setPayMethod(request.getParameter("PAYMETHOD"));
|
||||
|
||||
Map<String, Object> message = new HashMap<>();
|
||||
/*String sopmalCd = payVO.getSopmalCd();
|
||||
try {
|
||||
message = service.insertKcpPay(payVO);
|
||||
|
||||
} catch (Exception e) {
|
||||
message = new HashMap<>() {{
|
||||
put("response", "결제를 실패하였습니다.\n관리자에게 문의하시기 바랍니다.");
|
||||
}};
|
||||
}*/
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("code", payVO.getCode());
|
||||
@@ -740,11 +731,66 @@ public class PayController {
|
||||
message.put("response",jsonObject.toString());
|
||||
|
||||
model.addAttribute("message", message);
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/kcpPayProc", payVO),
|
||||
// model,
|
||||
// "message"
|
||||
// );
|
||||
|
||||
return "sopmal/ordr/PayKiwoomSucsC";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 키움 결제취소 화면
|
||||
* @return PayKiwoomModC.jsp
|
||||
* @author 이경숙
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectKiwoomCancelSample")
|
||||
public String selectKiwoomCancel(ModelMap model) throws Exception {
|
||||
log.debug("selectKiwoomCancel = {}");
|
||||
return "sopmal/ordr/PayKiwoomModC";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 키움 결제 연계처리 - 결체취소결과페이지
|
||||
* @return PayKiwoomSucsC.jsp
|
||||
* @author 이경숙
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/kiwoomPayCancel")
|
||||
public String confirmCancelKiwoom(HttpServletRequest request, ModelMap model) throws Exception {
|
||||
|
||||
System.out.println("취소데이터 수신 ::: "+request.getQueryString());
|
||||
|
||||
Map<String, Object> setleCancelResultMessage = new HashMap<>();
|
||||
Map<String, Object> responseMap = new HashMap<>();
|
||||
|
||||
BOPayVO payVO = new BOPayVO();
|
||||
|
||||
payVO.setSopmalCd("SK");
|
||||
payVO.setOrderId(request.getParameter("ORDERNO"));
|
||||
payVO.setCancelAmount(request.getParameter("AMOUNT"));
|
||||
payVO.setPayMethod(request.getParameter("PAYMETHOD"));
|
||||
payVO.setTno(request.getParameter("TRXID"));
|
||||
payVO.setCancelReason(request.getParameter("CANCELREASON"));
|
||||
payVO.setSetleTyCd("01");
|
||||
payVO.setPgCmpnyNm("kiwoom");
|
||||
|
||||
log.debug("confirmCancelKiwoom step1 payVO :::> {}", payVO);
|
||||
|
||||
Map<String, Object> message = new HashMap<>();
|
||||
|
||||
setleCancelResultMessage = service.cancelKiwoomPay(payVO);
|
||||
|
||||
String responseStr = (String) setleCancelResultMessage.get("response");
|
||||
|
||||
JSONParser parser = new JSONParser();
|
||||
JSONObject jsonObject = (JSONObject) parser.parse(responseStr);
|
||||
jsonObject.put("orderId", payVO.getOrderId());
|
||||
jsonObject.put("amount", payVO.getAmount());
|
||||
jsonObject.put("payMethod", payVO.getPayMethod());
|
||||
jsonObject.put("code", jsonObject.get("RESULTCODE"));
|
||||
message.put("response",jsonObject.toString());
|
||||
|
||||
model.addAttribute("message", message);
|
||||
|
||||
return "sopmal/ordr/PayKiwoomSucsC";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,299 @@
|
||||
package com.wb.domainserver.domain.sopmal.stripe.controller;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.stripe.StripeClient;
|
||||
import com.stripe.exception.StripeException;
|
||||
import com.stripe.model.checkout.Session;
|
||||
import com.stripe.param.checkout.SessionCreateParams;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
|
||||
import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.cookie.CookieUtil;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/stripe")
|
||||
public class StripeController {
|
||||
@Autowired
|
||||
private BOMaSopmalService boMaSopmalService;
|
||||
@Autowired
|
||||
private BOPayService payService;
|
||||
@Autowired
|
||||
private BOOrdrService ordrService;
|
||||
|
||||
private Util utilClass;
|
||||
|
||||
@Value("${stripe.checkout.return-base-url:}")
|
||||
private String stripeReturnBaseUrl = "";
|
||||
|
||||
String resolveStripeReturnBaseUrl(String shopDomain) {
|
||||
String baseUrl = stripeReturnBaseUrl.isBlank() ? shopDomain : stripeReturnBaseUrl.trim();
|
||||
return baseUrl.replaceAll("/+$", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* stripe 결제 Url 호출
|
||||
* @return selectStripeTest.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/checkout", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> createCheckoutSession(HttpServletRequest request) throws Exception {
|
||||
BOMaSopmalVO sopmalVO = new BOMaSopmalVO();
|
||||
sopmalVO.setSopmalCd(request.getParameter("sopmalCd"));
|
||||
DataMap sopmalInfo = boMaSopmalService.selectBOSopmalUpdtForm(sopmalVO).get(0);
|
||||
String domnAdres = resolveStripeReturnBaseUrl(sopmalInfo.get("pcDomnAdres").toString());
|
||||
|
||||
StripeClient stripeClient = payService.createStripeClient(request.getParameter("sopmalCd"));
|
||||
SessionCreateParams.Builder paramsBuilder = SessionCreateParams.builder()
|
||||
.setMode(SessionCreateParams.Mode.PAYMENT)
|
||||
.setSuccessUrl(domnAdres + "/sopmal/stripe/stripeSuccess?sessionId={CHECKOUT_SESSION_ID}&sopmalCd=" + request.getParameter("sopmalCd"))
|
||||
.setCancelUrl(domnAdres + "/sopmal/stripe/stripeCancel?sessionId={CHECKOUT_SESSION_ID}&sopmalCd=" + request.getParameter("sopmalCd"))
|
||||
.setAdaptivePricing(
|
||||
SessionCreateParams.AdaptivePricing.builder()
|
||||
.setEnabled(false)
|
||||
.build()
|
||||
);
|
||||
|
||||
String customerEmail = request.getParameter("ordrrEmail");
|
||||
if (customerEmail != null && !customerEmail.isBlank()) {
|
||||
paramsBuilder.setCustomerEmail(customerEmail.trim());
|
||||
}
|
||||
|
||||
paramsBuilder.addLineItem(
|
||||
SessionCreateParams.LineItem.builder()
|
||||
.setQuantity(1L)
|
||||
.setPriceData(
|
||||
SessionCreateParams.LineItem.PriceData.builder()
|
||||
.setCurrency("jpy")
|
||||
.setUnitAmount(Long.parseLong(request.getParameter("jpSetleAmt")))
|
||||
.setProductData(
|
||||
SessionCreateParams.LineItem.PriceData.ProductData.builder()
|
||||
.setName(request.getParameter("goodsNm"))
|
||||
.build()
|
||||
).build()
|
||||
).build()
|
||||
);
|
||||
|
||||
paramsBuilder
|
||||
.putMetadata("sopmalCd", request.getParameter("sopmalCd"))
|
||||
.putMetadata("ordrInnb", request.getParameter("ordrInnb"))
|
||||
.putMetadata("pgCmpnyNm", request.getParameter("pgCmpnyNm"))
|
||||
.putMetadata("setleTyCd", request.getParameter("setleTyCd"))
|
||||
.putMetadata("goodsNm", request.getParameter("goodsNm"))
|
||||
.putMetadata("setleAmt", request.getParameter("setleAmt"))
|
||||
.putMetadata("ordrrNm", request.getParameter("ordrrNm"))
|
||||
.putMetadata("ordrrEmail", request.getParameter("ordrrEmail"))
|
||||
.putMetadata("ordrrMbtlnb", request.getParameter("ordrrMbtlnb"))
|
||||
.putMetadata("mbrId", request.getParameter("mbrId"))
|
||||
.putMetadata("mbrInnb", request.getParameter("mbrInnb"))
|
||||
.putMetadata("sesionId", request.getParameter("sesionId"))
|
||||
.putMetadata("subsvcInnb", request.getParameter("subsvcInnb"));
|
||||
|
||||
/* insertStripeSetle() 결제 정보 등록 파라미터 시작 */
|
||||
String agentId = "";
|
||||
String jSesionId = "";
|
||||
String ipAdres = "";
|
||||
String uMbrNm = "";
|
||||
String uSysDvCd = "";
|
||||
String uSopmalCd = "";
|
||||
String uMbrDvCd = "";
|
||||
|
||||
// 쿠키를 가져옴
|
||||
Cookie[] cookies = request.getCookies();
|
||||
|
||||
//agentId 쿠키 있을 경우 가져옴
|
||||
if (cookies != null) {
|
||||
for (Cookie cookie : cookies) {
|
||||
if (cookie.getName().equals("JSESSIONID")) {
|
||||
jSesionId = cookie.getValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
//gc_agent_id 가져옴
|
||||
if (CookieUtil.hasAgentCookie(request.getCookies())) {
|
||||
agentId = CookieUtil.getAgentCookieValue(request.getCookies());
|
||||
}
|
||||
Map<String, String> util = new HashMap<>();
|
||||
util = utilClass.getRequestInfo(request);
|
||||
ipAdres = util.get("XForwardedFor");
|
||||
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
uMbrNm = user.getMbrNm(); //회원명(관리자명)
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
uSopmalCd = user.getSopmalCd();
|
||||
uMbrDvCd = user.getMbrDvCd();
|
||||
}
|
||||
paramsBuilder
|
||||
.putMetadata("agentId", agentId)
|
||||
.putMetadata("jSesionId", jSesionId)
|
||||
.putMetadata("ipAdres", ipAdres)
|
||||
.putMetadata("uMbrNm", uMbrNm)
|
||||
.putMetadata("uSysDvCd", uSysDvCd)
|
||||
.putMetadata("uSopmalCd", uSopmalCd)
|
||||
.putMetadata("uMbrDvCd", uMbrDvCd);
|
||||
/* insertStripeSetle() 결제 정보 등록 파라미터 끝 */
|
||||
|
||||
Session session = stripeClient.v1().checkout().sessions().create(paramsBuilder.build());
|
||||
|
||||
DataMap result = new DataMap();
|
||||
result.put("checkoutUrl", session.getUrl());
|
||||
result.put("redirectUrl", UriComponentsBuilder.fromPath(request.getContextPath() + "/sopmal/stripe/checkoutRedirect")
|
||||
.queryParam("sessionId", session.getId())
|
||||
.queryParam("sopmalCd", request.getParameter("sopmalCd"))
|
||||
.build().encode().toUriString());
|
||||
|
||||
WnbtResponseBody body = new WnbtResponseBody(result);
|
||||
WnbtResponse response = WnbtResponse.builder().resBody(body).build();
|
||||
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
/** Stripe 진입 이력을 GET으로 남겨 뒤로가기 시 주문 POST를 재전송하지 않는다. */
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@GetMapping("/checkoutRedirect")
|
||||
public String checkoutRedirect(ModelMap model, @RequestParam("sessionId") String sessionId,
|
||||
@RequestParam("sopmalCd") String sopmalCd) throws StripeException {
|
||||
Session session = payService.createStripeClient(sopmalCd).v1().checkout().sessions().retrieve(sessionId);
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if (!String.valueOf(user.getUserInnb()).equals(session.getMetadata().get("mbrInnb"))
|
||||
|| !sopmalCd.equals(session.getMetadata().get("sopmalCd"))) {
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
model.addAttribute("checkoutUrl", "open".equals(session.getStatus()) ? session.getUrl() : "");
|
||||
model.addAttribute("sessionId", sessionId);
|
||||
model.addAttribute("sopmalCd", sopmalCd);
|
||||
return "sopmal/ordr/StripeRedirectR";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/stripeSuccess")
|
||||
public String stripeSuccess(ModelMap model, @RequestParam("sessionId") String sessionId, @RequestParam("sopmalCd") String sopmalCd) throws StripeException {
|
||||
StripeClient stripeClient = payService.createStripeClient(sopmalCd);
|
||||
Session session = stripeClient.v1().checkout().sessions().retrieve(sessionId);
|
||||
|
||||
String status = session.getStatus();
|
||||
String paymentStatus = session.getPaymentStatus();
|
||||
JsonObject customerDetails = null;
|
||||
JsonObject rawJson = session.getRawJsonObject();
|
||||
if (rawJson != null
|
||||
&& rawJson.has("customer_details")
|
||||
&& !rawJson.get("customer_details").isJsonNull()) {
|
||||
customerDetails = rawJson.getAsJsonObject("customer_details");
|
||||
}
|
||||
|
||||
BOOrdrVO ordrVO = new BOOrdrVO();
|
||||
ordrVO.setSopmalCd(sopmalCd);
|
||||
ordrVO.setOrdrInnb(session.getMetadata().get("ordrInnb"));
|
||||
DataMap ordrDtl = ordrService.selectOrdrSttus(ordrVO);
|
||||
if (ordrDtl != null && !"25".equals(ordrDtl.get("ordrSttusCd"))) {
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
ordrDtl = ordrService.selectOrdrSttus(ordrVO);
|
||||
}
|
||||
|
||||
model.addAttribute("status", status);
|
||||
model.addAttribute("payment_status", paymentStatus);
|
||||
model.addAttribute("customer_details", customerDetails);
|
||||
if("complete".equals(status) && "paid".equals(paymentStatus) && "25".equals(ordrDtl.get("ordrSttusCd"))) {
|
||||
model.addAttribute("returnUrl", "/sopmal/ordr/selectOrdrCompt");
|
||||
model.addAttribute("message", "Stripe 결제 정보 등록을 완료 하였습니다.");
|
||||
} else {
|
||||
model.addAttribute("returnUrl", "/sopmal/ordr/selectOrdrFailr");
|
||||
model.addAttribute("message", "Stripe 결제 정보 등록을 실패 하였습니다.");
|
||||
}
|
||||
model.addAttribute("sopmalCd", session.getMetadata().get("sopmalCd"));
|
||||
model.addAttribute("ordrInnb", session.getMetadata().get("ordrInnb"));
|
||||
model.addAttribute("pgCmpnyNm", session.getMetadata().get("pgCmpnyNm"));
|
||||
model.addAttribute("setleTyCd", session.getMetadata().get("setleTyCd"));
|
||||
model.addAttribute("goodsNm", session.getMetadata().get("goodsNm"));
|
||||
model.addAttribute("setleAmt", session.getMetadata().get("setleAmt"));
|
||||
model.addAttribute("ordrrNm", session.getMetadata().get("ordrrNm"));
|
||||
model.addAttribute("ordrrEmail", session.getMetadata().get("ordrrEmail"));
|
||||
model.addAttribute("ordrrMbtlnb", session.getMetadata().get("ordrrMbtlnb"));
|
||||
model.addAttribute("mbrId", session.getMetadata().get("mbrId"));
|
||||
model.addAttribute("mbrInnb", session.getMetadata().get("mbrInnb"));
|
||||
model.addAttribute("sesionId", session.getMetadata().get("sesionId"));
|
||||
model.addAttribute("subsvcInnb", session.getMetadata().get("subsvcInnb"));
|
||||
|
||||
return "sopmal/ordr/PayStripeSucsC";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/stripeCancel")
|
||||
public String stripeCancel(HttpServletRequest request, ModelMap model, @RequestParam("sessionId") String sessionId, @RequestParam("sopmalCd") String sopmalCd) throws StripeException {
|
||||
StripeClient stripeClient = payService.createStripeClient(sopmalCd);
|
||||
Session session = stripeClient.v1().checkout().sessions().retrieve(sessionId);
|
||||
|
||||
String status = session.getStatus();
|
||||
String paymentStatus = session.getPaymentStatus();
|
||||
if (!("complete".equals(status) && "paid".equals(paymentStatus))) {
|
||||
model.addAttribute("mobile", "sopmal_m".equals(Util.getDeviceType(request)));
|
||||
return "sopmal/ordr/StripeCancelR";
|
||||
}
|
||||
JsonObject customerDetails = null;
|
||||
JsonObject rawJson = session.getRawJsonObject();
|
||||
if (rawJson != null
|
||||
&& rawJson.has("customer_details")
|
||||
&& !rawJson.get("customer_details").isJsonNull()) {
|
||||
customerDetails = rawJson.getAsJsonObject("customer_details");
|
||||
}
|
||||
|
||||
model.addAttribute("status", status);
|
||||
model.addAttribute("payment_status", paymentStatus);
|
||||
model.addAttribute("customer_details", customerDetails);
|
||||
if("complete".equals(status) && "paid".equals(paymentStatus)) {
|
||||
model.addAttribute("returnUrl", "/sopmal/ordr/selectOrdrCompt");
|
||||
model.addAttribute("message", "Stripe 결제 정보 등록을 완료 하였습니다.");
|
||||
} else {
|
||||
model.addAttribute("returnUrl", "/sopmal/ordr/selectOrdrFailr");
|
||||
model.addAttribute("message", "Stripe 결제 정보 등록을 실패 하였습니다.");
|
||||
}
|
||||
model.addAttribute("sopmalCd", session.getMetadata().get("sopmalCd"));
|
||||
model.addAttribute("ordrInnb", session.getMetadata().get("ordrInnb"));
|
||||
model.addAttribute("pgCmpnyNm", session.getMetadata().get("pgCmpnyNm"));
|
||||
model.addAttribute("setleTyCd", session.getMetadata().get("setleTyCd"));
|
||||
model.addAttribute("goodsNm", session.getMetadata().get("goodsNm"));
|
||||
model.addAttribute("setleAmt", session.getMetadata().get("setleAmt"));
|
||||
model.addAttribute("ordrrNm", session.getMetadata().get("ordrrNm"));
|
||||
model.addAttribute("ordrrEmail", session.getMetadata().get("ordrrEmail"));
|
||||
model.addAttribute("ordrrMbtlnb", session.getMetadata().get("ordrrMbtlnb"));
|
||||
model.addAttribute("mbrId", session.getMetadata().get("mbrId"));
|
||||
model.addAttribute("mbrInnb", session.getMetadata().get("mbrInnb"));
|
||||
model.addAttribute("sesionId", session.getMetadata().get("sesionId"));
|
||||
model.addAttribute("subsvcInnb", session.getMetadata().get("subsvcInnb"));
|
||||
|
||||
return "sopmal/ordr/PayStripeSucsC";
|
||||
}
|
||||
}
|
||||
@@ -371,7 +371,9 @@ public class MngrLoggingInterceptor implements HandlerInterceptor {
|
||||
String cookieValue = agentId + ":" + md5(agentId + ":" + md5(System.currentTimeMillis() + ":" + random.nextInt())).substring(5, 10);
|
||||
Cookie agentIdCookie = new Cookie("agent_id", cookieValue);
|
||||
agentIdCookie.setMaxAge(86400 * 365 * 10); // 10년
|
||||
agentIdCookie.setDomain(domain);
|
||||
if (!request.getServerName().startsWith("loc.")) {
|
||||
agentIdCookie.setDomain(domain);
|
||||
}
|
||||
// agentIdCookie.setHttpOnly(true);
|
||||
agentIdCookie.setPath("/mngr");
|
||||
// agentIdCookie.setSecure(true);
|
||||
|
||||
@@ -51,14 +51,17 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||
String accessToken = extractToken(request);
|
||||
|
||||
|
||||
String sysDvCd = RealmContextHolder.getSysDvCdRealm();
|
||||
String expireChk = request.getParameter("expire");
|
||||
String tokenExpireCookie = CookieUtils.getCookieValue("token_expire", request);
|
||||
|
||||
//사용자이면서 ACT가 없는데 tokenExpire는 있을 경우
|
||||
//로그인된 사용자지만 엑세스 토큰이 만료되어 다시 재발급 받아야 하는 대상
|
||||
//expire값은 루프 요청 방지
|
||||
if("01".equals(sysDvCd) && !StringUtils.hasText(accessToken) && StringUtils.hasText(tokenExpireCookie) && !"p".equals(expireChk)){
|
||||
//인증 진입점은 만료 쿠키가 남아 있어도 갱신 대상으로 보내지 않는다.
|
||||
//쿠키 삭제가 지연되거나 이전 경로의 쿠키가 남아도 로그인 화면까지는 항상 도달해야 한다.
|
||||
if(!isAuthenticationEndpoint(requestUri, realm)
|
||||
&& !StringUtils.hasText(accessToken)
|
||||
&& StringUtils.hasText(tokenExpireCookie)
|
||||
&& !"p".equals(expireChk)){
|
||||
response.sendRedirect("/"+realm+"/tokens/refresh?redirect_uri=%s&expire=%s".formatted(URLEncoder.encode(UrlExtractor.getOriginalURL(request), StandardCharset.UTF_8), "p"));
|
||||
return;
|
||||
|
||||
@@ -66,7 +69,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||
|
||||
|
||||
// accessToken이 있고 refresh Token 요청이 아닌경우
|
||||
if (StringUtils.hasText(accessToken) && !requestUri.contains("/tokens/refresh")) {
|
||||
if (StringUtils.hasText(accessToken) && !isAuthenticationEndpoint(requestUri, realm)) {
|
||||
UserDetails userDetails = customUserDetailService.loadUserByUsername(accessToken);
|
||||
if (userDetails != null) {
|
||||
log.debug("user details: {}", userDetails);
|
||||
@@ -92,6 +95,15 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||
|
||||
}
|
||||
|
||||
private boolean isAuthenticationEndpoint(String requestUri, String realm) {
|
||||
String realmPath = "/" + realm;
|
||||
|
||||
return requestUri.equals(realmPath)
|
||||
|| requestUri.startsWith(realmPath + "/login")
|
||||
|| requestUri.equals(realmPath + "/logout")
|
||||
|| requestUri.startsWith(realmPath + "/tokens/refresh");
|
||||
}
|
||||
|
||||
|
||||
|
||||
private String extractToken(HttpServletRequest request) {
|
||||
|
||||
@@ -44,9 +44,12 @@ public abstract class CookieUtils {
|
||||
Cookie cookie = new Cookie(name, null);
|
||||
cookie.setMaxAge(0);
|
||||
cookie.setPath(path);
|
||||
cookie.setDomain(originHost);
|
||||
setCookieDomain(cookie, request, originHost);
|
||||
cookie.setHttpOnly(true);
|
||||
response.addCookie(cookie);
|
||||
|
||||
// loc 환경에서는 이전에 상위 도메인으로 저장된 쿠키도 함께 삭제한다.
|
||||
deleteLegacyDomainCookie(name, path, request, response, originHost);
|
||||
}
|
||||
|
||||
public static void createCookie(String name, String value, String path, int maxAge, boolean httpOnly, HttpServletRequest request, HttpServletResponse response) {
|
||||
@@ -58,10 +61,12 @@ public abstract class CookieUtils {
|
||||
|
||||
String originHost = UrlExtractor.getOriginalHost(host);
|
||||
|
||||
deleteLegacyDomainCookie(name, path, request, response, originHost);
|
||||
|
||||
Cookie cookie = new Cookie(name, value);
|
||||
cookie.setMaxAge(maxAge);
|
||||
cookie.setPath(path);
|
||||
cookie.setDomain(originHost);
|
||||
setCookieDomain(cookie, request, originHost);
|
||||
cookie.setHttpOnly(httpOnly);
|
||||
response.addCookie(cookie);
|
||||
}
|
||||
@@ -77,7 +82,7 @@ public abstract class CookieUtils {
|
||||
|
||||
Cookie cookie = new Cookie(name, value);
|
||||
cookie.setPath(path);
|
||||
cookie.setDomain(originHost);
|
||||
setCookieDomain(cookie, request, originHost);
|
||||
cookie.setHttpOnly(httpOnly);
|
||||
response.addCookie(cookie);
|
||||
}
|
||||
@@ -96,4 +101,30 @@ public abstract class CookieUtils {
|
||||
return Map.of("ACTPath", ACTPath, "RFTPath", RFTPath);
|
||||
}
|
||||
|
||||
private static void setCookieDomain(Cookie cookie, HttpServletRequest request, String domain) {
|
||||
if (!request.getServerName().startsWith("loc.")) {
|
||||
cookie.setDomain(domain);
|
||||
}
|
||||
}
|
||||
|
||||
private static void deleteLegacyDomainCookie(String name, String path, HttpServletRequest request, HttpServletResponse response, String domain) {
|
||||
if (request.getServerName().startsWith("loc.")) {
|
||||
addDomainDeleteCookie(name, path, domain, response);
|
||||
|
||||
int firstDot = domain.indexOf('.');
|
||||
if (firstDot > 0) {
|
||||
addDomainDeleteCookie(name, path, domain.substring(firstDot + 1), response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void addDomainDeleteCookie(String name, String path, String domain, HttpServletResponse response) {
|
||||
Cookie domainCookie = new Cookie(name, null);
|
||||
domainCookie.setMaxAge(0);
|
||||
domainCookie.setPath(path);
|
||||
domainCookie.setDomain(domain);
|
||||
domainCookie.setHttpOnly(true);
|
||||
response.addCookie(domainCookie);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -310,8 +310,13 @@ public class FileStorageService {
|
||||
if(image != null) {
|
||||
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
||||
}
|
||||
BufferedImage convertImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
|
||||
convertImage.getGraphics().drawImage(thumbnail, posX, posY, null);
|
||||
BufferedImage convertImage = new BufferedImage(destWidth, destHeight, getImageType(image, file.getOriginalFilename()));
|
||||
Graphics graphics = convertImage.getGraphics();
|
||||
try {
|
||||
graphics.drawImage(thumbnail, posX, posY, null);
|
||||
} finally {
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
String ext = FilenameUtils.getExtension(file.getOriginalFilename());
|
||||
ImageIO.write(convertImage, ext, os);
|
||||
@@ -376,8 +381,13 @@ public class FileStorageService {
|
||||
if(image != null) {
|
||||
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
||||
}
|
||||
BufferedImage convertImage = new BufferedImage(thumbnailWidth, thumbnailHeight, BufferedImage.TYPE_INT_RGB);
|
||||
convertImage.getGraphics().drawImage(thumbnail, posX, posY, null);
|
||||
BufferedImage convertImage = new BufferedImage(thumbnailWidth, thumbnailHeight, getImageType(image, file.getOriginalFilename()));
|
||||
Graphics graphics = convertImage.getGraphics();
|
||||
try {
|
||||
graphics.drawImage(thumbnail, posX, posY, null);
|
||||
} finally {
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
ImageIO.write(convertImage, ext, os);
|
||||
}catch (WnbtRestException wre){
|
||||
@@ -407,6 +417,14 @@ public class FileStorageService {
|
||||
return thumbnail_file;
|
||||
}
|
||||
|
||||
private int getImageType(BufferedImage image, String originalFileName) {
|
||||
String ext = FilenameUtils.getExtension(originalFileName).toLowerCase(Locale.ROOT);
|
||||
boolean supportsAlpha = "png".equals(ext) || "gif".equals(ext);
|
||||
return image != null && image.getColorModel().hasAlpha() && supportsAlpha
|
||||
? BufferedImage.TYPE_INT_ARGB
|
||||
: BufferedImage.TYPE_INT_RGB;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* combineFilePath 에 지정된 경로에 저장이 됨
|
||||
@@ -715,4 +733,4 @@ public class FileStorageService {
|
||||
return rtnStr;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,12 +359,15 @@ mngrfo:
|
||||
images: .gif,.jpg,.jpeg,.png
|
||||
cdnurl: https://19d28cf7178139ad.kinxzone.com
|
||||
subsvc:
|
||||
dft-goods-optn-innb: 5
|
||||
dft-goods-optn-innb: 1
|
||||
|
||||
|
||||
secret:
|
||||
key: 1df5be2f7e90ae36
|
||||
|
||||
aciexpress:
|
||||
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||
|
||||
|
||||
host:
|
||||
img: https://19d28cf7178139ad.kinxzone.com
|
||||
|
||||
@@ -360,11 +360,14 @@ mngrfo:
|
||||
cdnurl: https://19d28cf7178139ad.kinxzone.com
|
||||
# upurl: https://www.soju1sake1.com
|
||||
subsvc:
|
||||
dft-goods-optn-innb: 5
|
||||
dft-goods-optn-innb: 1
|
||||
|
||||
secret:
|
||||
key: 1df5be2f7e90ae36
|
||||
|
||||
aciexpress:
|
||||
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||
|
||||
|
||||
host:
|
||||
img: https://19d28cf7178139ad.kinxzone.com
|
||||
|
||||
@@ -359,12 +359,15 @@ mngrfo:
|
||||
images: .gif,.jpg,.jpeg,.png
|
||||
cdnurl: https://19b0bde6dcdc15ad.kinxzone.com
|
||||
subsvc:
|
||||
dft-goods-optn-innb: 5
|
||||
dft-goods-optn-innb: 1
|
||||
|
||||
|
||||
secret:
|
||||
key: 1df5be2f7e90ae36
|
||||
|
||||
aciexpress:
|
||||
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||
|
||||
|
||||
host:
|
||||
img: https://19b0bde6dcdc15ad.kinxzone.com/
|
||||
@@ -437,11 +440,11 @@ ordr:
|
||||
# 서치어드바이저 소유권 코드
|
||||
meta-content:
|
||||
google:
|
||||
LR: ""
|
||||
SK: "6RUF9UIWIu1nl1WlceNKH25YZG13jcEZHURfLrbSxQU"
|
||||
naver:
|
||||
LR: "5fcdb284f18ca08cf86af214a01998990c008e84"
|
||||
SK: "213a2c785853cdd006af58d286ffec23342a0e8a"
|
||||
facebook:
|
||||
LR: ""
|
||||
SK: ""
|
||||
|
||||
# 결제 api 사용 암호 key
|
||||
api:
|
||||
|
||||
@@ -402,6 +402,9 @@
|
||||
WHEN (IFNULL(GOODS.REST_INVNTRY_QY, 0) - IFNULL(GOODS.AVLINV_LMTT_QY, 0)) >= #{goodsTotalQy} THEN 0
|
||||
ELSE 1 END
|
||||
END AS INVNTRY_POLICY -- 상품별 옵션 수량합산 재고유무
|
||||
, MAX(GOODS.GOODS_NM) AS STOCK_GOODS_NM
|
||||
, MIN(GREATEST(0, IFNULL(OPTN.INVNTRY_QY, 0) - IFNULL(OPTN.USEFUL_INVNTRY_QY, 0))) AS OPTION_AVAILABLE_QY
|
||||
, MIN(GREATEST(0, IFNULL(GOODS.REST_INVNTRY_QY, 0) - IFNULL(GOODS.AVLINV_LMTT_QY, 0))) AS GOODS_AVAILABLE_QY
|
||||
, CASE WHEN IFNULL(OPTN.SLEPRIC, 0) = #{slepric} THEN 0 ELSE 1 END AS SELPRIC -- 판매가 변경여부
|
||||
, CASE
|
||||
WHEN OPTN.COMPNB_DSCNT_AT = #{compnbDscntAt} AND OPTN.SCTN_DSCNT_AT = #{sctnDscntAt} THEN 0
|
||||
@@ -430,6 +433,7 @@
|
||||
, IFNULL(EVT_DUPL_COUPON.DPLCT_LMTT_COUPON, 0) AS DPLCT_LMTT_COUPON -- 이벤트 중복제한 쿠폰 존재여부
|
||||
, CASE WHEN OPTN.OPTN_EXPSR_AT = 'Y' THEN 0 ELSE 1 END AS OPTN_EXPSR_AT
|
||||
FROM (SELECT GG.GOODS_INNB -- 상품 고유번호
|
||||
, GG.GOODS_NM
|
||||
, GG.SOPMAL_CD -- 쇼핑몰코드
|
||||
, GG.DLVY_GROUP_INNB -- 배송그룹고유번호
|
||||
, GG.GOODS_KND_CD -- 상품구분 01 상품
|
||||
@@ -769,4 +773,126 @@
|
||||
SELECT PURCHS_REVALID_AT FROM GC_SHOP WHERE 1=1 AND SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 구독서비스 주문 전 주문정보 재확인 -->
|
||||
<select id="selectBOSubsvcPreOrderValidation" parameterType="com.wb.domainserver.domain.admin.instcSle.mtng.vo.BOPreOrderValidVO" resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
CASE
|
||||
WHEN GOODS.SUBSVC_STTUS_CD = '01' THEN 0
|
||||
ELSE 1
|
||||
END AS GOODS_STTUS, -- 상품상태 정상 확인
|
||||
CASE
|
||||
WHEN GOODS.PURCHS_QY_LMTT_DV_CD = '01' OR GOODS.PURCHS_QY_LMTT_DV_CD IS NULL THEN 0
|
||||
ELSE
|
||||
CASE
|
||||
WHEN #{goodsTotalQy} BETWEEN GOODS.MUMM_PURCHS_QY AND GOODS.MXMM_PURCHS_QY THEN 0
|
||||
ELSE 1
|
||||
END
|
||||
END AS PURCHS_QY_LMTT, -- 상품별 최소 최대 구매수량제한여부
|
||||
CASE
|
||||
WHEN GOODS.INVNTRY_POLICY_CD = '02' THEN 0
|
||||
ELSE
|
||||
CASE
|
||||
WHEN (GOODS.INVNTRY_QY - IFNULL(GOODS.USEFUL_INVNTRY_QY, 0)) >= #{qy} THEN 0
|
||||
ELSE 1
|
||||
END
|
||||
END AS INVNTRY, -- 각 옵션별 재고 유무
|
||||
CASE
|
||||
WHEN GOODS.INVNTRY_POLICY_CD = '02' THEN 0
|
||||
ELSE
|
||||
CASE
|
||||
WHEN (IFNULL(GOODS.REST_INVNTRY_QY, 0) - IFNULL(GOODS.AVLINV_LMTT_QY, 0)) >= #{goodsTotalQy} THEN 0
|
||||
ELSE 1
|
||||
END
|
||||
END AS INVNTRY_POLICY, -- 상품별 옵션 수량합산 재고유무
|
||||
MAX(GOODS.GOODS_NM) AS STOCK_GOODS_NM,
|
||||
MIN(GREATEST(0, GOODS.INVNTRY_QY - IFNULL(GOODS.USEFUL_INVNTRY_QY, 0))) AS OPTION_AVAILABLE_QY,
|
||||
MIN(GREATEST(0, IFNULL(GOODS.REST_INVNTRY_QY, 0) - IFNULL(GOODS.AVLINV_LMTT_QY, 0))) AS GOODS_AVAILABLE_QY,
|
||||
CASE
|
||||
WHEN IFNULL(GOODS.SUBSVC_CT, 0) = #{slepric} THEN 0
|
||||
ELSE 1
|
||||
END AS SELPRIC, -- 판매가 변경여부
|
||||
0 AS DSCNT_AT, -- 구간,복수할인 정보 변경 여부
|
||||
0 AS DLVY_GROUP, -- 배송그룹 변경여부
|
||||
0 AS PURCHS_TRGTER_LMTT, -- 구매대상자 제한
|
||||
0 AS COUPON_STTUS, -- 쿠폰 상태 확인
|
||||
0 AS COUPON_USE_AT, -- 쿠폰 회수여부 확인
|
||||
0 AS COUPON_VALIDPD_DT, -- 쿠폰 유효기간 확인
|
||||
0 AS EVT_TRGET_AT, -- 이벤트 진행여부 이벤트 대상일경우 1을 반환함 = 정상 처리 0 이벤트 대상 아닐경우 1
|
||||
0 AS DPLCT_LMTT_COUPON, -- 이벤트 중복제한 쿠폰 존재여부
|
||||
0 AS OPTN_EXPSR_AT -- 상품옵션 노출여부
|
||||
FROM (
|
||||
SELECT
|
||||
GS.SUBSVC_INNB, -- 구독서비스 고유번호
|
||||
GG.GOODS_NM,
|
||||
GG.GOODS_INNB, -- 상품 고유번호
|
||||
GS.SOPMAL_CD, -- 쇼핑몰코드
|
||||
GS.SUBSVC_CT, -- 구독료
|
||||
GG.DLVY_GROUP_INNB, -- 배송그룹고유번호
|
||||
GG.GOODS_KND_CD, -- 상품구분 01 상품
|
||||
GS.SUBSVC_STTUS_CD, -- 상품상태 01 정상
|
||||
GS.PURCHS_QY_LMTT_DV_CD, -- 구매수량제한여부 02 제한
|
||||
GS.MUMM_PURCHS_QY, -- 최소구매수량
|
||||
GS.MXMM_PURCHS_QY, -- 최대구매수량
|
||||
GS.INVNTRY_POLICY_CD, -- 재고정책 01 재고가 있으면 판매 02 재고없어도 판매
|
||||
GS.AVLINV_LMTT_QY, -- 가용재고제한수량
|
||||
GG.PURCHS_TRGTER_LMTT_DV_CD, -- 구매 대상자 제한 02 제한
|
||||
SUM(IFNULL(GS.INVNTRY_QY, 0)) AS INVNTRY_QY, -- 상품 재고수량 합계
|
||||
SUM(IFNULL(GS.USEFUL_INVNTRY_QY, 0)) AS USEFUL_INVNTRY_QY, -- 상품 사용 재고수량 합계
|
||||
SUM(IFNULL(GS.INVNTRY_QY, 0)) - SUM(IFNULL(GS.USEFUL_INVNTRY_QY, 0)) AS REST_INVNTRY_QY -- 잔여 재고수량 합계
|
||||
FROM GC_SUBSVC GS
|
||||
INNER JOIN GC_GOODS_OPTION GGO
|
||||
ON GS.SOPMAL_CD = GGO.SOPMAL_CD
|
||||
AND GS.DFT_GOODS_OPTN_INNB = GGO.GOODS_OPTN_INNB
|
||||
AND GS.USE_AT = 'Y'
|
||||
AND GGO.USE_AT = 'Y'
|
||||
INNER JOIN GC_GOODS GG
|
||||
ON GS.SOPMAL_CD = GG.SOPMAL_CD
|
||||
AND GGO.GOODS_INNB = GG.GOODS_INNB
|
||||
AND GG.USE_AT = 'Y'
|
||||
WHERE 1 = 1
|
||||
AND GS.SOPMAL_CD = #{sopmalCd}
|
||||
AND GS.SUBSVC_INNB = #{subsvcInnb}
|
||||
GROUP BY
|
||||
GG.GOODS_INNB
|
||||
) GOODS
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
GM.MBR_INNB,
|
||||
GM.MBR_DV_CD,
|
||||
GMGM.SOPMAL_CD,
|
||||
GMG.MBR_GRAD_INNB
|
||||
FROM
|
||||
GC_MEMBER GM
|
||||
INNER JOIN GC_MEMBER_GRAD_MAPPING GMGM
|
||||
ON GM.MBR_INNB = GMGM.MBR_INNB
|
||||
AND GM.MBR_DV_CD = GMGM.MBR_DV_CD
|
||||
AND GM.USE_AT = 'Y'
|
||||
INNER JOIN GC_MEMBER_GRAD GMG
|
||||
ON GMGM.MBR_GRAD_INNB = GMG.MBR_GRAD_INNB
|
||||
AND GMGM.SOPMAL_CD = GMG.SOPMAL_CD
|
||||
AND GMG.USE_AT = 'Y'
|
||||
WHERE 1 = 1
|
||||
AND GMGM.SOPMAL_CD = #{sopmalCd}
|
||||
AND GM.MBR_INNB = #{mbrInnb}
|
||||
) MBR
|
||||
ON MBR.SOPMAL_CD = GOODS.SOPMAL_CD
|
||||
WHERE 1 = 1
|
||||
GROUP BY
|
||||
GOODS_STTUS,
|
||||
PURCHS_QY_LMTT,
|
||||
INVNTRY,
|
||||
INVNTRY_POLICY,
|
||||
SELPRIC,
|
||||
DSCNT_AT,
|
||||
DLVY_GROUP,
|
||||
PURCHS_TRGTER_LMTT,
|
||||
COUPON_STTUS,
|
||||
COUPON_USE_AT,
|
||||
COUPON_VALIDPD_DT,
|
||||
EVT_TRGET_AT,
|
||||
DPLCT_LMTT_COUPON
|
||||
]]>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -338,6 +338,7 @@
|
||||
,MEMOR_USE_AT
|
||||
,NPAY_USE_AT
|
||||
,KPAY_USE_AT
|
||||
,STRIPE_USE_AT
|
||||
FROM GC_PAY_INFO
|
||||
WHERE SETLE_SETUP_INNB = #{setleSetupInnb}
|
||||
</select>
|
||||
@@ -947,6 +948,37 @@
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 쇼핑몰 환율 설정 수정 -->
|
||||
<update id="updateBOExchngrtSetup" parameterType="com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO" >
|
||||
UPDATE
|
||||
GC_SHOP
|
||||
SET BUY_RATE = #{buyRate},
|
||||
SELL_RATE = #{sellRate},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE
|
||||
1=1
|
||||
AND
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 쇼핑몰 안내문구 설정 수정 -->
|
||||
<update id="updateBOGuidanceSetup" parameterType="com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO" >
|
||||
UPDATE
|
||||
GC_SHOP
|
||||
SET JOIN_GUIDANCE_SJ = #{joinGuidanceSj},
|
||||
JOIN_GUIDANCE_WORDS = #{joinGuidanceWords},
|
||||
JOIN_BNEF = #{joinBnef},
|
||||
JOIN_COMPT_WORDS = #{joinComptWords},
|
||||
SUBSVC_GUIDANCE_WORDS = #{subsvcGuidanceWords},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE
|
||||
1=1
|
||||
AND
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 쇼핑몰 사업자 정보 삭제 -->
|
||||
<delete id="deteteBOShopCompany" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO">
|
||||
|
||||
@@ -1250,6 +1282,7 @@
|
||||
MEMOR_USE_AT = #{memorUseAt},
|
||||
NPAY_USE_AT = #{npayUseAt},
|
||||
KPAY_USE_AT = #{kpayUseAt},
|
||||
STRIPE_USE_AT = #{stripeUseAt},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
@@ -1538,5 +1571,124 @@
|
||||
AND GD.USE_AT = 'Y'
|
||||
</select>
|
||||
|
||||
<!-- 사이트맵 XML -->
|
||||
<select id="selectSitemapXml"
|
||||
parameterType="String"
|
||||
resultType="dataMap">
|
||||
WITH RECURSIVE CATEGORY_TREE AS (
|
||||
SELECT
|
||||
GC.CTGRY_ID
|
||||
, GC.UPPER_CTGRY_ID
|
||||
, GC.SOPMAL_CD
|
||||
, GC.CTGRY_NM
|
||||
, GC.CTGRY_DEPTH
|
||||
, GC.SORT_ORDR
|
||||
, GC.CTGRY_DV_CD
|
||||
, GC.EXPSR_CD
|
||||
, GC.URL_DV_CD
|
||||
, CASE
|
||||
WHEN GC.URL_DV_CD = '01' THEN ''
|
||||
WHEN GC.URL_DV_CD = '02' THEN GC.URL
|
||||
ELSE NULL
|
||||
END URL
|
||||
, GC.USE_AT
|
||||
, GC.EXPSR_BGN_DT
|
||||
, GC.EXPSR_END_DT
|
||||
FROM GC_CATEGORY GC
|
||||
WHERE GC.SOPMAL_CD = #{sopmalCd}
|
||||
AND GC.UPPER_CTGRY_ID IS NULL
|
||||
AND GC.USE_AT = 'Y'
|
||||
AND (
|
||||
GC.EXPSR_CD = '01'
|
||||
OR (
|
||||
GC.EXPSR_CD = '03'
|
||||
AND SYSDATE() BETWEEN GC.EXPSR_BGN_DT AND GC.EXPSR_END_DT
|
||||
)
|
||||
)
|
||||
UNION ALL
|
||||
SELECT
|
||||
CHILD.CTGRY_ID
|
||||
, CHILD.UPPER_CTGRY_ID
|
||||
, CHILD.SOPMAL_CD
|
||||
, CHILD.CTGRY_NM
|
||||
, CHILD.CTGRY_DEPTH
|
||||
, CHILD.SORT_ORDR
|
||||
, CHILD.CTGRY_DV_CD
|
||||
, CHILD.EXPSR_CD
|
||||
, CHILD.URL_DV_CD
|
||||
, CASE
|
||||
WHEN CHILD.URL_DV_CD = '01' THEN
|
||||
CASE
|
||||
WHEN CHILD.CTGRY_DV_CD = '01' THEN CONCAT('/sopmal/goods/selectGoodsListForm?ctgryId=', CHILD.CTGRY_ID)
|
||||
ELSE NULL
|
||||
END
|
||||
WHEN CHILD.URL_DV_CD = '02' THEN CHILD.URL
|
||||
ELSE NULL
|
||||
END URL
|
||||
, CHILD.USE_AT
|
||||
, CHILD.EXPSR_BGN_DT
|
||||
, CHILD.EXPSR_END_DT
|
||||
FROM GC_CATEGORY CHILD
|
||||
INNER JOIN CATEGORY_TREE PARENT
|
||||
ON CHILD.SOPMAL_CD = PARENT.SOPMAL_CD
|
||||
AND CHILD.UPPER_CTGRY_ID = PARENT.CTGRY_ID
|
||||
WHERE CHILD.USE_AT = 'Y'
|
||||
AND (
|
||||
CHILD.EXPSR_CD = '01'
|
||||
OR (
|
||||
CHILD.EXPSR_CD = '03'
|
||||
AND SYSDATE() BETWEEN CHILD.EXPSR_BGN_DT AND CHILD.EXPSR_END_DT
|
||||
)
|
||||
)
|
||||
)
|
||||
SELECT CONCAT(GS.PC_DOMN_ADRES, GC.URL) AS TARGET_URL
|
||||
, DATE_FORMAT(SYSDATE(), '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
|
||||
, ROUND(POWER(0.8, GC.CTGRY_DEPTH - 1), 4) AS PRIORITY
|
||||
FROM CATEGORY_TREE GC
|
||||
INNER JOIN GC_SHOP GS
|
||||
ON GC.SOPMAL_CD = GS.SOPMAL_CD
|
||||
WHERE GC.CTGRY_DV_CD != '02'
|
||||
AND GC.CTGRY_DEPTH != 2
|
||||
UNION
|
||||
SELECT CONCAT(GS.PC_DOMN_ADRES, '/sopmal/goods/selectGoodsDtl?goodsInnb=', GG.GOODS_INNB) AS TARGET_URL
|
||||
, DATE_FORMAT(GG.UPDT_DT, '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
|
||||
, ROUND(POWER(0.8, 1), 4) AS PRIORITY
|
||||
FROM GC_GOODS GG
|
||||
INNER JOIN GC_SHOP GS
|
||||
ON GG.SOPMAL_CD = GS.SOPMAL_CD
|
||||
WHERE GG.USE_AT = 'Y'
|
||||
AND GG.SOPMAL_CD = #{sopmalCd}
|
||||
AND GG.GOODS_KND_CD = '01'
|
||||
AND GG.EXPSR_DV_CD = '01'
|
||||
AND GG.GOODS_STTUS_CD IN ('01', '02')
|
||||
UNION
|
||||
SELECT CONCAT(GS.PC_DOMN_ADRES, '/sopmal/csc/selectBbscttAuth?authDv=CM&bbsTyCd=',
|
||||
CASE
|
||||
WHEN GB.BBS_ID = 'sake_column' THEN '01'
|
||||
WHEN GB.BBS_ID = 'magazine' THEN '09'
|
||||
ELSE NULL
|
||||
END,
|
||||
'&bbscttInnb=', GB.BBSCTT_INNB,
|
||||
'&reqUrl=subPage&bbsId=', GB.BBS_ID,
|
||||
'&cscAt='
|
||||
) AS TARGET_URL
|
||||
, DATE_FORMAT(GB.UPDT_DT, '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
|
||||
, ROUND(POWER(0.8, 1), 4) AS PRIORITY
|
||||
FROM GC_BOARDDATA GB
|
||||
INNER JOIN GC_SHOP GS
|
||||
ON GB.SOPMAL_CD = GS.SOPMAL_CD
|
||||
WHERE GB.USE_AT = 'Y'
|
||||
AND GB.EXPSR_AT = 'Y'
|
||||
AND (
|
||||
GB.NTCE_PD_SETUP_AT = 'N'
|
||||
OR (
|
||||
GB.NTCE_PD_SETUP_AT = 'Y'
|
||||
AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN DATE_FORMAT(GB.NTCE_BGN_DE, '%Y-%m-%d') AND DATE_FORMAT(GB.NTCE_END_DE, '%Y-%m-%d')
|
||||
)
|
||||
)
|
||||
AND GB.BBS_ID IN ('sake_column', 'magazine')
|
||||
AND depth = 0
|
||||
ORDER BY PRIORITY DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -224,6 +224,7 @@
|
||||
AND (FB.NTC_AT = 'N' OR (FB.NTC_AT = 'Y' AND FB.NTC_PD_SETUP_AT = 'N'))
|
||||
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(serverDv, 'sopmal')">
|
||||
<include refid="selectSopmalNtceWhere"/>
|
||||
AND FB.USE_AT = 'Y'
|
||||
</if>
|
||||
AND FB.SOPMAL_CD = #{sopmalCd}
|
||||
AND FB.BBS_ID = #{bbsId}
|
||||
@@ -460,6 +461,7 @@
|
||||
</if>
|
||||
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(serverDv, 'sopmal')">
|
||||
<include refid="selectSopmalNtceWhere"/>
|
||||
AND FB.USE_AT = 'Y'
|
||||
</if>
|
||||
AND FB.DEPTH = 0
|
||||
AND FB.SOPMAL_CD = #{sopmalCd}
|
||||
@@ -1765,6 +1767,7 @@
|
||||
,CAST(AES_DECRYPT(UNHEX(FB.ANSW_MBTLNB) , #{secretKey}) AS CHAR(50)) AS ANSW_MBTLNB
|
||||
,FB.ANSW_SMS_RECPTN
|
||||
,FB.SJ
|
||||
,FB.RELATE_GOODS_WORDS
|
||||
,FB.SORT_ORDR
|
||||
,FB.USE_AT
|
||||
,IFNULL(FBM.MNGR_NM, '관리자') AS MNGR_NM
|
||||
@@ -1925,6 +1928,7 @@
|
||||
,CAST(AES_DECRYPT(UNHEX(FB.ANSW_MBTLNB) , #{secretKey}) AS CHAR(50)) AS ANSW_MBTLNB
|
||||
,FB.ANSW_SMS_RECPTN
|
||||
,FB.SJ
|
||||
,FB.RELATE_GOODS_WORDS
|
||||
,FB.SORT_ORDR
|
||||
,FB.USE_AT
|
||||
,FB.CN_SCRIPT
|
||||
@@ -2037,6 +2041,9 @@
|
||||
PASSWORD,
|
||||
SJ,
|
||||
CN,
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(relateGoodsWords)">
|
||||
RELATE_GOODS_WORDS,
|
||||
</if>
|
||||
INQIRE_CNT,
|
||||
CM_USE_AT,
|
||||
RECOMEND_CNT,
|
||||
@@ -2085,6 +2092,9 @@
|
||||
MD5(#{password}),
|
||||
#{sj},
|
||||
#{cn},
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(relateGoodsWords)">
|
||||
#{relateGoodsWords},
|
||||
</if>
|
||||
0,
|
||||
IFNULL(#{cmUseAt},'N'),
|
||||
0,
|
||||
@@ -2131,6 +2141,9 @@
|
||||
SET
|
||||
SJ = #{sj},
|
||||
CN = #{cn},
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(relateGoodsWords)">
|
||||
RELATE_GOODS_WORDS = #{relateGoodsWords},
|
||||
</if>
|
||||
CM_USE_AT =IFNULL(#{cmUseAt},'N'),
|
||||
SORT_ORDR = #{sortOrdr},
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(represntFileInfo)">
|
||||
@@ -2654,19 +2667,43 @@
|
||||
WHERE 1=1
|
||||
AND FGI.GOODS_INNB = FBG.GOODS_INNB
|
||||
AND FGI.SOPMAL_CD = FBG.SOPMAL_CD
|
||||
AND FGI.IMG_KND = '03'
|
||||
AND FGI.IMG_KND = '02'
|
||||
AND FGI.CUT_NB = 1
|
||||
LIMIT 1
|
||||
)IMG
|
||||
) AS IMG
|
||||
,FG.GOODS_NM
|
||||
,FGO.CNSMRPRIC
|
||||
,FGO.SLEPRIC
|
||||
,FGO.STDR_DV_AT
|
||||
,FN_GET_COMMCODE_NAME('GOODS_STTUS', FG.GOODS_STTUS_CD) AS GOODS_STTUS_NM
|
||||
,FN_GET_COMMCODE_NAME('EXPSR', FG.EXPSR_DV_CD) AS EXPSR_NM
|
||||
,FBG.ORDR_GOODS_OPTN_INNB
|
||||
,FBG.SOPMAL_CD
|
||||
,FBG.RE_ORDER_AT
|
||||
,FG.GOODS_ICON_CD AS ICON_CD_NM_LIST
|
||||
,FG.SRT_DC AS REPRSNT_DC
|
||||
,FG.GOODS_STTUS_CD
|
||||
,FEGI.GOODS_NM_EXPSR_AT
|
||||
,FEGI.GOODS_NM_EXPSR_ORDR
|
||||
,FEGI.REPRSNT_DC_EXPSR_AT
|
||||
,FEGI.REPRSNT_DC_EXPSR_ORDR
|
||||
,FEGI.PRIC_EXPSR_AT
|
||||
,FEGI.PRIC_EXPSR_ORDR
|
||||
,FEGI.RVW_EVL_SCRE_EXPSR_AT
|
||||
,FEGI.RVW_EVL_SCRE_EXPSR_ORDR
|
||||
,FEGI.ICON_EXPSR_AT
|
||||
,FEGI.ICON_EXPSR_ORDR
|
||||
,IFNULL(ROUND(FGO.CNSMRPRIC, 0), 0) AS CNSMRPRIC
|
||||
,IFNULL(ROUND(FGO.SLEPRIC, 0), 0) AS SLEPRIC
|
||||
,IFNULL(ROUND(((FGO.CNSMRPRIC - FGO.SLEPRIC) / NULLIF(FGO.CNSMRPRIC, 0)) * 100, 0), 0) AS SLE_PERCENT
|
||||
,IFNULL((SELECT ROUND(AVG(FBA.EVL_SCORE), 1)
|
||||
FROM GC_BOARDDATA_GOODS RBG
|
||||
INNER JOIN GC_BOARDDATA RB ON RB.BBSCTT_INNB = RBG.BBSCTT_INNB AND RB.SOPMAL_CD = RBG.SOPMAL_CD
|
||||
INNER JOIN GC_BOARDMANAGER RBM ON RBM.BBS_ID = RB.BBS_ID AND RBM.SOPMAL_CD = RB.SOPMAL_CD
|
||||
LEFT JOIN GC_BOARDFORM RBF ON RBF.BBS_ID = RBM.BBS_ID AND RBF.SOPMAL_CD = RBM.SOPMAL_CD AND RBF.USE_AT = 'Y' AND RBF.ADIT_ITM_DV_CD = '04'
|
||||
LEFT JOIN GC_BOARD_ADDITM FBA ON FBA.BBSCTT_INNB = RB.BBSCTT_INNB AND FBA.SOPMAL_CD = RB.SOPMAL_CD AND FBA.QESITM_INNB = RBF.QESITM_INNB
|
||||
WHERE RBG.SOPMAL_CD = FG.SOPMAL_CD
|
||||
AND RBG.GOODS_INNB IN (SELECT CAST(RVW_GROUP_NB AS DECIMAL(10)) FROM GC_GOODS_RVW_V WHERE SOPMAL_CD = FG.SOPMAL_CD AND GOODS_INNB = FG.GOODS_INNB)
|
||||
AND RB.USE_AT = 'Y' AND RB.DEPTH = 0 AND RBM.BBS_TY_CD IN ('06', '07')), 0) AS AVG_EVL_SCORE
|
||||
,IFNULL((SELECT COUNT(RB.BBSCTT_INNB)
|
||||
FROM GC_BOARDDATA_GOODS RBG
|
||||
INNER JOIN GC_BOARDDATA RB ON RB.BBSCTT_INNB = RBG.BBSCTT_INNB AND RB.SOPMAL_CD = RBG.SOPMAL_CD
|
||||
INNER JOIN GC_BOARDMANAGER RBM ON RBM.BBS_ID = RB.BBS_ID AND RBM.SOPMAL_CD = RB.SOPMAL_CD
|
||||
WHERE RBG.SOPMAL_CD = FG.SOPMAL_CD
|
||||
AND RBG.GOODS_INNB IN (SELECT CAST(RVW_GROUP_NB AS DECIMAL(10)) FROM GC_GOODS_RVW_V WHERE SOPMAL_CD = FG.SOPMAL_CD AND GOODS_INNB = FG.GOODS_INNB)
|
||||
AND RB.USE_AT = 'Y' AND RB.DEPTH = 0 AND RBM.BBS_TY_CD IN ('06', '07')), 0) AS CNT_EVL_SCOR
|
||||
FROM GC_BOARDDATA_GOODS FBG
|
||||
INNER JOIN GC_GOODS FG ON
|
||||
FG.GOODS_INNB = FBG.GOODS_INNB
|
||||
@@ -2674,6 +2711,9 @@
|
||||
INNER JOIN GC_GOODS_OPTION FGO ON
|
||||
FG.GOODS_INNB = FGO.GOODS_INNB
|
||||
AND FG.SOPMAL_CD = FGO.SOPMAL_CD
|
||||
LEFT JOIN GC_GOODS_EXPSR_INFO FEGI ON
|
||||
FG.SOPMAL_CD = FEGI.SOPMAL_CD
|
||||
AND FEGI.USE_AT = 'Y'
|
||||
WHERE 1 = 1
|
||||
AND FG.SOPMAL_CD =#{sopmalCd}
|
||||
AND FBG.BBSCTT_INNB =
|
||||
@@ -2686,6 +2726,16 @@
|
||||
</otherwise>
|
||||
</choose>
|
||||
AND FGO.STDR_DV_AT = 'Y'
|
||||
<if test="serverDv == 'sopmal'">
|
||||
AND FGO.OPTN_EXPSR_AT = 'Y'
|
||||
AND FGO.USE_AT = 'Y'
|
||||
AND FG.USE_AT = 'Y'
|
||||
AND FG.GOODS_KND_CD = '01'
|
||||
AND FG.GOODS_STTUS_CD IN ('01', '02')
|
||||
AND (FG.EXPSR_DV_CD = '01' OR (FG.EXPSR_DV_CD = '03' AND SYSDATE() BETWEEN FG.EXPSR_BGN_DT AND FG.EXPSR_END_DT))
|
||||
ORDER BY CASE FG.GOODS_STTUS_CD WHEN '02' THEN 1 ELSE 0 END ASC, FBG.REGIST_DT ASC, FBG.GOODS_INNB ASC
|
||||
LIMIT 12
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 게시글 연관상품 삭제 (게시글 수정시)-->
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.wb.domainserver.domain.gcone.goods.badge.mapper.BOGoodsBadgeMapper">
|
||||
<select id="selectBOGoodsBadgeList" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO" resultType="dataMap">
|
||||
SELECT BADGE_CD, BADGE_NM, FONT_COLOR, BG_COLOR, BORDER_COLOR, SORT_ORDR, USE_AT
|
||||
FROM GC_GOODS_BADGE
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY SORT_ORDR ASC, BADGE_CD ASC
|
||||
</select>
|
||||
|
||||
<select id="selectBOGoodsBadgeCount" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO" resultType="int">
|
||||
SELECT COUNT(1) FROM GC_GOODS_BADGE WHERE SOPMAL_CD = #{sopmalCd} AND BADGE_CD = #{badgeCd}
|
||||
</select>
|
||||
|
||||
<insert id="insertBOGoodsBadge" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO">
|
||||
INSERT INTO GC_GOODS_BADGE (
|
||||
SOPMAL_CD, BADGE_CD, BADGE_NM, FONT_COLOR, BG_COLOR, BORDER_COLOR, SORT_ORDR, USE_AT, REGUSR, REGIST_DT, UPDUSR, UPDT_DT
|
||||
) VALUES (
|
||||
#{sopmalCd}, #{badgeCd}, #{badgeNm}, #{fontColor}, #{bgColor}, #{borderColor}, #{sortOrdr}, #{useAt}, #{regusr}, SYSDATE(), #{updusr}, SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateBOGoodsBadge" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO">
|
||||
UPDATE GC_GOODS_BADGE
|
||||
SET BADGE_NM = #{badgeNm}, FONT_COLOR = #{fontColor}, BG_COLOR = #{bgColor}, BORDER_COLOR = #{borderColor},
|
||||
SORT_ORDR = #{sortOrdr}, USE_AT = #{useAt}, UPDUSR = #{updusr}, UPDT_DT = SYSDATE()
|
||||
WHERE SOPMAL_CD = #{sopmalCd} AND BADGE_CD = #{badgeCd}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -5,6 +5,20 @@
|
||||
상품/사은품 START
|
||||
############################-->
|
||||
|
||||
<!-- 관리자 상품 배지 목록 -->
|
||||
<select id="selectBOGoodsBadgeList" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
|
||||
SELECT BADGE_CD AS cd
|
||||
, BADGE_NM AS cdNm
|
||||
, FONT_COLOR AS fontColor
|
||||
, BG_COLOR AS bgColor
|
||||
, BORDER_COLOR AS borderColor
|
||||
, SORT_ORDR AS sortOrdr
|
||||
FROM GC_GOODS_BADGE
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND USE_AT = 'Y'
|
||||
ORDER BY SORT_ORDR ASC, BADGE_CD ASC
|
||||
</select>
|
||||
|
||||
<sql id="goodsWhere">
|
||||
<!-- 검색조건 별 검색 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">
|
||||
@@ -223,72 +237,86 @@
|
||||
<choose>
|
||||
<when test="sortDv == 'goodsNmAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY FG.GOODS_NM ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, FG.GOODS_NM ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'goodsNmDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY FG.GOODS_NM DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, FG.GOODS_NM DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'slepricAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY SLEPRIC ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, SLEPRIC ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'slepricDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY SLEPRIC DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, SLEPRIC DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'cnsmrpricAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY CNSMRPRIC ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, CNSMRPRIC ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'cnsmrpricDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY CNSMRPRIC DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, CNSMRPRIC DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'invntryQyAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY INVNTRY_QY ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, INVNTRY_QY ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'invntryQyDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY INVNTRY_QY DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, INVNTRY_QY DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'registDtAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY REGIST_DT ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, REGIST_DT ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'registDtDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY REGIST_DT DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, REGIST_DT DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'avgEvlScore'">
|
||||
<![CDATA[
|
||||
ORDER BY GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'cntEvlScor'">
|
||||
<![CDATA[
|
||||
ORDER BY CNT_EVL_SCOR DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, CNT_EVL_SCOR DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'goodsInnbDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY GOODS.GOODS_INNB DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GOODS.GOODS_INNB DESC
|
||||
]]>
|
||||
</when>
|
||||
<otherwise>
|
||||
<![CDATA[
|
||||
ORDER BY GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
]]>
|
||||
</otherwise>
|
||||
</choose>
|
||||
@@ -503,6 +531,7 @@
|
||||
FG.REPRSNT_GOODS_CD,
|
||||
FG.BRAND_CD,
|
||||
FG.GOODS_NM,
|
||||
FG.GOODS_NM_EN,
|
||||
FG.TAX_AT,
|
||||
FG.GOODS_STTUS_CD,
|
||||
FG.SEL_STPGE_CUSTOM_WORDS_AT,
|
||||
@@ -1944,6 +1973,8 @@
|
||||
,GROUP_CONCAT(CASE WHEN IFNULL(FGO.OPTN_CD_4, '') = '' THEN ' ' ELSE FGO.OPTN_CD_4 END ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS OPTN_CD_4 -- 옵션코드 1
|
||||
,GROUP_CONCAT( CASE WHEN IFNULL(FGO.OPTN_INFO, '') = '' THEN ' ' ELSE FGO.OPTN_INFO END ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS OPTN_INFO -- 옵션정보
|
||||
,GROUP_CONCAT(FGO.MLG_POLICY_CD ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS MLG_POLICY_CD -- 마일리지정책코드
|
||||
,GROUP_CONCAT(FGO.HSCODE ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS HSCODE -- HS Code
|
||||
,GROUP_CONCAT(FGO.REAL_WT ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS REAL_WT -- 실무게(KG)
|
||||
,GROUP_CONCAT(FGO.INVNTRY_QY ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS INVNTRY_QY -- 재고수량
|
||||
,GROUP_CONCAT(CASE WHEN FG.INVNTRY_POLICY_CD = '01' THEN FGO.INVNTRY_QY - IFNULL(FGO.USEFUL_INVNTRY_QY, 0) ELSE FGO.INVNTRY_QY END ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS USEFUL_INVNTRY -- 가용재고수량
|
||||
,GROUP_CONCAT(ROUND(IFNULL(FGO.USEFUL_INVNTRY_QY, 0), 0) ORDER BY FGO.OPTN_ORDR ASC SEPARATOR '|') AS USEFUL_INVNTRY_QY -- 판매재고수량
|
||||
@@ -2011,6 +2042,7 @@
|
||||
GOODS_CD,
|
||||
REPRSNT_GOODS_CD,
|
||||
GOODS_NM,
|
||||
GOODS_NM_EN,
|
||||
TAX_AT,
|
||||
GOODS_STTUS_CD,
|
||||
SEL_STPGE_CUSTOM_WORDS_AT,
|
||||
@@ -2079,6 +2111,7 @@
|
||||
#{goodsCd},
|
||||
#{reprsntGoodsCd},
|
||||
#{goodsNm},
|
||||
#{goodsNmEn},
|
||||
#{taxAt},
|
||||
#{goodsSttusCd},
|
||||
#{selStpgeCustomWordsAt},
|
||||
@@ -2188,6 +2221,7 @@
|
||||
GC_GOODS FG
|
||||
set
|
||||
GOODS_NM = #{goodsNm} -- 상품명
|
||||
, GOODS_NM_EN = #{goodsNmEn} -- 상품명(영문)
|
||||
, SRT_DC = #{srtDc} -- 간략설명
|
||||
, REPRSNT_DC = #{reprsntDc} -- 대표설명
|
||||
, BRAND_CD = #{brandCd} -- 브랜드
|
||||
@@ -2534,6 +2568,8 @@
|
||||
OPTN_CD_3,
|
||||
OPTN_CD_4,
|
||||
OPTN_INFO,
|
||||
HSCODE,
|
||||
REAL_WT,
|
||||
INVNTRY_QY,
|
||||
USEFUL_INVNTRY_QY,
|
||||
CNSMRPRIC,
|
||||
@@ -2572,6 +2608,8 @@
|
||||
#{optnCd3},
|
||||
#{optnCd4},
|
||||
#{optnInfo},
|
||||
#{hscode},
|
||||
#{realWt},
|
||||
#{invntryQy},
|
||||
#{usefulInvntryQy},
|
||||
#{cnsmrpric},
|
||||
@@ -2686,6 +2724,8 @@
|
||||
OPTN_CD_3 = #{optnCd3},
|
||||
OPTN_CD_4 = #{optnCd4},
|
||||
OPTN_INFO = #{optnInfo},
|
||||
HSCODE = #{hscode},
|
||||
REAL_WT = #{realWt},
|
||||
INVNTRY_QY = #{invntryQy},
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(usefulInvntryQy)">
|
||||
USEFUL_INVNTRY_QY = #{usefulInvntryQy},
|
||||
@@ -3597,6 +3637,23 @@
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 검색어 로그 저장 -->
|
||||
<insert id="insertBOSrchwrdLog" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" >
|
||||
INSERT INTO GC_SRCHWRD_LOG (
|
||||
SRCHWRD,
|
||||
MBR_INNB,
|
||||
CONECT_DOMN,
|
||||
CONECT_URL,
|
||||
SRCH_DT
|
||||
) VALUES (
|
||||
#{srchStr},
|
||||
#{mbrInnb},
|
||||
#{conectDomn},
|
||||
#{conectUrl},
|
||||
SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 사용자 - 검색 - 상품명 검색어 조회-->
|
||||
<select id="selectBOSrchGoodsNm" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
|
||||
SELECT
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
, GOODS_INNB
|
||||
, GOODS_IMG_COURS
|
||||
, GOODS_NM
|
||||
, GOODS_NM_EN
|
||||
, SUBSCRPT_WTHDRAW_POSBL_AT
|
||||
, INDVDLZ_CANCL_POSBL_AT
|
||||
, INDVDLZ_DLIVY_POSBL_AT
|
||||
@@ -216,6 +217,7 @@
|
||||
, #{goodsInnb}
|
||||
, #{goodsImgCours}
|
||||
, #{goodsNm}
|
||||
, #{goodsNmEn}
|
||||
, #{subscrptWthdrawPosblAt}
|
||||
, #{indvdlzCanclPosblAt}
|
||||
, #{indvdlzDlivyPosblAt}
|
||||
@@ -305,6 +307,10 @@
|
||||
, STEP85
|
||||
, COMPNB_DSCNT_AT
|
||||
, SCTN_DSCNT_AT
|
||||
, HSCODE
|
||||
, REAL_WT
|
||||
, VOL_WT
|
||||
, PACKAGE_CNT
|
||||
, PURCHS_DCSN_AT
|
||||
, PURCHS_DCSN_QY
|
||||
, RETURN_DLVY_APPLC_AT
|
||||
@@ -334,8 +340,8 @@
|
||||
, #{relateOrdrGoodsOptnInnb}
|
||||
, #{ordrQy}
|
||||
, #{mlgAccmlCn}
|
||||
,SP.MLG_VALID_PD
|
||||
,SP.MLG_VALID_PD_AT
|
||||
, SP.MLG_VALID_PD
|
||||
, SP.MLG_VALID_PD_AT
|
||||
, #{npayGoodsOrdrnb}
|
||||
, #{npayBundleDlvyNb}
|
||||
, #{posGoodsCd}
|
||||
@@ -368,8 +374,12 @@
|
||||
, #{step65}
|
||||
, #{step75}
|
||||
, #{step85}
|
||||
,GI.COMPNB_DSCNT_AT
|
||||
,GI.SCTN_DSCNT_AT
|
||||
, GI.COMPNB_DSCNT_AT
|
||||
, GI.SCTN_DSCNT_AT
|
||||
, #{hscode}
|
||||
, #{realWt}
|
||||
, #{volWt}
|
||||
, #{packageCnt}
|
||||
, 'N'
|
||||
, 0
|
||||
, SG.RETURN_DLVY_APPLC_AT
|
||||
@@ -1499,6 +1509,7 @@ FROM (
|
||||
SELECT FG.SOPMAL_CD
|
||||
, FG.GOODS_INNB
|
||||
, FG.GOODS_NM
|
||||
, FG.GOODS_NM_EN
|
||||
, FG.GOODS_KND_CD
|
||||
, FG.GOODS_STTUS_CD
|
||||
, FN_GET_COMMCODE_NAME('GOODS_STTUS', FG.GOODS_STTUS_CD) AS GOODS_STTUS_NM
|
||||
@@ -1509,9 +1520,9 @@ FROM (
|
||||
, FORMAT(IFNULL(FGO.CNSMRPRIC, 0), 0) AS CNSMRPRIC
|
||||
, FORMAT(IFNULL(FGO.SLEPRIC, 0), 0) AS SLEPRIC
|
||||
, CONCAT(OPTN1, IF(FGO.OPTN2 IS NULL , '', CONCAT('/', OPTN2))
|
||||
, IF(FGO.OPTN3 IS NULL , '', CONCAT('/', OPTN3))
|
||||
, IF(FGO.OPTN4 IS NULL , '', CONCAT('/', OPTN4))) AS OPTN
|
||||
,IMG.IMG AS GOODS_IMG_COURS
|
||||
, IF(FGO.OPTN3 IS NULL , '', CONCAT('/', OPTN3))
|
||||
, IF(FGO.OPTN4 IS NULL , '', CONCAT('/', OPTN4))) AS OPTN
|
||||
, IMG.IMG AS GOODS_IMG_COURS
|
||||
, (
|
||||
SELECT FGI.IMG AS GOODS_IMG
|
||||
FROM GC_GOODS_IMAGE FGI
|
||||
@@ -1557,17 +1568,17 @@ FROM (
|
||||
, FGO.CNSMRPRIC
|
||||
, FGO.SLEPRIC
|
||||
, CASE WHEN FGO.OPTN_NM_1 != '' AND FGO.OPTN_VAL_1 != ''
|
||||
THEN CONCAT(FGO.OPTN_NM_1,':',FGO.OPTN_VAL_1)
|
||||
END OPTN1
|
||||
, CASE WHEN FGO.OPTN_NM_2 != '' AND FGO.OPTN_VAL_2 != ''
|
||||
THEN CONCAT(FGO.OPTN_NM_2,':',FGO.OPTN_VAL_2)
|
||||
END OPTN2
|
||||
, CASE WHEN FGO.OPTN_NM_3 != '' AND FGO.OPTN_VAL_3 != ''
|
||||
THEN CONCAT(FGO.OPTN_NM_3,':',FGO.OPTN_VAL_3)
|
||||
END OPTN3
|
||||
, CASE WHEN FGO.OPTN_NM_4 != '' AND FGO.OPTN_VAL_4 != ''
|
||||
THEN CONCAT(FGO.OPTN_NM_4,':',FGO.OPTN_VAL_4)
|
||||
END OPTN4
|
||||
THEN CONCAT(FGO.OPTN_NM_1,':',FGO.OPTN_VAL_1)
|
||||
END OPTN1
|
||||
, CASE WHEN FGO.OPTN_NM_2 != '' AND FGO.OPTN_VAL_2 != ''
|
||||
THEN CONCAT(FGO.OPTN_NM_2,':',FGO.OPTN_VAL_2)
|
||||
END OPTN2
|
||||
, CASE WHEN FGO.OPTN_NM_3 != '' AND FGO.OPTN_VAL_3 != ''
|
||||
THEN CONCAT(FGO.OPTN_NM_3,':',FGO.OPTN_VAL_3)
|
||||
END OPTN3
|
||||
, CASE WHEN FGO.OPTN_NM_4 != '' AND FGO.OPTN_VAL_4 != ''
|
||||
THEN CONCAT(FGO.OPTN_NM_4,':',FGO.OPTN_VAL_4)
|
||||
END OPTN4
|
||||
FROM GC_GOODS_OPTION FGO
|
||||
WHERE FGO.OPTN_EXPSR_AT = 'Y'
|
||||
AND FGO.STDR_DV_AT = 'Y'
|
||||
@@ -1939,6 +1950,10 @@ FROM (
|
||||
, FGO.OPTN_CD_2
|
||||
, FGO.OPTN_CD_3
|
||||
, FGO.OPTN_CD_4
|
||||
, FGO.HSCODE
|
||||
, FGO.REAL_WT
|
||||
, FGO.VOL_WT
|
||||
, FGO.PACKAGE_CNT
|
||||
, FGO.OPTN_INFO
|
||||
, FGO.OPTN_RELATE_NB
|
||||
FROM (
|
||||
@@ -1974,6 +1989,10 @@ FROM (
|
||||
, FGO.OPTN_CD_2
|
||||
, FGO.OPTN_CD_3
|
||||
, FGO.OPTN_CD_4
|
||||
, FGO.HSCODE
|
||||
, FGO.REAL_WT
|
||||
, FGO.VOL_WT
|
||||
, FGO.PACKAGE_CNT
|
||||
, FGO.OPTN_INFO
|
||||
, FGO.OPTN_RELATE_NB
|
||||
FROM GC_GOODS_OPTION FGO
|
||||
@@ -2000,11 +2019,16 @@ FROM (
|
||||
ELSE FN_GET_COMMCODE_NAME('GOODS_STTUS', FG.GOODS_STTUS_CD)
|
||||
END AS GOODS_STTUS_NM
|
||||
, FG.GOODS_NM
|
||||
, FG.GOODS_NM_EN
|
||||
, FGO.GOODS_OPTN_INNB
|
||||
, FGO.OPTN_TY
|
||||
, FGO.OPTN_RELATE_NB
|
||||
, FGO.COMPNB_DSCNT_AT
|
||||
, FGO.SCTN_DSCNT_AT
|
||||
, FGO.HSCODE
|
||||
, FGO.REAL_WT
|
||||
, FGO.VOL_WT
|
||||
, FGO.PACKAGE_CNT
|
||||
, NULLIF(FGO.OPTN_ESSNTL_AT, '') AS OPTN_ESSNTL_AT
|
||||
, FORMAT(IFNULL(FGO.CNSMRPRIC, 0) * #{qy}, 0) AS SUB_CNSMRPRIC_BY_FORMAT
|
||||
, IFNULL(FGO.CNSMRPRIC, 0) * #{qy} AS SUB_CNSMRPRIC
|
||||
@@ -2065,6 +2089,10 @@ FROM (
|
||||
, FGO.OPTN_RELATE_NB
|
||||
, FGO.COMPNB_DSCNT_AT
|
||||
, FGO.SCTN_DSCNT_AT
|
||||
, HSCODE
|
||||
, REAL_WT
|
||||
, VOL_WT
|
||||
, PACKAGE_CNT
|
||||
FROM GC_GOODS_OPTION FGO
|
||||
WHERE FGO.GOODS_OPTN_INNB = #{goodsOptnInnb}
|
||||
) FGO ON FGO.GOODS_INNB = FG.GOODS_INNB
|
||||
@@ -2626,6 +2654,7 @@ FROM (
|
||||
, FPI.TPAY_USE_AT
|
||||
, FPI.NPAY_USE_AT
|
||||
, FPI.KPAY_USE_AT
|
||||
, FPI.STRIPE_USE_AT
|
||||
, FPI.MEMOR_USE_AT
|
||||
, FPL.KCP_MID
|
||||
, FPL.KCP_CLNT_KEY
|
||||
@@ -2655,6 +2684,9 @@ FROM (
|
||||
, FPL.OLD_TOSS_CLNT_KEY
|
||||
, FPL.OLD_TOSS_SECRET_KEY
|
||||
, FPL.OLD_TOSS_PUBLIC_KEY
|
||||
, FPL.STRIPE_CLNT_KEY
|
||||
, FPL.STRIPE_SECRET_KEY
|
||||
, FPL.STRIPE_WEBHOOK_KEY
|
||||
, FPL.DUE_DT
|
||||
FROM GC_PAY_LINK FPL
|
||||
INNER JOIN GC_PAY_INFO FPI ON FPI.SETLE_SETUP_INNB = FPL.SETLE_SETUP_INNB
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT GS.SUBSVC_INNB
|
||||
, SUBSVC_STTUS_CD
|
||||
, CONCAT(GS.SUBSVC_NM, ' (', GS.SUBSVC_GNR_NM, ')') AS SUBSVC_CONCAT_NM
|
||||
, SUBSVC_STTUS_CD
|
||||
, CONCAT(GS.SUBSVC_NM, ' (', GS.SUBSVC_GNR_NM, ')') AS SUBSVC_CONCAT_NM
|
||||
FROM GC_SUBSVC GS
|
||||
WHERE GS.SOPMAL_CD = 'SK'
|
||||
AND GS.SUBSVC_STTUS_CD != '03'
|
||||
@@ -34,7 +34,7 @@
|
||||
, GS.SUBSVC_NM
|
||||
, GS.SUB_PD /*구독기간*/
|
||||
, GS.SUBSVC_GNR /*기수*/
|
||||
, (SELECT MAX(A.SUBSVC_GNR) + 1 FROM GC_SUBSVC A WHERE A.SOPMAL_CD = GS.SOPMAL_CD AND A.SUBSVC_NM = GS.SUBSVC_NM) AS SUBSVC_NEXT_GNR /*다음기수*/
|
||||
, (SELECT MAX(A.SUBSVC_GNR) + 1 FROM GC_SUBSVC A WHERE A.SOPMAL_CD = GS.SOPMAL_CD AND A.SUBSVC_NM = GS.SUBSVC_NM) AS SUBSVC_NEXT_GNR /*다음기수*/
|
||||
, GS.SUBSVC_GNR_NM /*기수명*/
|
||||
, CONCAT(GS.SUBSVC_NM, ' (', GS.SUBSVC_GNR_NM, ')') AS SUBSVC_CONCAT_NM
|
||||
, GS.DLVY_CNT /*배송횟수*/
|
||||
@@ -42,7 +42,7 @@
|
||||
, GS.SUBSVC_CT /*구독료*/
|
||||
, GS.TME_DLVY_AMT /*1회배송비*/
|
||||
, GS.CNSMRPRIC /*소비자가*/
|
||||
, GS.SUBSVC_CT + (TME_DLVY_AMT * DLVY_CNT) as SELPRIC /*실판매가=구독료+(1회배송비X배송횟수)*/
|
||||
, GS.SUBSVC_CT + (TME_DLVY_AMT * DLVY_CNT) as SLEPRIC /*실판매가=구독료+(1회배송비X배송횟수)*/
|
||||
, ROUND((GS.CNSMRPRIC - (GS.SUBSVC_CT + (TME_DLVY_AMT * DLVY_CNT))) / NULLIF(GS.CNSMRPRIC, 0) * 100, 0) AS DSCNT_RAITO
|
||||
, GS.INVNTRY_QY /*재고수량*/
|
||||
, GS.USEFUL_INVNTRY_QY /*판매재고수량*/
|
||||
@@ -131,10 +131,10 @@
|
||||
</if>
|
||||
ORDER BY
|
||||
<choose>
|
||||
<when test="sortDv == 'subsvcGnrAsc'">
|
||||
<when test="sortDv == 'subsvcGnrAsc'">
|
||||
GS.SUBSVC_NM ASC, SUBSVC_GNR ASC,
|
||||
</when>
|
||||
<otherwise>
|
||||
<otherwise>
|
||||
GS.SUBSVC_NM DESC, SUBSVC_GNR DESC,
|
||||
</otherwise>
|
||||
</choose>
|
||||
@@ -172,6 +172,7 @@
|
||||
<update id="deleteBOMngrSubsvc" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
||||
UPDATE GC_SUBSVC
|
||||
SET USE_AT = 'N'
|
||||
,SUBSVC_NM = CONCAT('*', SUBSVC_NM)
|
||||
,UPDUSR = #{updusr}
|
||||
,UPDT_DT = NOW()
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
@@ -262,7 +263,7 @@
|
||||
, USE_AT
|
||||
, REGUSR
|
||||
, REGIST_DT)
|
||||
VALUES (#{sopmalCd}
|
||||
VALUES (#{sopmalCd}
|
||||
, #{subsvcNm}
|
||||
, #{subPd}
|
||||
, #{subsvcGnr}
|
||||
@@ -312,4 +313,89 @@
|
||||
WHERE GS.SOPMAL_CD = #{sopmalCd}
|
||||
AND GS.SUBSVC_NM = #{subsvcNm}
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 구독서비스 주문에 따른 판매재고수량 수정 -->
|
||||
<update id="updateSubsvcOrdrUsefulInvntryQy" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SUBSVC GS
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
GO.SUBSVC_INNB,
|
||||
COUNT(*) AS ORDR_QY
|
||||
FROM GC_ORDER GO
|
||||
WHERE GO.SOPMAL_CD = #{sopmalCd}
|
||||
AND GO.ORDR_INNB = #{ordrInnb}
|
||||
GROUP BY
|
||||
GO.SUBSVC_INNB
|
||||
) SUBQUERY
|
||||
ON GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
|
||||
SET GS.USEFUL_INVNTRY_QY = IFNULL(GS.USEFUL_INVNTRY_QY, 0) + SUBQUERY.ORDR_QY
|
||||
WHERE GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 구독서비스 환불에 따른 판매재고수량 수정 -->
|
||||
<update id="updateSubsvcRefundUsefulInvntryQy" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SUBSVC GS
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
GO.SUBSVC_INNB,
|
||||
SUM(CASE WHEN GOR.REFUND_TY_CD = '01' THEN 1 ELSE 0 END) AS REFUND_QY
|
||||
FROM GC_ORDER GO
|
||||
INNER JOIN GC_ORDER_REFUND GOR
|
||||
ON GO.ORDR_INNB = GOR.ORDR_INNB
|
||||
WHERE GO.SOPMAL_CD = #{sopmalCd}
|
||||
AND GO.ORDR_INNB = #{ordrInnb}
|
||||
GROUP BY
|
||||
GO.SUBSVC_INNB
|
||||
) SUBQUERY
|
||||
ON GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
|
||||
SET GS.USEFUL_INVNTRY_QY = IFNULL(GS.USEFUL_INVNTRY_QY, 0) - SUBQUERY.REFUND_QY
|
||||
WHERE GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 구독서비스 주문무효에 따른 판매재고수량 수정 -->
|
||||
<update id="updateSubsvcCancelOrderUsefulInvntryQy" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SUBSVC GS
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
GO.SUBSVC_INNB,
|
||||
COUNT(*) AS ORDR_QY
|
||||
FROM GC_ORDER GO
|
||||
WHERE GO.SOPMAL_CD = #{sopmalCd}
|
||||
AND GO.ORDR_INNB = #{ordrInnb}
|
||||
GROUP BY
|
||||
GO.SUBSVC_INNB
|
||||
) SUBQUERY
|
||||
ON GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
|
||||
SET GS.USEFUL_INVNTRY_QY = IFNULL(GS.USEFUL_INVNTRY_QY, 0) - SUBQUERY.ORDR_QY
|
||||
WHERE GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 판매재고수량 변경에 따른 구독서비스 상태 수정 -->
|
||||
<update id="updateInvntryPolicySubsvcSttusChng" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SUBSVC
|
||||
SET SUBSVC_STTUS_CD =
|
||||
CASE
|
||||
WHEN INVNTRY_POLICY_CD = '02' THEN SUBSVC_STTUS_CD
|
||||
ELSE
|
||||
CASE
|
||||
WHEN (INVNTRY_QY - IFNULL(USEFUL_INVNTRY_QY, 0)) > IFNULL(AVLINV_LMTT_QY, 0)
|
||||
AND SUBSVC_STTUS_CD <> '03' THEN '01'
|
||||
WHEN (INVNTRY_QY - IFNULL(USEFUL_INVNTRY_QY, 0)) <= IFNULL(AVLINV_LMTT_QY, 0)
|
||||
AND SUBSVC_STTUS_CD <> '03' THEN '02'
|
||||
ELSE SUBSVC_STTUS_CD
|
||||
END
|
||||
END
|
||||
WHERE SUBSVC_INNB = #{subsvcInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND USE_AT = 'Y'
|
||||
]]>
|
||||
</update>
|
||||
</mapper>
|
||||
|
||||
@@ -11,24 +11,44 @@
|
||||
AND FM.USE_AT = 'Y'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchMbrNm)">
|
||||
<![CDATA[
|
||||
AND FM.MBR_NM = #{srchMbrNm}
|
||||
]]>
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||
AND FM.MBR_NM LIKE CONCAT('%', #{srchMbrNm}, '%')
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||
AND FM.MBR_NM = #{srchMbrNm}
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordID)">
|
||||
<![CDATA[
|
||||
AND FM.MBR_ID = #{srchKywordID}
|
||||
]]>
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||
AND FM.MBR_ID LIKE CONCAT('%', #{srchKywordID}, '%')
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||
AND FM.MBR_ID = #{srchKywordID}
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordEmail)">
|
||||
<![CDATA[
|
||||
AND FM.EMAIL = (select HEX(AES_ENCRYPT(#{srchKywordEmail} , #{secretKey})))
|
||||
]]>
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||
AND AES_DECRYPT(UNHEX(FM.EMAIL), #{secretKey}) LIKE CONCAT('%', #{srchKywordEmail}, '%')
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||
AND FM.EMAIL = (select HEX(AES_ENCRYPT(#{srchKywordEmail} , #{secretKey})))
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordMb)">
|
||||
<![CDATA[
|
||||
AND FM.MBTLNB = (select HEX(AES_ENCRYPT(REPLACE(#{srchKywordMb},'-',''), #{secretKey})))
|
||||
]]>
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||
AND AES_DECRYPT(UNHEX(FM.MBTLNB), #{secretKey}) LIKE CONCAT('%', #{srchKywordMb}, '%')
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||
AND FM.MBTLNB = (select HEX(AES_ENCRYPT(REPLACE(#{srchKywordMb},'-',''), #{secretKey})))
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(actionDv)">
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(eventYn)">
|
||||
|
||||
@@ -1332,6 +1332,20 @@
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 주문 배송 추적 조회 : 송장번호 조회 -->
|
||||
<select id = "selectBOOrdrInvcnb"
|
||||
parameterType="com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyVO"
|
||||
resultType = "String">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
GGE.INVCNB
|
||||
FROM GC_GOODS_EXPORT GGE
|
||||
WHERE GGE.SOPMAL_CD = #{sopmalCd}
|
||||
AND GGE.ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 주문 배송 추적 받는사람, 보내는사람 조회 -->
|
||||
<select id = "selectBOOrdrDlvyDtlInqire"
|
||||
parameterType="com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyVO"
|
||||
|
||||
@@ -1073,9 +1073,13 @@
|
||||
, FOI.ORDR_GOODS_INNB AS ordr_goods_innb
|
||||
, FO.SMRT_SHOPNG_ORDRNB AS npay_goods_ordrnb
|
||||
, CASE
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN FOI.OPTN_NM
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM
|
||||
END AS goods_nm
|
||||
, CASE
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM_EN, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM_EN
|
||||
END AS goods_nm_en
|
||||
, FOI.INVNTRY_QY AS invntry_qy
|
||||
, 0 AS prchspric
|
||||
, FOI.SLEPRIC AS cnsmrpric
|
||||
@@ -1106,8 +1110,16 @@
|
||||
, '선불' AS dlvy_amt_setle_mth_nm
|
||||
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ordr_ty_nm
|
||||
, FOI.optn_cd_1
|
||||
, FOI.hscode
|
||||
, FOI.real_wt
|
||||
, FOI.VOL_TW
|
||||
, FOI.package_cnt
|
||||
, FOSH.dlvy_mssage_cn
|
||||
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS shipping_sttus_nm
|
||||
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
||||
THEN '구독'
|
||||
ELSE '일반'
|
||||
END AS subsvc_at
|
||||
FROM GC_ORDER FO
|
||||
INNER JOIN LATERAL (
|
||||
SELECT GOI.SOPMAL_CD
|
||||
@@ -1116,11 +1128,16 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
||||
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
||||
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
||||
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
||||
, MAX(GOI.GOODS_NM_EN) AS GOODS_NM_EN
|
||||
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
||||
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
||||
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
||||
@@ -1150,6 +1167,10 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
) FOI
|
||||
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
||||
@@ -1216,6 +1237,7 @@
|
||||
, GROUP_CONCAT(A.ORDR_GOODS_INNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_GOODS_INNB
|
||||
, GROUP_CONCAT(A.NPAY_GOODS_ORDRNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS NPAY_GOODS_ORDRNB
|
||||
, GROUP_CONCAT(A.GOODS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS GOODS_NM
|
||||
, GROUP_CONCAT(A.GOODS_NM_EN ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS GOODS_NM_EN
|
||||
, GROUP_CONCAT(A.INVNTRY_QY ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS INVNTRY_QY
|
||||
, GROUP_CONCAT(A.PRCHSPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS PRCHSPRIC
|
||||
, GROUP_CONCAT(A.CNSMRPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS CNSMRPRIC
|
||||
@@ -1243,7 +1265,13 @@
|
||||
, GROUP_CONCAT(A.DLVY_AMT_SETLE_MTH_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_AMT_SETLE_MTH_NM
|
||||
, GROUP_CONCAT(A.ORDR_TY_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_TY_NM
|
||||
, GROUP_CONCAT(A.OPTN_CD_1 ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS OPTN_CD_1
|
||||
, GROUP_CONCAT(A.HSCODE ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS HSCODE
|
||||
, GROUP_CONCAT(A.REAL_WT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS REAL_WT
|
||||
, GROUP_CONCAT(A.VOL_TW ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS VOL_TW
|
||||
, GROUP_CONCAT(A.PACKAGE_CNT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS PACKAGE_CNT
|
||||
, GROUP_CONCAT(A.DLVY_MSSAGE_CN ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_MSSAGE_CN
|
||||
, GROUP_CONCAT(A.SHIPPING_STTUS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SHIPPING_STTUS_NM
|
||||
, GROUP_CONCAT(A.SUBSVC_AT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SUBSVC_AT
|
||||
FROM (
|
||||
SELECT FOI.ORDR_DLVY_INNB AS EXPORT_GROUP_INNB
|
||||
, CONCAT(FO.ORDR_INNB, '-', FOI.ORDR_DLVY_INNB) AS ORDR_INNB_WITH_EXPORT_GROUP_INNB
|
||||
@@ -1276,9 +1304,13 @@
|
||||
, FOI.ORDR_GOODS_INNB
|
||||
, FO.SMRT_SHOPNG_ORDRNB AS NPAY_GOODS_ORDRNB
|
||||
, CASE
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN FOI.OPTN_NM
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM
|
||||
END AS GOODS_NM
|
||||
, CASE
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM_EN, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM_EN
|
||||
END AS GOODS_NM_EN
|
||||
, FOI.INVNTRY_QY
|
||||
, 0 AS PRCHSPRIC
|
||||
, FOI.SLEPRIC AS CNSMRPRIC
|
||||
@@ -1309,7 +1341,16 @@
|
||||
, '선불' AS DLVY_AMT_SETLE_MTH_NM
|
||||
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ORDR_TY_NM
|
||||
, FOI.OPTN_CD_1
|
||||
, FOI.HSCODE
|
||||
, FOI.REAL_WT
|
||||
, FOI.VOL_TW
|
||||
, FOI.PACKAGE_CNT
|
||||
, FOSH.DLVY_MSSAGE_CN
|
||||
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS SHIPPING_STTUS_NM
|
||||
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
||||
THEN '구독'
|
||||
ELSE '일반'
|
||||
END AS SUBSVC_AT
|
||||
FROM GC_ORDER FO
|
||||
INNER JOIN LATERAL (
|
||||
SELECT GOI.SOPMAL_CD
|
||||
@@ -1318,11 +1359,16 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
||||
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
||||
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
||||
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
||||
, MAX(GOI.GOODS_NM_EN) AS GOODS_NM_EN
|
||||
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
||||
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
||||
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
||||
@@ -1352,6 +1398,10 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
) FOI
|
||||
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
||||
@@ -1962,6 +2012,7 @@
|
||||
SELECT FOS.SOPMAL_CD
|
||||
, FOS.ORDR_INNB
|
||||
, FOS.ORDR_DLVY_INNB
|
||||
, FOS.DLVYLC_AREA_CD
|
||||
, FOS.RECPNT_NM
|
||||
, CASE
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 11 THEN
|
||||
@@ -1991,6 +2042,7 @@
|
||||
ELSE
|
||||
CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))
|
||||
END AS RECPNT_MBTLNB
|
||||
, FOS.CSTMCLER_CD
|
||||
, FOS.DLVYLC_ZIP
|
||||
, FOS.DLVYLC_ADRES_DV_CD
|
||||
, CASE WHEN FOS.DLVYLC_ADRES_DV_CD = '01'
|
||||
@@ -2340,6 +2392,9 @@
|
||||
SET FOS.RECPNT_NM = #{recpntNm}
|
||||
, FOS.RECPNT_TELNB = HEX(AES_ENCRYPT(REPLACE(#{recpntTelnb}, '-', ''), '1df5be2f7e90ae36'))
|
||||
, FOS.RECPNT_MBTLNB = HEX(AES_ENCRYPT(REPLACE(#{recpntMbtlnb}, '-', ''), '1df5be2f7e90ae36'))
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(cstmclerCd)">
|
||||
, FOS.CSTMCLER_CD = #{cstmclerCd}
|
||||
</if>
|
||||
, FOS.DLVYLC_ZIP = #{dlvylcZip}
|
||||
, FOS.DLVYLC_ADRES_DV_CD = #{dlvylcAdresDvCd}
|
||||
, FOS.DLVYLC_LNB_ADRES = #{dlvylcLnbAdres}
|
||||
@@ -2599,7 +2654,13 @@
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(procsDtlsDvCd)">
|
||||
AND FOL.ADIT_INFO_CN = #{procsDtlsDvCd}
|
||||
</if>
|
||||
ORDER BY FOL.PROCS_DT ASC
|
||||
ORDER BY
|
||||
FOL.PROCS_DT ASC,
|
||||
CASE
|
||||
WHEN FOL.LOG_SJ LIKE '%결제취소 신청%' THEN 1
|
||||
WHEN FOL.LOG_SJ LIKE '%결제취소 완료%' THEN 2
|
||||
ELSE 3
|
||||
END ASC
|
||||
) DTLS
|
||||
</select>
|
||||
|
||||
@@ -2867,6 +2928,281 @@
|
||||
####################################
|
||||
-->
|
||||
|
||||
<!--
|
||||
####################################
|
||||
관리자 > 주문 > 주문관리 > 발주서 관리 시작
|
||||
####################################
|
||||
-->
|
||||
<!-- 발주서 목록 건수 -->
|
||||
<select id="selectExcelListPurchOrderTotCnt" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="Integer">
|
||||
SELECT COUNT(1)
|
||||
FROM GC_ORDER GO
|
||||
INNER JOIN GC_ORDER_ITEM GOI
|
||||
ON GOI.ORDR_INNB = GO.ORDR_INNB
|
||||
AND GOI.SOPMAL_CD = GO.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||
ON GOIO.ORDR_GOODS_INNB = GOI.ORDR_GOODS_INNB
|
||||
AND GOIO.SOPMAL_CD = GOI.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
||||
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||
INNER JOIN GC_GOODS_OPTION GGO
|
||||
ON GGO.GOODS_OPTN_INNB = GOIO.GOODS_OPTN_INNB
|
||||
AND GGO.GOODS_INNB = GOI.GOODS_INNB
|
||||
AND GGO.SOPMAL_CD = GO.SOPMAL_CD
|
||||
LEFT JOIN GC_GOODS_COST GGC
|
||||
ON GGC.STDR_DE = (
|
||||
SELECT MAX(GGC.STDR_DE)
|
||||
FROM GC_GOODS_COST GGC
|
||||
WHERE GGC.STDR_DE <![CDATA[<=]]> GO.ORDR_RCEPT_DT
|
||||
)
|
||||
WHERE 1 = 1
|
||||
AND GOIO.ORDR_STTUS_CD = #{srchOrdrSttusCd}
|
||||
AND GO.SOPMAL_CD = #{sopmalCd}
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dlvylcAreaCds)">
|
||||
AND GOS.DLVYLC_AREA_CD IN
|
||||
<foreach collection="dlvylcAreaCds" item="dlvylcAreaCd" open="(" separator="," close=")">
|
||||
#{dlvylcAreaCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(excelInclude, 'N')">
|
||||
AND GOS.EXCEL_DOWN_DT IS NULL
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 발주서 목록 조회 -->
|
||||
<select id="selectExcelListPurchOrder" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="dataMap">
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM,
|
||||
TB.*
|
||||
FROM (
|
||||
SELECT
|
||||
GO.ORDR_RCEPT_DT,
|
||||
'UNIHAN' AS ENTRPS_CD,
|
||||
'UNIHAN CO.,LTD.' AS ENTRPS_NM,
|
||||
'03-5990-2880' AS ENTRPS_TEL,
|
||||
'RM.302,YOTSUYA-AKEBONOBASHI BLDG.,2-14, SUMIYOSHI-CHO, SHINJUKU-KU, TOKYO, 162-0065, JAPAN' AS ENTRPS_ADRES,
|
||||
NULL AS SPCL_CSTMCLER_ENTRPS,
|
||||
NULL AS SPCL_CSTMCLER_CD,
|
||||
GO.ORDR_INNB,
|
||||
1 AS PURPS_DV,
|
||||
GOS.RECPNT_NM,
|
||||
CAST(AES_DECRYPT(UNHEX(GOS.RECPNT_MBTLNB) , #{secretKey}) AS CHAR(50)) AS RECPNT_MBTLNB,
|
||||
NULL AS RECPNT_HP,
|
||||
GOS.CSTMCLER_CD,
|
||||
GOS.DLVYLC_ZIP,
|
||||
CASE
|
||||
WHEN GOS.DLVYLC_ADRES_DV_CD = '01'
|
||||
THEN GOS.DLVYLC_RNM_ADRES
|
||||
ELSE GOS.DLVYLC_LNB_ADRES
|
||||
END DLVYLC_RNM_LNB_ADRES,
|
||||
GOS.DLVYLC_ADRES_DTL,
|
||||
GOS.DLVY_MSSAGE_CN,
|
||||
'www.sake1jan.com' AS CSTMR_PURCHS_SITE,
|
||||
GOIO.REAL_WT,
|
||||
GOIO.PACKAGE_CNT,
|
||||
GOIO.HSCODE,
|
||||
'A' AS CMMRC_TY,
|
||||
CONCAT(GOI.GOODS_NM_EN, ' ', GOIO.OPTN_NM_1, '-', GOIO.OPTN_VAL_1) AS CN,
|
||||
/*원가 관리 시작*/
|
||||
GOIO.SLEPRIC,
|
||||
GOS.DFT_DLVY_AMT,
|
||||
GGC.CSTMS_FEE,
|
||||
(
|
||||
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||
* GGC.PLTFOM_FEE
|
||||
* GGC.EXPCT_TAX
|
||||
) AS EXPCT_TAX_AMT,
|
||||
GGC.EXPCT_TAX,
|
||||
GGC.KR_DLVY_CT,
|
||||
GGC.PLTFOM_FEE,
|
||||
GGC.USD_RATE,
|
||||
GGO.TAXABLE_USD AS UNIT_VALUE,
|
||||
/*원가 관리 종료*/
|
||||
GOIO.ORDR_QY,
|
||||
GGO.TAXABLE_USD * GOIO.ORDR_QY AS VALUE,
|
||||
NULL AS BRAND,
|
||||
NULL AS PRE_FOOD_DCL,
|
||||
NULL AS PROVD_NATION,
|
||||
NULL AS PROVD_CMPNY_NM,
|
||||
NULL AS CHNLNG_GOODS_NM,
|
||||
NULL AS SHIPPER_PURCHS_SITE,
|
||||
NULL AS SLE_AGNT_ENTRPS_NM,
|
||||
NULL AS SLE_AGNT_ENTRPS_REGIST_CD,
|
||||
NULL AS PURCHS_DLVY_AGENCY_NM,
|
||||
NULL AS PURCHS_DLVY_AGENCY_REGIST_CD,
|
||||
NULL AS OVSEA_SELER_NM,
|
||||
GOS.ORDR_DLVY_INNB AS OVSEA_SELER_REGIST_CD,
|
||||
CONCAT(GO.SUBSVC_AT, GOS.DLVYLC_AREA_CD, GOS.ORDR_DLVY_INNB) AS SITE_ORDR_INNB,
|
||||
GOS.EXCEL_DOWN_DT,
|
||||
/*아래부터는 발주서에 포함되지 않음*/
|
||||
GO.ORDR_STTUS_CD,
|
||||
GOI.ORDR_GOODS_INNB,
|
||||
GOI.GOODS_INNB,
|
||||
GOI.GOODS_NM,
|
||||
GOIO.ORDR_GOODS_OPTN_INNB,
|
||||
GOIO.GOODS_OPTN_INNB,
|
||||
GOS.DLVYLC_AREA_CD,
|
||||
GGC.STDR_DE
|
||||
FROM GC_ORDER GO
|
||||
INNER JOIN GC_ORDER_ITEM GOI
|
||||
ON GOI.ORDR_INNB = GO.ORDR_INNB
|
||||
AND GOI.SOPMAL_CD = GO.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||
ON GOIO.ORDR_GOODS_INNB = GOI.ORDR_GOODS_INNB
|
||||
AND GOIO.SOPMAL_CD = GOI.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
||||
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||
INNER JOIN GC_GOODS_OPTION GGO
|
||||
ON GGO.GOODS_OPTN_INNB = GOIO.GOODS_OPTN_INNB
|
||||
AND GGO.GOODS_INNB = GOI.GOODS_INNB
|
||||
AND GGO.SOPMAL_CD = GO.SOPMAL_CD
|
||||
LEFT JOIN GC_GOODS_COST GGC
|
||||
ON GGC.STDR_DE = (
|
||||
SELECT MAX(GGC.STDR_DE)
|
||||
FROM GC_GOODS_COST GGC
|
||||
WHERE GGC.STDR_DE <![CDATA[<=]]> GO.ORDR_RCEPT_DT
|
||||
)
|
||||
WHERE 1 = 1
|
||||
AND GOIO.ORDR_STTUS_CD = #{srchOrdrSttusCd}
|
||||
AND GO.SOPMAL_CD = #{sopmalCd}
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dlvylcAreaCds)">
|
||||
AND GOS.DLVYLC_AREA_CD IN
|
||||
<foreach collection="dlvylcAreaCds" item="dlvylcAreaCd" open="(" separator="," close=")">
|
||||
#{dlvylcAreaCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(excelInclude, 'N')">
|
||||
AND GOS.EXCEL_DOWN_DT IS NULL
|
||||
</if>
|
||||
ORDER BY GOS.CSTMCLER_CD ASC
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
</select>
|
||||
|
||||
<!-- 발주서 엑셀다운로드 -->
|
||||
<select id="selectExcelPoListDwld" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="dataMap">
|
||||
SELECT
|
||||
SYSDATE() AS ORDR_RCEPT_DT,
|
||||
'UNIHAN' AS ENTRPS_CD,
|
||||
'UNIHAN CO.,LTD.' AS ENTRPS_NM,
|
||||
'03-5990-2880' AS ENTRPS_TEL,
|
||||
'RM.302,YOTSUYA-AKEBONOBASHI BLDG.,2-14, SUMIYOSHI-CHO, SHINJUKU-KU, TOKYO, 162-0065, JAPAN' AS ENTRPS_ADRES,
|
||||
NULL AS SPCL_CSTMCLER_ENTRPS,
|
||||
NULL AS SPCL_CSTMCLER_CD,
|
||||
CONCAT(GO.ORDR_INNB, 'A', GOS.ORDR_DLVY_INNB) AS ORDR_INNB,
|
||||
1 AS PURPS_DV,
|
||||
GOS.RECPNT_NM,
|
||||
CAST(AES_DECRYPT(UNHEX(GOS.RECPNT_MBTLNB) , #{secretKey}) AS CHAR(50)) AS RECPNT_MBTLNB,
|
||||
NULL AS RECPNT_HP,
|
||||
GOS.CSTMCLER_CD,
|
||||
GOS.DLVYLC_ZIP,
|
||||
CASE
|
||||
WHEN GOS.DLVYLC_ADRES_DV_CD = '01'
|
||||
THEN GOS.DLVYLC_RNM_ADRES
|
||||
ELSE GOS.DLVYLC_LNB_ADRES
|
||||
END DLVYLC_RNM_LNB_ADRES,
|
||||
GOS.DLVYLC_ADRES_DTL,
|
||||
GOS.DLVY_MSSAGE_CN,
|
||||
'www.sake1jan.com' AS CSTMR_PURCHS_SITE,
|
||||
GOIO.REAL_WT,
|
||||
GOIO.PACKAGE_CNT,
|
||||
GOIO.HSCODE,
|
||||
'A' AS CMMRC_TY,
|
||||
CONCAT(GOI.GOODS_NM_EN, ' ', GOIO.OPTN_NM_1, '-', GOIO.OPTN_VAL_1) AS CN,
|
||||
/*원가 관리 시작*/
|
||||
GOIO.SLEPRIC,
|
||||
GOS.DFT_DLVY_AMT,
|
||||
GGC.CSTMS_FEE,
|
||||
(
|
||||
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||
* GGC.PLTFOM_FEE
|
||||
* GGC.EXPCT_TAX
|
||||
) AS EXPCT_TAX_AMT,
|
||||
GGC.EXPCT_TAX,
|
||||
GGC.KR_DLVY_CT,
|
||||
GGC.PLTFOM_FEE,
|
||||
GGC.USD_RATE,
|
||||
GGO.TAXABLE_USD AS UNIT_VALUE,
|
||||
/*원가 관리 종료*/
|
||||
GOIO.ORDR_QY,
|
||||
GGO.TAXABLE_USD * GOIO.ORDR_QY AS VALUE,
|
||||
NULL AS BRAND,
|
||||
NULL AS PRE_FOOD_DCL,
|
||||
NULL AS PROVD_NATION,
|
||||
NULL AS PROVD_CMPNY_NM,
|
||||
NULL AS CHNLNG_GOODS_NM,
|
||||
NULL AS SHIPPER_PURCHS_SITE,
|
||||
NULL AS SLE_AGNT_ENTRPS_NM,
|
||||
NULL AS SLE_AGNT_ENTRPS_REGIST_CD,
|
||||
NULL AS PURCHS_DLVY_AGENCY_NM,
|
||||
NULL AS PURCHS_DLVY_AGENCY_REGIST_CD,
|
||||
NULL AS OVSEA_SELER_NM,
|
||||
GOS.ORDR_DLVY_INNB AS OVSEA_SELER_REGIST_CD,
|
||||
CONCAT(GO.SUBSVC_AT, GOS.DLVYLC_AREA_CD, GOS.ORDR_DLVY_INNB) AS SITE_ORDR_INNB,
|
||||
GOS.EXCEL_DOWN_DT,
|
||||
/*아래부터는 발주서에 포함되지 않음*/
|
||||
GO.ORDR_STTUS_CD,
|
||||
GOI.ORDR_GOODS_INNB,
|
||||
GOI.GOODS_INNB,
|
||||
GOI.GOODS_NM,
|
||||
GOIO.ORDR_GOODS_OPTN_INNB,
|
||||
GOIO.GOODS_OPTN_INNB,
|
||||
GOS.DLVYLC_AREA_CD,
|
||||
GGC.STDR_DE
|
||||
FROM GC_ORDER GO
|
||||
INNER JOIN GC_ORDER_ITEM GOI
|
||||
ON GOI.ORDR_INNB = GO.ORDR_INNB
|
||||
AND GOI.SOPMAL_CD = GO.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||
ON GOIO.ORDR_GOODS_INNB = GOI.ORDR_GOODS_INNB
|
||||
AND GOIO.SOPMAL_CD = GOI.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
||||
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||
INNER JOIN GC_GOODS_OPTION GGO
|
||||
ON GGO.GOODS_OPTN_INNB = GOIO.GOODS_OPTN_INNB
|
||||
AND GGO.GOODS_INNB = GOI.GOODS_INNB
|
||||
AND GGO.SOPMAL_CD = GO.SOPMAL_CD
|
||||
LEFT JOIN GC_GOODS_COST GGC
|
||||
ON GGC.STDR_DE = (
|
||||
SELECT MAX(GGC.STDR_DE)
|
||||
FROM GC_GOODS_COST GGC
|
||||
WHERE GGC.STDR_DE <![CDATA[<=]]> GO.ORDR_RCEPT_DT
|
||||
)
|
||||
WHERE 1 = 1
|
||||
AND GOIO.ORDR_STTUS_CD = #{srchOrdrSttusCd}
|
||||
AND GO.SOPMAL_CD = #{sopmalCd}
|
||||
AND <foreach collection="srchInnbPairs" item="pair" index="index" open="(" separator=" OR " close=")">
|
||||
(
|
||||
GOS.ORDR_INNB = #{pair.srchOrdrInnb}
|
||||
AND GOS.ORDR_DLVY_INNB = #{pair.srchOrdrDlvyInnb}
|
||||
)
|
||||
</foreach>
|
||||
ORDER BY GOS.CSTMCLER_CD ASC
|
||||
</select>
|
||||
|
||||
<!-- 엑셀 다운로드 일시 업데이트 -->
|
||||
<update id="updateExcelDownDt" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO">
|
||||
UPDATE GC_ORDER_SHIPPING GOS
|
||||
SET GOS.EXCEL_DOWN_DT = SYSDATE()
|
||||
WHERE <foreach collection="srchInnbPairs" item="pair" index="index" open="(" separator=" OR " close=")">
|
||||
(
|
||||
GOS.ORDR_INNB = #{pair.srchOrdrInnb}
|
||||
AND GOS.ORDR_DLVY_INNB = #{pair.srchOrdrDlvyInnb}
|
||||
)
|
||||
</foreach>
|
||||
</update>
|
||||
<!--
|
||||
####################################
|
||||
관리자 > 주문 > 주문관리 > 발주서 관리 종료
|
||||
####################################
|
||||
-->
|
||||
|
||||
<!--
|
||||
####################################
|
||||
관리자 > 주문 > 개인결제관리 시작
|
||||
@@ -5265,7 +5601,7 @@
|
||||
WHEN #{pgCmpnyNm} = 'toss' OR #{pgCmpnyNm} = 'tosspay' THEN TOSS_MID -- 토스
|
||||
WHEN #{pgCmpnyNm} = 'naverpay' OR #{pgCmpnyNm} = 'kakaopay' THEN EASYPAY_MID -- 이지페이
|
||||
WHEN #{pgCmpnyNm} = 'gcpay' THEN BPAY_MID -- 브랜드페이
|
||||
WHEN #{pgCmpnyNm} = 'kcp' THEN KCP_MID -- kcp
|
||||
WHEN #{pgCmpnyNm} = 'kcp' OR #{pgCmpnyNm} = 'kiwoom' THEN KCP_MID -- kcp, kiwoom
|
||||
END
|
||||
END, '') AS SETLE_MID
|
||||
FROM GC_PAY_LINK
|
||||
@@ -5723,7 +6059,7 @@
|
||||
ON GGO.SOPMAL_CD = GG.SOPMAL_CD
|
||||
AND GGO.GOODS_INNB = GG.GOODS_INNB
|
||||
JOIN seq
|
||||
ON seq.n <![CDATA[<=]]> GS.SUB_PD
|
||||
ON seq.n <![CDATA[<=]]> GS.DLVY_CNT
|
||||
LEFT JOIN GC_GOODS_IMAGE GGI ON GG.SOPMAL_CD = GGI.SOPMAL_CD
|
||||
AND GG.GOODS_INNB = GGI.GOODS_INNB
|
||||
AND GGI.IMG_KND = '03'
|
||||
@@ -5784,13 +6120,12 @@
|
||||
AND O.SUBSVC_AT = 'Y'
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectKiwoomPgApiLog"
|
||||
parameterType="com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO"
|
||||
resultType="dataMap">
|
||||
SELECT GOPAL.RSLT_PARAM FROM GC_ORDER_PG_API_LOG GOPAL
|
||||
WHERE GOPAL.SOPMAL_CD = #{sopmalCd}
|
||||
AND GOPAL.ORDR_INNB = #{ordrInnb}
|
||||
AND GOPAL.ORDR_INNB = #{orderId}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
@@ -374,106 +374,103 @@
|
||||
SOPMAL_CD,
|
||||
EVT_INNB,
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnCnt)">
|
||||
BGN_CNT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endCnt)">
|
||||
END_CNT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnAmt)">
|
||||
BGN_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endAmt)">
|
||||
END_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(provdCnt)">
|
||||
PROVD_CNT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntCd)">
|
||||
ADIT_DSCNT_CD,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntAmt)">
|
||||
ADIT_DSCNT_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dscntMxmmAmt)">
|
||||
DSCNT_MXMM_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlCd)">
|
||||
MLG_ACCML_CD,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlAmt)">
|
||||
MLG_ACCML_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgValidMtCnt)">
|
||||
MLG_VALID_MT_CNT,
|
||||
</if>
|
||||
<![CDATA[
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnCnt)">
|
||||
BGN_CNT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endCnt)">
|
||||
END_CNT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnAmt)">
|
||||
BGN_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endAmt)">
|
||||
END_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(provdCnt)">
|
||||
PROVD_CNT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntCd)">
|
||||
ADIT_DSCNT_CD,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntAmt)">
|
||||
ADIT_DSCNT_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dscntMxmmAmt)">
|
||||
DSCNT_MXMM_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlCd)">
|
||||
MLG_ACCML_CD,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlAmt)">
|
||||
MLG_ACCML_AMT,
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgValidMtCnt)">
|
||||
MLG_VALID_MT_CNT,
|
||||
</if>
|
||||
<![CDATA[
|
||||
USE_AT,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT
|
||||
) SELECT
|
||||
) VALUES (
|
||||
#{seq},
|
||||
#{sopmalCd},
|
||||
#{evtInnb},
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnCnt)">
|
||||
REPLACE(#{bgnCnt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endCnt)">
|
||||
REPLACE(#{endCnt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnAmt)">
|
||||
REPLACE(#{bgnAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endAmt)">
|
||||
REPLACE(#{endAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(provdCnt)">
|
||||
#{provdCnt},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntCd)">
|
||||
#{aditDscntCd},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntAmt)">
|
||||
REPLACE(#{aditDscntAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dscntMxmmAmt)">
|
||||
REPLACE(#{dscntMxmmAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlCd)">
|
||||
#{mlgAccmlCd},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlAmt)">
|
||||
REPLACE(#{mlgAccmlAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgValidMtCnt)">
|
||||
REPLACE(#{mlgValidMtCnt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnCnt)">REPLACE(#{bgnCnt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endCnt)">REPLACE(#{endCnt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnAmt)">
|
||||
REPLACE(#{bgnAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endAmt)">
|
||||
REPLACE(#{endAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(provdCnt)">
|
||||
#{provdCnt},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntCd)">
|
||||
#{aditDscntCd},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(aditDscntAmt)">
|
||||
REPLACE(#{aditDscntAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dscntMxmmAmt)">
|
||||
REPLACE(#{dscntMxmmAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlCd)">
|
||||
#{mlgAccmlCd},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgAccmlAmt)">
|
||||
REPLACE(#{mlgAccmlAmt}, ',', ''),
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgValidMtCnt)">
|
||||
REPLACE(#{mlgValidMtCnt}, ',', ''),
|
||||
</if>
|
||||
<![CDATA[
|
||||
'Y',
|
||||
#{regusr},
|
||||
SYSDATE(),
|
||||
#{updusr},
|
||||
SYSDATE()
|
||||
FROM
|
||||
GC_EVENT_BENEFITS
|
||||
ON DUPLICATE KEY UPDATE
|
||||
BGN_CNT = VALUES(BGN_CNT),
|
||||
END_CNT = VALUES(END_CNT),
|
||||
BGN_AMT = VALUES(BGN_AMT),
|
||||
END_AMT = VALUES(END_AMT),
|
||||
PROVD_CNT = VALUES(PROVD_CNT),
|
||||
ADIT_DSCNT_CD = VALUES(ADIT_DSCNT_CD),
|
||||
ADIT_DSCNT_AMT = VALUES(ADIT_DSCNT_AMT),
|
||||
DSCNT_MXMM_AMT = VALUES(DSCNT_MXMM_AMT),
|
||||
MLG_ACCML_CD = VALUES(MLG_ACCML_CD),
|
||||
MLG_ACCML_AMT = VALUES(MLG_ACCML_AMT),
|
||||
MLG_VALID_MT_CNT = VALUES(MLG_VALID_MT_CNT),
|
||||
REGUSR = VALUES(REGUSR),
|
||||
UPDUSR = VALUES(UPDUSR),
|
||||
UPDT_DT = VALUES(UPDT_DT)
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
BGN_CNT = VALUES(BGN_CNT),
|
||||
END_CNT = VALUES(END_CNT),
|
||||
BGN_AMT = VALUES(BGN_AMT),
|
||||
END_AMT = VALUES(END_AMT),
|
||||
PROVD_CNT = VALUES(PROVD_CNT),
|
||||
ADIT_DSCNT_CD = VALUES(ADIT_DSCNT_CD),
|
||||
ADIT_DSCNT_AMT = VALUES(ADIT_DSCNT_AMT),
|
||||
DSCNT_MXMM_AMT = VALUES(DSCNT_MXMM_AMT),
|
||||
MLG_ACCML_CD = VALUES(MLG_ACCML_CD),
|
||||
MLG_ACCML_AMT = VALUES(MLG_ACCML_AMT),
|
||||
MLG_VALID_MT_CNT = VALUES(MLG_VALID_MT_CNT),
|
||||
REGUSR = VALUES(REGUSR),
|
||||
UPDUSR = VALUES(UPDUSR),
|
||||
UPDT_DT = VALUES(UPDT_DT)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.wb.domainserver.domain.gcone.setup.cost.mapper.BOCostMapper">
|
||||
|
||||
<!--원가 설정 목록 조회-->
|
||||
<select id="selectBOCostPriceList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO"
|
||||
resultType="dataMap">
|
||||
SELECT CT_INNB
|
||||
, STDR_DE
|
||||
, USD_RATE
|
||||
, JP_DLVY_CT
|
||||
, INTL_DLVY_AMT
|
||||
, PLTFOM_FEE
|
||||
, EXPCT_TAX
|
||||
, CSTMS_FEE
|
||||
, KR_DLVY_CT
|
||||
FROM GC_GOODS_COST
|
||||
</select>
|
||||
|
||||
<!-- 원가 설정 삭제 -->
|
||||
<delete id="deleteBOCostPrice"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO" >
|
||||
DELETE FROM
|
||||
GC_GOODS_COST
|
||||
WHERE 1=1
|
||||
</delete>
|
||||
|
||||
<!-- 원가 설정 등록 -->
|
||||
<insert id="insertBOCostPrice"
|
||||
parameterType="DataMap" >
|
||||
<selectKey order="BEFORE" keyProperty="ctInnb" resultType="integer">
|
||||
SELECT IFNULL(MAX(CT_INNB), 0) + 1
|
||||
FROM GC_GOODS_COST
|
||||
</selectKey>
|
||||
INSERT INTO GC_GOODS_COST (
|
||||
CT_INNB,
|
||||
STDR_DE,
|
||||
USD_RATE,
|
||||
JP_DLVY_CT,
|
||||
INTL_DLVY_AMT,
|
||||
PLTFOM_FEE,
|
||||
EXPCT_TAX,
|
||||
CSTMS_FEE,
|
||||
KR_DLVY_CT
|
||||
) VALUES (
|
||||
#{ctInnb},
|
||||
#{stdrDe},
|
||||
#{usdRate},
|
||||
#{jpDlvyCt},
|
||||
#{intlDlvyAmt},
|
||||
#{pltfomFee},
|
||||
#{expctTax},
|
||||
#{cstmsFee},
|
||||
#{krDlvyCt}
|
||||
)
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -42,7 +42,12 @@
|
||||
<!--주문 설정 수정-->
|
||||
<update id="updateBOOrdrSetup">
|
||||
UPDATE GC_SHOP
|
||||
SET MLG_PYMNT_AT = #{mlgPymntAt},
|
||||
SET CASH_AT = IFNULL(#{cashAt},'N'),
|
||||
MULTI_DLVY_AT = IFNULL(#{multiDlvyAt},'N'),
|
||||
FDRM_DLVY_AT = IFNULL(#{fdrmDlvyAt},'N'),
|
||||
GIFT_DLVY_AT = IFNULL(#{giftDlvyAt},'N'),
|
||||
GIFT_DLVY_ATMC_CANCL_PD = #{giftDlvyAtmcCanclPd},
|
||||
MLG_PYMNT_AT = #{mlgPymntAt},
|
||||
MLG_PYMNT_DV_CD = #{mlgPymntDvCd},
|
||||
MLG_PYMNT_RT = REPLACE(#{mlgPymntRt},',',''),
|
||||
MLG_MXMM_PYMNT_AMT = REPLACE(#{mlgMxmmPymntAmt},',',''),
|
||||
@@ -63,11 +68,13 @@
|
||||
MLG_VALID_PD_AT = 'Y',
|
||||
</otherwise>
|
||||
</choose>
|
||||
CASH_AT = IFNULL(#{cashAt},'N'),
|
||||
MULTI_DLVY_AT = IFNULL(#{multiDlvyAt},'N'),
|
||||
FDRM_DLVY_AT = IFNULL(#{fdrmDlvyAt},'N'),
|
||||
GIFT_DLVY_AT = IFNULL(#{giftDlvyAt},'N'),
|
||||
GIFT_DLVY_ATMC_CANCL_PD = #{giftDlvyAtmcCanclPd}
|
||||
MLG_HOLD_USE_AMT = #{mlgHoldUseAmt},
|
||||
MLG_SETLE_AMT_USE_AMT = #{mlgSetleAmtUseAmt},
|
||||
MLG_MUMM_USE_AMT = #{mlgMummUseAmt},
|
||||
MLG_MXMM_USE_DV = #{mlgMxmmUseDv},
|
||||
MLG_MXMM_USE_AMT = #{mlgMxmmUseAmt},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
|
||||
@@ -3003,7 +3003,11 @@ FROM (
|
||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||
WHERE 1 = 1
|
||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR, GOODS.EXPSR_ORDR
|
||||
ORDER BY GOODS.RELM_DV_CD
|
||||
, GOODS.S_ORDR
|
||||
, GOODS.I_ORDR
|
||||
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GOODS.EXPSR_ORDR
|
||||
|
||||
|
||||
]]>
|
||||
@@ -3905,7 +3909,11 @@ FROM (
|
||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||
WHERE 1 = 1
|
||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR, GOODS.GOODS_ORDR
|
||||
ORDER BY GOODS.RELM_DV_CD
|
||||
, GOODS.S_ORDR
|
||||
, GOODS.I_ORDR
|
||||
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GOODS.GOODS_ORDR
|
||||
|
||||
|
||||
]]>
|
||||
@@ -4954,7 +4962,10 @@ FROM (
|
||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||
WHERE 1 = 1
|
||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR
|
||||
ORDER BY GOODS.RELM_DV_CD
|
||||
, GOODS.S_ORDR
|
||||
, GOODS.I_ORDR
|
||||
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
@@ -3512,7 +3512,10 @@ gap-0 {
|
||||
height: 20px;
|
||||
padding: 0 8px;
|
||||
border-radius: 40px;
|
||||
background-color: #b1b6b9;
|
||||
/*background-color: #b1b6b9;*/
|
||||
color: #5c7cfa;
|
||||
background-color: #fcfdff;
|
||||
border: 1px solid #5c7cfa;
|
||||
font-weight: 500;
|
||||
}
|
||||
.product-badge.new {
|
||||
|
||||
@@ -1850,6 +1850,47 @@ function validateInput(input, opts = {}) {
|
||||
});
|
||||
}
|
||||
|
||||
/************************************************************
|
||||
form데이터 sealize 후 json 스트링 형태로 전환
|
||||
************************************************************ */
|
||||
function queryToJson(queryString) {
|
||||
let jsonObj = {};
|
||||
let pairs = queryString.split("&");
|
||||
|
||||
$.each(pairs, function (index, pair) {
|
||||
let [key, value] = pair.split("=");
|
||||
if(!fn_is_empty(value)){
|
||||
jsonObj[key] = value ? decodeURIComponent(value) : "";
|
||||
}
|
||||
});
|
||||
const jsonStr = JSON.stringify(jsonObj);
|
||||
return jsonStr;
|
||||
}
|
||||
|
||||
/************************************************************
|
||||
치환코드 입력
|
||||
* @param eventObj : 클릭객체
|
||||
* @param closestSelector : 가까운 객체
|
||||
* @param targetTextAreaSelector : textarea타겟대상
|
||||
* @property obj : 클릭한 객체
|
||||
* @property existingVal : 기존 텍스트 아리아 값
|
||||
* @property addStr : 추가할 치환 코드
|
||||
* @description 치환 문자 td 클래스에 subst 클래스 부여
|
||||
************************************************************ */
|
||||
function fn_set_substituon_in_texatarea(eventObj, closestSelector, targetTextAreaSelector) {
|
||||
const obj = $(eventObj);
|
||||
let existingVal = $("#"+targetTextAreaSelector).val();
|
||||
let addStr;
|
||||
const addStrT = obj.closest(closestSelector).find(".subst").text();
|
||||
const addStrV = obj.closest(closestSelector).find(".subst").val();
|
||||
if(!fn_is_empty(addStrT)){
|
||||
addStr = addStrT;
|
||||
}else{
|
||||
addStr = addStrV;
|
||||
}
|
||||
existingVal = existingVal + " " +addStr;
|
||||
$("#"+targetTextAreaSelector).val(existingVal);
|
||||
}
|
||||
|
||||
/* ************************************************************
|
||||
* 인피니티 스크롤 공통 처리 (footer가 보이면 callback함수 호출)
|
||||
|
||||
46
src/main/resources/static/js/sopmal/refund-popup.js
Normal file
46
src/main/resources/static/js/sopmal/refund-popup.js
Normal file
@@ -0,0 +1,46 @@
|
||||
/* 결제취소 화면 조회 전용. 실제 취소/환불 요청은 처리하지 않는다. */
|
||||
async function fn_load_refund_popup(url, data, onReady) {
|
||||
const requestUrl = new URL(url, window.location.href);
|
||||
Object.entries(data).forEach(([key, value]) => requestUrl.searchParams.set(key, value));
|
||||
|
||||
const loginRequired = function () {
|
||||
window.alert('로그인 시간이 만료되었습니다. 다시 로그인해 주세요.');
|
||||
const loginUrl = new URL('/sopmal/login', window.location.href);
|
||||
// 로그인 후 AJAX 팝업 주소가 아닌 원래 주문 상세로 돌아온다.
|
||||
loginUrl.searchParams.set('redirect_uri', window.location.href);
|
||||
window.location.assign(loginUrl.href);
|
||||
};
|
||||
|
||||
try {
|
||||
// 갱신 후 리다이렉트에서도 주문 조회 조건이 유지되도록 GET으로 요청한다.
|
||||
const response = await fetch(requestUrl.href, {
|
||||
method: 'GET',
|
||||
credentials: 'same-origin',
|
||||
cache: 'no-store',
|
||||
headers: {'X-Requested-With': 'XMLHttpRequest'}
|
||||
});
|
||||
const finalUrl = new URL(response.url || requestUrl.href, window.location.href);
|
||||
if (response.status === 401 || (response.redirected &&
|
||||
/^\/sopmal\/(login(?:\/|$)|logout(?:\/|$)|main(?:\/|$))/.test(finalUrl.pathname))) {
|
||||
loginRequired();
|
||||
return;
|
||||
}
|
||||
if (!response.ok || finalUrl.origin !== requestUrl.origin || finalUrl.pathname !== requestUrl.pathname) {
|
||||
throw new Error('Unexpected refund popup response');
|
||||
}
|
||||
|
||||
// 로그인 HTML이나 빈 응답은 화면에 넣지 않는다. 반환된 스크립트도 실행하지 않는다.
|
||||
const html = await response.text();
|
||||
const parsed = new DOMParser().parseFromString(html, 'text/html');
|
||||
const popup = parsed.querySelector('#refund-pop');
|
||||
if (!popup) {
|
||||
throw new Error('Missing refund popup');
|
||||
}
|
||||
popup.querySelectorAll('script').forEach(script => script.remove());
|
||||
$('#refund-pop').remove();
|
||||
$('#refundPopupDiv').empty().append(popup);
|
||||
onReady($(popup));
|
||||
} catch (error) {
|
||||
window.alert('결제취소 화면을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요.');
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
@@ -775,7 +775,10 @@ caption {
|
||||
height: 18px;
|
||||
padding: 0 8px;
|
||||
border-radius: 40px;
|
||||
background-color: #b1b6b9;
|
||||
/*background-color: #b1b6b9;*/
|
||||
color: #5c7cfa;
|
||||
background-color: #fcfdff;
|
||||
border: 1px solid #5c7cfa;
|
||||
font-weight: 500;
|
||||
}
|
||||
.product-badge.new {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user