배송그룹 설정에 따른 배송 처리 로직 추가
This commit is contained in:
@@ -286,6 +286,7 @@ public class BOMaMtngController {
|
||||
return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
} else {
|
||||
// 여러곳배송처럼 처리하더라도 주소는 하나이므로 shipping 체크
|
||||
if (CollectionUtils.isEmpty(shipping)) {
|
||||
log.info("배송지 정보를 찾을 수 없습니다.");
|
||||
content.put("result","Y");
|
||||
|
||||
@@ -406,6 +406,8 @@ public class BOMaMtngService {
|
||||
List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList"); // 상품정보
|
||||
LinkedHashMap enuri = (LinkedHashMap) param.get("enuri"); // 할인정보
|
||||
|
||||
log.debug("selectBOPreOrderValidationList-goodsList: {}",goodsList);
|
||||
|
||||
//사용한 장바구니 쿠폰
|
||||
//비회원의 경우 enuri 자체가 없어서 isEmpty 확인
|
||||
List<LinkedHashMap> usedCartCouponList = new ArrayList<>();
|
||||
|
||||
@@ -8,6 +8,7 @@ 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.ordr.ordr.mapper.BOOrdrMapper;
|
||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrderRestAmtVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
@@ -33,6 +34,9 @@ public class BOOrderService {
|
||||
@Autowired
|
||||
private BOPurchsMapper mapper;
|
||||
|
||||
@Autowired
|
||||
private BOOrdrMapper boOrdrMapper;
|
||||
|
||||
@Autowired
|
||||
private BOMaMtngService maMtngService;
|
||||
|
||||
@@ -81,27 +85,207 @@ public class BOOrderService {
|
||||
log.debug("결제정보 => {} ", new Gson().toJson(setle));
|
||||
log.debug("사은품 => {} ", new Gson().toJson(prsntList));
|
||||
|
||||
String sopmalCd = "";
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
sopmalCd = user.getSopmalCd();
|
||||
}else{
|
||||
sopmalCd = param.get("sopmalCd").toString();
|
||||
}
|
||||
|
||||
String ordrTyCd = (String) param.get("ordrTyCd");
|
||||
|
||||
log.debug("insertMngrOrdrRegist-param : {}", param);
|
||||
|
||||
/* *****************************
|
||||
0. 배송 정책에 따른 배송지 세팅
|
||||
***************************** */
|
||||
|
||||
/** 여러곳 배송 배송지 세팅 시작 */
|
||||
LinkedHashMap<String, Object> multiOrdrDlvylcMap = new LinkedHashMap<>();
|
||||
List<LinkedHashMap<String, Object>> dlvylcListMulti = new ArrayList<>();
|
||||
|
||||
multiOrdrDlvylcMap = (LinkedHashMap) param.get("multiOrdrDlvylc");
|
||||
log.debug("multiOrdrDlvylcMap : {}", multiOrdrDlvylcMap);
|
||||
if (!CollectionUtils.isEmpty(multiOrdrDlvylcMap)) {
|
||||
// 배송지 리스트
|
||||
dlvylcListMulti = (List<LinkedHashMap<String, Object>>) multiOrdrDlvylcMap.get("dlvylc");
|
||||
log.debug("dlvylcListMulti : {}", dlvylcListMulti);
|
||||
|
||||
String dlvylcAreaCd = (String) shipping.get("dlvylcAreaCd");
|
||||
String ordrAdressZip = StringUtil.isNullToString(shipping.get("dlvylcZip"));
|
||||
String prefcd = (String) shipping.get("prefcd");
|
||||
String defaultAdressAt = "N";
|
||||
String finalSopmalCd = sopmalCd;
|
||||
DataMap defaultAdressVO = new DataMap() {{ //
|
||||
put("sopmalCd", finalSopmalCd); // 쇼핑몰 코드
|
||||
put("zip", ordrAdressZip); // 우편번호
|
||||
put("prefcd", prefcd); // 도도부현코드
|
||||
}};
|
||||
|
||||
if("KR".equals(dlvylcAreaCd)){
|
||||
defaultAdressAt = boOrdrMapper.selectBODefaultAdressAtInqire(defaultAdressVO);
|
||||
}
|
||||
if("JP".equals(dlvylcAreaCd)){
|
||||
defaultAdressAt = boOrdrMapper.selectBODefaultAdressAtInqire2(defaultAdressVO);
|
||||
}
|
||||
|
||||
|
||||
if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "04".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원 개인결제, 정기배송
|
||||
|
||||
for(int i=0;i<goodsList.size();i++) {
|
||||
int goodsQy = (int) goodsList.get(i).get("qy");
|
||||
int dlvyGroupInnb = (int) goodsList.get(i).get("dlvyGroupInnb");
|
||||
String sopmalCode = sopmalCd;
|
||||
|
||||
DataMap shippingParam = new DataMap() {{
|
||||
put("dlvyGroupInnb", dlvyGroupInnb);
|
||||
put("sopmalCd", sopmalCode);
|
||||
}};
|
||||
|
||||
DataMap shippingGrouping = mapper.selectShippingGrouping(shippingParam);
|
||||
|
||||
// "KR".equals(dlvylcAreaCd)인 경우
|
||||
String itemDlvyGroupDvCd = (String) shippingGrouping.get("dlvyGroupDvCd");
|
||||
BigDecimal itemDftDlvyAmt = (BigDecimal) shippingGrouping.get("dftDlvyAmt"); // 기본배송비
|
||||
BigDecimal itemDlvyAmt = itemDftDlvyAmt; // 배송비
|
||||
String itemDlvyAreaAditAt = (String) shippingGrouping.get("dlvyAreaAditAt"); // 도서산간 추가 배송비 조건
|
||||
BigDecimal itemAreaAditDlvyAmt = (BigDecimal) shippingGrouping.get("areaAditDlvyAmt"); // 도서산간 추가 배송비
|
||||
String itemAmtCndUseAt = (String) shippingGrouping.get("amtCndUseAt"); // 금액조건
|
||||
BigDecimal itemAmtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt");
|
||||
String itemCntCndUseAt = (String) shippingGrouping.get("cntCndUseAt"); // 수량조건
|
||||
BigDecimal itemCntCndAditAmt = (BigDecimal) shippingGrouping.get("cntCndAditAmt"); // 수량
|
||||
|
||||
if("JP".equals(dlvylcAreaCd)){
|
||||
itemDftDlvyAmt = (BigDecimal) shippingGrouping.get("dftDlvyAmt2"); // 기본배송비
|
||||
itemDlvyAmt = itemDftDlvyAmt; // 배송비
|
||||
itemDlvyAreaAditAt = (String) shippingGrouping.get("dlvyAreaAditAt2"); // 도서산간 추가 배송비 조건
|
||||
itemAreaAditDlvyAmt = (BigDecimal) shippingGrouping.get("areaAditDlvyAmt2"); // 도서산간 추가 배송비
|
||||
itemAmtCndUseAt = (String) shippingGrouping.get("amtCndUseAt2"); // 금액조건
|
||||
itemAmtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt");
|
||||
itemCntCndUseAt = (String) shippingGrouping.get("cntCndUseAt2"); // 수량조건
|
||||
itemCntCndAditAmt = (BigDecimal) shippingGrouping.get("cntCndAditAmt2"); // 수량
|
||||
}
|
||||
|
||||
// 추가배송비 계산 (MUL)
|
||||
if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) {
|
||||
if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) {
|
||||
itemDlvyAmt = itemDlvyAmt.add(itemAreaAditDlvyAmt); // 유료 배송 도서산간 추가 배송비
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ("03".equals(itemDlvyGroupDvCd) && "Y".equals(itemCntCndUseAt)) {
|
||||
|
||||
// BigDecimal qy = (BigDecimal) goodsList.get(i).get("qy"); // 수량
|
||||
BigDecimal qy = new BigDecimal(String.valueOf(goodsList.get(i).get("qy"))); // 수량
|
||||
BigDecimal unitQy = qy.divide(itemCntCndAditAmt, 0, RoundingMode.CEILING); // 단위수량
|
||||
|
||||
goodsQy = unitQy.intValue();
|
||||
|
||||
for(int j=0;j<goodsQy;j++) {
|
||||
|
||||
List<LinkedHashMap> itemGoodsList = new ArrayList<>();
|
||||
itemGoodsList.add(goodsList.get(i));
|
||||
for (LinkedHashMap<String, Object> itemGoodsMap : itemGoodsList) {
|
||||
if((goodsQy-j) > 1){
|
||||
itemGoodsMap.put("qy", itemCntCndAditAmt.intValue());
|
||||
} else {
|
||||
itemGoodsMap.put("qy", qy.intValue() - (itemCntCndAditAmt.intValue() * j));
|
||||
}
|
||||
}
|
||||
|
||||
List<LinkedHashMap> itempPrsntList = new ArrayList<>();
|
||||
if(!prsntList.isEmpty()){
|
||||
itempPrsntList.add(prsntList.get(i));
|
||||
for (LinkedHashMap<String, Object> itemPrsntMap : itempPrsntList) {
|
||||
if((goodsQy-j) > 1){
|
||||
itemPrsntMap.put("qy", itemCntCndAditAmt.intValue());
|
||||
} else {
|
||||
itemPrsntMap.put("qy", qy.intValue() - (itemCntCndAditAmt.intValue() * j));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LinkedHashMap<String, Object> dlvyMap = new LinkedHashMap<>();
|
||||
|
||||
dlvyMap.put("dftDlvyAmt", itemDftDlvyAmt.intValue());
|
||||
dlvyMap.put("dlvyAmt", itemDlvyAmt.intValue());
|
||||
dlvyMap.put("couponInnb", 0);
|
||||
dlvyMap.put("dwldCouponInnb", 0);
|
||||
dlvyMap.put("dplctDscntAt", "");
|
||||
dlvyMap.put("otrCouponSmtmUseAt", "");
|
||||
dlvyMap.put("mngrFreeDlvyUseAt", "N");
|
||||
dlvyMap.put("dlvylcAreaCd", shipping.get("dlvylcAreaCd"));
|
||||
dlvyMap.put("dlvylcZip", shipping.get("dlvylcZip"));
|
||||
dlvyMap.put("prefcd", shipping.get("prefcd"));
|
||||
dlvyMap.put("recpntNm", shipping.get("recpntNm"));
|
||||
dlvyMap.put("recpntMbtlnb", shipping.get("recpntMbtlnb"));
|
||||
dlvyMap.put("dlvylcAdresDvCd", shipping.get("dlvylcAdresDvCd"));
|
||||
dlvyMap.put("dlvylcLnbAdres", shipping.get("dlvylcLnbAdres"));
|
||||
dlvyMap.put("dlvylcRnmAdres", shipping.get("dlvylcRnmAdres"));
|
||||
dlvyMap.put("dlvylcAdresDtl", shipping.get("dlvylcAdresDtl"));
|
||||
dlvyMap.put("dlvyMssageCn", shipping.get("dlvyMssageCn"));
|
||||
dlvyMap.put("goodsList", itemGoodsList);
|
||||
dlvyMap.put("prsntList", itempPrsntList); //prsntList.get(i));
|
||||
|
||||
dlvylcListMulti.add(dlvyMap);
|
||||
}
|
||||
} else {
|
||||
|
||||
BigDecimal qy = new BigDecimal(String.valueOf(goodsList.get(i).get("qy"))); // 수량
|
||||
|
||||
List<LinkedHashMap> itemGoodsList = new ArrayList<>();
|
||||
itemGoodsList.add(goodsList.get(i));
|
||||
for (LinkedHashMap<String, Object> itemGoodsMap : itemGoodsList) {
|
||||
itemGoodsMap.put("qy", qy.intValue());
|
||||
}
|
||||
|
||||
List<LinkedHashMap> itempPrsntList = new ArrayList<>();
|
||||
if(!prsntList.isEmpty()){
|
||||
itempPrsntList.add(prsntList.get(i));
|
||||
for (LinkedHashMap<String, Object> itemPrsntMap : itempPrsntList) {
|
||||
itemPrsntMap.put("qy", qy.intValue());
|
||||
}
|
||||
}
|
||||
|
||||
LinkedHashMap<String, Object> dlvyMap = new LinkedHashMap<>();
|
||||
|
||||
dlvyMap.put("dftDlvyAmt", itemDftDlvyAmt.intValue());
|
||||
dlvyMap.put("dlvyAmt", itemDlvyAmt.intValue());
|
||||
dlvyMap.put("couponInnb", 0);
|
||||
dlvyMap.put("dwldCouponInnb", 0);
|
||||
dlvyMap.put("dplctDscntAt", "");
|
||||
dlvyMap.put("otrCouponSmtmUseAt", "");
|
||||
dlvyMap.put("mngrFreeDlvyUseAt", "N");
|
||||
dlvyMap.put("dlvylcAreaCd", shipping.get("dlvylcAreaCd"));
|
||||
dlvyMap.put("dlvylcZip", shipping.get("dlvylcZip"));
|
||||
dlvyMap.put("prefcd", shipping.get("prefcd"));
|
||||
dlvyMap.put("recpntNm", shipping.get("recpntNm"));
|
||||
dlvyMap.put("recpntMbtlnb", shipping.get("recpntMbtlnb"));
|
||||
dlvyMap.put("dlvylcAdresDvCd", shipping.get("dlvylcAdresDvCd"));
|
||||
dlvyMap.put("dlvylcLnbAdres", shipping.get("dlvylcLnbAdres"));
|
||||
dlvyMap.put("dlvylcRnmAdres", shipping.get("dlvylcRnmAdres"));
|
||||
dlvyMap.put("dlvylcAdresDtl", shipping.get("dlvylcAdresDtl"));
|
||||
dlvyMap.put("dlvyMssageCn", shipping.get("dlvyMssageCn"));
|
||||
dlvyMap.put("goodsList", itemGoodsList);
|
||||
dlvyMap.put("prsntList", itempPrsntList); //prsntList.get(i));
|
||||
|
||||
dlvylcListMulti.add(dlvyMap);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 배송지가 1개 이상이면 여러곳 배송으로 변경
|
||||
if(dlvylcListMulti.size() > 1) {
|
||||
ordrTyCd = "05";
|
||||
}
|
||||
|
||||
} else if ("05".equals(ordrTyCd)) { // 여러곳 배송, 선물하기
|
||||
if (!CollectionUtils.isEmpty(multiOrdrDlvylcMap)) {
|
||||
// 배송지 리스트
|
||||
dlvylcListMulti = (List<LinkedHashMap<String, Object>>) multiOrdrDlvylcMap.get("dlvylc");
|
||||
log.debug("dlvylcListMulti : {}", dlvylcListMulti);
|
||||
}
|
||||
}
|
||||
/** 여러곳 배송 배송지 세팅 종료 */
|
||||
|
||||
String sopmalCd = "";
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
sopmalCd = user.getSopmalCd();
|
||||
}else{
|
||||
sopmalCd = param.get("sopmalCd").toString();
|
||||
}
|
||||
|
||||
String ordrTyCd = (String) param.get("ordrTyCd");
|
||||
|
||||
/* *****************************
|
||||
1. 주문등록(GC_ORDER)
|
||||
@@ -128,6 +312,7 @@ public class BOOrderService {
|
||||
|
||||
BOOrderShippingVO shippingEscrowVO = new BOOrderShippingVO();
|
||||
if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "04".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원 개인결제, 정기배송
|
||||
|
||||
BOOrderShippingVO shippingVO = new BOOrderShippingVO();
|
||||
|
||||
shippingVO.setSopmalCd(sopmalCd);
|
||||
@@ -1223,6 +1408,8 @@ public class BOOrderService {
|
||||
shippingVO.setRecpntTelnb((String) shipping.get("recpntTelnb"));
|
||||
shippingVO.setRecpntMbtlnb((String) shipping.get("recpntMbtlnb"));
|
||||
|
||||
shippingVO.setDlvylcAreaCd((String) shipping.get("dlvylcAreaCd"));
|
||||
shippingVO.setPrefcd((String) shipping.get("prefcd"));
|
||||
shippingVO.setDlvylcZip((String) shipping.get("dlvylcZip"));
|
||||
shippingVO.setDlvylcAdresDvCd((String) shipping.get("dlvylcAdresDvCd"));
|
||||
shippingVO.setDlvylcLnbAdres((String) shipping.get("dlvylcLnbAdres"));
|
||||
@@ -1261,6 +1448,8 @@ public class BOOrderService {
|
||||
shippingVO.setRecpntTelnb(StringUtil.isNullToString(shipping.get("recpntTelnb")));
|
||||
shippingVO.setRecpntMbtlnb(StringUtil.isNullToString(shipping.get("recpntMbtlnb")));
|
||||
|
||||
shippingVO.setDlvylcAreaCd(StringUtil.isNullToString(shipping.get("dlvylcAreaCd")));
|
||||
shippingVO.setPrefcd(StringUtil.isNullToString(shipping.get("prefcd")));
|
||||
shippingVO.setDlvylcZip(StringUtil.isNullToString(shipping.get("dlvylcZip")));
|
||||
shippingVO.setDlvylcAdresDvCd(StringUtil.isNullToString(shipping.get("dlvylcAdresDvCd")));
|
||||
shippingVO.setDlvylcLnbAdres(StringUtil.isNullToString(shipping.get("dlvylcLnbAdres")));
|
||||
|
||||
@@ -1837,6 +1837,8 @@ public class BOPurchsService {
|
||||
public Map<String, Object> selectSetleExpectAmt(DataMap param) {
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
|
||||
log.debug("BOPurchsService.selectSetleExpectAmt-param : {}", param);
|
||||
|
||||
String sopmalCd = (String) param.get("sopmalCd");
|
||||
|
||||
LinkedHashMap setleExpectAmtMap = new LinkedHashMap(){{
|
||||
@@ -1925,7 +1927,7 @@ public class BOPurchsService {
|
||||
if (dlvylc.get("dlvyAmt") != null) {
|
||||
dlvyAmtBydlvylc = dlvyAmtBydlvylc + castAmt(dlvylc, "dlvyAmt");
|
||||
} else {
|
||||
dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvyAmtMap)) {
|
||||
dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue();
|
||||
@@ -1950,7 +1952,7 @@ public class BOPurchsService {
|
||||
if (dlvylcMap.get("dlvyAmt") != null) {
|
||||
dlvyAmtBydlvylc = dlvyAmtBydlvylc + castAmt(dlvylcMap, "dlvyAmt");
|
||||
} else {
|
||||
dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvyAmtMap)) {
|
||||
dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue();
|
||||
@@ -1961,7 +1963,7 @@ public class BOPurchsService {
|
||||
dlvyAmt = new BigDecimal(dlvyAmtBydlvylc);
|
||||
}
|
||||
} else {
|
||||
dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvyAmtMap)) {
|
||||
dlvyAmt = (BigDecimal) dlvyAmtMap.get("dlvyAmt");
|
||||
@@ -2107,7 +2109,7 @@ public class BOPurchsService {
|
||||
* @param goodsList
|
||||
* @return List<DataMap>
|
||||
*/
|
||||
public DataMap getDlvyAmt(List<LinkedHashMap> goodsList, String sopmalCd, String defaultAdressAt, String dlvylcAreaCd, String prefcd) {
|
||||
public DataMap getDlvyAmt(List<LinkedHashMap> goodsList, String sopmalCd, String defaultAdressAt, String dlvylcAreaCd) {
|
||||
DataMap dlvyAmtMap = null;
|
||||
log.debug("우편번호 확인 : {}", defaultAdressAt);
|
||||
log.debug("getDlvyAmt-goodsList : {}", goodsList);
|
||||
|
||||
@@ -26,8 +26,12 @@ public class BOOrderShippingVO extends AbstractVO {
|
||||
|
||||
private String recpntMbtlnb;
|
||||
|
||||
private String dlvylcAreaCd;
|
||||
|
||||
private String dlvylcZip;
|
||||
|
||||
private String prefcd;
|
||||
|
||||
private String dlvylcAdresDvCd;
|
||||
|
||||
private String dlvylcLnbAdres;
|
||||
|
||||
@@ -335,6 +335,8 @@ public interface BOOrdrMapper {
|
||||
*/
|
||||
public List<DataMap> selectOrderShippingList(BOOrdrShippingVO ordrShippingVO);
|
||||
|
||||
public List<DataMap> selectOrderShippingListGrp(BOOrdrShippingVO ordrShippingVO);
|
||||
|
||||
/**
|
||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문상세 > 배송지정보 상품 목록 조회
|
||||
* @param paramMap
|
||||
|
||||
@@ -1988,6 +1988,8 @@ public class BOOrdrService{
|
||||
|
||||
List<DataMap> shippingList = mapper.selectOrderShippingList(shippingVO);
|
||||
|
||||
// List<DataMap> shippingListGrp = mapper.selectOrderShippingListGrp(shippingVO);
|
||||
|
||||
if (!CollectionUtils.isEmpty(shippingList)) {
|
||||
for (int i = 0; i < shippingList.size(); i++) {
|
||||
DataMap param = shippingList.get(i);
|
||||
@@ -2014,6 +2016,7 @@ public class BOOrdrService{
|
||||
content.put("order", ordrDtl);
|
||||
content.put("goodsList", goodsList);
|
||||
content.put("shippingList", shippingList);
|
||||
// content.put("shippingListGrp", shippingListGrp);
|
||||
content.put("dscntList", dscntList);
|
||||
content.put("setleList", setleList);
|
||||
content.put("refundList", refundList);
|
||||
@@ -3018,7 +3021,7 @@ public class BOOrdrService{
|
||||
public Map<String, Object> selectSetleExpectAmt(DataMap param) throws Exception {
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
|
||||
log.debug("selectSetleExpectAmt-param : {}", param);
|
||||
log.debug("BOOrdrService.selectSetleExpectAmt-param : {}", param);
|
||||
|
||||
LinkedHashMap setleExpectAmtMap = new LinkedHashMap() {{
|
||||
put("goodsAmt", 0);
|
||||
@@ -3393,9 +3396,15 @@ public class BOOrdrService{
|
||||
|
||||
// ############################################## 배송지별 배송비 계산 START ##############################################
|
||||
|
||||
String ordrAdressZip = StringUtil.isNullToString(param.get("dlvylcZip"));
|
||||
String dlvylcAreaCd = (String) param.get("dlvylcAreaCd");
|
||||
String prefcd = (String) param.get("prefcd");
|
||||
LinkedHashMap<String, Object> shippingMap = (LinkedHashMap) param.get("shipping");
|
||||
|
||||
// String ordrAdressZip = StringUtil.isNullToString(param.get("dlvylcZip"));
|
||||
// String dlvylcAreaCd = (String) param.get("dlvylcAreaCd");
|
||||
// String prefcd = (String) param.get("prefcd");
|
||||
|
||||
String ordrAdressZip = StringUtil.isNullToString(shippingMap != null ? shippingMap.get("dlvylcZip") : "");
|
||||
String dlvylcAreaCd = StringUtil.isNullToString(shippingMap != null ? shippingMap.get("dlvylcAreaCd") : "");
|
||||
String prefcd = StringUtil.isNullToString(shippingMap != null ? shippingMap.get("prefcd") : "");
|
||||
DataMap defaultAdressVO = new DataMap() {{ //
|
||||
put("sopmalCd", sopmalCd); // 쇼핑몰 코드
|
||||
put("zip", ordrAdressZip); // 우편번호
|
||||
@@ -3445,7 +3454,7 @@ public class BOOrdrService{
|
||||
List<LinkedHashMap> goodsListMulti = (List<LinkedHashMap>) dlvylcMapMulti.get("goodsList");
|
||||
log.debug("goodsListMulti : {}", goodsListMulti);
|
||||
if (!CollectionUtils.isEmpty(goodsListMulti)) {
|
||||
dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvyAmtMapMulti)) {
|
||||
if (dlvylcMapMulti.get("mngrFreeDlvyUseAt") != null && "Y".equals(dlvylcMapMulti.get("mngrFreeDlvyUseAt").toString())) {
|
||||
@@ -3500,7 +3509,7 @@ public class BOOrdrService{
|
||||
// List<LinkedHashMap> goodsListMulti = (List<LinkedHashMap>) dlvylcMapMulti.get("goodsList");
|
||||
// log.debug("goodsListMulti : {}", goodsListMulti);
|
||||
// if (!CollectionUtils.isEmpty(goodsListMulti)) {
|
||||
// dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
// dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
//
|
||||
// if (!CollectionUtils.isEmpty(dlvyAmtMapMulti)) {
|
||||
// if (dlvylcMapMulti.get("mngrFreeDlvyUseAt") != null && "Y".equals(dlvylcMapMulti.get("mngrFreeDlvyUseAt").toString())) {
|
||||
@@ -3558,18 +3567,18 @@ public class BOOrdrService{
|
||||
if (dlvylcMap.get("dlvyAmt") != null) {
|
||||
log.debug("배송비 객체 : {}", dlvylcMap);
|
||||
if (dlvylcMap.get("mngrFreeDlvyUseAt") != null && "N".equals(dlvylcMap.get("mngrFreeDlvyUseAt").toString())) {
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
} else if (dlvylcMap.get("mngrFreeDlvyUseAt") != null && "Y".equals(dlvylcMap.get("mngrFreeDlvyUseAt").toString())) {
|
||||
log.debug("관리자 무료배송 체크 'Y'");
|
||||
} else {
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
}
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvyAmtMap)) {
|
||||
dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue();
|
||||
}
|
||||
} else {
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvyAmtMap)) {
|
||||
dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue();
|
||||
@@ -3578,7 +3587,7 @@ public class BOOrdrService{
|
||||
|
||||
dlvyAmt = new BigDecimal(dlvyAmtBydlvylc);
|
||||
} else {
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd);
|
||||
dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd);
|
||||
|
||||
if (!CollectionUtils.isEmpty(dlvyAmtMap)) {
|
||||
dlvyAmt = (BigDecimal) dlvyAmtMap.get("dlvyAmt");
|
||||
|
||||
@@ -362,6 +362,7 @@ public class OrdrController {
|
||||
param.put("mbrDvCd", user.getMbrDvCd());
|
||||
param.put("mbrInnb", user.getUserInnb());
|
||||
}
|
||||
log.debug("CONselectSetleExpectAmt-param : {}", param);
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
try {
|
||||
DataMap datamap = new DataMap();
|
||||
@@ -3069,6 +3070,7 @@ public class OrdrController {
|
||||
return content;
|
||||
}
|
||||
} else {
|
||||
// 여러곳배송처럼 처리하더라도 주소는 하나이므로 shipping 체크
|
||||
if (CollectionUtils.isEmpty(shipping)) {
|
||||
log.info("배송지 정보를 찾을 수 없습니다.");
|
||||
content.put("result","Y");
|
||||
|
||||
@@ -386,7 +386,9 @@
|
||||
, ORDR_STTUS_CD
|
||||
, RECPNT_NM
|
||||
, RECPNT_MBTLNB
|
||||
, DLVYLC_AREA_CD
|
||||
, DLVYLC_ZIP
|
||||
, PREFCD
|
||||
, DLVYLC_ADRES_DV_CD
|
||||
, DLVYLC_LNB_ADRES
|
||||
, DLVYLC_RNM_ADRES
|
||||
@@ -422,7 +424,9 @@
|
||||
, #{ordrSttusCd}
|
||||
, #{recpntNm}
|
||||
, HEX(AES_ENCRYPT(REPLACE(#{recpntMbtlnb}, '-', ''), '1df5be2f7e90ae36'))
|
||||
, #{dlvylcAreaCd}
|
||||
, #{dlvylcZip}
|
||||
, #{prefcd}
|
||||
, #{dlvylcAdresDvCd}
|
||||
, #{dlvylcLnbAdres}
|
||||
, #{dlvylcRnmAdres}
|
||||
|
||||
@@ -2000,6 +2000,71 @@
|
||||
ORDER BY FOS.ORDR_DLVY_INNB ASC
|
||||
</select>
|
||||
|
||||
<!-- 배송지정보 목록 조회 그룹 -->
|
||||
<select id="selectOrderShippingListGrp" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrShippingVO" resultType="dataMap">
|
||||
SELECT SOPMAL_CD, ORDR_INNB, RECPNT_NM, RECPNT_TELNB, RECPNT_MBTLNB, DLVYLC_ZIP, DLVYLC_ADRES_DV_CD, ADRES, DLVYLC_RNM_ADRES, DLVYLC_LNB_ADRES, DLVYLC_ADRES_DTL, DLVY_MSSAGE_CN, GIFT_MSSAGE_CN, GIFT_STTUS_CD, GIFT_STTUS_CD_NM, ORDR_STTUS_CD, ORDR_STTUS_NM, FREE_DLVY_CND_AMT, DFT_DLVY_AMT
|
||||
FROM (
|
||||
SELECT FOS.SOPMAL_CD
|
||||
, FOS.ORDR_INNB
|
||||
, FOS.ORDR_DLVY_INNB
|
||||
, FOS.RECPNT_NM
|
||||
, CASE
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 11 THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 4, 4), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 8, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 10 AND CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)) LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 2), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 3, 4), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 7, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 10 AND CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)) NOT LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 4, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 7, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 9 THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 2), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 3, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 6, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 8 THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 4), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50)), 5, 4))
|
||||
ELSE
|
||||
CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))
|
||||
END AS RECPNT_TELNB
|
||||
, CASE
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))) = 11 THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 4, 4), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 8, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))) = 10 AND CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)) LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 2), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 3, 4), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 7, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))) = 10 AND CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)) NOT LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 4, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 7, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))) = 9 THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 2), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 3, 3), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 6, 4))
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))) = 8 THEN
|
||||
CONCAT(SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 1, 4), '-', SUBSTR(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)), 5, 4))
|
||||
ELSE
|
||||
CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))
|
||||
END AS RECPNT_MBTLNB
|
||||
, FOS.DLVYLC_ZIP
|
||||
, FOS.DLVYLC_ADRES_DV_CD
|
||||
, CASE WHEN FOS.DLVYLC_ADRES_DV_CD = '01'
|
||||
THEN FOS.DLVYLC_RNM_ADRES
|
||||
ELSE FOS.DLVYLC_LNB_ADRES
|
||||
END ADRES
|
||||
, FOS.DLVYLC_RNM_ADRES
|
||||
, FOS.DLVYLC_LNB_ADRES
|
||||
, FOS.DLVYLC_ADRES_DTL
|
||||
, FOS.DLVY_MSSAGE_CN
|
||||
, FOS.GIFT_MSSAGE_CN
|
||||
, FOS.GIFT_STTUS_CD
|
||||
, FN_GET_COMMCODE_NAME('GIFT_STTUS', FOS.GIFT_STTUS_CD) AS GIFT_STTUS_CD_NM
|
||||
, FOS.ORDR_STTUS_CD
|
||||
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOS.ORDR_STTUS_CD) AS ORDR_STTUS_NM
|
||||
, ROUND(FOS.RL_DLVY_AMT) AS RL_DLVY_AMT
|
||||
, ROUND(FOS.FREE_DLVY_CND_AMT) AS FREE_DLVY_CND_AMT
|
||||
, ROUND(FOS.DFT_DLVY_AMT) AS DFT_DLVY_AMT
|
||||
FROM GC_ORDER_SHIPPING FOS
|
||||
WHERE FOS.SOPMAL_CD = #{sopmalCd}
|
||||
AND FOS.ORDR_INNB = #{ordrInnb}
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ordrDlvyInnb)">
|
||||
AND FOS.ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||
</if>
|
||||
ORDER BY FOS.ORDR_DLVY_INNB ASC
|
||||
) AA
|
||||
GROUP BY SOPMAL_CD, ORDR_INNB, RECPNT_NM, RECPNT_TELNB, RECPNT_MBTLNB, DLVYLC_ZIP, DLVYLC_ADRES_DV_CD, ADRES, DLVYLC_RNM_ADRES, DLVYLC_LNB_ADRES, DLVYLC_ADRES_DTL, DLVY_MSSAGE_CN, GIFT_MSSAGE_CN, GIFT_STTUS_CD, GIFT_STTUS_CD_NM, ORDR_STTUS_CD, ORDR_STTUS_NM, FREE_DLVY_CND_AMT, DFT_DLVY_AMT
|
||||
</select>
|
||||
|
||||
<!-- 배송지별 상품 목록 조회 -->
|
||||
<select id="selectOrderShippingGoodsList" parameterType="dataMap" resultType="dataMap">
|
||||
<![CDATA[
|
||||
|
||||
@@ -590,6 +590,8 @@
|
||||
dlvylc['recpntNm'] = data.recpntNm;
|
||||
dlvylc['recpntMbtlnb'] = data.mbtlnb;
|
||||
dlvylc['dlvylcZip'] = data.postcode;
|
||||
dlvylc['dlvylcAreaCd'] = data.dlvylcAreaCd;
|
||||
dlvylc['prefcd'] = data.prefcd;
|
||||
dlvylc['dlvylcAdresDvCd'] = data.addressType;
|
||||
dlvylc['dlvylcLnbAdres'] = data.jibunAddress;
|
||||
dlvylc['dlvylcRnmAdres'] = data.roadAddress;
|
||||
|
||||
@@ -2458,6 +2458,15 @@
|
||||
const fn_get_setle_amt = function() {
|
||||
let setle = {};
|
||||
|
||||
let dlvylc = JSON.parse(localStorage.getItem('dlvylc'));
|
||||
|
||||
if (!fn_is_empty(dlvylc)) {
|
||||
dlvylc = Object.assign({}, fn_get_dlvylc_data(), dlvylc);
|
||||
} else {
|
||||
dlvylc = fn_get_dlvylc_data();
|
||||
}
|
||||
setle['shipping'] = dlvylc;
|
||||
|
||||
setle['sopmalCd'] = $('#sopmalCd').val();
|
||||
setle['dlvylc'] = JSON.parse(localStorage.getItem('dlvylc'));
|
||||
setle['goodsList'] = JSON.parse(localStorage.getItem('goodsList'));
|
||||
@@ -2732,6 +2741,9 @@
|
||||
order['dlvylcAreaCd'] = localStorage.getItem('dlvylcAreaCd');
|
||||
order['prefcd'] = localStorage.getItem('prefcd');
|
||||
|
||||
// order['subsvcInnb'] = 0;
|
||||
// order['subsvcAt'] = 'N';
|
||||
|
||||
/* 여러곳 배송 > 배송지별 정합성 검사 시작 */
|
||||
if (ordrTyCd === '05') { // 여러곳 배송
|
||||
|
||||
|
||||
@@ -272,6 +272,8 @@
|
||||
dlvylc['recpntNm'] = data.recpntNm;
|
||||
dlvylc['recpntMbtlnb'] = data.mbtlnb;
|
||||
dlvylc['dlvylcZip'] = data.postcode;
|
||||
dlvylc['dlvylcAreaCd'] = data.dlvylcAreaCd;
|
||||
dlvylc['prefcd'] = data.prefcd;
|
||||
dlvylc['dlvylcAdresDvCd'] = data.addressType;
|
||||
dlvylc['dlvylcLnbAdres'] = data.jibunAddress;
|
||||
dlvylc['dlvylcRnmAdres'] = data.roadAddress;
|
||||
|
||||
@@ -2488,6 +2488,16 @@
|
||||
|
||||
let setle = {};
|
||||
|
||||
let dlvylc = JSON.parse(localStorage.getItem('dlvylc'));
|
||||
|
||||
if (!fn_is_empty(dlvylc)) {
|
||||
dlvylc = Object.assign({}, fn_get_dlvylc_data(), dlvylc);
|
||||
} else {
|
||||
dlvylc = fn_get_dlvylc_data();
|
||||
}
|
||||
|
||||
order['shipping'] = dlvylc;
|
||||
|
||||
setle['sopmalCd'] = $('#sopmalCd').val();
|
||||
setle['dlvylc'] = JSON.parse(localStorage.getItem('dlvylc'));
|
||||
setle['goodsList'] = JSON.parse(localStorage.getItem('goodsList'));
|
||||
|
||||
Reference in New Issue
Block a user