瀏覽代碼

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.admin.git into develop

eskim 5 年之前
父節點
當前提交
36f5cd8398
共有 35 個文件被更改,包括 1576 次插入1966 次删除
  1. 11 0
      src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java
  2. 36 27
      src/main/java/com/style24/admin/biz/dao/TsaMorebetterDao.java
  3. 17 9
      src/main/java/com/style24/admin/biz/dao/TsaRendererDao.java
  4. 26 0
      src/main/java/com/style24/admin/biz/dao/TsaSettleDao.java
  5. 35 0
      src/main/java/com/style24/admin/biz/service/TsaCustomerService.java
  6. 45 32
      src/main/java/com/style24/admin/biz/service/TsaKakaoService.java
  7. 23 7
      src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java
  8. 0 746
      src/main/java/com/style24/admin/biz/service/TsaOrderChangeService.java
  9. 21 11
      src/main/java/com/style24/admin/biz/service/TsaRendererService.java
  10. 37 0
      src/main/java/com/style24/admin/biz/service/TsaSettleService.java
  11. 58 1
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  12. 5 0
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  13. 95 32
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  14. 13 13
      src/main/java/com/style24/admin/biz/web/TsaRendererController.java
  15. 37 6
      src/main/java/com/style24/admin/biz/web/TsaSettleController.java
  16. 3 0
      src/main/java/com/style24/admin/biz/web/TsaSystemController.java
  17. 35 0
      src/main/java/com/style24/persistence/domain/AflinkFee.java
  18. 8 0
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  19. 1 4
      src/main/java/com/style24/persistence/domain/MoreBetter.java
  20. 0 5
      src/main/java/com/style24/persistence/domain/MoreBetterBurden.java
  21. 2 6
      src/main/java/com/style24/persistence/domain/MoreBetterGoods.java
  22. 0 4
      src/main/java/com/style24/persistence/domain/MoreBetterSection.java
  23. 0 392
      src/main/java/com/style24/persistence/domain/Order.java
  24. 0 84
      src/main/java/com/style24/persistence/domain/OrderChange.java
  25. 69 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml
  26. 6 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  27. 114 71
      src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml
  28. 23 10
      src/main/java/com/style24/persistence/mybatis/shop/TsaRenderer.xml
  29. 75 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaSettle.xml
  30. 21 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaSystem.xml
  31. 434 478
      src/main/webapp/WEB-INF/views/customer/CustomerDetailForm.html
  32. 92 26
      src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html
  33. 200 0
      src/main/webapp/WEB-INF/views/settle/AfLinkSettleForm.html
  34. 28 2
      src/main/webapp/WEB-INF/views/system/UserDetailForm.html
  35. 6 0
      src/main/webapp/WEB-INF/views/system/UserForm.html

+ 11 - 0
src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java

@@ -35,6 +35,14 @@ public interface TsaCustomerDao {
 	 */
 	Customer getCustomerInfo(String custNo);
 
+	/**
+	 * 회원정보 수정
+	 * @param customer - 고객정보
+	 * @author jsshin
+	 * @since 2020. 01. 20
+	 */
+	void updateCustomerInfo(Customer customer);
+
 	/**
 	 * 탈퇴회원 목록
 	 * @param customerSearch - 검색조건
@@ -52,4 +60,7 @@ public interface TsaCustomerDao {
 	 * @since 2020. 01. 14
 	 */
 	Collection<Customer> getCustomerDormantList(CustomerSearch customerSearch);
+
+	void createException();
+
 }

+ 36 - 27
src/main/java/com/style24/admin/biz/dao/TsaMorebetterDao.java

@@ -21,16 +21,16 @@ public interface TsaMorebetterDao {
     /* CSB 진행 */
     /**
      * 다다익선 프로모션 리스트
-     * @param MoreBetter
+     * @param param
      * @return
      * @author bin2107
      * @since 2020. 12. 28
      */
-    Collection<MoreBetter> getMorebetterList(MoreBetter param);
+    Collection<MoreBetter> getMorebetterList(MoreBetter moreBetter);
 
     /**
      * 다다익선 상세조회
-     * @param MoreBetter
+     * @param tmtbSq
      * @return
      * @author bin2107
      * @since 2021. 1. 8
@@ -39,7 +39,7 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 구간 조회
-     * @param MoreBetter
+     * @param tmtbSq
      * @return
      * @author bin2107
      * @since 2021. 1. 8
@@ -48,22 +48,22 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 구간 조회
-     * @param MoreBetter
+     * @param moreBetterGoods
      * @return
      * @author bin2107
      * @since 2021. 1. 8
      */
-    Collection<MoreBetterGoods> getMorebetterSupplyCompList(MoreBetterGoods merebetterGoods);
+    Collection<MoreBetterGoods> getMorebetterSupplyCompList(MoreBetterGoods moreBetterGoods);
 
-    Collection<MoreBetterGoods> getMorebetterBrandList(MoreBetterGoods merebetterGoods);
+    Collection<MoreBetterGoods> getMorebetterBrandList(MoreBetterGoods moreBetterGoods);
 
-    Collection<MoreBetterGoods> getMorebetterApplyGoodsList(MoreBetterGoods merebetterGoods);
+    Collection<MoreBetterGoods> getMorebetterApplyGoodsList(MoreBetterGoods moreBetterGoods);
 
-    Collection<MoreBetterGoods> getMorebetterExceptGoodsList(MoreBetterGoods merebetterGoods);
+    Collection<MoreBetterGoods> getMorebetterExceptGoodsList(MoreBetterGoods moreBetterGoods);
 
     /**
      * 다다익선 구간 조회
-     * @param MoreBetter
+     * @param tmtbSq
      * @return
      * @author bin2107
      * @since 2021. 1. 8
@@ -72,52 +72,61 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 마스터(TB_TMTB) 저장
-     * @param MoreBetter
+     * @param moreBetter
      * @return
      * @author bin2107
      * @since 2020. 12. 28
      */
-    void saveMorebetterMst(MoreBetter tmtb);
+    void saveMorebetterMst(MoreBetter moreBetter);
 
     /**
      * 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
-     * @param MoreBetter
+     * @param moreBetterGoods
      * @return
      * @author bin2107
      * @since 2021. 1. 7
      */
-    void saveMorebetterGoods(MoreBetterGoods regSupplyComp);
+    void saveMorebetterGoods(MoreBetterGoods moreBetterGoods);
+
+    /**
+     * 다다익선 실제적용대상 설정(TB_TMTB_APPLY_GOODS) 저장
+     * @param moreBetterGoods
+     * @return
+     * @author bin2107
+     * @since 2021. 1. 20
+     */
+    void saveMorebetterApplyGoods(MoreBetterGoods moreBetterGoods);
 
     /**
      * 다다익선 할인구간설정 2차조건(TB_TMTB_SECTION) 저장
-     * @param MoreBetter
+     * @param moreBetterSection
      * @return
      * @author bin2107
      * @since 2021. 1. 6
      */
-    void saveMorebetterSection(MoreBetterSection regSection);
+    void saveMorebetterSection(MoreBetterSection moreBetterSection);
 
     /**
      * 다다익선 조건에 따른 할인혜택(금액할인) 설정(TB_TMTB_VAL) 저장
-     * @param MoreBetter
+     * @param moreBetterSection
      * @return
      * @author bin2107
      * @since 2021. 1. 6
      */
-    void saveMorebetterVal(MoreBetterSection regSection);
+    void saveMorebetterVal(MoreBetterSection moreBetterSection);
 
     /**
      * 다다익선 업체분담율(TB_TMTB_BURDEN) 저장
-     * @param MoreBetter
+     * @param moreBetterBurden
      * @return
      * @author bin2107
      * @since 2020. 12. 28
      */
-    void saveMorebetterBurden(MoreBetterBurden regBurden);
+    void saveMorebetterBurden(MoreBetterBurden moreBetterBurden);
 
     /**
      * 다다익선 공급업체(TB_TMTB_GOODS) 삭제
-     * @param MoreBetter
+     * @param moreBetterGoods
      * @return
      * @author bin2107
      * @since 2021. 1. 12
@@ -126,7 +135,7 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 브랜드(TB_TMTB_GOODS) 삭제
-     * @param MoreBetter
+     * @param moreBetterGoods
      * @return
      * @author bin2107
      * @since 2021. 1. 12
@@ -135,7 +144,7 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 적용상품(TB_TMTB_GOODS) 삭제
-     * @param MoreBetter
+     * @param moreBetterGoods
      * @return
      * @author bin2107
      * @since 2021. 1. 12
@@ -144,7 +153,7 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 제외상품(TB_TMTB_GOODS) 삭제
-     * @param MoreBetter
+     * @param moreBetterGoods
      * @return
      * @author bin2107
      * @since 2021. 1. 12
@@ -153,7 +162,7 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 할인구간설정(TB_TMTB_SECTION) 삭제
-     * @param MoreBetter
+     * @param moreBetterSection
      * @return
      * @author bin2107
      * @since 2021. 1. 6
@@ -162,7 +171,7 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 조건에 따른 할인혜택(금액할인) 설정(TB_TMTB_VAL) 삭제
-     * @param MoreBetter
+     * @param moreBetterSection
      * @return
      * @author bin2107
      * @since 2021. 1. 6
@@ -171,7 +180,7 @@ public interface TsaMorebetterDao {
 
     /**
      * 다다익선 업체분담율(TB_TMTB_BURDEN) 삭제
-     * @param MoreBetter
+     * @param moreBetterBurden
      * @return
      * @author bin2107
      * @since 2021. 1. 12

+ 17 - 9
src/main/java/com/style24/admin/biz/dao/TsaRendererDao.java

@@ -204,15 +204,6 @@ public interface TsaRendererDao {
 	 */
 	Collection<CommonCode> getQnaAnswerPhaseList(String ansClsf);
 
-//	/**
-//	 * 제휴링크 목록
-//	 * @param afChannel - 제휴채널
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 5. 4
-//	 */
-//	Collection<CommonCode> getAflinkList(String afChannel);
-
 	/**
 	 * 색상그룹코드 RGB 목록
 	 *
@@ -233,4 +224,21 @@ public interface TsaRendererDao {
 	 */
 	Collection<CommonCode> getSupplyDeliveryFeePolicyList(String supplyCompCd);
 
+	/**
+	 * 전체 제휴채널 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	Collection<CommonCode> getAllAflinkList();
+
+	/**
+	 * 제휴채널 목록
+	 * @param afChannel - 상위제휴채널
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	Collection<CommonCode> getAflinkList(String afChannel);
+
 }

+ 26 - 0
src/main/java/com/style24/admin/biz/dao/TsaSettleDao.java

@@ -0,0 +1,26 @@
+package com.style24.admin.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.AflinkFee;
+
+/**
+ * 정산 Dao
+ *
+ * @author gagamel
+ * @since 2021. 1. 20
+ */
+@ShopDs
+public interface TsaSettleDao {
+
+	/**
+	 * 제휴채널정산 목록
+	 * @param afLinkFee - 제휴채널정산 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	Collection<AflinkFee> getAfLinkFeeList(AflinkFee afLinkFee);
+
+}

+ 35 - 0
src/main/java/com/style24/admin/biz/service/TsaCustomerService.java

@@ -1,11 +1,15 @@
 package com.style24.admin.biz.service;
 
 import com.style24.admin.biz.dao.TsaCustomerDao;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.dao.TscCustomerDao;
+import com.style24.core.biz.service.TscCustomerService;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collection;
 
@@ -22,6 +26,9 @@ public class TsaCustomerService {
 	@Autowired
 	private TsaCustomerDao customerDao;
 
+	@Autowired
+	private TscCustomerService coreCustomerService;
+
 	/**
 	 * 활동회원 목록
 	 * @param customerSearch - 검색조건
@@ -44,6 +51,34 @@ public class TsaCustomerService {
 		return customerDao.getCustomerInfo(custNo);
 	}
 
+	/**
+	 * 회원정보 수정
+	 * @param customer - 고객정보
+	 * @author jsshin
+	 * @since 2020. 01. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void saveCustomerInfo(Customer customer) {
+		Integer userNo = TsaSession.getInfo().getUserNo();
+		customer.setRegNo(userNo);
+		customer.setUpdNo(userNo);
+		// 고객 이력 생성
+		coreCustomerService.createCustomerHistory(customer);
+		// 정보 수정
+		customerDao.updateCustomerInfo(customer);
+	}
+
+	/**
+	 * 회원 비밀번호 수정
+	 * @param customer - 고객정보
+	 * @author jsshin
+	 * @since 2020. 01. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void updateCustomerPassword(Customer customer) {
+		coreCustomerService.updateCustomerPassword(customer);
+	}
+
 	/**
 	 * 탈퇴회원 목록
 	 * @param customerSearch - 검색조건

+ 45 - 32
src/main/java/com/style24/admin/biz/service/TsaKakaoService.java

@@ -1,11 +1,19 @@
 package com.style24.admin.biz.service;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscCustomerService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.CustContactHst;
+import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.SsgDirectMessage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.core.biz.thirdparty.SsgKakaoSender;
 
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 카카오알림톡 Service. 모든 카카오알림톡 발송은 여기에서 처리한다.
@@ -20,38 +28,43 @@ public class TsaKakaoService {
 	@Autowired
 	private SsgKakaoSender kakaoSender;
 
-//	/**
-//	 * 고객 임시비밀번호 알림톡 발송
-//	 * @param counsel - 상담 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 9
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void sendCustomerTempPassword(AdmCustomer customer) {
-//		SsgDirectMessage dm = new SsgDirectMessage();
-//		dm.setFuserid(String.valueOf(TsaSession.getInfo().getUserNo())); // 발송자ID
-//		dm.setFdestine(customer.getCellPhnno());
-//		dm.setFkkoresendtype("LMS");
-//
-//		GagaMap replaceInfo = new GagaMap();
-//		replaceInfo.setString("siteNm", customer.getSiteNm());
-//		replaceInfo.setString("custNm", customer.getCustNm());
-//		replaceInfo.setString("passwd", customer.getPasswd());
-//
-//		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.TempPasswd.value(), dm, replaceInfo);
-//
-//		try {
-//			// 고객접촉이력 정보
-//			customer.setContactType("203"); // 접촉유형:임시비밀번호발급(공통코드G054)
-//			customer.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); // 접촉방법:알림톡+문자(공통코드G055)
-//			customer.setContactContents("고객 임시비밀번호 발송");
-//			customer.setReceiverId(customer.getCustNo());
-//			customerService.createCustomerContactHistory(customer);
-//		} catch (Exception e) {
-//			log.error("error", e);
-//			// Do nothing
-//		}
-//	}
+	@Autowired
+	private TscCustomerService coreCustomerService;
+
+	/**
+	 * 고객 임시비밀번호 알림톡 발송
+	 * @param customer - 고객 정보
+	 * @author jsshin
+	 * @since 2021. 01. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void sendCustomerTempPassword(Customer customer) {
+		Integer userNo = TsaSession.getInfo().getUserNo();
+		SsgDirectMessage dm = new SsgDirectMessage();
+		dm.setFuserid(String.valueOf(userNo)); // 발송자NO
+		dm.setFdestine(customer.getCellPhnno());
+		dm.setFkkoresendtype("LMS");
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setString("siteNm", TscConstants.Style24Infomation.SITE_NAME.value());
+		replaceInfo.setString("custNm", customer.getCustNm());
+		replaceInfo.setString("passwd", customer.getPasswd());
+
+		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.TempPasswd.value(), dm, replaceInfo);
+
+		try {
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.PASSWORD_INFO.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("고객 임시비밀번호 발송");
+			custContactHst.setReceiverNo(customer.getCustNo());
+			custContactHst.setSenderNo(userNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
 //
 //	/**
 //	 * 일대일문의 답변 알림톡 발송

+ 23 - 7
src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java

@@ -133,7 +133,7 @@ public class TsaMorebetterService {
 
         // <,> replace 처리
         moreBetter.setRegNo(TsaSession.getInfo().getUserNo());
-        moreBetter.setUdpNo(TsaSession.getInfo().getUserNo());
+        moreBetter.setUpdNo(TsaSession.getInfo().getUserNo());
 
         // TMTB 마스터(TB_TMTB) 저장
         morebetterDao.saveMorebetterMst(moreBetter);
@@ -154,7 +154,7 @@ public class TsaMorebetterService {
             regSupplyComp.setGoodsGb("G800_20");
             regSupplyComp.setTargetVal(regSupplyComp.getSupplyCompCd());
             regSupplyComp.setRegNo(moreBetter.getRegNo());
-            regSupplyComp.setUdpNo(moreBetter.getUdpNo());
+            regSupplyComp.setUpdNo(moreBetter.getUpdNo());
 
             morebetterDao.saveMorebetterGoods(regSupplyComp);
         }
@@ -174,7 +174,7 @@ public class TsaMorebetterService {
             regBrand.setGoodsGb("G800_20");
             regBrand.setTargetVal(regBrand.getBrandCd());
             regBrand.setRegNo(moreBetter.getRegNo());
-            regBrand.setUdpNo(moreBetter.getUdpNo());
+            regBrand.setUpdNo(moreBetter.getUpdNo());
 
             morebetterDao.saveMorebetterGoods(regBrand);
         }
@@ -190,12 +190,20 @@ public class TsaMorebetterService {
                 tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
                 regApplyGoods.setTmtbGoodsSq(tmtbGoodsSq);
             }
+
+            log.info("regApplyGoods.getTmtbApplyGoodsSq = {}",regApplyGoods.getTmtbApplyGoodsSq());
+            Integer tmtbApplyGoodsSq = regApplyGoods.getTmtbApplyGoodsSq();
+            if(tmtbApplyGoodsSq == null){
+                tmtbApplyGoodsSq =  commonService.getNextSequence("SEQ_TMTB_APPLY_GOODS");
+                regApplyGoods.setTmtbApplyGoodsSq(tmtbApplyGoodsSq);
+            }
             regApplyGoods.setTmtbSq(moreBetter.getTmtbSq());
             regApplyGoods.setTargetVal(regApplyGoods.getGoodsCd());
             regApplyGoods.setRegNo(moreBetter.getRegNo());
-            regApplyGoods.setUdpNo(moreBetter.getUdpNo());
+            regApplyGoods.setUpdNo(moreBetter.getUpdNo());
 
             morebetterDao.saveMorebetterGoods(regApplyGoods);
+            morebetterDao.saveMorebetterApplyGoods(regApplyGoods);
         }
 
         // 제외상품
@@ -209,12 +217,20 @@ public class TsaMorebetterService {
                 tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
                 regExceptGoods.setTmtbGoodsSq(tmtbGoodsSq);
             }
+
+            log.info("regExceptGoods.getTmtbApplyGoodsSq = {}",regExceptGoods.getTmtbApplyGoodsSq());
+            Integer tmtbApplyGoodsSq = regExceptGoods.getTmtbApplyGoodsSq();
+            if(tmtbApplyGoodsSq == null){
+                tmtbApplyGoodsSq =  commonService.getNextSequence("SEQ_TMTB_APPLY_GOODS");
+                regExceptGoods.setTmtbApplyGoodsSq(tmtbApplyGoodsSq);
+            }
             regExceptGoods.setTmtbSq(moreBetter.getTmtbSq());
             regExceptGoods.setTargetVal(regExceptGoods.getGoodsCd());
             regExceptGoods.setRegNo(moreBetter.getRegNo());
-            regExceptGoods.setUdpNo(moreBetter.getUdpNo());
+            regExceptGoods.setUpdNo(moreBetter.getUpdNo());
 
             morebetterDao.saveMorebetterGoods(regExceptGoods);
+            morebetterDao.saveMorebetterApplyGoods(regExceptGoods);
         }
 
         // 다다익선 할인구간 저장
@@ -239,7 +255,7 @@ public class TsaMorebetterService {
             }
             regSection.setTmtbSq(moreBetter.getTmtbSq());
             regSection.setRegNo(moreBetter.getRegNo());
-            regSection.setUdpNo(moreBetter.getUdpNo());
+            regSection.setUpdNo(moreBetter.getUpdNo());
 
             morebetterDao.saveMorebetterSection(regSection);
             morebetterDao.saveMorebetterVal(regSection);
@@ -257,7 +273,7 @@ public class TsaMorebetterService {
             }
             regBurden.setTmtbSq(moreBetter.getTmtbSq());
             regBurden.setRegNo(moreBetter.getRegNo());
-            regBurden.setUdpNo(moreBetter.getUdpNo());
+            regBurden.setUpdNo(moreBetter.getUpdNo());
 
             morebetterDao.saveMorebetterBurden(regBurden);
         }

+ 0 - 746
src/main/java/com/style24/admin/biz/service/TsaOrderChangeService.java

@@ -45,753 +45,7 @@ public class TsaOrderChangeService {
 
 	@Autowired
 	private ObjectMapper mapper;
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문취소,반품,교환 대상목록
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public Collection<Order> getCancelRequestTargetList(Order order) {
-		return orderChangeDao.getCancelRequestTargetList(order);
-	}
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문취소, 반품 환불 금액 계산
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public GagaMap orderCancelRefundAmt(List<Order> cancelReqList) {
-		GagaMap mav = new GagaMap();
-		
-		// 1. 변수설정
-		int spanPayAmt				= 0; // 총 결제 금액
-		int spanSumRealOrdAmt		= 0; // 상품 실결제 금액
-		int spanSumDeliveryFee		= 0; // 배송금액
-		int spanRtnSumDeliveryFee 	= 0; // 반품배송금액
-		int spanExcSumDeliveryFee 	= 0; // 교환배송금액
-		int spanOrdAmt				= 0; // 주문 상품 금액
-		int spanCnclRtnAmt			= 0; // 취소 상품 금액
-		int spanTotPntDcAmt			= 0; // 취소 사용 포인트
-		int spanPntDcAmt			= 0; // 고객 포인트
-		int spanPrePntDcAmt			= 0; // 상품 선포인트
-		int spanCpnDcAmt			= 0; // 취소 사용 쿠폰금액
-		int spanCpn1DcAmt			= 0; // 즉시할인쿠폰
-		int spanGoodsCpnDcAmt		= 0; // 상품쿠폰
-		int spanCartCpnDcAmt		= 0; // 장바구니쿠폰
-		int spanTmtbDcAmt			= 0; // 취소 다다익선 금액
-		int spanTmtb1DcAmt			= 0; // 수량할인
-		int spanTmtb2DcAmt			= 0; // 금액할인
-		int spanGfcdUseAmt			= 0; // 취소 고객 상품권 금액
-		int spanRealCnclRtnAmt		= 0; // 취소 상품 실결제 금액
-		int spanTotDeliveryFee		= 0; // 환불 배송 금액
-		int spanRefundAmt			= 0; // 환불 금액 합계
-		
-		int sumDeliveryFee			= 0; // 배송금액 (전체 취소시에 배송금액도 같이 환불)
-		
-		List<Order> cancelOrderRefundList 	= new ArrayList<Order>();	// 주문환불금액목록
-		List<Order> cancelDelvRefundList 	= new ArrayList<Order>();	// 주문환불배송금액목록
-		
-		Order orderObj	= new Order();
-		Order delvObj	= new Order();
-		int k 			= 0 ;
-		
-		// 2. 초기 배송정보 설정
-		delvObj.setOrdAmt(0);
-		delvObj.setCnclRtnAmt(0);
-		delvObj.setRealOrdAmt(0);
-		delvObj.setDelvFee(cancelReqList.get(k).getDelvFee());
-		delvObj.setMinOrdAmt(cancelReqList.get(k).getMinOrdAmt());
-		delvObj.setOrgDelvFee(cancelReqList.get(k).getOrgDelvFee());
-		delvObj.setRtnDelvFee(cancelReqList.get(k).getRtnDelvFee());
-		delvObj.setExcDelvFee(cancelReqList.get(k).getExcDelvFee());
-		delvObj.setSupplyCompCd(cancelReqList.get(k).getSupplyCompCd());
-		delvObj.setDelvFeeCd(cancelReqList.get(k).getDelvFeeCd());
-		delvObj.setAllCanYn(cancelReqList.get(k).getAllCanYn());
-		cancelDelvRefundList.add(delvObj);
-		
-		// 3. 취소신청수량 정보를 취소 환불 금액 계산
-		for (Order oneData : cancelReqList) {
-			orderObj	= new Order();
-			
-			// 3.1 주문기본정보 설정
-			orderObj.setItemQty(oneData.getItemQty());
-			orderObj.setOrdQty(oneData.getOrdQty());
-			orderObj.setCnclRtnQty(oneData.getCnclRtnQty());
-			orderObj.setOrdReqChgQty(oneData.getOrdReqChgQty());
-			orderObj.setOrdCanChgQty(oneData.getOrdCanChgQty());
-			orderObj.setItemPrice(oneData.getItemPrice());
-			orderObj.setOptAddPrice	(oneData.getOptAddPrice());
-			orderObj.setOrdAmt(oneData.getOrdAmt());
-			
-			orderObj.setOrdNo(oneData.getOrdNo());
-			orderObj.setOrdDtlNo(oneData.getOrdDtlNo());
-			orderObj.setGoodsCd(oneData.getGoodsCd());
-			orderObj.setGoodsNm(oneData.getGoodsNm());
-			orderObj.setOrdDtlItemSq(oneData.getOrdDtlItemSq());
-			orderObj.setItemCd(oneData.getItemCd());
-			orderObj.setItemNm(oneData.getItemNm());
-			orderObj.setOptCd1(oneData.getOptCd1());
-			orderObj.setOptCd2(oneData.getOptCd2());
-			
-			// 3.2 주문취소수량으로 취소율 정보 설정
-			int ordQty 			= oneData.getOrdQty();
-			int itemQty 		= oneData.getItemQty();
-			int ordCanChgQty 	= oneData.getOrdCanChgQty();
-			
-			float _appQty		= (float)ordCanChgQty / (float)ordQty;
-			
-			// 3.3 주문취소금액 & 취소할인금액 계산
-			orderObj.setCnclRtnAmt(((oneData.getItemPrice() + oneData.getOptAddPrice()) * itemQty) * ordCanChgQty);
-			orderObj.setCpn1DcAmt((int)(oneData.getCpn1DcAmt() 				* _appQty));
-			orderObj.setTmtb1DcAmt((int)(oneData.getTmtb1DcAmt() 			* _appQty));
-			orderObj.setTmtb2DcAmt((int)(oneData.getTmtb2DcAmt() 			* _appQty));
-			orderObj.setGoodsCpnDcAmt((int)(oneData.getGoodsCpnDcAmt() 		* _appQty));
-			orderObj.setCartCpnDcAmt((int)(oneData.getCartCpnDcAmt() 		* _appQty));
-			orderObj.setPntDcAmt((int)(oneData.getPntDcAmt() 				* _appQty));
-			orderObj.setPrePntDcAmt((int)(oneData.getPrePntDcAmt() 			* _appQty));
-			orderObj.setSavePntAmt((int)(oneData.getSavePntAmt() 			* _appQty));
-			orderObj.setGfcdUseAmt((int)(oneData.getGfcdUseAmt() 			* _appQty));
-			
-			// 3.4 취소할인합계금액 적용
-			int dcTotAmt		= 0;
-			dcTotAmt			+= orderObj.getTmtb1DcAmt();
-			dcTotAmt			+= orderObj.getTmtb2DcAmt();
-			dcTotAmt			+= orderObj.getGoodsCpnDcAmt();
-			dcTotAmt			+= orderObj.getCartCpnDcAmt();
-			dcTotAmt			+= orderObj.getPntDcAmt();
-			dcTotAmt			+= orderObj.getPrePntDcAmt();
-			dcTotAmt			+= orderObj.getCpn1DcAmt();
-			dcTotAmt			+= orderObj.getGfcdUseAmt();
-			
-			// 3.5 주문취소환불금액 계산
-			orderObj.setRealOrdAmt(orderObj.getCnclRtnAmt() - dcTotAmt);
-			
-			// 3.6 배송정보 관련 설정		
-			orderObj.setOrdDtlNo(oneData.getOrdDtlNo());
-			orderObj.setGoodsTypeNm(oneData.getGoodsTypeNm());
-			orderObj.setDelvFee(oneData.getDelvFee());
-			orderObj.setSupplyCompCd(oneData.getSupplyCompCd());
-			orderObj.setDelvFeeCd(oneData.getDelvFeeCd());
-			orderObj.setMinOrdAmt(oneData.getMinOrdAmt());
-			orderObj.setOrgDelvFee(oneData.getOrgDelvFee());
-			orderObj.setRtnDelvFee(oneData.getRtnDelvFee());
-			orderObj.setExcDelvFee(oneData.getExcDelvFee());
-			
-			// 3.7 주문상세상태체크
-			orderObj.setOrdDtlStat(oneData.getOrdDtlStat());
-			orderObj.setOrdDtlStatNm(oneData.getOrdDtlStatNm());
-			orderObj.setAllCanYn(oneData.getAllCanYn()); // 전체취소 여부 (기존의 취소 또는 출고, 반품, 교환 의 경우에는 전체취소 불가능)
-			
-			cancelOrderRefundList.add(orderObj);
-			
-			// 3.8 배송업체 & 배송비정책 조건으로 추가 배송비 금액 설정
-			if (cancelDelvRefundList.get(k).getSupplyCompCd().equals(orderObj.getSupplyCompCd()) && cancelDelvRefundList.get(k).getDelvFeeCd().equals(orderObj.getDelvFeeCd())) {
-				// 공급업체 와 배송정책코드가 같으면 주문금액, 취소금액 SUM
-				cancelDelvRefundList.get(k).setOrdAmt(cancelDelvRefundList.get(k).getOrdAmt() + orderObj.getOrdAmt());
-				cancelDelvRefundList.get(k).setCnclRtnAmt(cancelDelvRefundList.get(k).getCnclRtnAmt() + orderObj.getCnclRtnAmt());
-				cancelDelvRefundList.get(k).setRealOrdAmt(cancelDelvRefundList.get(k).getRealOrdAmt() + orderObj.getRealOrdAmt());
-				
-				if ("N".equals(orderObj.getAllCanYn())) {
-					cancelDelvRefundList.get(k).setAllCanYn("N");
-				}
-			} else {			
-				k++;
-				
-				delvObj	= new Order();
-				
-				// 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
-				delvObj.setOrdAmt(orderObj.getOrdAmt());
-				delvObj.setCnclRtnAmt(orderObj.getCnclRtnAmt());
-				delvObj.setRealOrdAmt(orderObj.getRealOrdAmt());
-				
-				delvObj.setDelvFee(orderObj.getDelvFee());
-				delvObj.setMinOrdAmt(orderObj.getMinOrdAmt());		
-				delvObj.setOrgDelvFee(orderObj.getOrgDelvFee());
-				delvObj.setRtnDelvFee(orderObj.getRtnDelvFee());
-				delvObj.setExcDelvFee(orderObj.getExcDelvFee());
-				delvObj.setSupplyCompCd(orderObj.getSupplyCompCd());
-				delvObj.setDelvFeeCd(orderObj.getDelvFeeCd());
-				delvObj.setAllCanYn(orderObj.getAllCanYn());
-				
-				cancelDelvRefundList.add(delvObj);
-			}
-			
-			// 3.9 FRONT 화면에서 사용 하는 변수 값 설정 & 계산
-			spanSumRealOrdAmt	+= oneData.getRealOrdAmt();
-			spanPntDcAmt		+= orderObj.getPntDcAmt();
-			spanPrePntDcAmt		+= orderObj.getPrePntDcAmt();
-			spanCpn1DcAmt		+= orderObj.getCpn1DcAmt();
-			spanGoodsCpnDcAmt	+= orderObj.getGoodsCpnDcAmt();
-			spanCartCpnDcAmt	+= orderObj.getCartCpnDcAmt();
-			spanTmtb1DcAmt		+= orderObj.getTmtb1DcAmt();
-			spanTmtb2DcAmt		+= orderObj.getTmtb2DcAmt();
-			spanGfcdUseAmt		+= orderObj.getGfcdUseAmt();
-			spanRealCnclRtnAmt	+= orderObj.getRealOrdAmt();
-		}
-		
-		// 4. 추가배송비 발생여부, 추가배송비, 배송비정책단위 전체취소 여부 체크
-		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
-			Order obj = cancelDelvRefundList.get(i);
-			
-			// 취소금액이 있을때 처리
-			if (obj.getCnclRtnAmt() > 0) {
-			
-				// 4.1 무료배송비용 > (주문금액 - 취소금액)
-				if (obj.getMinOrdAmt() > (obj.getOrdAmt() - obj.getCnclRtnAmt())) {
-					
-					// 4.2 주문시 배송비가 존재하면 추가 배송비 없음
-					if (obj.getDelvFee() > 0) {
-						obj.setAddDelvFeeYn("N");
-						obj.setAddDelvFee(0);
-						
-						// 4.2.1 전체취소시 배송비 환불
-						if ((obj.getOrdAmt() - obj.getCnclRtnAmt()) == 0) {
-							if ("Y".equals(obj.getAllCanYn())) {
-								sumDeliveryFee += obj.getDelvFee(); // 전체취소시 배송금액도 같이 환불
-							}
-						}
-					} else {
-						// 4.3 주문금액 - 취소금액 == 0 이면 전체취소 이므로 배송비 발생 안함
-						// * 2020.12.28 
-						// * case : 배송정책 기준으로 1,2 상품 주문 후 1번 출고 후 1번반품 2번취소 할 경우 전체 취소 가 아니므로 배송비 부과 있을지 모르겠음 주문업체 단위로 배송되기 때문에 발생하지 않을것 같음
-						if ((obj.getOrdAmt() - obj.getCnclRtnAmt()) == 0) {
-							if ("N".equals(obj.getAllCanYn())) {
-								obj.setAddDelvFeeYn("Y");
-								obj.setAddDelvFee(obj.getOrgDelvFee());
-							} else {
-								// 4.4 전체취소의 경우에 해당
-								obj.setAddDelvFeeYn("N");
-								obj.setAddDelvFee(0);
-							}
-						} else {
-							// 4.5 추가배송비 발생 (취소신청화면에서 대부분 아래의 조건에 해당)
-							obj.setAddDelvFeeYn("Y");
-							obj.setAddDelvFee(obj.getOrgDelvFee());
-						}
-					}
-				} else {
-					obj.setAddDelvFeeYn("N");
-					obj.setAddDelvFee(0);
-				}
-			}
-				
-			spanSumDeliveryFee		+= obj.getDelvFee();
-			spanRtnSumDeliveryFee	+= obj.getRtnDelvFee();
-			spanExcSumDeliveryFee	+= obj.getExcDelvFee();
-			spanOrdAmt				+= obj.getOrdAmt();
-			spanCnclRtnAmt			+= obj.getCnclRtnAmt();
-			spanTotDeliveryFee  	+= obj.getAddDelvFee();
-			
-			cancelDelvRefundList.set(i, obj);
-		}
-		
-		// 5. FRONT 화면엣 필요한 금액 설정
-		// 2020.12.30 프론트에서 필요한 부분 작업 필여
-		// 관리자 화면에서 사용하는 환불 칼럼 정보
-		// 환불금액표시
-		spanPayAmt 			= spanSumRealOrdAmt + spanSumDeliveryFee;
-		spanTotPntDcAmt 	= spanPntDcAmt + spanPrePntDcAmt;
-		spanCpnDcAmt 		= spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt;
-		spanTmtbDcAmt 		= spanTmtb1DcAmt + spanTmtb2DcAmt;
-		spanRefundAmt 		= (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee;
-
-		mav.set("cancelReqList"			, cancelReqList);			//주문 취소 신청 목록
-		mav.set("cancelOrderRefundList"	, cancelOrderRefundList);	//주문 환불 금액 목록
-		mav.set("cancelDelvRefundList"	, cancelDelvRefundList);	//주문 환불 배송 금액 목록
-		mav.set("spanPayAmt"			, spanPayAmt);				//총 결제 금액
-		mav.set("spanSumRealOrdAmt"		, spanSumRealOrdAmt);		//상품 실결제 금액
-		mav.set("spanSumDeliveryFee"	, spanSumDeliveryFee);		//배송금액
-		mav.set("spanOrdAmt"			, spanOrdAmt);				//주문 상품 금액
-		mav.set("spanCnclRtnAmt"		, spanCnclRtnAmt);			//취소 상품 금액
-		mav.set("spanTotPntDcAmt"		, spanTotPntDcAmt);			//취소 사용 포인트
-		mav.set("spanPntDcAmt"			, spanPntDcAmt);			//고객 포인트
-		mav.set("spanPrePntDcAmt"		, spanPrePntDcAmt);			//상품 선포인트
-		mav.set("spanCpnDcAmt"			, spanCpnDcAmt);			//취소 사용 쿠폰금액
-		mav.set("spanCpn1DcAmt"			, spanCpn1DcAmt);			//즉시할인쿠폰
-		mav.set("spanGoodsCpnDcAmt"		, spanGoodsCpnDcAmt);		//상품쿠폰
-		mav.set("spanCartCpnDcAmt"		, spanCartCpnDcAmt);		//장바구니쿠폰
-		mav.set("spanTmtbDcAmt"			, spanTmtbDcAmt);			//취소 다다익선 금액
-		mav.set("spanTmtb1DcAmt"		, spanTmtb1DcAmt);			//수량할인
-		mav.set("spanTmtb2DcAmt"		, spanTmtb2DcAmt);			//금액할인
-		mav.set("spanGfcdUseAmt"		, spanGfcdUseAmt);			//취소 고객 상품권 금액
-		mav.set("spanRealCnclRtnAmt"	, spanRealCnclRtnAmt);		//취소 상품 실결제 금액
-		mav.set("sumDeliveryFee"		, sumDeliveryFee);			//배송비 합계 금액
-		mav.set("spanTotDeliveryFee"	, spanTotDeliveryFee);		//추가 배송 금액
-		mav.set("spanTotRtnDelvFee"		, spanRtnSumDeliveryFee);	//추가 반품 배송 금액
-		mav.set("spanTotExcDelvFee"		, spanExcSumDeliveryFee);	//추가 교환 배송 금액
-		mav.set("spanRefundAmt"			, spanRefundAmt);			//환불 금액 합계
-		
-		return mav;
-	}
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문취소
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 30
-	 */
-	@Transactional("shopTxnManager")
-	public void orderCancel(GagaMap mav) {
-		
-		// 1. 세션회원조회
-		int userNo = TsaSession.getInfo().getUserNo();
-		
-		// 2. 취소요정정보목록
-		List<Order> cancelReqList		 	= (List<Order>) mav.get("cancelReqList");			//주문 취소 신청 목록
-		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	//주문 환불 금액 목록
-		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	//주문 환불 배송 금액 목록
-				
-		// 3. 취소신청정보
-		int ordNo 			= Integer.parseInt(mav.getString("ordNo").toString());
-		String chgReason 	= mav.getString("chgReason").toString();
-		String chgMemo 		= mav.getString("chgMemo").toString();
-		String allCanYn		= mav.getString("allCanYn").toString();
-		String isCustomer	= mav.getString("isCustomer").toString();
-		String chgGb		= "G680_20"; // 취소요청
-		
-		// 4.1 주문변경 기본정보 등록
-		OrderChange orderChange = new OrderChange();
-		orderChange.setOrdNo(ordNo);
-		orderChange.setChgGb(chgGb);
-		orderChange.setChgReason(chgReason);
-		orderChange.setChgMemo(chgMemo);
-		orderChange.setAddPayCost(0);
-		orderChange.setAddPayAmt(0);
-		orderChange.setRegNo(userNo);
-		orderChange.setUpdNo(userNo);
-		
-		// 4.2 주문변경 추가정조 등록하기
-		// 4.2 반품회수지 정보 등록
-		String chgerNm 			= mav.getString("chgerNm").toString();
-		String chgerPhnno 		= mav.getString("chgerPhnno").toString();
-		String chgerTelno 		= mav.getString("chgerTelno").toString();
-		String chgerEmail 		= mav.getString("chgerEmail").toString();
-		
-		orderChange.setChgerNm(chgerNm);
-		orderChange.setChgerPhnno(chgerPhnno);
-		orderChange.setChgerTelno(chgerTelno);
-		orderChange.setChgerEmail(chgerEmail);
-		orderChange.setChgerRtnMemo("");
-		
-		orderChangeDao.createOrderChange(orderChange);
-		
-		List<Order> cancelOrderDetailList = new ArrayList<Order>();
-		
-		// 4.2 주문변경 상세 단품 정보 등록 (단품단위)
-		for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
-			Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
-			cancelOrderRefundPo.setRegNo(userNo);
-			cancelOrderRefundPo.setUpdNo(userNo);
-			
-			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
-			if ("Y".equals(allCanYn)) {
-				cancelOrderRefundPo.setOrdDtlStat("G013_98"); // 결제전주문취소 : 공통코드로관리예정
-			} else {
-				cancelOrderRefundPo.setOrdDtlStat("G013_99"); // 결제후주문취소 : 공통코드로관리예정
-			}
-
-			// 4.2.1 취소수량이 존재하면 주문정보 수정 및 주문변경정보 등록
-			if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
-				// 4.2.3 주문상세단품정보 수정
-				orderChangeDao.updateOrderDetailItem(cancelOrderRefundPo);
-				
-				// 4.2.4 주문상세단품정보 이력 등록
-				orderChangeDao.createOrderDetailItemHst(cancelOrderRefundPo);
-				
-				// 4.3 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
-				Boolean temp = false;
-				
-				if (cancelOrderDetailList.size() > 0) {
-					for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
-						if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
-							temp = true;
-						}
-					}
-				}
-				
-				// 4.4 주문상세단위 데이타 저장
-				if (!temp) {
-					cancelOrderDetailList.add(cancelOrderRefundPo);
-				}
-				
-				// 4.5 상품옵션 재고 원복
-				orderChangeDao.updateOptionQty(cancelOrderRefundPo);
-			}
-		}
 		
-		// 5. 주문상세단위 취소 데이타 처리
-		for (int i=0 ; i<cancelOrderDetailList.size() ; i++) {			
-			Order vo = cancelOrderRefundList.get(i);
-			vo.setRegNo(userNo);
-			vo.setUpdNo(userNo);
-			
-			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
-			if ("Y".equals(allCanYn)) {
-				vo.setOrdDtlStat("G013_98"); // 결제전주문취소 : 공통코드로관리예정
-			} else {
-				vo.setOrdDtlStat("G013_99"); // 결제후주문취소 : 공통코드로관리예정
-			}
-			
-			// 5.1 주문변경상세정보 이력 등록
-			orderChangeDao.createOrderDetailHstCnclRtn(vo);
-			
-			// 4.2 주문변경상세정보 수정
-			orderChangeDao.updateOrderDetail(vo);
-			
-			// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음
-			// 5.3 주문변경상세정보 등록
-			OrderChange changeDetailPo = new OrderChange();
-			changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
-			changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
-			changeDetailPo.setChgQty(vo.getOrdCanChgQty());
-			changeDetailPo.setChgStat("G685_21"); // 취소완료 : 공통코드로관리예정
-			changeDetailPo.setRegNo(userNo);
-			changeDetailPo.setUpdNo(userNo);
-			
-			orderChangeDao.createOrderChangeDetail(changeDetailPo);
-		}
-		
-		// To Do List
-		// 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
-		int spanRealCnclRtnAmt 		= Integer.parseInt(mav.get("spanRealCnclRtnAmt").toString());		// 취소금액합계
-		int sumDeliveryFee 			= Integer.parseInt(mav.get("sumDeliveryFee").toString());			// 배송비합계
-		int spanTotDeliveryFee 		= Integer.parseInt(mav.get("spanTotDeliveryFee").toString());		// 추가배송비합계
-		int spanTotRtnDelvFee 		= Integer.parseInt(mav.get("spanTotRtnDelvFee").toString());		// 반품배송비합계
-		int spanRefundAmt			= 0;
-		
-		// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
-		if ("true".equals(isCustomer)) {
-			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
-			//Integer.parseInt(mav.get("spanRefundAmt").toString());
-		}
-		// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
-		else {
-			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
-		}
-		mav.set("spanRefundAmt", spanRefundAmt);
-		
-		// 6. 환불결제 정보 등록
-		Order paymentOrder = new Order();
-		paymentOrder.setOrdNo(ordNo);
-		paymentOrder.setPayAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()) * -1);
-		paymentOrder.setPayStat("G016_99");
-		paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
-		paymentOrder.setRegNo(userNo);
-		paymentOrder.setUpdNo(userNo);
-		
-		orderChangeDao.createPayment(paymentOrder);
-		
-		// 7. 환불금액 등록
-		Order refundOrder = new Order();
-		refundOrder.setOrdNo(ordNo);
-		refundOrder.setPaySq(paymentOrder.getPaySq());
-		refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
-		refundOrder.setRegNo(userNo);
-		
-		refundOrder.setRefundAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()));
-		refundOrder.setRfCpn1Amt(Integer.parseInt(mav.get("spanCpn1DcAmt").toString()));
-		refundOrder.setRfTmtb1Amt(Integer.parseInt(mav.get("spanTmtb1DcAmt").toString()));
-		refundOrder.setRfTmtb2Amt(Integer.parseInt(mav.get("spanTmtb2DcAmt").toString()));
-		refundOrder.setRfGoodsCpnAmt(Integer.parseInt(mav.get("spanGoodsCpnDcAmt").toString()));
-		refundOrder.setRfCartCpnAmt(Integer.parseInt(mav.get("spanCartCpnDcAmt").toString()));
-		refundOrder.setRfPntAmt(Integer.parseInt(mav.get("spanPntDcAmt").toString()));
-		refundOrder.setRfPrePntAmt(Integer.parseInt(mav.get("spanPrePntDcAmt").toString()));
-		refundOrder.setRfGfcdUseAmt(Integer.parseInt(mav.get("spanGfcdUseAmt").toString()));
-		
-		refundOrder.setRaNo(mav.get("accountNo").toString());
-		refundOrder.setRaNm(mav.get("accountNm").toString());
-		refundOrder.setRaBank(mav.get("bankCd").toString());
-		
-		orderChangeDao.createRefund(refundOrder);
-		
-		// 8. 결제금액이 무료배송금액보다 작으면 배송비 신규 등록
-		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
-			Order vo = cancelDelvRefundList.get(i);
-			
-			if (vo.getAddDelvFee() > 0) {
-				Order delvFeeOrder = new Order();
-				
-				delvFeeOrder.setPaySq(paymentOrder.getPaySq());
-				delvFeeOrder.setOrdNo(ordNo);
-				delvFeeOrder.setDelvFeeGb("G018_10");
-				delvFeeOrder.setDelvFeeCd(vo.getDelvFeeCd());
-				delvFeeOrder.setDelvFee(vo.getAddDelvFee());
-				delvFeeOrder.setRealDelvAmt(vo.getDelvFee());
-				delvFeeOrder.setOrdChgSq(orderChange.getOrdChgSq());
-				delvFeeOrder.setSupplyCompCd(vo.getSupplyCompCd());
-				delvFeeOrder.setRegNo(userNo);
-				delvFeeOrder.setUpdNo(userNo);
-				
-				orderChangeDao.createDeliveryFee(delvFeeOrder);
-			}
-		}
-		
-		// To Do List
-		// 9. 포인트원복 (사용포인트, 주문상세단위)
-		
-		// To Do List
-		// 10. 쿠폰원복 (상품쿠폰, 주문상세단위) (전체취소시 장바구니쿠폰, 배송비쿠폰)
-		
-		// To Do List
-		// 11. 상품권원복
-		
-		// 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
-		Order freegiftOrder = new Order();
-		freegiftOrder.setOrdNo(ordNo);
-		freegiftOrder.setUpdNo(userNo);
-		orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
-		
-		// To Do List
-		// 13. PG 연동
-		
-		// To Do List
-		// 14. 취소 완료 알림톡 발송 에정
-		
-		//int a = 100/0;
-	}
-	
-	/**
-	 * 주문상세 > 주문취소신청 > 주문반품신청
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2021. 01. 14
-	 */
-	@Transactional("shopTxnManager")
-	public void orderReturn(GagaMap mav) {
-		
-		// 1. 세션회원조회
-		int userNo = TsaSession.getInfo().getUserNo();
-		
-		// 2. 취소요정정보목록
-		List<Order> cancelReqList		 	= (List<Order>) mav.get("cancelReqList");			//주문 취소 신청 목록
-		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	//주문 환불 금액 목록
-		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	//주문 환불 배송 금액 목록
-				
-		// 3. 취소신청정보
-		int ordNo 			= Integer.parseInt(mav.getString("ordNo").toString());
-		String chgReason 	= mav.getString("chgReason").toString();
-		String chgMemo 		= mav.getString("chgMemo").toString();
-		String allCanYn		= mav.getString("allCanYn").toString();
-		String isCustomer	= mav.getString("isCustomer").toString();
-		String chgGb		= "G680_30"; //반품요청
-		
-		// 4.1 주문변경 기본정보 등록
-		OrderChange orderChange = new OrderChange();
-		orderChange.setOrdNo(ordNo);
-		orderChange.setChgGb(chgGb);
-		orderChange.setChgReason(chgReason);
-		orderChange.setChgMemo(chgMemo);
-		orderChange.setAddPayCost(0);
-		orderChange.setAddPayAmt(0);
-		orderChange.setRegNo(userNo);
-		orderChange.setUpdNo(userNo);
-		
-		// 4.2 반품추가정보, 반품회수지 정보 등록
-		String chgerNm 			= mav.getString("chgerNm").toString();
-		String chgerPhnno 		= mav.getString("chgerPhnno").toString();
-		String chgerTelno 		= mav.getString("chgerTelno").toString();
-		String chgerEmail 		= mav.getString("chgerEmail").toString();
-		String chgerZipNo 		= mav.getString("chgerZipNo").toString();
-		String chgerBaseAddr 	= mav.getString("chgerBaseAddr").toString();
-		String chgerDtlAddr 	= mav.getString("chgerDtlAddr").toString();
-		
-		orderChange.setChgerNm(chgerNm);
-		orderChange.setChgerPhnno(chgerPhnno);
-		orderChange.setChgerTelno(chgerTelno);
-		orderChange.setChgerEmail(chgerEmail);
-		orderChange.setChgerZipNo(chgerZipNo);
-		orderChange.setChgerBaseAddr(chgerBaseAddr);
-		orderChange.setChgerDtlAddr(chgerDtlAddr);
-		orderChange.setChgerRtnMemo("");
-		
-		orderChangeDao.createOrderChange(orderChange);
-		
-		List<Order> cancelOrderDetailList = new ArrayList<Order>();
-		
-		// 4.2 주문변경 상세 단품 정보 등록 (단품단위)
-		for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
-			Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
-			cancelOrderRefundPo.setRegNo(userNo);
-			cancelOrderRefundPo.setUpdNo(userNo);
-			
-			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
-			if ("Y".equals(allCanYn)) {
-				cancelOrderRefundPo.setOrdDtlStat("G013_98"); // 결제전주문취소 : 공통코드로관리예정
-			} else {
-				cancelOrderRefundPo.setOrdDtlStat("G013_99"); // 결제후주문취소 : 공통코드로관리예정
-			}
-
-			// 4.2.1 취소수량이 존재하면 주문정보 수정 및 주문변경정보 등록
-			if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
-				// 4.2.3 주문상세단품정보 수정
-				//orderChangeDao.updateOrderDetailItem(cancelOrderRefundPo);
-				
-				// 4.2.4 주문상세단품정보 이력 등록
-				//orderChangeDao.createOrderDetailItemHst(cancelOrderRefundPo);
-				
-				// 4.3 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
-				Boolean temp = false;
-				
-				if (cancelOrderDetailList.size() > 0) {
-					for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
-						if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
-							temp = true;
-						}
-					}
-				}
-				
-				// 4.4 주문상세단위 데이타 저장
-				if (!temp) {
-					cancelOrderDetailList.add(cancelOrderRefundPo);
-				}
-				
-				// 4.5 상품옵션 재고 원복
-				//orderChangeDao.updateOptionQty(cancelOrderRefundPo);
-			}
-		}
-		
-		// 5. 주문상세단위 취소 데이타 처리
-		for (int i=0 ; i<cancelOrderDetailList.size() ; i++) {			
-			Order vo = cancelOrderRefundList.get(i);
-			vo.setRegNo(userNo);
-			vo.setUpdNo(userNo);
-			
-			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
-			if ("Y".equals(allCanYn)) {
-				vo.setOrdDtlStat("G013_98"); // 결제전주문취소 : 공통코드로관리예정
-			} else {
-				vo.setOrdDtlStat("G013_99"); // 결제후주문취소 : 공통코드로관리예정
-			}
-			
-			// 5.1 주문변경상세정보 이력 등록
-			orderChangeDao.createOrderDetailHstCnclRtn(vo);
-			
-			// 4.2 주문변경상세정보 수정
-			//orderChangeDao.updateOrderDetail(vo);
-			
-			// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음
-			// 5.3 주문변경상세정보 등록
-			OrderChange changeDetailPo = new OrderChange();
-			changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
-			changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
-			changeDetailPo.setChgQty(vo.getOrdCanChgQty());
-			changeDetailPo.setChgStat("G685_40"); // 반품요청 : 공통코드로관리예정
-			changeDetailPo.setRegNo(userNo);
-			changeDetailPo.setUpdNo(userNo);
-			
-			orderChangeDao.createOrderChangeDetail(changeDetailPo);
-		}
-		
-		// To Do List
-		// 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
-		int spanRealCnclRtnAmt 		= Integer.parseInt(mav.get("spanRealCnclRtnAmt").toString());		// 취소금액합계
-		int sumDeliveryFee 			= Integer.parseInt(mav.get("sumDeliveryFee").toString());			// 배송비합계
-		int spanTotDeliveryFee 		= Integer.parseInt(mav.get("spanTotDeliveryFee").toString());		// 추가배송비합계
-		int spanTotRtnDelvFee 		= Integer.parseInt(mav.get("spanTotRtnDelvFee").toString());		// 반품배송비합계
-		int spanRefundAmt			= 0;
-		
-		// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
-		if ("true".equals(isCustomer)) {
-			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
-			//Integer.parseInt(mav.get("spanRefundAmt").toString());
-		}
-		// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
-		else {
-			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
-		}
-		mav.set("spanRefundAmt", spanRefundAmt);
-		
-		// 6. 환불결제 정보 등록
-		Order paymentOrder = new Order();
-		paymentOrder.setOrdNo(ordNo);
-		paymentOrder.setPayAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()) * -1);
-		paymentOrder.setPayStat("G016_99");
-		paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
-		paymentOrder.setRegNo(userNo);
-		paymentOrder.setUpdNo(userNo);
-		
-		//orderChangeDao.createPayment(paymentOrder);
-		
-		// 7. 환불금액 등록
-		Order refundOrder = new Order();
-		refundOrder.setOrdNo(ordNo);
-		refundOrder.setPaySq(paymentOrder.getPaySq());
-		refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
-		refundOrder.setRegNo(userNo);
-		
-		refundOrder.setRefundAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()));
-		refundOrder.setRfCpn1Amt(Integer.parseInt(mav.get("spanCpn1DcAmt").toString()));
-		refundOrder.setRfTmtb1Amt(Integer.parseInt(mav.get("spanTmtb1DcAmt").toString()));
-		refundOrder.setRfTmtb2Amt(Integer.parseInt(mav.get("spanTmtb2DcAmt").toString()));
-		refundOrder.setRfGoodsCpnAmt(Integer.parseInt(mav.get("spanGoodsCpnDcAmt").toString()));
-		refundOrder.setRfCartCpnAmt(Integer.parseInt(mav.get("spanCartCpnDcAmt").toString()));
-		refundOrder.setRfPntAmt(Integer.parseInt(mav.get("spanPntDcAmt").toString()));
-		refundOrder.setRfPrePntAmt(Integer.parseInt(mav.get("spanPrePntDcAmt").toString()));
-		refundOrder.setRfGfcdUseAmt(Integer.parseInt(mav.get("spanGfcdUseAmt").toString()));
-		
-		refundOrder.setRaNo(mav.get("accountNo").toString());
-		refundOrder.setRaNm(mav.get("accountNm").toString());
-		refundOrder.setRaBank(mav.get("bankCd").toString());
-		
-		//orderChangeDao.createRefund(refundOrder);
-		
-		// 8. 결제금액이 무료배송금액보다 작으면 배송비 신규 등록
-		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
-			Order vo = cancelDelvRefundList.get(i);
-			
-			if (vo.getAddDelvFee() > 0) {
-				Order delvFeeOrder = new Order();
-				
-				delvFeeOrder.setPaySq(paymentOrder.getPaySq());
-				delvFeeOrder.setOrdNo(ordNo);
-				delvFeeOrder.setDelvFeeGb("G018_10");
-				delvFeeOrder.setDelvFeeCd(vo.getDelvFeeCd());
-				delvFeeOrder.setDelvFee(vo.getAddDelvFee());
-				delvFeeOrder.setRealDelvAmt(vo.getDelvFee());
-				delvFeeOrder.setOrdChgSq(orderChange.getOrdChgSq());
-				delvFeeOrder.setSupplyCompCd(vo.getSupplyCompCd());
-				delvFeeOrder.setRegNo(userNo);
-				delvFeeOrder.setUpdNo(userNo);
-				
-				//orderChangeDao.createDeliveryFee(delvFeeOrder);
-			}
-		}
-		
-		// To Do List
-		// 9. 포인트원복 (사용포인트, 주문상세단위)
-		
-		// To Do List
-		// 10. 쿠폰원복 (상품쿠폰, 주문상세단위) (전체취소시 장바구니쿠폰, 배송비쿠폰)
-		
-		// To Do List
-		// 11. 상품권원복
-		
-		// 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
-		Order freegiftOrder = new Order();
-		freegiftOrder.setOrdNo(ordNo);
-		freegiftOrder.setUpdNo(userNo);
-		//orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
-		
-		// To Do List
-		// 13. PG 연동
-		
-		// To Do List
-		// 14. 취소 완료 알림톡 발송 에정
-		
-		//int a = 100/0;
-	}
-	
-	
-	
-	
-	
-	
 	/**
 	 * 주문 환불계좌
 	 *

+ 21 - 11
src/main/java/com/style24/admin/biz/service/TsaRendererService.java

@@ -508,17 +508,6 @@ public class TsaRendererService {
 		return rendererDao.getQnaAnswerPhaseList(ansClsf);
 	}
 
-//	/**
-//	 * 제휴링크 목록
-//	 * @param afChannel - 제휴채널
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 5. 4
-//	 */
-//	public Collection<CommonCode> getAflinkList(String afChannel) {
-//		return rendererDao.getAflinkList(afChannel);
-//	}
-
 	/**
 	 * 색상그룹코드 RGB 목록
 	 *
@@ -531,4 +520,25 @@ public class TsaRendererService {
 		return rendererDao.getColorGrpCdRgbList();
 	}
 
+	/**
+	 * 전체 제휴채널 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	public Collection<CommonCode> getAllAflinkList() {
+		return rendererDao.getAllAflinkList();
+	}
+
+	/**
+	 * 제휴채널 목록
+	 * @param afChannel - 상위제휴채널
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	public Collection<CommonCode> getAflinkList(String afChannel) {
+		return rendererDao.getAflinkList(afChannel);
+	}
+
 }

+ 37 - 0
src/main/java/com/style24/admin/biz/service/TsaSettleService.java

@@ -0,0 +1,37 @@
+package com.style24.admin.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.style24.admin.biz.dao.TsaSettleDao;
+import com.style24.persistence.domain.AflinkFee;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 정산 Service
+ *
+ * @author gagamel
+ * @since 2021. 1. 20
+ */
+@Service
+@Slf4j
+public class TsaSettleService {
+
+	@Autowired
+	private TsaSettleDao settleDao;
+
+	/**
+	 * 제휴채널정산 목록
+	 * @param afLinkFee - 제휴채널수수료 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	public Collection<AflinkFee> getAfLinkFeeList(AflinkFee afLinkFee) {
+		return settleDao.getAfLinkFeeList(afLinkFee);
+	}
+
+}

+ 58 - 1
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -2,10 +2,14 @@ package com.style24.admin.biz.web;
 
 import java.util.Collection;
 
+import com.gagaframework.web.security.GagaPasswordEncoder;
 import com.style24.admin.biz.service.TsaCustomerService;
+import com.style24.admin.biz.service.TsaKakaoService;
+import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.core.support.session.TscSession;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
+import com.sun.xml.internal.bind.v2.TODO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -55,6 +59,15 @@ public class TsaCustomerController extends TsaBaseController {
 	@Autowired
 	private TsaCustomerService customerService;
 
+	@Autowired
+	private TsaSystemService systemService;
+
+	@Autowired
+	private GagaPasswordEncoder passwordEncoder;
+
+	@Autowired
+	private TsaKakaoService kakaoService;
+
 	/**
 	 * 1:1문의관리 화면
 	 * @return
@@ -363,7 +376,7 @@ public class TsaCustomerController extends TsaBaseController {
 	}
 
 	/**
-	 * 회원 정보
+	 * 회원정보
 	 * @param custNo - 고객번호
 	 * @return Customer
 	 * @author jsshin
@@ -376,6 +389,50 @@ public class TsaCustomerController extends TsaBaseController {
 		return customerService.getCustomerInfo(custNo);
 	}
 
+	/**
+	 * 회원정보 수정
+	 * @param customer - 고객정보
+	 * @return Customer
+	 * @author jsshin
+	 * @since 2020. 01. 20
+	 */
+	@PostMapping("/info/save")
+	@ResponseBody
+	public GagaResponse saveCustomerInfo(@RequestBody Customer customer) {
+		customerService.saveCustomerInfo(customer);
+		return ok(message.getMessage("SUCC_0002"));
+	}
+
+	/**
+	 * 회원비밀번호초기화
+	 *
+	 * @param customer -고객정보
+	 * @return GagaResponse
+	 * @throws Exception
+	 * @author jsshin
+	 * @since 2020. 01. 20
+	 */
+	@PostMapping("/password/reset")
+	@ResponseBody
+	public GagaResponse resetCustomerPassword(@RequestBody Customer customer) throws Exception {
+		String tempPasswd = systemService.getTemporaryPassword(10);
+		log.info("tempPasswd  ====> {}", tempPasswd);
+
+		customer.setPasswd(tempPasswd);
+		customer.setEncodedPasswd(passwordEncoder.encodeSha256(tempPasswd));
+		customer.setRegNo(TsaSession.getInfo().getRegNo());
+
+		// 비밀번호 수정
+		customerService.updateCustomerPassword(customer);
+
+		// 카카오 알림톡
+		kakaoService.sendCustomerTempPassword(customer);
+
+		// TODO: 2021.1.20 메일발송 서비스 붙여야함 - jsshin
+
+		return ok(message.getMessage("SUCC_0005"));
+	}
+
 	/**
 	 * 탈퇴회원
 	 * @return ModelAndView

+ 5 - 0
src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -512,6 +512,11 @@ public class TsaGoodsController extends TsaBaseController {
 		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsListCount(goodsSearch));
 
+		// 다다익선 업체+브랜드 상품조회시 사용
+		if("N".equals(goodsSearch.getPageingYn())){
+			goodsSearch.setPageable(null);
+		}
+
 		result.set("pageing", goodsSearch);
 		result.set("goodsList", goodsService.getGoodsList(goodsSearch));
 

+ 95 - 32
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -21,6 +21,7 @@ import com.style24.admin.biz.service.TsaOrderService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Order;
@@ -54,8 +55,63 @@ public class TsaOrderChangeController extends TsaBaseController {
 	@Autowired
 	private TsaOrderChangeService orderChangeService;
 	
+	@Autowired
+	private TscOrderChangeService coreOrderChangeService;
+	
+	/**
+	 * 취소신청 (NAPY, 외부몰) (배치)
+	 * @param OrderChange - 주문취소신청정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 01. 20
+	 */
+	@PostMapping("/cnclReq")
+	@ResponseBody
+	public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
+		
+		GagaMap mav = new GagaMap();
+		
+		if (cnclReq== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		
+		// * 필요 데이타
+		// 주문번호, 주문상세, 취소신청수량, 신청구분(취소신청, 취소완료), 몰구분(자사, NAPY, EXTMALL)
+
+		// 1. 주문변경정보등록
+		// TB_ORDER_CHANGE (등록)
+		// TB_ORDER_CHANGE_DTL (등록)
+		
+		return super.ok("성공");
+	}
+	
 	/**
-	 * 취소요청 화면
+	 * 취소신청컨펌 (NAPY, 외부몰) (관리자)
+	 * @param OrderChange - 주문취소신청정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 01. 20
+	 */
+	@PostMapping("/cnclReqComplete")
+	@ResponseBody
+	public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
+		GagaMap mav = new GagaMap();
+		
+		if (cnclReq== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		
+		// * 필요 데이타
+		// 주문번호, 주문상세, 취소신청수량, 신청구분(취소신청, 취소완료), 몰구분(자사, NAPY, EXTMALL)
+		
+		// 1. 취소신청목록으로 변환
+		List<Order> cnclReqList = coreOrderChangeService.getCnclReqList(cnclReq);
+		
+		return super.ok("성공");
+	}
+	
+	/**
+	 * 취소요청 화면 (관리자)
 	 * 
 	 * @param ordNo - 주문번호
 	 * @param cncWait - 취소대기요청 구분
@@ -73,16 +129,16 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		// 취소가능 주문상세상탭값 설정
 		String[] ordDtlStatArr = new String[4];
-		ordDtlStatArr[0] = "G013_10";
-		ordDtlStatArr[1] = "G013_20";
-		ordDtlStatArr[2] = "G013_30";
-		ordDtlStatArr[3] = "G013_40";
+		ordDtlStatArr[0] = TscConstants.OrderDetailStat.DEPOSIT_WAIT.value();
+		ordDtlStatArr[1] = TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value();
+		ordDtlStatArr[2] = TscConstants.OrderDetailStat.GOODS_PREPARE.value();
+		ordDtlStatArr[3] = TscConstants.OrderDetailStat.DELIVERY_PREPARE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
-		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));			// 취소사유
-		mav.addObject("cancelRequestTargetList"		, orderChangeService.getCancelRequestTargetList(order));	// 취소요청대상 목록
-		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));					// 주문정보
-		mav.addObject("ordNo"						, ordNo);													// 주문번호
+		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));				// 취소사유
+		mav.addObject("cancelRequestTargetList"		, coreOrderChangeService.getCancelRequestTargetList(order));	// 취소요청대상목록
+		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));						// 주문정보
+		mav.addObject("ordNo"						, ordNo);														// 주문번호
 
 		mav.setViewName("order/CancelRequestForm");
 		
@@ -90,7 +146,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 	}
 	
 	/**
-	 * 주문취소신청
+	 * 주문취소완료 (관리자)
 	 * @param Collection<Order> - 주문취소신청목록
 	 * @return
 	 * @author jsh77b
@@ -105,16 +161,20 @@ public class TsaOrderChangeController extends TsaBaseController {
 		if (cancelReq== null) {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
-
-		List<Order> cancelReqList = cancelReq.getCancelReqList(); // 취소요청정보
+		
+		List<Order> cnclReqList = cancelReq.getCancelReqList(); // 취소요청정보
 		
 		// To Do List
-		// @ 결품취소로직 현재는 일반취소로직만존재
-		// @ 주문취소 취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 
+		// @ 결품취소로직 추가
+		// @ 주문취소시 상태값 체크
+		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
+		
+		// 1. 세션회원조회
+		int userNo = TsaSession.getInfo().getUserNo();
 		
 		// 1. 환불금액정보 계산 & 조회
-		mav = orderChangeService.orderCancelRefundAmt(cancelReqList);
+		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현		
+		mav = coreOrderChangeService.cnclRtnRefundAmt(cnclReqList);
 		
 		// 2. 주문변경기본정보 설정
 		mav.set("ordNo"			, cancelReq.getOrdNo());
@@ -129,7 +189,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("isCustomer"	, cancelReq.getIsCustomer());
 		
 		// 3. 주문변경 DB 등록 (주문정보, 배송정보)
-		orderChangeService.orderCancel(mav);
+		coreOrderChangeService.cnclComplete(mav, userNo);
 		
 		return super.ok("성공");
 	}
@@ -152,7 +212,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		}
 		
 		// 1. 환불금액정보 계산 & 조회
-		mav = orderChangeService.orderCancelRefundAmt(cancelReqList);
+		mav = coreOrderChangeService.cnclRtnRefundAmt(cancelReqList);
 		
 		return mav;
 	}
@@ -174,21 +234,21 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		order.setOrdNo(ordNo);
 		
-		// 취소가능 주문상세상탭값 설정
+		// 반품가능 주문상세상탭값 설정
 		String[] ordDtlStatArr = new String[3];
-		ordDtlStatArr[0] = "G013_50";
-		ordDtlStatArr[1] = "G013_55";
-		ordDtlStatArr[2] = "G013_60";
+		ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
+		ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
+		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 		
-		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G688"));			// 취소사유
-		mav.addObject("cancelRequestTargetList"		, orderChangeService.getCancelRequestTargetList(order));	// 취소요청대상 목록
-		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));					// 주문정보
-		mav.addObject("ordNo"						, ordNo);													// 주문번호
+		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G688"));				// 취소사유
+		mav.addObject("cancelRequestTargetList"		, coreOrderChangeService.getCancelRequestTargetList(order));	// 취소요청대상 목록
+		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));						// 주문정보
+		mav.addObject("ordNo"						, ordNo);														// 주문번호
 		
-		mav.addObject("orderDelvRtnAddrInfo"		, orderService.getDeliveryAddrList(order));					// 배송정보
-		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));			// 전화번호국번
-		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));			// (휴대전화)번호국번
+		mav.addObject("orderDelvRtnAddrInfo"		, orderService.getDeliveryAddrList(order));						// 배송정보
+		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));				// 전화번호국번
+		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));				// (휴대전화)번호국번
 
 		mav.setViewName("order/ReturnRequestForm");
 		
@@ -219,8 +279,11 @@ public class TsaOrderChangeController extends TsaBaseController {
 		// @ 주문취소 취소시 상태값 체크
 		// @ 취소, 반품시 배송비 체크 로직 
 		
+		// 1. 세션회원조회
+		int userNo = TsaSession.getInfo().getUserNo();
+		
 		// 1. 환불금액정보 계산 & 조회
-		mav = orderChangeService.orderCancelRefundAmt(cancelReqList);
+		mav = coreOrderChangeService.cnclRtnRefundAmt(cancelReqList);
 		
 		// 2. 주문변경기본정보 설정
 		mav.set("ordNo"			, cancelReq.getOrdNo());
@@ -243,7 +306,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("chgerTelno"	, cancelReq.getChgerTelno());
 		
 		// 4. 주문변경 DB 등록 (주문정보, 배송정보)
-		orderChangeService.orderReturn(mav);
+		coreOrderChangeService.rtnReq(mav, userNo);
 		
 		return super.ok("성공");
 	}
@@ -350,7 +413,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
-		Collection<Order> cancelRequestTargetList = orderChangeService.getCancelRequestTargetList(order);
+		Collection<Order> cancelRequestTargetList = coreOrderChangeService.getCancelRequestTargetList(order);
 
 		Collection<Order> orderInfoList = orderService.getOrderInfoList(order);
 

+ 13 - 13
src/main/java/com/style24/admin/biz/web/TsaRendererController.java

@@ -199,18 +199,18 @@ public class TsaRendererController extends TsaBaseController {
 //	public Collection<AdmCommonCode> getSellStoreList() {
 //		return rendererService.getSellStoreList();
 //	}
-//
-//	/**
-//	 * 제휴링크 목록
-//	 * @param afChannel - 제휴채널
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 5. 4
-//	 */
-//	@GetMapping("/aflink/list/{afChannel}")
-//	@ResponseBody
-//	public Collection<AdmCommonCode> getAflinkList(@PathVariable String afChannel) {
-//		return rendererService.getAflinkList(afChannel);
-//	}
+
+	/**
+	 * 제휴채널 목록
+	 * @param afChannel - 상위제휴채널
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	@GetMapping("/aflink/list/{afChannel}")
+	@ResponseBody
+	public Collection<CommonCode> getAflinkList(@PathVariable String afChannel) {
+		return rendererService.getAflinkList(afChannel);
+	}
 
 }

+ 37 - 6
src/main/java/com/style24/admin/biz/web/TsaSettleController.java

@@ -1,16 +1,21 @@
 package com.style24.admin.biz.web;
 
+import java.util.Collection;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
-import com.style24.admin.biz.service.TsaBusinessService;
 import com.style24.admin.biz.service.TsaRendererService;
+import com.style24.admin.biz.service.TsaSettleService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.AflinkFee;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -26,10 +31,7 @@ import lombok.extern.slf4j.Slf4j;
 public class TsaSettleController extends TsaBaseController {
 
 	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private TsaBusinessService businessService;
+	private TsaSettleService settleService;
 
 	@Autowired
 	private TsaRendererService rendererService;
@@ -166,4 +168,33 @@ public class TsaSettleController extends TsaBaseController {
 		return mav;
 	}
 
+	/**
+	 * 제휴채널정산 화면
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	@GetMapping("/aflink/fee/form")
+	public ModelAndView afLinkFeeForm() {
+		ModelAndView mav = new ModelAndView("settle/AfLinkSettleForm");
+
+		// 제휴채널 목록
+		mav.addObject("afChannelList", rendererService.getAvailCommonCodeList("G053"));
+
+		return mav;
+	}
+
+	/**
+	 * 제휴채널정산 목록
+	 * @param aflinkFee - 제휴채널수수료 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	@PostMapping("/aflink/fee/list")
+	@ResponseBody
+	public Collection<AflinkFee> getAfLinkFeeList(@RequestBody AflinkFee aflinkFee) {
+		return settleService.getAfLinkFeeList(aflinkFee);
+	}
+
 }

+ 3 - 0
src/main/java/com/style24/admin/biz/web/TsaSystemController.java

@@ -142,6 +142,9 @@ public class TsaSystemController extends TsaBaseController {
 		// 외부몰벤더 콤보박스 목록
 		mav.addObject("vendorList", rendererService.getCommonCodeList("G003", "Y", TsaSession.getInfo().getSupplyCompCd()));
 
+		// 제휴채널 콤보박스 목록
+		mav.addObject("afLinkList", rendererService.getAllAflinkList());
+
 		if (mode.equals("U")) {
 			// 어드민사용자정보
 			mav.addObject("userInfo", systemService.getUser(userNo));

+ 35 - 0
src/main/java/com/style24/persistence/domain/AflinkFee.java

@@ -0,0 +1,35 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 제휴채널수수료 Domain
+ *
+ * @author gagamel
+ * @since 2021. 1. 20
+ */
+@SuppressWarnings("serial")
+@Data
+public class AflinkFee extends TscBaseDomain {
+
+	private String afLinkCd;	// 제휴채널코드
+	private String afLinkNm;	// 제휴채널명
+	private String afChannel;	// 상위제휴채널
+	private String afChannelNm;	// 상위제휴채널명
+	private String occurDt;		// 발생(정산)일자
+	private String ordNo;		// 주문번호
+	private String ordDtlStat;	// 주문상세상태
+	private long sellAmt;		// 판매금액
+	private long cpnDcAmt;		// 쿠폰할인금액
+	private long pntDcAmt;		// 포인트사용금액
+	private long gfcdUseAmt;	// 상품권사용금액
+	private long payAmt;		// 결제액(VAT포함)
+	private long salesAmt;		// 매출액(VAT제외)
+
+	// 검색조건
+	private String startDt;
+	private String endDt;
+
+}

+ 8 - 0
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -106,6 +106,14 @@ public class GoodsSearch extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] conditionList;
 
+	/* 다다익선 Multi 추가 */
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiSupplyCompCd;
+
+	private String pageingYn;
+
+	/* 다다익선 Multi 추가 */
+
 	// Pagination
 	private TscPageRequest pageable;
 	private int pageNo = 1;

+ 1 - 4
src/main/java/com/style24/persistence/domain/MoreBetter.java

@@ -21,12 +21,9 @@ public class MoreBetter extends TscBaseDomain {
 	private String tmtbStat;		// 프로모션 상태
 	private String tmtbStdt;		// 프로모션 시작일
 	private String tmtbEddt;		// 프로모션 종료일
+	private String applyGb;			// 적용구분값 (G810_10|수량, G810_11|금액)
 	private String multiYn;			// 복수,단수설정
 	private String delYn;			// 삭제여부
-	//private Integer regNo;			// 등록자
-	//private String  regDt;			// 등록일시
-	private Integer udpNo;			// 수정자
-	private String  udtDt;			// 수정일시
 	private String searchGubun;		// 프로모션 조회 검색 구분
 	private String searchTxt;		// 프로모션 검색 조건
 	private String gbn;				// 팝업 구분 : C=등록, U=수정

+ 0 - 5
src/main/java/com/style24/persistence/domain/MoreBetterBurden.java

@@ -19,11 +19,6 @@ public class MoreBetterBurden extends TscBaseDomain {
 	private String tmtbSupplyCd;	// 업체코드
 	private String tmtbBurdenRate;	// 업체분담율
 	private String useYn;			// 사용여부
-	//private Integer regNo;			// 등록자
-	//private String  regDt;			// 등록일시
-	private Integer udpNo;			// 수정자
-	private String  udtDt;			// 수정일시
-
 	//private String supplyCompCd;
 	private String burdenRate;
 

+ 2 - 6
src/main/java/com/style24/persistence/domain/MoreBetterGoods.java

@@ -15,17 +15,13 @@ import lombok.Data;
 @Data
 public class MoreBetterGoods extends TscBaseDomain {
 	// 다다익선 적용대상
-	private Integer tmtbGoodsSq;		// 업체분담율Sq
+	private Integer tmtbGoodsSq;		// 다다익선 적용대상 시퀀스
+	private Integer tmtbApplyGoodsSq;		// 다다익선 실제적용대상 시퀀스
 	private Integer tmtbSq;				// 프로모션Sq
 	private String goodsGb;			// 공통코드 (G800_10|기본상품, G800_20|적용상품, G800_30|제외상품, G800_40|ALL)
 	private String targetGb;		// 적용대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
 	private String targetVal;		// 브랜드코드, 상품코드, 공급처코드
 	private String delYn;			// 삭제여부
-	//private Integer regNo;			// 등록자
-	//private String  regDt;			// 등록일시
-	private Integer udpNo;			// 수정자
-	private String  udtDt;			// 수정일시
-
 	private String supplyCompCd;
 	private String supplyCompNm;
 	private String brandCd;

+ 0 - 4
src/main/java/com/style24/persistence/domain/MoreBetterSection.java

@@ -25,10 +25,6 @@ public class MoreBetterSection extends TscBaseDomain {
 	private Integer dcVal;			// 할인값
 
 	private String  delYn;			// 삭제여부
-	//private Integer regNo;			// 등록자
-	//private String  regDt;			// 등록일시
-	private Integer udpNo;			// 수정자
-	private String  udtDt;			// 수정일시
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] arrSectionSq;

+ 0 - 392
src/main/java/com/style24/persistence/domain/Order.java

@@ -1,392 +0,0 @@
-package com.style24.persistence.domain;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TscBaseDomain;
-
-import com.style24.persistence.TscPageRequest;
-import lombok.Data;
-
-/**
- * 주문 Domain
- *
- * @author jsh77b
- * @since 2020. 11. 16
- */
-@SuppressWarnings("serial")
-@Data
-public class Order extends TscBaseDomain {
-	
-	// 주문마스터
-	private int ordNo;
-	private String mallGb;
-	private String mallGbNm;
-	private String ordDt;
-	private String payDt;
-	private int custNo;
-	private String ordNm;
-	private String ordTelno;
-	private String siteCd;
-	private String siteCdNm;
-	private int npayOrdNo;
-	private String frontGb;
-	private String frontGbNm;
-	private String extmallNm;
-
-	// 주문상세
-	private int ordDtlNo;
-	private String ordExchGb;
-	private String ordDtlStat;
-	private int orgOrdDtlNo;
-	private String supplyCompCd;
-	private String goodsCd;
-	private String formalGb;
-	private String formalGbNm;
-	private String goodsType;
-	private int listPrice;
-	private int currPrice;
-	private double dcRate;
-	private int optAddPrice;
-	private int ordQty;
-	private int ordAmt;
-	private int cnclRtnQty;
-	private int cnclRtnAmt;
-	private int cpn1CpnSq;
-	private int cpn1DcAmt;
-	private int tmtb1Sq;
-	private int tmtb1DcAmt;
-	private int tmtb2Sq;
-	private int tmtb2DcAmt;
-	private int goodsCpnSq;
-	private int goodsCpnDcAmt;
-	private int cartCpnSq;
-	private int cartCpnDcAmt;
-	
-	private int pntDcAmt;
-	private int prePntDcAmt;
-	private int savePntAmt;
-	
-	private int realOrdAmt;
-	private String venderId;
-	private String extmallId;
-	private String agentOrderId;
-	private String extmallOrderId;
-	private String changeableYn;
-	private String changeFeeFreeYn;
-	private String returnableYn;
-	private String returnFeeFreeYn;
-	
-	private String soldoutYn;
-	private String soldoutMemo;
-	private String soldoutRegNo;
-	private String soldoutRegDt;
-	private int delvAddrSq;
-	private String shotDelvYn;
-	private String giftPackYn;
-	
-	private String delvLocCd;
-	private String delvAssigngDt;
-	private String delvAddignStat;
-	private String dstrbtMemo;
-	private String delvStdt;
-	private String delvEddt;
-	
-	private String shipCompCd;
-	private String invoiceNo;
-	private String invoiceSendYn;
-	private String sellStoreCd;
-	private double sellFeeRate;
-	
-	private String afLinkCd;
-	private String ithrCd;
-	private String contentsLoc;
-	
-	private int planDtlsq;
-	private int socialSq;
-	
-	private String condition;
-	private String[] conditions = null;
-	
-	private String stDate;
-	private String edDate;
-	private String searchDateGb;
-	private String orderNm;
-	private int custId;
-	private String orderPhnno;
-	private String vendorId;
-	private String sizeCd;
-	private String goodsNm;
-	private String payMeans;
-	private String chgStat;
-	private String recipNm;
-	private String chgGb;
-	private String wdInvoiceSendYn;
-	
-	// 상품정보
-	private String imgPath1;
-	private String sysImgNm;
-	private String brandCd;
-	private String optCd1;
-	private String optCd2;
-	private String goodsTypeNm;
-	private String brandEnm;
-	private String itemCd;
-	private String goodsNum;
-	private String supplyGoodsCd;
-	
-	private int totDcAmt;
-	private String dateGbn;
-	private String mallCd;
-	private String search;
-	
-	/* Multi CheckBox 항목*/
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiBrand;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiOrdStat;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiOrdDtlStat;
-	
-	private int sumOrdAmt;
-	private int sumOrdCnclAmt;
-	private int sumRealPayAmt;
-	private int ordNoCnt;
-	private int sumOrdQty;
-	private int sumOrdCnclQty;
-	
-	private String excelFileNm;
-	
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] ordNoList;
-	
-	private String delYn;
-	private String recipPhnno;
-	private String recipTelno;
-	private String recipZipNo;
-	private String recipBaseAddr;
-	private String recipDtlAddr;
-	private String ordEmail;
-	private String delvMemo;
-	private String delvAddrEditYn;
-	private String exchGbNm;
-	
-	private String escrowYn;
-	private String payMeansNm;
-	private String cardNm;
-	private String vaBank;
-	private String pgTradeNo;
-	private String payStat;
-	private String payStatNm;
-	private int payAmt;
-	private String vaDeadLine;
-	
-	private String delvFeeGb;
-	private String delvFeeGbNm;
-	private int delvFee;
-	private String delvUsacYn;
-	private String delvUsacDt;
-	private int delvFeeSq;
-	
-	private String coundelClsf;
-	private String relGoodsCd;
-	private String questTitle;
-	private String questDt;
-	private String ansDt;
-	private int andNo;
-	
-	private int ordChgSq;
-	private String chgGbNm;
-	private String chgStatNm;
-	private String chgReason;
-	private String chgReasonNm;
-	private String chgMemo;
-	private String chgerNm;
-	private String chgerPhnno;
-	private String chgerZipNo;
-	private String chgerBaseAddr;
-	private String chgerDtlAddr;
-	private String wdInvoiceNo;
-	
-	private String supplyCompNm;
-	private String brandKnm;
-	private String ordDtlStatNm;	
-	private String ordPhnno;
-	
-	private String custGrade;
-	private String custGradeNm;
-	private String custGb;
-	private String custGbNm;
-	private String managedRsn;
-	private String managedRsnNm;
-	
-	private int itemQty;
-	private int itemPrice;
-	private String itemNm;
-	private int gfcdUseAmt;
-	
-	// Pagination
-	private TscPageRequest pageable;
-	private int pageNo = 1;
-	private int pageSize = 50;
-	private int pageUnit = 10;
-	
-	// 주문문의 1:1 응답 칼럼
-	private String counselClsfNm;
-	private String ansNo;
-	private String ansNm;
-	private String regNm;
-	private String updNm;
-	
-	// 주문메모칼럼
-	private int orderMemoSq;
-	private String memo;
-	private String orgFileNm;
-	private String sysFileNm;
-	
-	// 사은품칼럼
-	private int ordFreegiftSq;
-	private int freegiftSq;
-	private String freegiftNm;
-	private int freegiftValSq;
-	private int usePoint;
-	private int seq;
-	private String userNm;
-	
-	// 환불계좌칼럼
-	private String raBank;
-	private String raBankNm;
-	private String raNo;
-	private String raNm;
-	private String defaultYn;
-	
-	// 주문상세변경내역칼럼
-	private String userId;
-	private String updId;
-	private String shipCompNm;
-	private String shipCompId;
-	
-	// 주문쿠폰
-	private int cpnSq;
-	private int cpnId;
-	private int cpnDcAmt;
-	private String cpnType;
-	private String targetCd1;
-	private String targetCd2;
-	private String cpnNm;
-	private String dcWay;
-	private int dcPval;
-	private int dcMval;
-	private int dcAval;
-	
-	// 주문포인트
-	private int pntPrate;
-	private int pntMrate;
-	private int pntAmt;
-	private String occurGb;
-	private String occurGbNm;
-	private String occurDtlDesc;
-	
-	// 주문상품권
-	private String gfcdNm;
-	private String gfcdNo;
-	private int gfcdAmt;
-	private int chgGfcdAmt;
-	private int usGfcdAmt;
-	private int rmGfcdAmt;
-	
-	// 다다익선
-	private int tmtbSq;
-	private String tmtbNm;
-	private int tmtbDcAmt;
-	
-	// 상태변경
-	private String g20;
-	private String g30;
-	private String g40;
-	private String g50;
-	private String g55;
-	private String g60;
-	
-	// 취소요청
-	private String cncWait;
-	private int ordReqChgQty;
-	private int itemReqChgQty;
-	private int itemOrdPrice;
-	private int minOrdAmt;
-	private int orgDelvFee;
-	private String delvFeeCd;
-	private int ordCanChgQty;
-	private String allCanYn;
-	
-	private String addDelvFeeYn;
-	private int addDelvFee;
-	private int ordDtlItemSq;
-	
-	private int paySq;
-	private int refundAmt;
-	private int rfCpn1Amt;
-	private int rfTmtb1Amt;
-	private int rfTmtb2Amt;
-	private int rfGoodsCpnAmt;
-	private int rfCartCpnAmt;
-	private int rfPntAmt;
-	private int rfPrePntAmt;
-	private int rfGfcdUseAmt;
-
-	private int pgCpnAmt;
-	private int npayPntAmt;
-	private String payGb;
-	private String pgGb;
-	private String pgTid;
-	private String cardType;
-	private String cardKind;
-	private String cardBank;
-	private String cardMips;
-	private String cardPcableYn;
-	private String vaNo;
-	private String vaNm;
-	private String vaDeadline;
-	private String telecom;
-
-	private String accountNo;
-	private String accountNm;
-	private String bankCd;
-	private String bankNm;
-
-	private int realDelvAmt;
-	private int delvCpnSq;
-	private int delvCpnDcAmt;
-
-	private int chgQty;
-	private int rtnDelvFee;
-	private int excDelvFee;
-
-	private String[] ordDtlStatArr;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 84
src/main/java/com/style24/persistence/domain/OrderChange.java

@@ -1,84 +0,0 @@
-package com.style24.persistence.domain;
-
-import java.util.List;
-
-import com.style24.persistence.TscBaseDomain;
-
-import lombok.Data;
-
-/**
- * 주문 취소 Domain
- *
- * @author jsh77b
- * @since 2020. 11. 16
- */
-@SuppressWarnings("serial")
-@Data
-public class OrderChange extends TscBaseDomain {
-	
-	List<Order> cancelReqList;
-	private int ordNo;
-	
-	private int ordChgSq;
-	private String chgGb;
-	private String chgReason;
-	private String chgMemo;
-	private String chgerNm;
-	private String chgerPhnno;
-	private String chgerTelno;
-	private String chgerEmail;
-	private String chgerZipNo;
-	private String chgerBaseAddr;
-	private String chgerDtlAddr;
-	private String chgerRtnMemo;
-	private int addPayCost;
-	private int addPayAmt;
-	private String wdInvoiceNo;
-	private String wdInvoiceSendYn;
-	private String wdStdt;
-	private String wdEddt;
-	private String shipCompCd;
-	
-	private int ordDtlNo;
-	private int chgQty;
-	private String chgStat;
-	private String chgStatNm;
-	private String whMemo;
-	
-	private String accountNo;
-	private String accountNm;
-	private String bankCd;
-	private String bankNm;
-
-	private String allCanYn;
-
-	private String isCustomer;
-
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 69 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -162,6 +162,69 @@
 		WHERE  CUST_NO = #{custNo}
 	</select>
 
+	<!--회원정보 수정-->
+	<update id="updateCustomerInfo" parameterType="Customer">
+		/* TsaCustomer.updateCustomerInfo */
+		UPDATE TB_CUSTOMER
+		<set>
+		    <if test="custGb != null and custGb != ''">
+		     CUST_GB = #{custGb},
+		    </if>
+		    <if test="custGrade != null and custGrade !=''">
+		     CUST_GRADE = #{custGrade},
+		    </if>
+		    <if test="emailAgreeYn != null and emailAgreeYn != ''">
+		     EMAIL_AGREE_DT = CASE WHEN EMAIL_AGREE_YN = #{emailAgreeYn}
+		                      THEN EMAIL_AGREE_DT
+		                      ELSE NOW()
+		                      END,
+		     EMAIL_AGREE_YN = #{emailAgreeYn},
+		    </if>
+		    <if test="smsAgreeYn != null and smsAgreeYn != ''">
+		     SMS_AGREE_DT = CASE WHEN SMS_AGREE_YN = #{smsAgreeYn}
+		                    THEN SMS_AGREE_DT
+		                    ELSE NOW()
+		                    END,
+		     SMS_AGREE_YN = #{smsAgreeYn},
+		    </if>
+		    <if test="homePostNo != null and homePostNo != ''">
+		     HOME_POST_NO = #{homePostNo},
+		    </if>
+		    <if test="homeBaseAddr != null and homeBaseAddr != ''">
+		     HOME_BASE_ADDR = #{homeBaseAddr},
+		    </if>
+		    <if test="homeDtlAddr != null and homeDtlAddr != ''">
+		     HOME_DTL_ADDR = #{homeDtlAddr},
+		    </if>
+		    <if test="birthYmd != null and birthYmd != ''">
+		     BIRTH_YMD = REPLACE(#{birthYmd}, '-', ''),
+		    </if>
+		    <if test="cellPhnno != null and cellPhnno != ''">
+		     CELL_PHNNO = #{cellPhnno},
+		    </if>
+		    <if test="email != null and email != ''">
+		     EMAIL = #{email},
+		    </if>
+		    <if test="managedRsn != null and managedRsn != ''">
+		     MANAGED_DT = CASE WHEN MANAGED_RSN = #{managedRsn}
+		                       AND  MANAGED_DTL_RSN = #{managedDtlRsn}
+		                  THEN MANAGED_DT
+		                  ELSE NOW()
+		                  END,
+		     MANAGED_RSN = #{managedRsn},
+		     MANAGED_DTL_RSN = #{managedDtlRsn},
+		    </if>
+		    <if test="managedRsn == null or managedRsn == ''">
+		     MANAGED_RSN = NULL,
+		     MANAGED_DTL_RSN =  NULL,
+		     MANAGED_DT = NULL,
+		    </if>
+		     UPD_NO = #{updNo},
+		     UPD_DT = NOW()
+		</set>
+		WHERE CUST_NO = #{custNo}
+	</update>
+
 	<!-- 탈퇴회원목록 -->
 	<select id="getCustomerSecedeList" parameterType="CustomerSearch" resultType="Customer">
 		/* TsaCustomer.getSecedeCustomerList */
@@ -328,4 +391,10 @@
 		</if>
 	</select>
 
+	<insert id="createException">
+		/* TsaCustomer.createException */
+		INSERT INTO TB_CUSTOMER (CUST_NO)
+		VALUES (NULL)
+	</insert>
+
 </mapper>

+ 6 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -555,6 +555,12 @@
 		        <if test="supplyCompCd != null and supplyCompCd != ''">
 		        AND G.SUPPLY_COMP_CD = #{supplyCompCd}
 		        </if>
+				<if test="multiSupplyCompCd != null and multiSupplyCompCd != ''">
+					AND G.SUPPLY_COMP_CD IN
+					<foreach collection="multiSupplyCompCd" item="item" index="index"  open="(" close=")" separator=",">
+						#{item}
+					</foreach>
+				</if>
 		        <if test="brandCd != null and brandCd != ''">
 		        AND G.BRAND_CD = #{brandCd}
 		        </if>

+ 114 - 71
src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml

@@ -12,8 +12,8 @@
 			 , DEL_YN
 			 , FN_GET_USER_NM(REG_NO) AS REG_NM
 			 , DATE_FORMAT(REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
-			 , FN_GET_USER_NM(UDP_NO) AS UPD_NM
-			 , DATE_FORMAT(UDT_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+			 , FN_GET_USER_NM(UPD_NO) AS UPD_NM
+			 , DATE_FORMAT(UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
 		FROM TB_TMTB
 		WHERE 1=1
 		<if test="tmtbStdt != null and tmtbStdt != '' and tmtbEddt != null and tmtbEddt != ''">
@@ -42,8 +42,8 @@
 					 , TT.DEL_YN
 					 , TT.REG_NO
 					 , TT.REG_DT
-					 , TT.UDP_NO
-					 , TT.UDT_DT
+					 , TT.UPD_NO
+					 , TT.UPD_DT
 					 , TS.SECTION_GB
 					 , TS.SECTION_VAL
 					 , TV.DC_WAY
@@ -71,8 +71,8 @@
 				 ,TS.DEL_YN
 				 ,TS.REG_NO
 				 ,TS.REG_DT
-				 ,TS.UDP_NO
-				 ,TS.UDT_DT
+				 ,TS.UPD_NO
+				 ,TS.UPD_DT
 		FROM	TB_TMTB_SECTION TS
 		INNER 	JOIN TB_TMTB_VAL TV
 		ON 		TS.TMTB_SQ = TV.TMTB_SQ
@@ -94,8 +94,8 @@
 				 , DEL_YN
 				 , REG_NO
 				 , REG_DT
-				 , UDP_NO
-				 , UDT_DT
+				 , UPD_NO
+				 , UPD_DT
 		FROM TB_TMTB_GOODS
 		WHERE 1=1
 		  AND TMTB_SQ = #{tmtbSq}
@@ -119,8 +119,8 @@
 				 , DEL_YN
 				 , REG_NO
 				 , REG_DT
-				 , UDP_NO
-				 , UDT_DT
+				 , UPD_NO
+				 , UPD_DT
 		FROM TB_TMTB_GOODS
 		WHERE 1=1
 		  AND TMTB_SQ = #{tmtbSq}
@@ -129,48 +129,58 @@
 
 	<select id="getMorebetterApplyGoodsList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
 		/* TsaMarketing.getMorebetterApplyGoodsList */
-		SELECT 	 TMTB_GOODS_SQ
-				 , TMTB_SQ
-				 , GOODS_GB
-				 , TARGET_GB
-				 , TARGET_VAL
-				 , TARGET_VAL AS GOODS_CD
+		SELECT 	 A.TMTB_GOODS_SQ
+				 , A.TMTB_SQ
+				 , B.TMTB_APPLY_GOODS_SQ
+				 , A.GOODS_GB
+				 , A.TARGET_GB
+				 , A.TARGET_VAL
+				 , A.TARGET_VAL AS GOODS_CD
 				 , (SELECT  GOODS_NM
 					FROM  TB_GOODS
-					WHERE  GOODS_CD = TARGET_VAL) AS GOODS_NM
-				 , DEL_YN
-				 , REG_NO
-				 , REG_DT
-				 , UDP_NO
-				 , UDT_DT
-		FROM TB_TMTB_GOODS
+					WHERE  GOODS_CD = A.TARGET_VAL) AS GOODS_NM
+				 , A.DEL_YN
+				 , A.REG_NO
+				 , A.REG_DT
+				 , A.UPD_NO
+				 , A.UPD_DT
+		FROM 		TB_TMTB_GOODS A
+		INNER JOIN 	TB_TMTB_APPLY_GOODS B
+				ON 	A.TMTB_SQ = B.TMTB_SQ
+				AND A.GOODS_GB = B.GOODS_GB
+				AND A.TARGET_VAL = B.GOODS_CD
 		WHERE 1=1
-		  AND TMTB_SQ = #{tmtbSq}
-		  AND TARGET_GB = 'G260_10'
-		  AND GOODS_GB IN ('G800_10','G800_20')
+		  AND A.TMTB_SQ = #{tmtbSq}
+		  AND A.TARGET_GB = 'G260_10'
+		  AND A.GOODS_GB IN ('G800_10','G800_20')
 	</select>
 
 	<select id="getMorebetterExceptGoodsList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
 		/* TsaMarketing.getMorebetterExceptGoodsList */
-		SELECT 	 TMTB_GOODS_SQ
-			 , TMTB_SQ
-			 , GOODS_GB
-			 , TARGET_GB
-			 , TARGET_VAL
-			 , TARGET_VAL AS GOODS_CD
-			 , (SELECT  GOODS_NM
-				FROM  TB_GOODS
-				WHERE  GOODS_CD = TARGET_VAL) AS GOODS_NM
-			 , DEL_YN
-			 , REG_NO
-			 , REG_DT
-			 , UDP_NO
-			 , UDT_DT
-		FROM TB_TMTB_GOODS
+		SELECT 	 A.TMTB_GOODS_SQ
+				 , A.TMTB_SQ
+				 , B.TMTB_APPLY_GOODS_SQ
+				 , A.GOODS_GB
+				 , A.TARGET_GB
+				 , A.TARGET_VAL
+				 , A.TARGET_VAL AS GOODS_CD
+				 , (SELECT  GOODS_NM
+					FROM  TB_GOODS
+					WHERE  GOODS_CD = A.TARGET_VAL) AS GOODS_NM
+				 , A.DEL_YN
+				 , A.REG_NO
+				 , A.REG_DT
+				 , A.UPD_NO
+				 , A.UPD_DT
+			FROM 	TB_TMTB_GOODS A
+		INNER JOIN 	TB_TMTB_APPLY_GOODS B
+			 ON 	A.TMTB_SQ = B.TMTB_SQ
+			AND 	A.GOODS_GB = B.GOODS_GB
+			AND 	A.TARGET_VAL = B.GOODS_CD
 		WHERE 1=1
-		  AND TMTB_SQ = #{tmtbSq}
-		  AND TARGET_GB = 'G260_10'
-		  AND GOODS_GB IN ('G800_30')
+		  AND A.TMTB_SQ = #{tmtbSq}
+		  AND A.TARGET_GB = 'G260_10'
+		  AND A.GOODS_GB IN ('G800_30')
 	</select>
 
 	<select id="getMorebetterBurdenList" parameterType="Integer" resultType="MoreBetterBurden">
@@ -182,8 +192,8 @@
 				   , USE_YN
 				   , REG_NO
 				   , REG_DT
-				   , UDP_NO
-				   , UDT_DT
+				   , UPD_NO
+				   , UPD_DT
 		FROM TB_TMTB_BURDEN
 		WHERE 1=1
 		  AND TMTB_SQ = #{tmtbSq}
@@ -197,12 +207,13 @@
 					,TMTB_STAT
 					,TMTB_ST_DT
 					,TMTB_ED_DT
+					,APPLY_GB
 					,MULTI_YN
 					,DEL_YN
 					,REG_NO
 					,REG_DT
-					,UDP_NO
-					,UDT_DT
+					,UPD_NO
+					,UPD_DT
 			)
 			VALUES (
 			         #{tmtbSq}
@@ -210,11 +221,12 @@
 				    ,#{tmtbStat}
 				    ,#{tmtbStdt}
 				    ,#{tmtbEddt}
+				    ,#{applyGb}
 				    ,#{multiYn}
 				    ,'N'
 				    ,#{regNo}
 				    ,NOW()
-				    ,#{udpNo}
+				    ,#{updNo}
 				    ,NOW()
 				   )
 			ON DUPLICATE KEY UPDATE
@@ -223,8 +235,8 @@
 						,TMTB_ST_DT = #{tmtbStdt}
 						,TMTB_ED_DT = #{tmtbEddt}
 						,MULTI_YN = #{multiYn}
-						,UDP_NO = #{udpNo}
-						,UDT_DT = NOW()
+						,UPD_NO = #{updNo}
+						,UPD_DT = NOW()
 	</insert>
 
 	<insert id="saveMorebetterGoods" parameterType="MoreBetterGoods" >
@@ -238,8 +250,8 @@
 					,DEL_YN
 					,REG_NO
 					,REG_DT
-					,UDP_NO
-					,UDT_DT
+					,UPD_NO
+					,UPD_DT
 			)
 			VALUES (
 			         #{tmtbGoodsSq}
@@ -250,15 +262,46 @@
 				    ,'N'
 				    ,#{regNo}
 				    ,NOW()
-				    ,#{udpNo}
+				    ,#{updNo}
 				    ,NOW()
 				   )
 			ON DUPLICATE KEY UPDATE
 						 GOODS_GB = #{goodsGb}
 						,TARGET_GB = #{targetGb}
 						,TARGET_VAL = #{targetVal}
-						,UDP_NO = #{udpNo}
-						,UDT_DT = NOW()
+						,UPD_NO = #{updNo}
+						,UPD_DT = NOW()
+	</insert>
+
+	<insert id="saveMorebetterApplyGoods" parameterType="MoreBetterGoods" >
+		/* TsaMarketing.saveMorebetterApplyGoods */
+		INSERT INTO TB_TMTB_APPLY_GOODS(
+					TMTB_APPLY_GOODS_SQ
+					,TMTB_SQ
+					,GOODS_GB
+					,GOODS_CD
+					,DEL_YN
+					,REG_NO
+					,REG_DT
+					,UPD_NO
+					,UPD_DT
+		)
+		VALUES (
+				#{tmtbApplyGoodsSq}
+			   ,#{tmtbSq}
+			   ,#{goodsGb}
+			   ,#{goodsCd}
+			   ,'N'
+			   ,#{regNo}
+			   ,NOW()
+			   ,#{updNo}
+			   ,NOW()
+			   )
+			ON DUPLICATE KEY UPDATE
+								 GOODS_GB = #{goodsGb}
+								 ,GOODS_CD = #{goodsCd}
+								 ,UPD_NO = #{updNo}
+								 ,UPD_DT = NOW()
 	</insert>
 
 	<insert id="saveMorebetterSection" parameterType="MoreBetterSection" >
@@ -271,8 +314,8 @@
 					,DEL_YN
 					,REG_NO
 					,REG_DT
-					,UDP_NO
-					,UDT_DT
+					,UPD_NO
+					,UPD_DT
 			)
 			VALUES (
 					 #{tmtbSectionSq}
@@ -282,14 +325,14 @@
 				    ,'N'
 				    ,#{regNo}
 				    ,NOW()
-				    ,#{udpNo}
+				    ,#{updNo}
 				    ,NOW()
 				   )
 			ON DUPLICATE KEY UPDATE
 						 SECTION_GB = #{sectionGb}
 						,SECTION_VAL = #{sectionVal}
-						,UDP_NO = #{udpNo}
-						,UDT_DT = NOW()
+						,UPD_NO = #{updNo}
+						,UPD_DT = NOW()
 	</insert>
 
 	<insert id="saveMorebetterVal" parameterType="MoreBetterSection" >
@@ -303,8 +346,8 @@
 					,DEL_YN
 					,REG_NO
 					,REG_DT
-					,UDP_NO
-					,UDT_DT
+					,UPD_NO
+					,UPD_DT
 			)
 			VALUES (
 					#{tmtbValSq}
@@ -315,14 +358,14 @@
 				   ,'N'
 				   ,#{regNo}
 				   ,NOW()
-				   ,#{udpNo}
+				   ,#{updNo}
 				   ,NOW()
 				   )
 			ON DUPLICATE KEY UPDATE
 						 DC_WAY = #{dcWay}
 						,DC_VAL = #{dcVal}
-						,UDP_NO = #{udpNo}
-						,UDT_DT = NOW()
+						,UPD_NO = #{updNo}
+						,UPD_DT = NOW()
 	</insert>
 
 	<insert id="saveMorebetterBurden" parameterType="MoreBetterBurden" >
@@ -335,8 +378,8 @@
 					,USE_YN
 					,REG_NO
 					,REG_DT
-					,UDP_NO
-					,UDT_DT
+					,UPD_NO
+					,UPD_DT
 			)
 			VALUES (
 			         #{tmtbBurdenSq}
@@ -346,15 +389,15 @@
 			        ,#{useYn}
 				    ,#{regNo}
 				    ,NOW()
-				    ,#{udpNo}
+				    ,#{updNo}
 				    ,NOW()
 				   )
 		ON DUPLICATE KEY UPDATE
 					 TMTB_SUPPLY_CD = #{tmtbSupplyCd}
 					,TMTB_BURDEN_RATE = #{tmtbBurdenRate}
 					,USE_YN = #{useYn}
-					,UDP_NO = #{udpNo}
-					,UDT_DT = NOW()
+					,UPD_NO = #{updNo}
+					,UPD_DT = NOW()
 	</insert>
 
 	<delete id="deleteTmtbSupplyCompanyList" parameterType="MoreBetterGoods">

+ 23 - 10
src/main/java/com/style24/persistence/mybatis/shop/TsaRenderer.xml

@@ -341,16 +341,6 @@
 		AND    USE_YN = 'Y'
 	</select>
 
-	<!-- 제휴링크 목록 -->
-	<select id="getAflinkList" parameterType="String" resultType="CommonCode">
-		/* TsaRenderer.getAflinkList */
-		SELECT AF_LINK_CD AS CD
-		     , AF_LINK_NM AS CD_NM
-		FROM   TB_AF_LINK
-		WHERE  AF_CHANNEL = #{afChannel}
-		AND    USE_YN = 'Y'
-	</select>
-	
 	<!-- 색상그룹코드 RGB 목록 -->
 	<select id="getColorGrpCdRgbList" resultType="CommonCode">
 		/* TsaRenderer.getColorGrpCdRgbList */
@@ -373,5 +363,28 @@
 		AND USE_YN = 'Y'
 		ORDER BY DELV_FEE_CD
 	</select>
+	
+	<!-- 전체 제휴채널 목록 -->
+	<select id="getAllAflinkList" resultType="CommonCode">
+		/* TsaRenderer.getAllAflinkList */
+		SELECT AL.AF_LINK_CD                      AS CD
+		     , CONCAT(CC.CD_NM,'-',AL.AF_LINK_NM) AS CD_NM
+		FROM   TB_AF_LINK AL
+		     , TB_COMMON_CODE CC
+		WHERE  AL.AF_CHANNEL = CC.CD
+		AND    AL.USE_YN = 'Y'
+		AND    CC.CD_GB = 'G053'
+		ORDER  BY AL.DISP_ORD
+	</select>
+	
+	<!-- 제휴채널 목록 -->
+	<select id="getAflinkList" parameterType="String" resultType="CommonCode">
+		/* TsaRenderer.getAflinkList */
+		SELECT AF_LINK_CD AS CD
+		     , AF_LINK_NM AS CD_NM
+		FROM   TB_AF_LINK
+		WHERE  AF_CHANNEL = #{afChannel}
+		AND    USE_YN = 'Y'
+	</select>
 
 </mapper>

+ 75 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaSettle.xml

@@ -0,0 +1,75 @@
+<?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.style24.admin.biz.dao.TsaSettleDao">
+
+	<!-- 제휴채널정산 목록 -->
+	<select id="getAfLinkFeeList" parameterType="AfLinkFee" resultType="AfLinkFee">
+		/* TsaSettle.getAfLinkFeeList */
+		SELECT AF_CHANNEL                                         /*상위채널코드*/
+		     , FN_GET_CODE_NM('G053',AF_CHANNEL) AS AF_CHANNEL_NM /*상위채널명*/
+		     , AF_LINK_CD                                         /*채널코드*/
+		     , AF_LINK_NM                                         /*채널명*/
+		     , OCCUR_DT                                           /*발생일시*/
+		     , ORD_NO                                             /*주문번호*/
+		     , ORD_DTL_STAT                                       /*주문상세상태*/
+		     , SUM(SELL_AMT)                     AS SELL_AMT      /*판매금액(상품금액.배송비제외)*/
+		     , SUM(CPN1_DC_AMT +
+		           TMTB1_DC_AMT + TMTB2_DC_AMT +
+		           GOODS_CPN_DC_AMT +
+		           CART_CPN_DC_AMT)              AS CPN_DC_AMT     /*쿠폰할인금액*/
+		     , SUM(PNT_DC_AMT + PRE_PNT_DC_AMT)  AS PNT_DC_AMT     /*포인트할인금액*/
+		     , SUM(GFCD_USE_AMT)                 AS GFCD_USE_AMT   /*상품권사용금액*/
+		     , SUM(SELL_AMT - (CPN1_DC_AMT + TMTB1_DC_AMT + TMTB2_DC_AMT + GOODS_CPN_DC_AMT + CART_CPN_DC_AMT + PG_CPN_AMT)
+		                    - (PNT_DC_AMT + PRE_PNT_DC_AMT)
+		                    - GFCD_USE_AMT)      AS PAY_AMT        /*결제금액(VAT포함)*/
+		     , SUM(TRUNCATE((SELL_AMT - (CPN1_DC_AMT + TMTB1_DC_AMT + TMTB2_DC_AMT + GOODS_CPN_DC_AMT + CART_CPN_DC_AMT + PG_CPN_AMT)
+		                              - (PNT_DC_AMT + PRE_PNT_DC_AMT)
+		                              - GFCD_USE_AMT
+		                    ) / 1.1,0))          AS SALES_AMT      /*매출금액(VAT제외). 건별로 1.1로 나누고 소숫점을 절사하여 합계를 낸다.*/
+		FROM   (
+		        SELECT AL.AF_CHANNEL
+		             , ODH.AF_LINK_CD                                              /*제휴링크코드*/
+		             , AL.AF_LINK_NM
+		             , DATE_FORMAT(ODH.REG_DT,'%Y-%m-%d %m:%h:%s') AS OCCUR_DT     /*발생일자*/
+		             , ODH.ORD_NO
+		             , ODH.ORD_DTL_NO
+		             , CASE WHEN ODH.ORD_DTL_STAT = 'G013_20' THEN
+		                        FN_GET_CODE_NM('G013',ODH.ORD_DTL_STAT)
+		                    ELSE
+		                        IFNULL(FN_GET_CODE_NM('G685',OCD.CHG_STAT),'주문취소')
+		               END                                         AS ORD_DTL_STAT /*주문상세상태*/
+		             , (ODH.ORD_AMT - ODH.CNCL_RTN_AMT)            AS SELL_AMT     /*판매금액(상품금액.배송비제외)*/
+		             , ODH.CPN1_DC_AMT                                             /*1차쿠폰(즉시할인쿠폰)할인금액*/
+		             , ODH.TMTB1_DC_AMT                                            /*다다익선할인금액(수량)*/
+		             , ODH.TMTB2_DC_AMT                                            /*다다익선할인금액(금액)*/
+		             , ODH.GOODS_CPN_DC_AMT                                        /*상품쿠폰할인금액*/
+		             , ODH.CART_CPN_DC_AMT                                         /*장바구니할인금액*/
+		             , 0                                           AS PG_CPN_AMT   /*PG쿠폰금액.TODO:바로 아래 쿼리문으로 대체해야 함*/
+		             -- , ODH.PG_CPN_AMT                                              /*PG쿠폰금액*/
+		             , ODH.PNT_DC_AMT                                              /*포인트할인금액*/
+		             , ODH.PRE_PNT_DC_AMT                                          /*선포인트할인금액*/
+		             , ODH.GFCD_USE_AMT                                            /*상품권사용금액*/
+		        FROM   TB_ORDER_DETAIL_HST ODH
+		        INNER JOIN TB_AF_LINK AL
+		                ON ODH.AF_LINK_CD = AL.AF_LINK_CD
+		        LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		                     ON ODH.ORD_DTL_NO = OCD.ORD_DTL_NO
+		                    AND OCD.CHG_STAT IN ('G685_21','G685_32','G685_42')	/*취소완료,교환완료,반품완료*/
+		        WHERE  ODH.ORD_DTL_STAT IN ('G013_20','G013_99') /*결제완료,주문취소*/
+		        AND    ODH.REG_DT <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
+		        AND    ODH.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'),INTERVAL 1 DAY)
+		        <if test="ordNo != null and ordNo != ''">
+		        AND    ODH.ORD_NO = #{ordNo}
+		        </if>
+		        <if test="afLinkCd != null and afLinkCd != ''">
+		        AND    AL.AF_LINK_CD = #{afLinkCd}
+		        </if>
+		        <if test="afChannel != null and afChannel != ''">
+		        AND    AL.AF_CHANNEL = #{afChannel}
+		        </if>
+		       ) U
+		GROUP  BY AF_CHANNEL, AF_LINK_CD, AF_LINK_NM, OCCUR_DT, ORD_NO, ORD_DTL_STAT
+		ORDER  BY AF_CHANNEL, AF_LINK_CD, AF_LINK_NM, OCCUR_DT, ORD_NO, ORD_DTL_STAT
+	</select>
+
+</mapper>

+ 21 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaSystem.xml

@@ -25,6 +25,27 @@
 		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) = 'C' THEN
 		                FN_GET_CODE_NM('G003',A.ROLE_REF_VAL)
 		       END                                         AS VENDOR_NM      /*벤더명*/
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                A.ROLE_REF_VAL
+		       END                                         AS AF_LINK_CD     /*제휴링크코드*/
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                (SELECT AF_LINK_NM
+		                 FROM   TB_AF_LINK
+		                 WHERE  AF_LINK_CD = A.ROLE_REF_VAL
+		                )
+		       END                                         AS AF_LINK_NM     /*제휴링크명*/
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                (SELECT AF_CHANNEL
+		                 FROM   TB_AF_LINK
+		                 WHERE  AF_LINK_CD = A.ROLE_REF_VAL
+		                )
+		       END                                         AS AF_CHANNEL     /*제휴채널*/
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                (SELECT FN_GET_CODE_NM('G053',AL.AF_CHANNEL)
+		                 FROM   TB_AF_LINK AL
+		                 WHERE  AL.AF_LINK_CD = A.ROLE_REF_VAL
+		                )
+		       END                                         AS AF_CHANNEL_NM  /*제휴채널명*/
 		     , A.EMAIL                                                       /*이메일*/
 		     , A.CELL_PHNNO                                                  /*휴대전화번호*/
 		     , A.PNT_ASSIGN_AMT                                              /*포인트부여가능금액*/

文件差異過大導致無法顯示
+ 434 - 478
src/main/webapp/WEB-INF/views/customer/CustomerDetailForm.html


+ 92 - 26
src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html

@@ -15,7 +15,7 @@
  *******************************************************************************
  -->
 <div class="modalPopup frGoodsPro" data-width="1100">
-	<div class="panelStyle" style="max-height:900px;overflow-y:scroll;">
+	<div class="panelStyle" style="max-height:700px;overflow-y:scroll;">
 		<div class="panelTitle">
 			<strong th:text="${'다다익선 ' + (mode == 'N' ? '등록' : '상세')}">다다익선 등록</strong>
 			<button type="button" class="close" onclick="fnMorebetterFormClose()"><i class="fa fa-times"></i></button>
@@ -76,6 +76,7 @@
 						<td>
 							<label class="rdoBtn"><input type="radio" name="sectionGb" id="sectionGbQty" value="G810_10" checked="checked"/>수량</label>
 							<label class="rdoBtn"><input type="radio" name="sectionGb" id="sectionGbAmt" value="G810_11"/>금액</label>
+							<input type="hidden" id="applyGb" name="applyGb"/>
 						</td>
 						<th>할인 구분<em class="required" title="필수"></em></th>
 						<td>
@@ -119,7 +120,7 @@
 								<th>공급업체/브랜드</th>
 								<td>
 									<!-- 수정시 프로모션명 입력 : before -->
-									<div class="padding10 wid45">
+									<div class="padding10" style="display:inline-block;width:49%;">
 										<span>공급업체 설정</span>
 										<div class="padding10 inner-tb-solid">
 											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddCompany">업체 추가</button>
@@ -128,7 +129,7 @@
 											<div id="gridFGPromotionCompanyList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 										</div>
 									</div>
-									<div class="padding10 wid45">
+									<div class="padding10" style="display:inline-block;width:49%;">
 										<span>브랜드 설정</span>
 										<div class="padding10 inner-tb-solid">
 											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddBrand">브랜드 추가</button>
@@ -297,7 +298,7 @@
 	// 브랜드 리스트 설정
 	var columnBrandList = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "브랜드ID", field: "brandCd", width: 120, cellClass: 'text-center'},
+		{headerName: "브랜드ID", field: "brandCd", width: 110, cellClass: 'text-center'},
 		{headerName: "브랜드명", field: "brandEnm", width: 120, cellClass: 'text-center'},
 		{headerName: "공급업체명", field: "supplyCompNm", width: 150, cellClass: 'text-center'},
 		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
@@ -315,7 +316,8 @@
 		{headerName: "상품코드", field: "goodsCd", width: 120, cellClass: 'text-center'},
 		{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
 		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true}
+		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "실제적용대상 시퀀스", field: "tmtbApplyGoodsSq", width: 150, cellClass: 'text-center', hide: true}
 	];
 	// 제외상품 리스트 설정
 	var columnExceptGoodsList = [
@@ -329,7 +331,8 @@
 		{headerName: "상품코드", field: "goodsCd", width: 120, cellClass: 'text-center'},
 		{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
 		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true}
+		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "실제적용대상 시퀀스", field: "tmtbApplyGoodsSq", width: 150, cellClass: 'text-center', hide: true}
 	];
 
 	// 업체분담율 리스트 설정
@@ -486,12 +489,12 @@
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function(){
-				var compAllData = gagaAgGrid.selectedRowData(gridOptionsFGCompanyList);
-				var brandAllData = gagaAgGrid.selectedRowData(gridOptionsFGBrandList);
-				var applyAllData = gagaAgGrid.selectedRowData(gridOptionsFGApplyGoodsList);
-				var exceptAllData = gagaAgGrid.selectedRowData(gridOptionsFGExceptGoodsList);
-				var burdenAllData = gagaAgGrid.selectedRowData(gridOptionsApplyBurdenList);
-				var sectionGbAllData = gagaAgGrid.selectedRowData(gridOptionsSectionGbList);
+				var compAllData = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList);	//selectedRowData
+				var brandAllData = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);
+				var applyAllData = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList);
+				var exceptAllData = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList);
+				var burdenAllData = gagaAgGrid.getAllRowData(gridOptionsApplyBurdenList);
+				var sectionGbAllData = gagaAgGrid.getAllRowData(gridOptionsSectionGbList);
 
 				var jsonSupplyCompData = JSON.stringify(compAllData);
 				$('#moreBetterForm input[name=supplyCompList]').val(jsonSupplyCompData);
@@ -537,21 +540,38 @@
 			$('#moreBetterForm input[name=tmtbStdt]').focus();
 			return false;
 		}
+		// 공급업체&&브랜드 체크
+		let allSupplyCompCnt = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList).length;
+		let allBrandCnt = gagaAgGrid.getAllRowData(gridOptionsFGBrandList).length;
+		console.log('allSupplyCompCnt>>>>'+allSupplyCompCnt);
+		console.log('allBrandCnt>>>>'+allBrandCnt);
+		if(allSupplyCompCnt>0){
+			if(allBrandCnt<1){
+				mcxDialog.alert('브랜드를 추가해주세요.');
+				return;
+			}
+		}
+		if(allBrandCnt>0){
+			if(allSupplyCompCnt<1){
+				mcxDialog.alert('공급업체를 추가해주세요.');
+				return;
+			}
+		}
 
 		// 각 ag-grid list 수량
-		let supplyCompCnt = gagaAgGrid.selectedRowData(gridOptionsFGCompanyList).length;
-		let brandCnt = gagaAgGrid.selectedRowData(gridOptionsFGBrandList).length;
-		let applyGoodsCnt = gagaAgGrid.selectedRowData(gridOptionsFGApplyGoodsList).length;
-		let exceptGoodsCnt = gagaAgGrid.selectedRowData(gridOptionsFGExceptGoodsList).length;
-		let applyBurdenCnt = gagaAgGrid.selectedRowData(gridOptionsApplyBurdenList).length;
-		let sectionGbCnt = gagaAgGrid.selectedRowData(gridOptionsSectionGbList).length;
+		let supplyCompCnt = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList).length;
+		let brandCnt = gagaAgGrid.getAllRowData(gridOptionsFGBrandList).length;
+		let applyGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList).length;
+		let exceptGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList).length;
+		let applyBurdenCnt = gagaAgGrid.getAllRowData(gridOptionsApplyBurdenList).length;
+		let sectionGbCnt = gagaAgGrid.getAllRowData(gridOptionsSectionGbList).length;
 
 		if(applyGoodsCnt < 1){
-			mcxDialog.alert("선택된 적용상품이 없습니다.");
+			mcxDialog.alert("적용상품이 없습니다.");
 			return false;
 		}
 		if(sectionGbCnt < 1){
-			mcxDialog.alert("선택된 할인구간이 없습니다.");
+			mcxDialog.alert("할인구간을 설정해주세요.");
 			return false;
 		}
 
@@ -563,12 +583,12 @@
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function(){
-				var compAllData = gagaAgGrid.selectedRowData(gridOptionsFGCompanyList);
-				var brandAllData = gagaAgGrid.selectedRowData(gridOptionsFGBrandList);
-				var applyAllData = gagaAgGrid.selectedRowData(gridOptionsFGApplyGoodsList);
-				var exceptAllData = gagaAgGrid.selectedRowData(gridOptionsFGExceptGoodsList);
-				var burdenAllData = gagaAgGrid.selectedRowData(gridOptionsApplyBurdenList);
-				var sectionGbAllData = gagaAgGrid.selectedRowData(gridOptionsSectionGbList);
+				var compAllData = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList);
+				var brandAllData = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);
+				var applyAllData = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList);
+				var exceptAllData = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList);
+				var burdenAllData = gagaAgGrid.getAllRowData(gridOptionsApplyBurdenList);
+				var sectionGbAllData = gagaAgGrid.getAllRowData(gridOptionsSectionGbList);
 
 				var jsonSupplyCompData = JSON.stringify(compAllData);
 				$('#moreBetterForm input[name=supplyCompList]').val(jsonSupplyCompData);
@@ -584,12 +604,16 @@
 				var jsonSectionGbData = JSON.stringify(sectionGbAllData);
 				$('#moreBetterForm input[name=sectionGbList]').val(jsonSectionGbData);
 
+				$('#moreBetterForm input[name=applyGb]').val($('input:radio[name="sectionGb"]:checked').val());
+
+
 				var jsonData = JSON.stringify($('#moreBetterForm').serializeObject());
 				gagajf.ajaxJsonSubmit($('#moreBetterForm').prop('action'), jsonData, function() {
 					fnMorebetterFormClose();
 					$('#btnInit').trigger('click');
 					$('#btnSearch').trigger('click');
 				});
+
 			}
 		});
 
@@ -612,6 +636,13 @@
 				gagaAgGrid.addRowData(gridOptionsFGCompanyList, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm, "targetGb" : "G260_13"});
 			}
 		}
+
+		// 브랜드 데이터 체크
+		let allBrandCnt = gagaAgGrid.getAllRowData(gridOptionsFGBrandList).length;
+		if(allBrandCnt<1){
+			mcxDialog.alert('브랜드를 추가해주세요.');
+			return;
+		}
 	};
 
 	// 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
@@ -629,6 +660,41 @@
 				gagaAgGrid.addRowData(gridOptionsFGBrandList, {"brandCd" : result[i].brandCd, "brandEnm" : result[i].brandEnm, "supplyCompNm" : result[i].supplyCompNm, "targetGb" : "G260_12"});
 			}
 		}
+
+		// 공급업체 데이터 체크
+		var allSupplyCompData = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList);
+		var allBrandData = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);
+
+		console.log('allSupplyCompData cnt>>'+allSupplyCompData.length);
+		console.log('allBrandData cnt>>'+allBrandData.length);
+
+		if(allSupplyCompData.length < 1){
+			mcxDialog.alert('공급업체를 추가해주세요.');
+			return;
+		}
+
+		// 공급업체+브랜드 상품조회
+		var multiSupplyCompCd = [];
+		$.each(allSupplyCompData, function(idx, item) {
+			multiSupplyCompCd.push(item.supplyCompCd);
+		});
+
+		var multiBrand = [];
+		$.each(allBrandData, function(idx, item) {
+			multiBrand.push(item.brandCd);
+		});
+
+		var data = {multiSupplyCompCd : multiSupplyCompCd
+			,multiBrand : multiBrand
+			,pageingYn : "N"
+		};
+
+		var jsonData = JSON.stringify(data);
+		gagajf.ajaxJsonSubmit('/goods/list', jsonData, function(result) {
+			console.log('goodsList cnt>>'+result.goodsList.length);
+			console.log('goodsList >>'+result.goodsList);
+		});
+
 	};
 
 	// 분담업체율 설정 / 업체 추가 콜백함수

+ 200 - 0
src/main/webapp/WEB-INF/views/settle/AfLinkSettleForm.html

@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : AfLinkSettleForm.html
+ * @desc    : 제휴채널정산 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.20   gagamel     최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<div class="panelStyle">
+			<form id="searchForm" name="searchForm" action="#" th:action="@{'/settle/aflink/fee/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+				<table class="frmStyle" aria-describedby="검색조건">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:60%;"/>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th>발생(정산)기간<i class="required" title="필수" aria-hidden="true"></i></th>
+						<td id="terms">
+						</td>
+						<th>제휴채널</th>
+						<td>
+							<select name="afChannel">
+								<option value="">[전체]</option>
+								<option th:if="${afChannelList}" th:each="oneData, status : ${afChannelList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+							<select name="afLinkCd">
+								<option value="">[전체]</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+				
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
+			</form>
+		</div>
+		<!-- 검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="left">
+					<span class="infoTxt cBlue">
+						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>발생(정산)일시</strong> : 결제/취소/반품이 실제 발생한 일시. <i class="fa fa-info-circle marL10" aria-hidden="true"></i><strong>판매금액</strong> : 정상 판매가로 배송비를 제외한 상품금액 합계<br/>
+						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>쿠폰할인금액</strong> : 즉시할인 + 다다익선 + 상품쿠폰 + 장바구니쿠폰 + PG결제쿠폰 등의 합계. <i class="fa fa-info-circle marL10" aria-hidden="true"></i><strong>포인트사용금액</strong> : 포인트사용 + 선포인트사용 합계<br/>
+						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>결제액</strong> : 판매금액 - 쿠폰할인금액 - 포인트사용금액 - 상품권사용금액. <i class="fa fa-info-circle marL10" aria-hidden="true"></i><strong>매출액</strong> : 결제액 / 1.1
+					</span>
+				</li>
+				<li class="right">
+					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+			
+			<div id="gridList" style="width: 100%; height: 670px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let columnDefs = [
+		{headerName: "상위제휴채널", field: "afChannelNm", width: 100, rowGroup: true, hide: true},
+		{headerName: "제휴채널", field: "afLinkNm", width: 100},
+		{headerName: "발생(정산)일시", field: "occurDt", width: 150, cellClass: 'text-center'},
+		{headerName: "주문번호", field: "ordNo", width: 80, cellClass: 'text-center'},
+		{headerName: "주문상태", field: "ordDtlStat", width: 100, cellClass: 'text-center'},
+		{
+			headerName: '판매금액', field: 'sellAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '쿠폰할인금액', field: 'cpnDcAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '포인트사용금액', field: 'pntDcAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '상품권사용금액', field: 'gfcdUseAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '결제액(VAT포함)', field: 'payAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '매출액(VAT제외)', field: 'salesAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		}
+	];
+
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	gridOptions.autoGroupColumnDef = {
+			headerName: "상위제휴채널",
+			field: "grouping",
+			width: 200,
+			cellRendererParams: {
+				suppressCount: true
+			}
+		};
+	
+	// for expand everything
+	gridOptions.groupDefaultExpanded = -1;
+	
+	// 제휴채널 콤보박스 변경시
+	$('#searchForm select[name=afChannel]').on('change', function() {
+		if (gagajf.isNull($(this).val())) {
+			$("#searchForm select[name=afLinkCd] option:gt(0)").remove();
+		} else {
+			var actionUrl = '/renderer/aflink/list/' + $(this).val();
+			cfnCreateCombo(actionUrl, $('#searchForm select[name=afLinkCd]'), "[전체]");
+		}
+	});
+	
+	// 검색
+	$('#btnSearch').on('click', function() {
+		// 입력 값 체크
+		if (!gagajf.validation($('#searchForm')))
+			return false;
+		
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm', fnCreateTotal);
+	});
+	
+	// 합계 생성
+	let fnCreateTotal = function() {
+		let sellAmt = 0;
+		let cpnDcAmt = 0;
+		let pntDcAmt = 0;
+		let gfcdUseAmt = 0;
+		let payAmt = 0;
+		let salesAmt = 0;
+
+		gridOptions.api.forEachNode(function(rowNode, index) {
+			if (!rowNode.group) {
+				if (typeof rowNode.data.sellAmt == 'number') { sellAmt += rowNode.data.sellAmt; }
+				if (typeof rowNode.data.cpnDcAmt == 'number') { cpnDcAmt += rowNode.data.cpnDcAmt; }
+				if (typeof rowNode.data.pntDcAmt == 'number') { pntDcAmt += rowNode.data.pntDcAmt; }
+				if (typeof rowNode.data.gfcdUseAmt == 'number') { gfcdUseAmt += rowNode.data.gfcdUseAmt; }
+				if (typeof rowNode.data.payAmt == 'number') { payAmt += rowNode.data.payAmt; }
+				if (typeof rowNode.data.salesAmt == 'number') { salesAmt += rowNode.data.salesAmt; }
+			}
+		});
+
+		let data = {
+			grouping: '합계', afChannelNm: null, afLinkNm: null,
+			occurDt: null, ordNo: null, ordDtlStat: null,
+			sellAmt: sellAmt, cpnDcAmt: cpnDcAmt,
+			pntDcAmt: pntDcAmt, gfcdUseAmt: gfcdUseAmt,
+			payAmt: payAmt, salesAmt: salesAmt
+		};
+
+		gagaAgGrid.setPinnedRowData(gridOptions, data, 'top');
+	}
+	
+	// 엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		gagaAgGrid.exportToExcel('제휴채널정산 목록', gridOptions);
+	});
+	
+	$(document).ready(function() {
+		cfnCreateCalendar('#terms', 'startDt', 'endDt', true, '발생(정산)');
+		$('.btnToday').trigger('click');
+		
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+/*]]>*/
+</script>
+
+</html>

+ 28 - 2
src/main/webapp/WEB-INF/views/system/UserDetailForm.html

@@ -75,6 +75,10 @@
 								<option th:if="${sessionInfo.vendorId == null}" value="">[선택]</option>
 								<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
+							<select name="afLinkCd" style="display: none">
+								<option th:if="${sessionInfo.afLinkCd == null}" value="">[선택]</option>
+								<option th:if="${afLinkList}" th:each="oneData, status : ${afLinkList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
 						</td>
 					</tr>
 					<tr>
@@ -90,7 +94,7 @@
 					<tr>
 						<th>포인트부여가능금액</th>
 						<td>
-							<input type="text" name="pntAssignAmt" placeholder="" maxlength="6" data-valid-type="integer" data-valid-name="포인트부여가능금액"/>
+							<input type="text" name="pntAssignAmt" class="aR" placeholder="" maxlength="6" data-valid-type="integer" data-valid-name="포인트부여가능금액"/>
 						</td>
 						<th>IP주소</th>
 						<td>
@@ -183,6 +187,10 @@
 								<option th:if="${sessionInfo.vendorId == null}" value="">[선택]</option>
 								<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}" th:selected="${userInfo.roleRefVal == oneData.cd}"></option>
 							</select>
+							<select name="afLinkCd" style="display: none">
+								<option th:if="${sessionInfo.afLinkCd == null}" value="">[선택]</option>
+								<option th:if="${afLinkList}" th:each="oneData, status : ${afLinkList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
 						</td>
 					</tr>
 					<tr>
@@ -288,14 +296,22 @@
 		if (abRoleCd == 'G001_A' || abRoleCd == 'G001_B') { // 입점업체
 			$('#userRegisterForm select[name=supplyCompCd]').show();
 			$('#userRegisterForm select[name=vendorId]').hide();
+			$('#userRegisterForm select[name=afLinkCd]').hide();
 			$('#registerRoleRefVal').text('업체');
 		} else if (abRoleCd == 'G001_C') { // 외부몰벤더
 			$('#userRegisterForm select[name=supplyCompCd]').hide();
 			$('#userRegisterForm select[name=vendorId]').show();
+			$('#userRegisterForm select[name=afLinkCd]').hide();
 			$('#registerRoleRefVal').text('외부몰벤더');
-		} else {
+		} else if (abRoleCd == 'G001_D') { // 제휴채널
 			$('#userRegisterForm select[name=supplyCompCd]').hide();
 			$('#userRegisterForm select[name=vendorId]').hide();
+			$('#userRegisterForm select[name=afLinkCd]').show();
+			$('#registerRoleRefVal').text('제휴채널');
+		} else { // 외부몰벤더
+			$('#userRegisterForm select[name=supplyCompCd]').hide();
+			$('#userRegisterForm select[name=vendorId]').hide();
+			$('#userRegisterForm select[name=afLinkCd]').hide();
 			$('#registerRoleRefVal').text('');
 		}
 	});
@@ -387,14 +403,22 @@
 		if (abRoleCd == 'G001_A' || abRoleCd == 'G001_B') { // 입점업체
 			$('#userDetailForm select[name=supplyCompCd]').show();
 			$('#userDetailForm select[name=vendorId]').hide();
+			$('#userDetailForm select[name=afLinkCd]').hide();
 			$('#detailRoleRefVal').text('업체');
 		} else if (abRoleCd == 'G001_C') { // 외부몰벤더
 			$('#userDetailForm select[name=supplyCompCd]').hide();
 			$('#userDetailForm select[name=vendorId]').show();
+			$('#userDetailForm select[name=afLinkCd]').hide();
 			$('#detailRoleRefVal').text('외부몰벤더');
+		} else if (abRoleCd == 'G001_D') { // 제휴채널
+			$('#userDetailForm select[name=supplyCompCd]').hide();
+			$('#userDetailForm select[name=vendorId]').hide();
+			$('#userDetailForm select[name=afLinkCd]').show();
+			$('#detailRoleRefVal').text('제휴채널');
 		} else {
 			$('#userDetailForm select[name=supplyCompCd]').hide();
 			$('#userDetailForm select[name=vendorId]').hide();
+			$('#userDetailForm select[name=afLinkCd]').hide();
 			$('#detailRoleRefVal').text('');
 		}
 	});
@@ -458,6 +482,8 @@
 					$(formId + ' input[name=roleRefVal]').val($(formId + ' select[name=supplyCompCd]').val());
 				} else if (abRoleCd == 'G001_C') { // 외부몰벤더
 					$(formId + ' input[name=roleRefVal]').val($(formId + ' select[name=vendorId]').val());
+				} else if (abRoleCd == 'G001_D') { // 제휴채널
+					$(formId + ' input[name=roleRefVal]').val($(formId + ' select[name=afLinkCd]').val());
 				} else {
 					$(formId + ' input[name=roleRefVal]').val('');
 				}

+ 6 - 0
src/main/webapp/WEB-INF/views/system/UserForm.html

@@ -130,6 +130,12 @@
 		{headerName: "권한관련값", field: "roleRefVal", width: 150, cellClass: 'text-center', hide: true},
 		{headerName: "업체", field: "supplyCompNm", width: 150, cellClass: 'text-center'},
 		{headerName: "외부몰벤더", field: "vendorNm", width: 150, cellClass: 'text-center'},
+		{
+			headerName: "제휴채널", field: "afLinkNm", width: 120, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return params.data.roleCd.indexOf('G001_D') > -1 ? params.data.afChannelNm + '-' + params.value : '';
+			}
+		},
 		{headerName: "이메일", field: "email", width: 200, cellClass: 'text-center'},
 		{headerName: "휴대전화번호", field: "cellPhnno", width: 150, cellClass: 'text-center'},
 		{headerName: "IP주소", field: "ipAddr", width: 100, cellClass: 'text-center'},

部分文件因文件數量過多而無法顯示