xyzp1539 5 лет назад
Родитель
Сommit
4b95cc4bb0

+ 9 - 0
src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java

@@ -149,4 +149,13 @@ public interface TsaCouponDao {
 	 * @since 2021-01-18
 	 */
 	ArrayList<Coupon> getCouponBurdenList(String cpnId);
+
+	/**
+	 * 쿠폰 적용대상 삭제
+	 * @param  coupon
+	 * @return
+	 * @author xyzp1539
+	 * @since 2021-01-19
+	 */
+    void updateCouponRefval(Coupon coupon);
 }

+ 63 - 80
src/main/java/com/style24/admin/biz/service/TsaCouponService.java

@@ -63,68 +63,109 @@ public class TsaCouponService {
 		couponDao.couponInsert(params);
 
 		Gson gson = new Gson();
+		Integer sequence;
 		// 적용대상 - 공급업체
 		Collection<Coupon>	supplyCompList = gson.fromJson(params.getSupplyCompList() , new TypeToken<Collection<Coupon>>(){}.getType());
 		for(Coupon supplyComp : supplyCompList) {
-			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			sequence = null;
+			if(supplyComp.getCpnRefvalSq() != null && supplyComp.getCpnRefvalSq() > 0){
+				sequence = supplyComp.getCpnRefvalSq();
+			} else {
+				sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			}
+
 			supplyComp.setCpnId(cpnId);
 			supplyComp.setCpnRefvalSq(sequence);
 			supplyComp.setCpnTarget("G260_13");
 			supplyComp.setRefVal(supplyComp.getSupplyCompCd());
+			supplyComp.setRegNo(TsaSession.getInfo().getUserNo());
+			supplyComp.setUpdNo(TsaSession.getInfo().getUserNo());
 			couponDao.saveCouponRefVal(supplyComp);
 		}
 		// 적용대상 - 브랜드
 		Collection<Coupon> brandList = gson.fromJson(params.getBrandList() , new TypeToken<Collection<Coupon>>(){}.getType());
 		for(Coupon brand : brandList) {
-			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			sequence = null;
+			if(brand.getCpnRefvalSq() != null && brand.getCpnRefvalSq() > 0){
+				sequence = brand.getCpnRefvalSq();
+			} else {
+				sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			}
+
 			brand.setCpnId(cpnId);
 			brand.setCpnRefvalSq(sequence);
 			brand.setCpnTarget("G260_12");
 			brand.setRefVal(brand.getBrandCd());
+			brand.setRegNo(TsaSession.getInfo().getUserNo());
+			brand.setUpdNo(TsaSession.getInfo().getUserNo());
+
 			couponDao.saveCouponRefVal(brand);
 		}
 		// 적용대상 - 적용상품
 		Collection<Coupon> applyGoodsList = gson.fromJson(params.getApplyGoodsList() , new TypeToken<Collection<Coupon>>(){}.getType());
 		for(Coupon applyGoods : applyGoodsList ) {
-			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			sequence = null;
+			if(applyGoods.getCpnRefvalSq() != null && applyGoods.getCpnRefvalSq() > 0){
+				sequence = applyGoods.getCpnRefvalSq();
+			} else {
+				sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			}
 			applyGoods.setCpnId(cpnId);
 			applyGoods.setCpnRefvalSq(sequence);
 			applyGoods.setCpnTarget("G260_10");
 			applyGoods.setRefVal(applyGoods.getGoodsCd());
+			applyGoods.setRegNo(TsaSession.getInfo().getUserNo());
+			applyGoods.setUpdNo(TsaSession.getInfo().getUserNo());
+
 			couponDao.saveCouponRefVal(applyGoods);
 		}
 		// 적용대상 - 카테고리
 		Collection<Coupon> cateList = gson.fromJson(params.getCateList() , new TypeToken<Collection<Coupon>>(){}.getType());
 		for(Coupon cate : cateList ) {
-			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			sequence = null;
+			if(cate.getCpnRefvalSq() != null && cate.getCpnRefvalSq() > 0){
+				sequence = cate.getCpnRefvalSq();
+			} else {
+				sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			}
 			cate.setCpnId(cpnId);
 			cate.setCpnRefvalSq(sequence);
 			cate.setCpnTarget("G260_11");
 			cate.setRefVal(cate.getCateNo());
 			cate.setRefFormalGb(cate.getFormalGb());
 			cate.setRefBrandCd(cate.getBrandCd());		// ag-grid 브랜드코드
+			cate.setRegNo(TsaSession.getInfo().getUserNo());
+			cate.setUpdNo(TsaSession.getInfo().getUserNo());
+
 			couponDao.saveCouponRefVal(cate);
 		}
 		// 적용대상 - 제외상품
 		Collection<Coupon> exceptGoodsList = gson.fromJson(params.getExceptGoodsList() , new TypeToken<Collection<Coupon>>(){}.getType());
 		for(Coupon exceptGoods: exceptGoodsList ) {
-			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			sequence = null;
+			if(exceptGoods.getCpnRefvalSq() != null && exceptGoods.getCpnRefvalSq() > 0){
+				sequence = exceptGoods.getCpnRefvalSq();
+			} else {
+				sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			}
 			exceptGoods.setCpnId(cpnId);
 			exceptGoods.setCpnRefvalSq(sequence);
 			exceptGoods.setCpnTarget("G260_14");
 			exceptGoods.setRefVal(exceptGoods.getGoodsCd());
+			exceptGoods.setRegNo(TsaSession.getInfo().getUserNo());
+			exceptGoods.setUpdNo(TsaSession.getInfo().getUserNo());
+
 			couponDao.saveCouponRefVal(exceptGoods);
 		}
 		// 입점업체분담율
 		Collection<Coupon> burdenList = gson.fromJson(params.getBurdenList() , new TypeToken<Collection<Coupon>>(){}.getType());
 		for(Coupon burden: burdenList ) {
-			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
 			burden.setCpnId(cpnId);
-			burden.setCpnTarget("G260_10");
+			burden.setRegNo(TsaSession.getInfo().getUserNo());
+			burden.setUpdNo(TsaSession.getInfo().getUserNo());
+
 			couponDao.saveCouponBurden(burden);
 		}
-		//checkCpnValidation(params);
-
 	}
 
 	/**
@@ -149,77 +190,6 @@ public class TsaCouponService {
 		return couponDao.getCouponListCnt(param);
 	}
 
-	/**
-	 * 쿠폰 벨리데이션 체크
-	 * @param params
-	 * @author xyzp1539
-	 * @since  2021-01-12
-	 */
-	public void checkCpnValidation(Coupon params) {
-		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		// 할인율이면  100% 초과 체크하기
-		if(params.getDcWay() != null && params.getDcWay().equals("G240_11")) {
-			if(params.getDcAval() > 100) {
-				throw new IllegalStateException("모바일 앱 할인율은 100을 초과할수 없습니다.");
-			} else if(params.getDcPval() > 100) {
-				throw new IllegalStateException("PC할인율은 100을 초과할수 없습니다.");
-			} else if(params.getDcMval() > 100) {
-				throw new IllegalStateException("모바일 웹 100을 초과할수 없습니다.");
-			}
-		}
-
-		// 기간/일수구분이 일수인 경우 날짜 체크
-		if(params.getPdGb() != null && params.getPdGb().equals("D")) {
-			try {
-				Date date1 = format.parse(params.getAvailStdt());
-				Date date2 = format.parse(params.getAvailEddt());
-
-				log.info("checkCpnValidation params.getAvailEddt() :  {}" , params.getAvailEddt());
-				log.info("checkCpnValidation params.getAvailStdt :  {}" , params.getAvailStdt());
-				if(date2.before(date1)) {
-					throw new IllegalStateException("유효기간 종료날짜가 시작날짜보다 작습니다.");
-				}
-			} catch (ParseException exception) {
-			}
-		}
-
-		// 직접다운로드인 경우 기간 체크
-		if(params.getDnGb() != null && params.getDnGb().equals("G058_20")) {
-			try {
-				Date date1 = format.parse(params.getDownStdt());
-				Date date2 = format.parse(params.getDownEddt());
-
-				log.info("checkCpnValidation params.getDownStdt() :  {}" , params.getDownStdt());
-				log.info("checkCpnValidation params.getDownEddt :  {}" , params.getDownEddt());
-				if(date2.before(date1)) {
-					throw new IllegalStateException("다운로드 종료날짜가 시작날짜보다 작습니다.");
-				}
-			} catch (ParseException exception) {
-			}
-		}
-
-		// 첫구매 적용하는 경우 날짜 체크
-		if(params.getFirstYn() != null && params.getFirstYn().equals("Y")) {
-			try {
-				Date date1 = format.parse(params.getBuyStdt());
-				Date date2 = format.parse(params.getBuyEddt());
-
-				log.info("checkCpnValidation params.getBuyStdt() :  {}" , params.getBuyStdt());
-				log.info("checkCpnValidation params.getBuyEddt :  {}" , params.getBuyEddt());
-				if(date2.before(date1)) {
-					throw new IllegalStateException("첫구매 종료날짜가 시작날짜보다 작습니다.");
-				}
-			} catch (ParseException exception) {
-			}
-		}
-
-		// 신규회원여부 적용하는 경우 날짜 체크
-		if(params.getCustJoinYn() != null && params.getCustJoinYn().equals("Y")) {
-
-		}
-
-	}
-
 	/**
 	 * 쿠폰조회 목록
 	 * @param coupon - 쿠폰 정보
@@ -342,4 +312,17 @@ public class TsaCouponService {
 	public ArrayList<Coupon> getCouponBurdenList(String cpnId) {
 		return couponDao.getCouponBurdenList(cpnId);
 	}
+
+	/**
+	 * 쿠폰 적용대상 삭제
+	 * @param   coupon
+	 * @return
+	 * @author xyzp1539
+	 * @since 2021-01-19
+	 */
+	@Transactional("shopTxnManager")
+	public void updateCouponRefval(Coupon coupon) {
+		coupon.setUpdNo(TsaSession.getInfo().getUserNo());
+		couponDao.updateCouponRefval(coupon);
+	}
 }

+ 22 - 1
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -278,6 +278,8 @@ public class TsaMarketingController extends TsaBaseController {
 		mav.addObject("dnGbList", rendererService.getCommonCodeList("G058"));
 		// 결제수단 조회
 		mav.addObject("payTypeList", rendererService.getCommonCodeList("G015"));
+		// 상위제휴채널 조회
+		mav.addObject("upperAfLinkCdList", rendererService.getCommonCodeList("G053"));
 
 		// 이미 쿠폰 아이디가 있으면 적용대상 조회
 		if(!StringUtils.isBlank(cpnId)) {
@@ -317,13 +319,32 @@ public class TsaMarketingController extends TsaBaseController {
 	 */
 	@PostMapping("/coupon/save")
 	@ResponseBody
-	public GagaResponse couponSave(@RequestBody Coupon coupon) {
+	public GagaResponse saveCoupon(@RequestBody Coupon coupon) {
 		log.info("couponSave : {}", coupon);
 
 		couponService.saveCoupon(coupon);
 
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
+
+	/**
+	 * 쿠폰 적용대상 삭제수정
+	 * @param coupon
+	 * @return
+	 * @author xyzp1539
+	 * @since 2021-01-19
+	 */
+	@PostMapping("/coupon/refval/update")
+	@ResponseBody
+	public GagaResponse updateCouponRefval(@RequestBody Coupon coupon) {
+		log.info("couponSave : {}", coupon);
+
+		couponService.updateCouponRefval(coupon);
+
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
+
 	/* // JSM 진행 */
 
 	/* CSB 진행 */

+ 3 - 0
src/main/java/com/style24/persistence/domain/Coupon.java

@@ -1,5 +1,6 @@
 package com.style24.persistence.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
 import lombok.Data;
@@ -81,6 +82,8 @@ public class Coupon extends TscBaseDomain {
     private Integer cpnRefvalSq;             // 쿠폰대상일련번호
     private String  refFormalGb;             // 정상/이월구분(G009). 쿠폰대상구분이 카테고리일 경우 사용
     private String  refBrandCd;              // 브랜드코드. 쿠폰대상구분이 카테고리일 경우 사용
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private Integer[] cpnRefvalSqArr;        // 쿠폰적용대상시퀀스배열
 
     // TB_COUPON_BAN_GOODS
     private Integer  cpnBanGoodsSq;          //

+ 62 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml

@@ -109,9 +109,7 @@
 			CPN_ID
 		  , CPN_NM
 		  , SITE_CD
-		  <if test='afLinkCd != null and afLinkCd != ""'>
 		  , AF_LINK_CD
-	      </if>
 		  , USABLE_CUST_GB
 		  , USABLE_CUST_GRADE
 		  , CPN_TYPE
@@ -163,9 +161,7 @@
 		    #{cpnId}
 		  , #{cpnNm}
 		  , #{siteCd}
-		  <if test='afLinkCd != null and afLinkCd != ""'>
 		  , #{afLinkCd}
-		  </if>
 		  , #{usableCustGb}
 		  , #{usableCustGrade}
 		  , #{cpnType}
@@ -213,7 +209,43 @@
 		  , #{payType}
 		  </if>
 		  , #{custJoinYn}
-		)
+		) ON DUPLICATE KEY UPDATE
+			CPN_NM = #{cpnNm}
+		  , SITE_CD = #{siteCd}
+		  , AF_LINK_CD = #{afLinkCd}
+		  , USABLE_CUST_GB = #{usableCustGb}
+		  , USABLE_CUST_GRADE = #{usableCustGrade}
+		  , CPN_TYPE = #{cpnType}
+		  , APPLY_SCOPE = #{applyScope}
+		  , DC_WAY = #{dcWay}
+		  , DC_PVAL = #{dcPval}
+		  , DC_MVAL = #{dcMval}
+		  , DC_AVAL = #{dcAval}
+		  , MAX_DC_AMT = #{maxDcAmt}
+		  , PD_GB = #{pdGb}
+		  , AVAIL_STDT = #{availStdt}
+		  , AVAIL_EDDT = #{availEddt}
+		  , AVAIL_DAYS = #{availDays}
+		  , CUST_PUB_LIMIT_QTY = #{custPubLimitQty}
+		  , TOT_PUB_LIMIT_QTY = #{totPubLimitQty}
+		  , ONE_PUB_QTY = #{onePubQty}
+		  , DOWN_STDT = #{downStdt}
+		  , DOWN_EDDT = #{downEddt}
+		  , BUY_LIMIT_AMT = #{buyLimitAmt}
+		  , PLAN_SQ = #{planSq}
+		  , REISSUANCE = #{reissuance}
+		  , CPN_STAT = #{cpnStat}
+		  , END_ALIM_YN = #{endAlimYn}
+		  , UPD_NO = #{updNo}
+		  , UPD_DT = now()
+		  , FIRST_YN = #{firstYn}
+		  , DOWN_YN = #{downYn}
+		  , CUST_JOIN_STDT = #{custJoinStdt}
+		  , CUST_JOIN_EDDT = #{custJoinEddt}
+		  , BUY_STDT = #{buyStdt}
+		  , BUY_EDDT = #{buyEddt}
+		  , PAY_TYPE = #{payType}
+		  , CUST_JOIN_YN = #{custJoinYn}
 	</insert>
 
 	<!-- 쿠폰조회 목록 -->
@@ -287,6 +319,12 @@
 			 , now()
 		  FROM TB_COUPON
 		 WHERE CPN_ID = #{cpnId}
+		    ON DUPLICATE KEY UPDATE
+			REF_VAL = #{refVal}
+		  , REF_FORMAL_GB = #{refFormalGb}
+		  , REF_BRAND_CD = #{refBrandCd}
+		  , UPD_NO = #{updNo}
+		  , UPD_DT = now()
 	</insert>
 
 	<!-- 쿠폰 입점업체 분담율 등록 -->
@@ -310,6 +348,11 @@
 			 , now()
 		  FROM TB_COUPON
 		 WHERE CPN_ID = #{cpnId}
+			ON DUPLICATE KEY UPDATE
+			   SUPPLY_COMP_CD = #{supplyCompCd}
+			 , BURDEN_RATE = #{burdenRate}
+			 , UPD_NO = #{updNo}
+			 , UPD_DT = now()
 	</insert>
 
 	<!-- 자사브랜드 조회-->
@@ -447,4 +490,18 @@
 		 WHERE CPN_ID = #{value}
 	</select>
 
+	<!-- 쿠폰 적용대상 수정-->
+	<update id="updateCouponRefval" >
+		/* TsaCoupon.updateCouponRefval */
+		UPDATE TB_COUPON_REFVAL
+		   SET DEL_YN = 'Y'
+			 , UPD_NO = #{updNo}
+			 , UPD_DT = now()
+		 WHERE CPN_ID = #{cpnId}
+		   AND CPN_REFVAL_SQ IN
+		  <foreach collection="cpnRefvalSqArr" item="item" open="(" separator="," close=")">
+			#{item}
+		  </foreach>
+	</update>
+
 </mapper>

Разница между файлами не показана из-за своего большого размера
+ 474 - 408
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html


+ 1 - 1
src/main/webapp/ux/js/admin.popup.js

@@ -379,7 +379,7 @@ var cfnOpenPointDetailPopup = function(callbackfun, siteCd, custNo) {
 function cfnCouponCreatePopup(cpnId, callbackfun){
 	var actionUrl = "/marketing/coupon/popup/form?cpnId=" + cpnId;
 	if (typeof(callbackfun) != 'undefined') actionUrl += "&callBackFun=" + callbackfun;
-	cfnOpenModalPopup(actionUrl,'CouponCreatePopup');
+	cfnOpenModalPopup(actionUrl,'CouponRegForm');
 }
 
 

Некоторые файлы не были показаны из-за большого количества измененных файлов