Просмотр исходного кода

쿠폰 등록/수정 로직 수정

bin2107 5 лет назад
Родитель
Сommit
6999167e0e

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

@@ -305,4 +305,61 @@ public interface TsaCouponDao {
 	 * @since 2021. 2. 5
 	 */
 	void updateCouponStat(Coupon coupon);
+
+	/**
+	 * 쿠폰 마스터 수정
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void updateCouponMstInfo(Coupon coupon);
+
+	/**
+	 * 쿠폰 회원 구분 수정
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void deleteCouponCustGubun(Coupon coupon);
+
+	/**
+	 * 쿠폰 회원 등급 수정
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void deleteCouponCustGrade(Coupon coupon);
+
+	/**
+	 * 쿠폰 회원 결제 수정
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void deleteCouponPayType(Coupon coupon);
+
+	/**
+	 * 쿠폰 공급업체,브랜드,상품값 수정
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void deleteCouponRefVal(Coupon coupon);
+
+	/**
+	 * 쿠폰  입점업체 분담율 수정
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void deleteCouponBurden(Coupon coupon);
+
+	/**
+	 * 선착순 쿠폰 삭제
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void deleteLimitedTimeCoupon(Coupon coupon);
+
 }

+ 24 - 13
src/main/java/com/style24/admin/biz/service/TsaCouponService.java

@@ -49,25 +49,31 @@ public class TsaCouponService {
 		params.setUpdNo(TsaSession.getInfo().getUserNo());
 
 		if(cpnId != 0) {    //수정모드일때
-
+			couponDao.updateCouponMstInfo(params);	// 쿠폰 마스터 수정
+			couponDao.deleteCouponCustGubun(params);	// 쿠폰 회원 구분 수정
+			couponDao.deleteCouponCustGrade(params);	// 쿠폰 회원 등급 수정
+			couponDao.deleteCouponPayType(params);	// 쿠폰 결제 수단 수정
+			couponDao.deleteCouponRefVal(params);	// 공급업체,브랜드,카테고리,상품 삭제
+			couponDao.deleteCouponBurden(params);	// 입점업체 분담율 삭제
+			couponDao.deleteLimitedTimeCoupon(params);	// 선착순 쿠폰 삭제
 		}else{	//등록모드일때
 			params.setCpnStat("G232_10");
 			couponDao.couponInsert(params);
+		}
 
-			for(int i=0; i<params.getUsableCustGbArr().length; i++){
-				params.setUsableCustGb(params.getUsableCustGbArr()[i]);
-				couponDao.createCouponCustGubun(params);
-			}
+		for(int i=0; i<params.getUsableCustGbArr().length; i++){
+			params.setUsableCustGb(params.getUsableCustGbArr()[i]);
+			couponDao.createCouponCustGubun(params);
+		}
 
-			for(int i=0; i<params.getUsableCustGradeArr().length; i++){
-				params.setUsableCustGrade(params.getUsableCustGradeArr()[i]);
-				couponDao.createCouponCustGrade(params);
-			}
+		for(int i=0; i<params.getUsableCustGradeArr().length; i++){
+			params.setUsableCustGrade(params.getUsableCustGradeArr()[i]);
+			couponDao.createCouponCustGrade(params);
+		}
 
-			for(int i=0; i<params.getPayTypeArr().length; i++){
-				params.setPayType(params.getPayTypeArr()[i]);
-				couponDao.createCouponPayType(params);
-			}
+		for(int i=0; i<params.getPayTypeArr().length; i++){
+			params.setPayType(params.getPayTypeArr()[i]);
+			couponDao.createCouponPayType(params);
 		}
 
 		// 공급업체 등록
@@ -75,6 +81,7 @@ public class TsaCouponService {
 			compRefval.setCpnId(params.getCpnId());
 			compRefval.setCpnTarget("G260_13");
 			compRefval.setRefVal(compRefval.getSupplyCompCd());
+			compRefval.setCpnType(params.getCpnType());
 			compRefval.setRegNo(params.getRegNo());
 			compRefval.setUpdNo(params.getUpdNo());
 			couponDao.saveCouponRefVal(compRefval);
@@ -85,6 +92,7 @@ public class TsaCouponService {
 			brandRefval.setCpnId(params.getCpnId());
 			brandRefval.setCpnTarget("G260_12");
 			brandRefval.setRefVal(brandRefval.getBrandCd());
+			brandRefval.setCpnType(params.getCpnType());
 			brandRefval.setRegNo(params.getRegNo());
 			brandRefval.setUpdNo(params.getUpdNo());
 			couponDao.saveCouponRefVal(brandRefval);
@@ -95,6 +103,7 @@ public class TsaCouponService {
 			applyGoodsRefval.setCpnId(params.getCpnId());
 			applyGoodsRefval.setCpnTarget("G260_10");
 			applyGoodsRefval.setRefVal(applyGoodsRefval.getGoodsCd());
+			applyGoodsRefval.setCpnType(params.getCpnType());
 			applyGoodsRefval.setRegNo(params.getRegNo());
 			applyGoodsRefval.setUpdNo(params.getUpdNo());
 			couponDao.saveCouponRefVal(applyGoodsRefval);
@@ -107,6 +116,7 @@ public class TsaCouponService {
 			cateRefval.setRefVal(cateRefval.getCateNo());
 			cateRefval.setFormalGb(cateRefval.getFormalGb());
 			cateRefval.setBrandCd(cateRefval.getBrandCd());
+			cateRefval.setCpnType(params.getCpnType());
 			cateRefval.setRegNo(params.getRegNo());
 			cateRefval.setUpdNo(params.getUpdNo());
 			couponDao.saveCouponRefVal(cateRefval);
@@ -117,6 +127,7 @@ public class TsaCouponService {
 			exceptGoodsRefval.setCpnId(params.getCpnId());
 			exceptGoodsRefval.setCpnTarget("G260_14");
 			exceptGoodsRefval.setRefVal(exceptGoodsRefval.getGoodsCd());
+			exceptGoodsRefval.setCpnType(params.getCpnType());
 			exceptGoodsRefval.setRegNo(params.getRegNo());
 			exceptGoodsRefval.setUpdNo(params.getUpdNo());
 			couponDao.saveCouponRefVal(exceptGoodsRefval);

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

@@ -70,6 +70,9 @@ public class Coupon extends TscBaseDomain {
     private String pubReasonNm;
     private String pubReasonDtl;
 
+    private Integer limitCpnId;         // 선착순쿠폰일련번호
+    private String delYn;
+
     // 그리드 파라미터
     /*private String supplyCompList;          // 공급업체 리스트
     private String brandList;               // 브랜드 리스트

+ 1 - 0
src/main/java/com/style24/persistence/domain/CouponRefval.java

@@ -20,6 +20,7 @@ public class CouponRefval extends TscBaseDomain {
     private Integer cpnRefvalSq;            // 쿠폰대상일련번호
     private String  refFormalGb;            // 정상/이월구분(G009). 쿠폰대상구분이 카테고리일 경우 사용
     private String  refBrandCd;             // 브랜드코드. 쿠폰대상구분이 카테고리일 경우 사용
+    private String  cpnType;			    // 쿠폰유형(공통코드G230)
     @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
     private Integer[] cpnRefvalSqArr;       // 쿠폰적용대상시퀀스배열
 

+ 218 - 97
src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml

@@ -181,9 +181,9 @@
 		  , #{cpnStat}
 		  , #{endAlimYn}
 		  , #{regNo}
-		  , now()
+		  , CURRENT_TIMESTAMP()
 		  , #{updNo}
-		  , now()
+		  , CURRENT_TIMESTAMP()
 		  , #{firstOrdYn}
 		  , #{downAblYn}
 		  <choose>
@@ -208,64 +208,64 @@
 		  </choose>
 		  , #{newCustYn}
 		) ON DUPLICATE KEY UPDATE
-		    CPN_NM = #{cpnNm}
-		  , SITE_CD = #{siteCd}
-		  , AF_LINK_CD = #{afLinkCd}
-		  , 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}
+		CPN_NM = #{cpnNm}
+		, SITE_CD = #{siteCd}
+		, AF_LINK_CD = #{afLinkCd}
+		, 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}
 		<choose>
 			<when test='pdGb != null and pdGb == "P"'>
-		  , AVAIL_STDT = DATE_FORMAT(#{availStdt} , '%Y-%m-%d %H:%i:%s')
-		  , AVAIL_EDDT = DATE_FORMAT(#{availEddt} , '%Y-%m-%d %H:%i:%s')
-		  , AVAIL_DAYS = null
+				, AVAIL_STDT = DATE_FORMAT(#{availStdt} , '%Y-%m-%d %H:%i:%s')
+				, AVAIL_EDDT = DATE_FORMAT(#{availEddt} , '%Y-%m-%d %H:%i:%s')
+				, AVAIL_DAYS = null
 			</when>
 			<when test='pdGb != null and pdGb == "D"' >
-		  , AVAIL_STDT = null
-		  , AVAIL_EDDT = null
-	   	  , AVAIL_DAYS = #{availDays}
+				, AVAIL_STDT = null
+				, AVAIL_EDDT = null
+				, AVAIL_DAYS = #{availDays}
 			</when>
 		</choose>
-		  , CUST_PUB_LIMIT_QTY = #{custPubLimitQty}
-		  , TOT_PUB_LIMIT_QTY = #{totPubLimitQty}
-		  , ONE_PUB_QTY = #{onePubQty}
-		  , DOWN_STDT = DATE_FORMAT(#{downStdt} , '%Y-%m-%d %H:%i:%s')
-		  , DOWN_EDDT = DATE_FORMAT(#{downEddt} , '%Y-%m-%d %H:%i:%s')
-		  , BUY_LIMIT_AMT = #{buyLimitAmt}
-		  , PLAN_SQ = #{planSq}
-		  , REISSUANCE = #{reissuance}
-		  , CPN_STAT = #{cpnStat}
-		  , END_ALIM_YN = #{endAlimYn}
-		  , UPD_NO = #{updNo}
-		  , UPD_DT = now()
-		  , FIRST_ORD_YN = #{firstOrdYn}
-		  , DOWN_ABL_YN = #{downAblYn}
+		, CUST_PUB_LIMIT_QTY = #{custPubLimitQty}
+		, TOT_PUB_LIMIT_QTY = #{totPubLimitQty}
+		, ONE_PUB_QTY = #{onePubQty}
+		, DOWN_STDT = DATE_FORMAT(#{downStdt} , '%Y-%m-%d %H:%i:%s')
+		, DOWN_EDDT = DATE_FORMAT(#{downEddt} , '%Y-%m-%d %H:%i:%s')
+		, BUY_LIMIT_AMT = #{buyLimitAmt}
+		, PLAN_SQ = #{planSq}
+		, REISSUANCE = #{reissuance}
+		, CPN_STAT = #{cpnStat}
+		, END_ALIM_YN = #{endAlimYn}
+		, UPD_NO = #{updNo}
+		, UPD_DT = now()
+		, FIRST_ORD_YN = #{firstOrdYn}
+		, DOWN_ABL_YN = #{downAblYn}
 		<choose>
 			<when test='newCustYn != null and newCustYn == "Y"'>
-		  , CUST_JOIN_STDT = DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %H:%i:%s')
-		  , CUST_JOIN_EDDT = DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %H:%i:%s')
+				, CUST_JOIN_STDT = DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %H:%i:%s')
+				, CUST_JOIN_EDDT = DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %H:%i:%s')
 			</when>
 			<when test='newCustYn != null and newCustYn == "N"'>
-		  , CUST_JOIN_STDT = null
-		  , CUST_JOIN_EDDT = null
+				, CUST_JOIN_STDT = null
+				, CUST_JOIN_EDDT = null
 			</when>
 		</choose>
 		<choose>
 			<when test='firstOrdYn != null and firstOrdYn == "Y"'>
-		  , BUY_STDT = DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
-		  , BUY_EDDT = DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
+				, BUY_STDT = DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
+				, BUY_EDDT = DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
 			</when>
 			<when test='firstOrdYn != null and firstOrdYn == "N"'>
-		  , BUY_STDT = null
-		  , BUY_EDDT = null
+				, BUY_STDT = null
+				, BUY_EDDT = null
 			</when>
 		</choose>
-		  , NEW_CUST_YN = #{newCustYn}
+		, NEW_CUST_YN = #{newCustYn}
 	</insert>
 
 	<!-- 쿠폰조회 목록 -->
@@ -316,61 +316,58 @@
 		  <if test='refBrandCd != null and refBrandCd != ""'>
 		  , REF_BRAND_CD
 		  </if>
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		)
-		SELECT CPN_ID
-			 , #{cpnRefvalSq}
-			 , CPN_TYPE
-			 , #{cpnTarget}
-			 , #{refVal}
-			 <if test='refFormalGb != null and refFormalGb != ""'>
-			 , #{refFormalGb}
-			 </if>
+		, REG_NO
+		, REG_DT
+		, UPD_NO
+		, UPD_DT
+		) VALUES (
+			#{cpnId}
+			, #{cpnRefvalSq}
+			, #{cpnType}
+			, #{cpnTarget}
+			, #{refVal}
+			<if test='refFormalGb != null and refFormalGb != ""'>
+			, #{refFormalGb}
+			</if>
 			 <if test='refBrandCd != null and refBrandCd != ""'>
 			 , #{refBrandCd}
 			 </if>
-			 , REG_NO
-			 , now()
-			 , UPD_NO
-			 , 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()
+			 , #{regNo}
+			 , CURRENT_TIMESTAMP()
+			 , #{updNo}
+			 , CURRENT_TIMESTAMP()
+		) ON DUPLICATE KEY UPDATE
+		REF_VAL = #{refVal}
+		, CPN_TYPE = #{cpnType}
+		, CPN_TARGET = #{cpnTarget}
+		, REF_FORMAL_GB = #{refFormalGb}
+		, REF_BRAND_CD = #{refBrandCd}
+		, DEL_YN = #{delYn}
+		, UPD_NO = #{updNo}
+		, UPD_DT = now()
 	</insert>
 
 	<!-- 쿠폰 입점업체 분담율 등록 -->
 	<insert id="saveCouponBurden" parameterType="CouponBurden">
 		/* TsaCoupon.saveCouponBurden */
-		INSERT INTO TB_COUPON_BURDEN(
-		    CPN_ID
-		  , SUPPLY_COMP_CD
-		  , BURDEN_RATE
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		)
-		SELECT CPN_ID
-			 , #{supplyCompCd}
-			 , #{burdenRate}
-			 , REG_NO
-			 , now()
-			 , UPD_NO
-			 , now()
-		  FROM TB_COUPON
-		 WHERE CPN_ID = #{cpnId}
-			ON DUPLICATE KEY UPDATE
-			   BURDEN_RATE = #{burdenRate}
-			 , UPD_NO = #{updNo}
-			 , UPD_DT = now()
+		INSERT INTO TB_COUPON_BURDEN( CPN_ID
+									, SUPPLY_COMP_CD
+									, BURDEN_RATE
+									, REG_NO
+									, REG_DT
+									, UPD_NO
+									, UPD_DT)
+		VALUES ( #{cpnId}
+			   , #{supplyCompCd}
+			   , #{burdenRate}
+			   , #{regNo}
+			   , CURRENT_TIMESTAMP()
+			   , #{updNo}
+			   , CURRENT_TIMESTAMP()
+		) ON DUPLICATE KEY UPDATE
+			BURDEN_RATE = #{burdenRate}
+			, UPD_NO = #{updNo}
+			, UPD_DT = now()
 	</insert>
 
 	<!-- 자사브랜드 조회-->
@@ -452,6 +449,7 @@
 			 , B.GOODS_NM
 			 , C.BRAND_ENM
 			 , A.CPN_REFVAL_SQ
+		     , A.DEL_YN
 		  FROM TB_COUPON_REFVAL A
 		 INNER JOIN TB_GOODS B ON A.REF_VAL = B.GOODS_CD
 		 INNER JOIN TB_BRAND C ON B.BRAND_CD = C.BRAND_CD
@@ -467,6 +465,7 @@
 		SELECT B.BRAND_CD
 			 , B.BRAND_ENM
 			 , A.CPN_REFVAL_SQ
+		     , A.DEL_YN
 		  FROM TB_COUPON_REFVAL A
 		 INNER JOIN TB_BRAND B ON A.REF_VAL = B.BRAND_CD
 		 WHERE A.CPN_ID = #{cpnId}
@@ -485,6 +484,7 @@
 			 , A.REF_FORMAL_GB					AS FORMAL_GB
 		     , A.REF_BRAND_CD					AS BRAND_CD
 			 , A.CPN_REFVAL_SQ
+		     , A.DEL_YN
 		  FROM TB_COUPON_REFVAL A
 		 INNER JOIN TB_CATE_4SRCH B ON A.REF_VAL = B.LEAF_CATE_NO
 		 WHERE A.CPN_ID = #{cpnId}
@@ -499,6 +499,7 @@
 		SELECT B.SUPPLY_COMP_CD
 			 , B.SUPPLY_COMP_NM
 			 , A.CPN_REFVAL_SQ
+		     , A.DEL_YN
 		  FROM TB_COUPON_REFVAL A
 		 INNER JOIN TB_SUPPLY_COMPANY B ON A.REF_VAL = B.SUPPLY_COMP_CD
 		 WHERE A.CPN_ID = #{cpnId}
@@ -516,6 +517,7 @@
 			 , CPN_ID
 		  FROM TB_COUPON_BURDEN
 		 WHERE CPN_ID = #{value}
+		   AND DEL_YN = 'N'
 	</select>
 
 	<!-- 쿠폰 적용대상 수정-->
@@ -524,7 +526,7 @@
 		UPDATE TB_COUPON_REFVAL
 		   SET DEL_YN = 'Y'
 			 , UPD_NO = #{updNo}
-			 , UPD_DT = now()
+			 , UPD_DT = CURRENT_TIMESTAMP()
 		 WHERE CPN_ID = #{cpnId}
 		   AND CPN_REFVAL_SQ IN
 		  <foreach collection="cpnRefvalSqArr" item="item" open="(" separator="," close=")">
@@ -556,9 +558,9 @@
 		     , #{pubReasonDtl}
 		     , #{endAlimSendYn}
 		     , #{regNo}
-		     , NOW()
+		     , CURRENT_TIMESTAMP()
 		     , #{updNo}
-		     , NOW()
+		     , CURRENT_TIMESTAMP()
 		)
 	</insert>
 
@@ -581,7 +583,7 @@
 		UPDATE TB_CUST_COUPON
 		   SET AVAIL_EDDT = DATE_FORMAT(#{availEddt} , '%Y-%m-%d')
 			 , UPD_NO = #{updNo}
-			 , UPD_DT = now()
+			 , UPD_DT = CURRENT_TIMESTAMP()
 		 WHERE CPN_ID = #{cpnId}
 		   AND USED_DT IS NOT NULL
 		   AND CUST_NO = #{custNo}
@@ -792,7 +794,14 @@
 				 ,CURRENT_TIMESTAMP()
 				 ,#{updNo}
 				 ,CURRENT_TIMESTAMP()
-		)
+		) ON DUPLICATE KEY UPDATE
+			LIMIT_CPN_NM = #{limitCpnNm}
+			, DOWN_LIMIT_QTY = #{downLimitQty}
+			, DOWN_STDT = DATE_FORMAT(#{downStdt},'%Y-%m-%d %H:%i:%s')
+			, DOWN_EDDT = DATE_FORMAT(#{downEddt},'%Y-%m-%d %H:%i:%s')
+			, DEL_YN = 'N'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP()
 	</insert>
 
 	<select id="getLimitedTimeCouponList" parameterType="int" resultType="CouponLimitedTime">
@@ -820,7 +829,7 @@
 		UPDATE TB_LIMITED_TIME_COUPON
 		SET DEL_YN = 'Y'
 		, UPD_NO = #{updNo}
-		, UPD_DT = now()
+		, UPD_DT = CURRENT_TIMESTAMP()
 		WHERE CPN_ID = #{cpnId}
 		AND LIMIT_CPN_ID IN
 		<foreach collection="arrLimitCpnId" item="item" index="index"  open="(" close=")" separator=",">
@@ -829,15 +838,127 @@
 	</update>
 
 	<update id="updateCouponStat" parameterType="Coupon">
-		/* TsaMarketing.updateCouponStat */
+		/* TsaCoupon.updateCouponStat */
 		UPDATE TB_COUPON SET
 		CPN_STAT = #{cpnStat}
 		<if test="cpnStat == 'G232_14'">
 			, DEL_YN = 'Y'
 		</if>
 		, UPD_NO = #{updNo}
-		, UPD_DT = NOW()
+		, UPD_DT = CURRENT_TIMESTAMP()
+		WHERE CPN_ID = #{cpnId}
+	</update>
+	
+	<update id="updateCouponMstInfo" parameterType="Coupon">
+		/* TsaCoupon.updateCouponMstInfo */
+		UPDATE	TB_COUPON	SET
+		CPN_NM = #{cpnNm}
+		, SITE_CD = #{siteCd}
+		, AF_LINK_CD = #{afLinkCd}
+		, 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}
+		<choose>
+			<when test='pdGb != null and pdGb == "P"'>
+				, AVAIL_STDT = DATE_FORMAT(#{availStdt} , '%Y-%m-%d %H:%i:%s')
+				, AVAIL_EDDT = DATE_FORMAT(#{availEddt} , '%Y-%m-%d %H:%i:%s')
+				, AVAIL_DAYS = null
+			</when>
+			<when test='pdGb != null and pdGb == "D"' >
+				, AVAIL_STDT = null
+				, AVAIL_EDDT = null
+				, AVAIL_DAYS = #{availDays}
+			</when>
+		</choose>
+		, CUST_PUB_LIMIT_QTY = #{custPubLimitQty}
+		, TOT_PUB_LIMIT_QTY = #{totPubLimitQty}
+		, ONE_PUB_QTY = #{onePubQty}
+		, DOWN_STDT = DATE_FORMAT(#{downStdt} , '%Y-%m-%d %H:%i:%s')
+		, DOWN_EDDT = DATE_FORMAT(#{downEddt} , '%Y-%m-%d %H:%i:%s')
+		, BUY_LIMIT_AMT = #{buyLimitAmt}
+		, PLAN_SQ = #{planSq}
+		, REISSUANCE = #{reissuance}
+		, CPN_STAT = #{cpnStat}
+		, END_ALIM_YN = #{endAlimYn}
+		, UPD_NO = #{updNo}
+		, UPD_DT = CURRENT_TIMESTAMP()
+		, FIRST_ORD_YN = #{firstOrdYn}
+		, DOWN_ABL_YN = #{downAblYn}
+		<choose>
+			<when test='newCustYn != null and newCustYn == "Y"'>
+				, CUST_JOIN_STDT = DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %H:%i:%s')
+				, CUST_JOIN_EDDT = DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %H:%i:%s')
+			</when>
+			<when test='newCustYn != null and newCustYn == "N"'>
+				, CUST_JOIN_STDT = null
+				, CUST_JOIN_EDDT = null
+			</when>
+		</choose>
+		<choose>
+			<when test='firstOrdYn != null and firstOrdYn == "Y"'>
+				, BUY_STDT = DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
+				, BUY_EDDT = DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
+			</when>
+			<when test='firstOrdYn != null and firstOrdYn == "N"'>
+				, BUY_STDT = null
+				, BUY_EDDT = null
+			</when>
+		</choose>
+		, NEW_CUST_YN = #{newCustYn}
+		WHERE CPN_ID = #{cpnId}
+	</update>
+	
+	<delete id="deleteCouponCustGubun" parameterType="Coupon">
+		/* TsaCoupon.deleteCouponCustGubun */
+		DELETE FROM	TB_COUPON_CUST_GBN
+		WHERE	CPN_ID = #{cpnId}
+	</delete>
+
+	<delete id="deleteCouponCustGrade" parameterType="Coupon">
+		/* TsaCoupon.deleteCouponCustGrade */
+		DELETE FROM	TB_COUPON_CUST_GRADE
+		WHERE	CPN_ID = #{cpnId}
+	</delete>
+
+	<delete id="deleteCouponPayType" parameterType="Coupon">
+		/* TsaCoupon.deleteCouponPayType */
+		DELETE FROM	TB_COUPON_PAYTYPE
+		WHERE	CPN_ID = #{cpnId}
+	</delete>
+	
+	<update id="deleteCouponRefVal" parameterType="Coupon">
+		/* TsaCoupon.deleteCouponRefVal */
+		UPDATE TB_COUPON_REFVAL SET
+			DEL_YN = 'Y'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
+		WHERE CPN_ID = #{cpnId}
+		  AND DEL_YN = 'N'
+	</update>
+
+	<update id="deleteCouponBurden" parameterType="Coupon">
+		/* TsaCoupon.deleteCouponBurden */
+		UPDATE TB_COUPON_BURDEN SET
+			DEL_YN = 'Y'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
+		WHERE CPN_ID = #{cpnId}
+		  AND DEL_YN = 'N'
+	</update>
+
+	<update id="deleteLimitedTimeCoupon" parameterType="Coupon">
+		/* TsaCoupon.deleteLimitedTimeCoupon */
+		UPDATE TB_LIMITED_TIME_COUPON SET
+			DEL_YN = 'Y'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
 		WHERE CPN_ID = #{cpnId}
+		  AND DEL_YN = 'N'
 	</update>
 
 </mapper>

+ 60 - 20
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html

@@ -15,7 +15,7 @@
  *******************************************************************************
  -->
 <div class="modalPopup" data-width="1200">
-	<div class="panelStyle" style="height: 750px">
+	<div class="panelStyle" style="height: 750px;">
 		<div class="panelTitle">
 			<h2 th:text="${'쿠폰 ' + (mode == 'N' ? '등록' : '수정')}">쿠폰등록</h2>
 			<button type="button" class="close" onclick="uifnPopupClose('CouponRegForm')"><i class="fa fa-times"></i></button>
@@ -497,8 +497,7 @@
 				<div class="mdPopBtnB aR">
 					<button type="button" class="btn btn-info btn-lg" onclick="fnPubCustListPopUp();" th:if="${mode == 'U'}">발급받은회원</button>
 					<button type="button" class="btn btn-info btn-lg" onclick="fnCustomerIssuePopUp();" th:if="${mode == 'U' && cpnDetail.dcCdGb == 'G233_00'}">쿠폰발행</button>  <!-- 난수유형과 시리얼 유형에서는 쿠폰발행기능 X -->
-					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponSave" onclick="fnCouponCreate();" th:if="${mode == 'N'}">등록</button>
-					<button type="button" class="btn btn-info btn-lg" onclick="fnCouponUpdate();" th:if="${mode == 'U'}">수정</button>
+					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponSave" onclick="fnCouponCreate();">등록</button>
 					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnChangeStatIng" style="display: none;">진행</button>
 					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponDelete" style="display: none;">삭제</button>
 					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponStop" style="display: none;">중지</button>
@@ -546,13 +545,14 @@
 		{ headerName: "쿠폰분담율(%)", field:"burdenRate" , width:150, cellClass: "text-center" ,
 		  cellEditorParams: { maxlength: 10, required: true }
 		} ,
-		{ headerName: "삭제여부" , field: "delYn"  , width:150, cellClass: "text-center" ,
+		/*{ headerName: "삭제여부" , field: "delYn"  , width:150, cellClass: "text-center" ,
 			cellEditor: 'agRichSelectCellEditor',
 			cellEditorParams: { values: gagaAgGrid.extractValues(delYnList) },
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(delYnList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(delYnList, params.newValue); }
-		} ,
-		{ headerName: "쿠폰번호"  , field: "cpnId" , width: 120 , cellClass: 'text-center' , hide:true}
+		} ,*/
+		{ headerName: "쿠폰번호"  , field: "cpnId" , width: 120 , cellClass: 'text-center' , hide:true},
+		{ headerName: "삭제여부"  , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
 	];
 
 	// ag-grid 공급처 컬럼
@@ -560,7 +560,8 @@
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{ headerName : "공급업체코드" , field: "supplyCompCd" , width:150, cellClass: 'text-center'} ,
 		{ headerName: "공급업체명" , field: "supplyCompNm" , width:150, cellClass: 'text-center'},
-		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
+		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
+		{ headerName: "삭제여부"  , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
 	];
 
 	// ag-grid 브랜드 컬럼
@@ -569,7 +570,8 @@
 		{ headerName : "브랜드ID" , field: "brandCd" , width: 120, cellClass : 'text-center'} ,
 		{ headerName : "브랜드명" , field: "brandEnm" , width: 120, cellClass: 'text-center'} ,
 		//{ headerName : "공급업체명", field: "supplyCompNm" , width: 150, cellClass: 'text-center' } ,
-		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
+		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
+		{ headerName: "삭제여부"  , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
 	];
 
 	// ag-grid 적용상품 컬럼
@@ -578,7 +580,8 @@
 		{ headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
 		{ headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
 		{ headerName: "상품명"  , field: "goodsNm" , width: 250 , cellClass: 'text-center'} ,
-		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
+		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
+		{ headerName: "삭제여부"  , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
 	];
 
 	// ag-grid 카테고리 컬럼
@@ -610,7 +613,8 @@
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(selfBrandList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(selfBrandList, params.newValue); }
 		},
-		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
+		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
+		{ headerName: "삭제여부"  , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
 	];
 
 	// ag-grid 제외상품 컬럼
@@ -619,7 +623,8 @@
 		{ headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
 		{ headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
 		{ headerName: "상품명"  , field: "goodsNm" , width: 250 , cellClass: 'text-center'} ,
-		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
+		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
+		{ headerName: "삭제여부"  , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
 	];
 
 	// ag-grid 시리얼 및 난수 리스트
@@ -671,6 +676,36 @@
 	limitedTimeCpnGridOptions.defaultColDef.editable = true;
 	limitedTimeCpnGridOptions.rowSelection = "multiple";
 
+	// 삭제버튼 클릭시
+	// 1.공급업체
+	$('#btnSupplyDel').on('click', function() {
+		supplyGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(supplyGridOptions)});
+	});
+	// 2.브랜드
+	$('#btnBrandDel').on('click', function() {
+		brandGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(brandGridOptions)});
+	});
+	// 3.카테고리
+	$('#btnCateDel').on('click', function() {
+		cateGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(cateGridOptions)});
+	});
+	// 4.적용상품
+	$('#btnGoodsDel').on('click', function() {
+		goodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(goodsGridOptions)});
+	});
+	// 5.제외상품
+	$('#btnExcepGoodsDel').on('click', function() {
+		excepGoodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(excepGoodsGridOptions)});
+	});
+	// 6.입점업체
+	$('#btnDelRow').on('click', function() {
+		inComGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(inComGridOptions)});
+	});
+	// 7.선착순
+	$('#btnDelLimitedTimeCpnRow').on('click', function() {
+		limitedTimeCpnGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(limitedTimeCpnGridOptions)});
+	});
+
 	// 선착순 쿠폰 행추가
 	$('#btnAddLimitedTimeCpnRow').on('click', function() {
 		var data = { cpnId: 1 ,limitCpnNm: null, downStdt: null, downEddt: null, downLimitQty: null, limitCpnId: null  };
@@ -678,7 +713,7 @@
 	});
 
 	// 선착순 쿠폰 행삭제
-	$('#btnDelLimitedTimeCpnRow').on('click', function() {
+	/*$('#btnDelLimitedTimeCpnRow').on('click', function() {
 		var selectedData = limitedTimeCpnGridOptions.api.getSelectedRows();
 		if (selectedData.length == 0) {
 			mcxDialog.alert('선택된 행이 없습니다.');
@@ -706,6 +741,7 @@
 			});
 		}
 	});
+	*/
 
 	// 선착순 쿠폰 체크박스 클릭시
 	$("#CouponForm #limitedTimeCpnBox").bind('click', function (){
@@ -1232,7 +1268,7 @@
 	};
 
 	// 적용대상 - 브랜드 삭제 버튼시
-	$('#btnBrandDel').on('click' , function(){
+	/*$('#btnBrandDel').on('click' , function(){
 		var selectVal = brandGridOptions.api.getSelectedRows();
 
 		if(selectVal.length == 0) {
@@ -1264,6 +1300,7 @@
 			brandGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(brandGridOptions)});
 		}
 	});
+	*/
 
 	// 적용대상 - 공급처 추가 버튼시
 	$('#btnSupplyAdd').on('click' , function (){
@@ -1290,7 +1327,7 @@
 	};
 
 	// 적용대상 - 공급처 삭제시시
-	$('#btnSupplyDel').on('click' , function () {
+	/*$('#btnSupplyDel').on('click' , function () {
 		var selectVal = supplyGridOptions.api.getSelectedRows();
 
 		if(selectVal.length == 0) {
@@ -1322,7 +1359,7 @@
 			// 신규화면이면 그리드상 삭제
 			supplyGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(supplyGridOptions)});
 		}
-	});
+	});*/
 
 	// 적용대상 - 카테고리 추가시
 	$('#btnCateAdd').on('click' , function () {
@@ -1349,7 +1386,7 @@
 	}
 
 	// 적용대상 - 카테고리 삭제시
-	$('#btnCateDel').on('click' , function () {
+	/*$('#btnCateDel').on('click' , function () {
 		var selectVal = cateGridOptions.api.getSelectedRows();
 
 		if(selectVal.length == 0) {
@@ -1381,6 +1418,7 @@
 			cateGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(cateGridOptions)});
 		}
 	});
+	*/
 
 	// 적용대상 - 상품 추가시
 	$('#btnGoodsAdd').on('click' , function () {
@@ -1393,7 +1431,7 @@
 	};
 
 	// 적용대상 - 상품 삭제 시
-	$('#btnGoodsDel').on('click' , function () {
+	/*$('#btnGoodsDel').on('click' , function () {
 		var selectVal = goodsGridOptions.api.getSelectedRows();
 
 		if(selectVal.length == 0) {
@@ -1423,6 +1461,7 @@
 			goodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(goodsGridOptions)});
 		}
 	});
+	 */
 
 	// 적용대상 - 제외상품 추가시
 	$('#btnExcepGoodsAdd').on('click' , function(){
@@ -1434,7 +1473,7 @@
 	};
 
 	// 적용대상 - 제외상품 삭제시
-	$('#btnExcepGoodsDel').on('click' , function () {
+	/*$('#btnExcepGoodsDel').on('click' , function () {
 		var selectVal = excepGoodsGridOptions.api.getSelectedRows();
 
 		if(selectVal.length == 0) {
@@ -1467,6 +1506,7 @@
 			excepGoodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(excepGoodsGridOptions)});
 		}
 	});
+	*/
 
 	// ag-grid 상품관련 list 콜백함수
 	function gridAddGoodsList(OriginGridListOption, result, gubun) {
@@ -1573,9 +1613,9 @@
 		gagaAgGrid.addRowData(inComGridOptions , data , "supplyCompCd" );
 	});
 	// 행삭제시
-	$('#btnDelRow').on('click' , function(){
+	/*$('#btnDelRow').on('click' , function(){
 		inComGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(inComGridOptions)});
-	});
+	});*/
 
 	// 제휴링크채널 수정 (제휴링크가 꼭필요한지 확인필요)
 	function fnChangeAfLinkCdList(){