Bladeren bron

Merge branch 'develop' into bin2107

bin2107 5 jaren geleden
bovenliggende
commit
49e35cf320

+ 79 - 2
src/main/java/com/style24/admin/biz/dao/TsaCardPromotionDao.java

@@ -4,6 +4,8 @@ import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.CardPromotion;
+import com.style24.persistence.domain.CardPromotionCondition;
+import com.style24.persistence.domain.CardPromotionTarget;
 
 /**
  * 카드프로모션 Dao
@@ -33,13 +35,88 @@ public interface TsaCardPromotionDao {
 	Collection<CardPromotion> getCardInterestList(CardPromotion cardPromotion);
 
 	/**
-	 * 카드무이자할부저장
+	 * 카드무이자할부 조건 목록
 	 * @param cardPromotion
 	 * @return
 	 * @author eskim
 	 * @since 2021. 2. 1
 	 */
-	void saveCardInterest(CardPromotion cardPromotion);
+	Collection<CardPromotionCondition> getCardPromotionConditionList(int cardPrmtSq);
+
+	/**
+	 * 카드무이자할부 대상 목록
+	 * @param cardPromotion
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 1
+	 */
+	Collection<CardPromotionTarget> getCardPromotionTargetList(int cardPrmtCdtSq);
+
+	/**
+	 * 카드프로모션 저장
+	 * @param cardPromotion
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 1
+	 */
+	void saveCardPromotion(CardPromotion cardPromotion);
+
+	/**
+	 * 카드프로모션 행사조건 삭제
+	 * @param cardPromotionCondition
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 2
+	 */
+	void deleteCardPromotionCondition(int cardPrmtCdtSq);
+
+	/**
+	 * 카드프로모션 행사조건  저장
+	 * @param cardPromotionCondition
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 2
+	 */
+	void saveCardPromotionCondition(CardPromotionCondition cardPromotionCondition);
+
+
+	/**
+	 * 카드프로모션 대상 삭제
+	 * @param cardPrmtCdtSq
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 2
+	 */
+	void deleteCardPromotionTarget(int cardPrmtCdtSq);
+
+	/**
+	 * 카드프로모션 대상 저장
+	 * @param cardPromotionTarget
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 2
+	 */
+	void createCardPromotionTarget(CardPromotionTarget cardPromotionTarget);
+
+	/**
+	 * 카드프로모션 비노출처리
+	 * @param cardPrmtSq
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 2
+	 */
+	void updateCardPromotionDsipYn(CardPromotion cardPromotion);
+
+
+	/**
+	 * 카드프로모션 삭제
+	 * @param cardPrmtSq
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 2
+	 */
+	void deleteCardPromotion(int cardPrmtSq);
+
 
 
 }

+ 147 - 1
src/main/java/com/style24/admin/biz/service/TsaCardPromotionService.java

@@ -2,12 +2,16 @@ package com.style24.admin.biz.service;
 
 import java.util.Collection;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.admin.biz.dao.TsaCardPromotionDao;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.persistence.domain.CardPromotion;
+import com.style24.persistence.domain.CardPromotionCondition;
+import com.style24.persistence.domain.CardPromotionTarget;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -53,13 +57,155 @@ public class TsaCardPromotionService {
 	 * @author eskim
 	 * @since 2021. 02. 1
 	 */
+	@Transactional("shopTxnManager")
 	public void saveCardInterest(CardPromotion cardPromotion) {
 
 		Integer userNo = TsaSession.getInfo().getUserNo();
+		log.info("[saveCardInterest] cardPromotion = {}", cardPromotion);
+		// 카드 프로모션 저장
+		cardPromotion.setRegNo(userNo);
+		cardPromotion.setUpdNo(userNo);
 
+		cardPromotion.setPrmtStd(cardPromotion.getPrmtStd().replace("-", ""));
+		cardPromotion.setPrmtEdd(cardPromotion.getPrmtEdd().replace("-", ""));
 
-		cardPromotionDao.saveCardInterest(cardPromotion);
+		cardPromotionDao.saveCardPromotion(cardPromotion);
+		log.info("[saveCardInterest] cardPromotion 2  = {}", cardPromotion);
+		// 카드 프로모션 행사조건 저장
+		if (cardPromotion.getMinNoItrt().length > 0) {
+			int cardPromotionSize = cardPromotion.getMinNoItrt().length;
+			for(int i=0; i < cardPromotionSize; i++ ) {
+
+				CardPromotionCondition cardPromotionCondition = new CardPromotionCondition();
+				cardPromotionCondition.setRegNo(userNo);
+				cardPromotionCondition.setUpdNo(userNo);
+				cardPromotionCondition.setCardPrmtSq(cardPromotion.getCardPrmtSq());
+
+				cardPromotionCondition.setMinNoItrt(cardPromotion.getMinNoItrt()[i].toString());
+				cardPromotionCondition.setMaxNoItrt(cardPromotion.getMaxNoItrt()[i].toString());
+				cardPromotionCondition.setMinPayAmt(Integer.parseInt(cardPromotion.getMinPayAmt()[i].toString()));
+				if (cardPromotion.getCardPrmtCdtSq() != null && cardPromotion.getCardPrmtCdtSq().length > 0) {
+					if (!StringUtils.isBlank(cardPromotion.getCardPrmtCdtSq()[i])) {
+						cardPromotionCondition.setCardPrmtCdtSq(Integer.parseInt(cardPromotion.getCardPrmtCdtSq()[i].toString()));
+					}
+				}
+
+				cardPromotionDao.saveCardPromotionCondition(cardPromotionCondition);
+				log.info("[saveCardInterest] cardPromotionCondition 2  = {}", cardPromotionCondition);
+				// 카드 프로모션 카드 삭제
+				cardPromotionDao.deleteCardPromotionTarget(cardPromotionCondition.getCardPrmtCdtSq());
+
+				// 카드 프로모션 카드목록 저장
+				if (cardPromotion.getArrCardCd().length > 0) {
+					String cardCd =  cardPromotion.getArrCardCd()[i].toString(); //  형식 G941_01/G941_06/G941_11
+					String [] arrCardCd = cardCd.split("/");
+					int cardSize = arrCardCd.length;
+					for(int j=0; j < cardSize; j++ ) {
+						CardPromotionTarget cardPromotionTarget = new CardPromotionTarget();
+						cardPromotionTarget.setRegNo(userNo);
+						cardPromotionTarget.setUpdNo(userNo);
+						cardPromotionTarget.setCardPrmtCdtSq(cardPromotionCondition.getCardPrmtCdtSq());
+						cardPromotionTarget.setPrmtTargetCd(arrCardCd[j].toString());
+
+						cardPromotionDao.createCardPromotionTarget(cardPromotionTarget);
+					}
+				}
+			}
+		}
+
+		// 삭제할 프로모션 조건이 있는경우
+		if(!StringUtils.isEmpty(cardPromotion.getDelCardPrmtCdtSq())) {
+			String [] delCardPrmtCdtSq = cardPromotion.getDelCardPrmtCdtSq().split("/");
+			int cardPrmtCdtSq = 0;
+			for(int j=0; j < delCardPrmtCdtSq.length; j++ ) {
+				if (!StringUtils.isBlank(delCardPrmtCdtSq[j])) {
+					cardPrmtCdtSq = Integer.parseInt(delCardPrmtCdtSq[j]);
+					cardPromotionDao.deleteCardPromotionCondition(cardPrmtCdtSq);
+					cardPromotionDao.deleteCardPromotionTarget(cardPrmtCdtSq);
+				}
+			}
+
+		}
 	}
 
+	/**
+	 * 카드무이자할부 조회
+	 * @param cardPrmtSq
+	 * @return
+	 * @author eskim
+	 * @since 2021. 02. 1
+	 */
+	public CardPromotion getCardPromotion(Integer cardPrmtSq) {
+		CardPromotion cardPrmt = new CardPromotion();
+		cardPrmt.setCardPrmtSq(cardPrmtSq);
+		cardPrmt.setPrmtGb("B");	// 무이자
+		cardPrmt.setSearch("1");	// 프로모션id
+		cardPrmt.setCondition(Integer.toString(cardPrmtSq));
+		Collection<CardPromotion> cardInterestList = cardPromotionDao.getCardInterestList(cardPrmt);
+
+		CardPromotion cardPromotion = new CardPromotion();
+		if (cardInterestList != null && !cardInterestList.isEmpty()) {
+			cardPromotion = cardInterestList.iterator().next();
+		}
+
+		Collection<CardPromotionCondition> cardPrmtCdtList = cardPromotionDao.getCardPromotionConditionList(cardPrmtSq);
+
+
+		for (CardPromotionCondition cardPromotionCondition: cardPrmtCdtList) {
+			String cardCd = "";
+			String cardNm = "";
+			Collection<CardPromotionTarget> cardPrmtTgtList = cardPromotionDao.getCardPromotionTargetList(cardPromotionCondition.getCardPrmtCdtSq());
+			for(CardPromotionTarget cardPromotionTarget : cardPrmtTgtList) {
+				cardCd += cardPromotionTarget.getPrmtTargetCd() +"/";
+				cardNm += cardPromotionTarget.getPrmtTargetNm() +"/";
+			}
+
+			cardPromotionCondition.setArrCardCd(cardCd.substring(0, cardCd.lastIndexOf("/")));
+			cardPromotionCondition.setArrCardNm(cardNm.substring(0, cardNm.lastIndexOf("/")));
+		}
+
+		cardPromotion.setCardPrmtCdtList(cardPrmtCdtList);
+
+		log.info("[getCardPromotion] cardPromotion = {}", cardPromotion);
+		return cardPromotion;
+	}
+
+	/**
+	 * 카드프로모션 비노출처리
+	 * @param cardPromotion
+	 * @return
+	 * @author eskim
+	 * @since 2021. 02. 2
+	 */
+	@Transactional("shopTxnManager")
+	public void updateCardPromotionDsipYn(CardPromotion cardPromotion) {
+		cardPromotion.setUpdNo(TsaSession.getInfo().getUserNo());
+		cardPromotionDao.updateCardPromotionDsipYn(cardPromotion);
+	}
+
+	/**
+	 * 카드프로모션 삭제
+	 * @param cardPromotion
+	 * @return
+	 * @author eskim
+	 * @since 2021. 02. 2
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteCardPromotion(CardPromotion cardPromotion) {
+
+		for(String tmpCardPrmtSq: cardPromotion.getArrCardPrmtSq()) {
+			int cardPrmtSq = Integer.parseInt(tmpCardPrmtSq);
+			//카드프로모션 조건 조회
+			Collection<CardPromotionCondition> cardPrmtCdtList = cardPromotionDao.getCardPromotionConditionList(cardPrmtSq);
+			for (CardPromotionCondition cardPromotionCondition : cardPrmtCdtList){
+				//카드프로모션 대상 삭제
+				cardPromotionDao.deleteCardPromotionTarget(cardPromotionCondition.getCardPrmtCdtSq());
+				//카드프로모션 조건 삭제
+				cardPromotionDao.deleteCardPromotionCondition(cardPromotionCondition.getCardPrmtCdtSq());
+			}
+			//카드프로모션삭제
+			cardPromotionDao.deleteCardPromotion(cardPrmtSq);
+		}
+	}
 
 }

+ 33 - 3
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -1069,6 +1069,8 @@ public class TsaMarketingController extends TsaBaseController {
 
 		ModelAndView mav = new ModelAndView();
 
+		mav.addObject("cardPrmt", cardPromotionService.getCardPromotion(cardPrmtSq));
+
 		mav.addObject("cardPrmtSq", cardPrmtSq);
 		mav.setViewName("marketing/CardInterestPopupForm");
 		return mav;
@@ -1098,10 +1100,10 @@ public class TsaMarketingController extends TsaBaseController {
 
 	/**
 	 * 카드무이자할부 저장
-	 * @param cardPromotion - 포인트 정보
-	 * @return ModelAndView
+	 * @param cardPromotion
+	 * @return
 	 * @author eskim
-	 * @since 2021. 2. 1
+	 * @since 2021. 2. 2
 	 */
 	@PostMapping("/card/interest/save")
 	@ResponseBody
@@ -1110,6 +1112,34 @@ public class TsaMarketingController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * 카드프로모션 비노출 처리
+	 * @param cardPromotion
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 3
+	 */
+	@PostMapping("/card/promotion/dispYn/update")
+	@ResponseBody
+	public GagaResponse updateCardPromotionDsipYn(@RequestBody CardPromotion cardPromotion) {
+		cardPromotionService.updateCardPromotionDsipYn(cardPromotion);
+		return super.ok(message.getMessage("SUCC_0009"));	//성공적 변경
+	}
+
+	/**
+	 * 카드프로모션 삭제 처리
+	 * @param cardPromotion
+	 * @return
+	 * @author eskim
+	 * @since 2021. 2. 3
+	 */
+	@PostMapping("/card/promotion/delete")
+	@ResponseBody
+	public GagaResponse deleteCardPromotion(@RequestBody CardPromotion cardPromotion) {
+		cardPromotionService.deleteCardPromotion(cardPromotion);
+		return super.ok(message.getMessage("SUCC_0003"));	//성공적 변경
+	}
+
 	/**
 	 *   카드관련 작업 종료 - eskim
 	 */

+ 15 - 0
src/main/java/com/style24/persistence/domain/CardPromotion.java

@@ -1,5 +1,7 @@
 package com.style24.persistence.domain;
 
+import java.util.Collection;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
@@ -26,6 +28,7 @@ public class CardPromotion extends TscBaseDomain {
 	private String note;	// 안내
 	private String dispYn;	// 표시여부
 
+
 	// 검색조건
 	private String stDate;
 	private String edDate;
@@ -46,6 +49,18 @@ public class CardPromotion extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] arrCardCd;
 
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cardPrmtCdtSq;
+
+	// 삭제할 프로모션조건
+	private String delCardPrmtCdtSq;	// 형식 /8/9
+
+	// 삭제(비노출)할 프로모션
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] arrCardPrmtSq;
+
+	// 화면 조회용
+	Collection<CardPromotionCondition> cardPrmtCdtList;
 
 	// Pagination
 	private TscPageRequest pageable;

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

@@ -23,4 +23,7 @@ public class CardPromotionCondition extends TscBaseDomain {
 	private String minNoItrt;	// 최소무이자월수(프로모션구분이 B:무이자 인경우)
 	private String maxNoItrt;	// 최대무이자월수(프로모션구분이 B:무이자 인경우)
 
+	// 화면조회용
+	private String arrCardCd;
+	private String arrCardNm;
 }

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

@@ -16,6 +16,7 @@ public class CardPromotionTarget extends TscBaseDomain {
 
 	private Integer cardPrmtCdtSq;	// 카드프로모션행사조건일련번호
 	private String prmtTargetCd;	// 포로모션대상카드(공통코드G941)
+	private String prmtTargetNm;	// 카드명
 
 	private String callBackFun;
 	private String arrCard;

+ 220 - 44
src/main/java/com/style24/persistence/mybatis/shop/TsaCardPromotion.xml

@@ -7,12 +7,10 @@
 		<choose>
 		<when test="pageable != null">
 		    ) A
-		)Z
-		WHERE RNUM BETWEEN  #{pageable.startRow} AND #{pageable.endRow}
+		WHERE NUMB BETWEEN  #{pageable.startRow} AND #{pageable.endRow}
 		</when>
 		<otherwise>
 		    ) A
-		)Z
 		</otherwise>
 		</choose>
 	</sql>
@@ -34,11 +32,11 @@
 		    </choose>
 		</if>
 		<if test="stDate != null and stDate != ''">
-		AND PRMT_EDD >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND PRMT_EDD >= REPLACE(#{stDate},'-','')
 		</if>
 		<if test="edDate != null and edDate != ''">
 		<![CDATA[
-		AND PRMT_STD < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		AND PRMT_STD <= REPLACE(#{edDate},'-','')
 		]]>
 		</if>
 		<if test='beforSkipFlag != null and beforSkipFlag == "Y"'>
@@ -49,48 +47,226 @@
 	<!-- 카드무이자할부 목록 -->
 	<select id="getCardInterestList" parameterType="CardPromotion" resultType="CardPromotion">
 		/* TsaCardPromotionDao.getCardInterestList */
-		SELECT Z.*
+		SELECT A.*
 		FROM (
-		    SELECT A.*, @rownum := @rownum + 1 AS RNUM 
-		    FROM (
-		        SELECT CARD_PRMT_SQ
-		             , PRMT_NM
-		             , DATE_FORMAT(PRMT_STD, '%Y%m%d%H%i%S') AS PRMT_STD
-		             , DATE_FORMAT(PRMT_EDD, '%Y%m%d%H%i%S') AS PRMT_EDD
-		             , PRMT_GB
-		             , DC_GB
-		             , LINK_URL
-		             , NOTE
-		             , DISP_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(UPD_NO) AS UPD_NM
-		             , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
-		        FROM TB_CARD_PROMOTION 
-		        WHERE PRMT_GB = #{prmtGb}
-		        <if test="condition != null and condition != ''">
-		            <choose>
-		                <when test='search != null and search == "1"'>
-		        AND CARD_PRMT_SQ = #{condition}
-		                </when>
-		                <otherwise >
-		        AND UPPER(PRMT_NM) LIKE CONCAT('%',UPPER(#{condition}),'%')
-		                </otherwise>
-		            </choose>
-		        </if>
-		        <if test="stDate != null and stDate != ''">
-		        AND PRMT_EDD >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-		        </if>
-		        <if test="edDate != null and edDate != ''">
-		        <![CDATA[
-		        AND PRMT_STD < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-		        ]]>
-		        </if>
-		        <if test='beforSkipFlag != null and beforSkipFlag == "Y"'>
-		        AND PRMT_EDD >= NOW() 
-		        </if>
+		    SELECT CARD_PRMT_SQ
+		         , PRMT_NM
+		         , DATE_FORMAT(PRMT_STD, '%Y-%m-%d') AS PRMT_STD
+		         , DATE_FORMAT(PRMT_EDD, '%Y-%m-%d') AS PRMT_EDD
+		         , PRMT_GB
+		         , DC_GB
+		         , LINK_URL
+		         , NOTE
+		         , DISP_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(UPD_NO) AS UPD_NM
+		         , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		         , RANK() OVER(ORDER BY CARD_PRMT_SQ DESC)        AS NUMB
+		    FROM TB_CARD_PROMOTION 
+		    WHERE PRMT_GB = #{prmtGb}
+		    <if test="condition != null and condition != ''">
+		        <choose>
+		            <when test='search != null and search == "1"'>
+		    AND CARD_PRMT_SQ = #{condition}
+		            </when>
+		            <otherwise >
+		    AND UPPER(PRMT_NM) LIKE CONCAT('%',UPPER(#{condition}),'%')
+		            </otherwise>
+		        </choose>
+		    </if>
+		    <if test="stDate != null and stDate != ''">
+		    AND PRMT_EDD >= REPLACE(#{stDate},'-','')
+		    </if>
+		    <if test="edDate != null and edDate != ''">
+		    <![CDATA[
+		    AND PRMT_STD <= REPLACE(#{edDate},'-','')
+		    ]]>
+		    </if>
+		    <if test='beforSkipFlag != null and beforSkipFlag == "Y"'>
+		    AND PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
+		    </if>
 		<include refid="getListPagingCondition_sql"/>
 	</select>
 	
+	<!-- 카드 프로모션 조건 목록 -->
+	<select id="getCardPromotionConditionList" parameterType="int" resultType="CardPromotionCondition">
+		/* TsaCardPromotionDao.getCardPromotionConditionList */
+		SELECT CARD_PRMT_CDT_SQ
+		     , CARD_PRMT_SQ
+		     , MIN_PAY_AMT
+		     , DC_WAY
+		     , DC_VAL
+		     , MAX_DC_AMT
+		     , MIN_NO_ITRT
+		     , MAX_NO_ITRT
+		     , 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(UPD_NO) AS UPD_NM
+		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		FROM TB_CARD_PROMOTION_CONDITION 
+		WHERE CARD_PRMT_SQ = #{cardPrmtSq}
+		ORDER BY CARD_PRMT_CDT_SQ
+	</select>
+	
+	<!-- 카드 프로모션 대상 목록 -->
+	<select id="getCardPromotionTargetList" parameterType="int" resultType="CardPromotionTarget">
+		/* TsaCardPromotionDao.getCardPromotionTargetList */
+		SELECT A.CARD_PRMT_CDT_SQ
+		     , A.PRMT_TARGET_CD
+		     , B.CD_NM AS PRMT_TARGET_NM
+		     , FN_GET_USER_NM(A.REG_NO) AS REG_NM
+		     , DATE_FORMAT(A.REG_DT, '%Y%m%d%H%i%S') AS REG_DT
+		FROM TB_CARD_PROMOTION_TARGET A
+		INNER JOIN TB_COMMON_CODE B ON A.PRMT_TARGET_CD = B.CD
+		                            AND B.CD_GB = 'G941'
+		WHERE A.CARD_PRMT_CDT_SQ = #{cardPrmtCdtSq}
+		ORDER BY A.PRMT_TARGET_CD
+	</select>
+	
+	<!-- 카드프로모션 저장 -->
+	<insert id="saveCardPromotion" parameterType="CardPromotion"  keyProperty="cardPrmtSq">
+		/* TsaGoods.saveCardPromotion */
+		INSERT INTO TB_CARD_PROMOTION (
+		       CARD_PRMT_SQ
+		     , PRMT_NM
+		     , PRMT_STD
+		     , PRMT_EDD
+		     , PRMT_GB
+		     , DC_GB
+		     , LINK_URL
+		     , NOTE
+		     , DISP_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{cardPrmtSq}
+		     , #{prmtNm}
+		     , #{prmtStd}
+		     , #{prmtEdd}
+		     , #{prmtGb}
+		     , #{dcGb}
+		     , #{linkUrl}
+		     , #{note}
+		     , #{dispYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       PRMT_NM = #{prmtNm}
+		     , PRMT_STD = #{prmtStd}
+		     , PRMT_EDD = #{prmtEdd}
+		     , LINK_URL = #{linkUrl}
+		     , NOTE = #{note}
+		     , DISP_YN = #{dispYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!-- 카드프로모션 행사조건 삭제 -->
+	<delete id="deleteCardPromotionCondition"  parameterType="int" >
+		/* TsaGoods.deleteCardPromotionCondition */
+		DELETE FROM TB_CARD_PROMOTION_CONDITION 
+		WHERE CARD_PRMT_CDT_SQ = #{cardPrmtCdtSq}
+	</delete>
+	
+	<!-- 카드프로모션 행사조건 저장 -->
+	<insert id="saveCardPromotionCondition" parameterType="CardPromotionCondition"  keyProperty="cardPrmtCdtSq">
+		/* TsaGoods.saveCardPromotionCondition */
+		INSERT INTO TB_CARD_PROMOTION_CONDITION (
+		       CARD_PRMT_CDT_SQ
+		     , CARD_PRMT_SQ
+		     , MIN_PAY_AMT
+		     , DC_WAY
+		     , DC_VAL
+		     , MAX_DC_AMT
+		     , MIN_NO_ITRT
+		     , MAX_NO_ITRT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{cardPrmtCdtSq}
+		     , #{cardPrmtSq}
+		     , #{minPayAmt}
+		     , #{dcWay}
+		     , #{dcVal}
+		     , #{maxDcAmt}
+		     , #{minNoItrt}
+		     , #{maxNoItrt}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       MIN_PAY_AMT = #{minPayAmt}
+		     , DC_WAY = #{dcWay}
+		     , DC_VAL = #{dcVal}
+		     , MAX_DC_AMT = #{maxDcAmt}
+		     , MIN_NO_ITRT = #{minNoItrt}
+		     , MAX_NO_ITRT = #{maxNoItrt}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!-- 카드프로모션 타겟 삭제 -->
+	<delete id="deleteCardPromotionTarget"  parameterType="int" >
+		/* TsaGoods.deleteCardPromotionTarget */
+		DELETE FROM TB_CARD_PROMOTION_TARGET 
+		WHERE CARD_PRMT_CDT_SQ = #{cardPrmtCdtSq}
+	</delete>
+	
+	<!-- 카드프로모션 타겟 등록 -->
+	<insert id="createCardPromotionTarget" parameterType="CardPromotionTarget">
+		/* TsaGoods.createCardPromotionTarget */
+		INSERT INTO TB_CARD_PROMOTION_TARGET (
+		       CARD_PRMT_CDT_SQ
+		     , PRMT_TARGET_CD
+		     , REG_NO
+		     , REG_DT
+		)
+		VALUES (
+		       #{cardPrmtCdtSq}
+		     , #{prmtTargetCd}
+		     , #{regNo}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- 카드프로모션 비노출처리 -->
+	<delete id="updateCardPromotionDsipYn"  parameterType="CardPromotion" >
+		/* TsaGoods.updateCardPromotionDsipYn */
+		UPDATE TB_CARD_PROMOTION 
+		SET DISP_YN = 'N'
+		  , UPD_NO = #{updNo} 
+		  , UPD_DT = NOW()
+		WHERE 1 = 1
+		<choose>
+		    <when test="arrCardPrmtSq != null and arrCardPrmtSq != ''">
+		AND CARD_PRMT_SQ IN
+		        <foreach collection="arrCardPrmtSq" item="item" index="index"  open="(" close=")" separator=",">
+		        #{item}
+		        </foreach>
+		    </when>
+		<otherwise>
+		AND CARD_PRMT_SQ = #{cardPrmtSq}
+		</otherwise>
+		</choose>
+	</delete>
+	
+	<!-- 카드프로모션 삭제 -->
+	<delete id="deleteCardPromotion"  parameterType="int" >
+		/* TsaGoods.deleteCardPromotion */
+		DELETE FROM TB_CARD_PROMOTION
+		WHERE CARD_PRMT_SQ = #{cardPrmtSq}
+	</delete>
 	
 </mapper>

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

@@ -972,7 +972,7 @@
 		     , C.DISP_ORD
 		FROM TB_GOODS_NOTI_INFO C
 		INNER JOIN TB_GOODS B ON C.GOODS_CD = B.GOODS_CD
-        INNER JOIN TB_SUPPLY_COMPANY D ON B.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+		INNER JOIN TB_SUPPLY_COMPANY D ON B.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
 		INNER JOIN TB_NOTI_INFO A ON C.NI_CLSF_CD = A.NI_CLSF_CD
 		                          AND C.NI_ITEM_CD = A.NI_ITEM_CD
 		                          AND A.SUPPLY_VENDOR_CD = CASE D.SUPPLY_VENDOR_CD

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -536,7 +536,7 @@
 
 	gridOptions.getRowStyle = function(params) {
 		if ("G008_00" == params.data.goodsStat  || "G008_10" == params.data.goodsStat || "G008_20" == params.data.goodsStat || "G008_30" == params.data.goodsStat) {
-			return { background: '#23c6c8' };
+			return { background: '#B5EAD7' };
 		}
 	}
 

+ 60 - 37
src/main/webapp/WEB-INF/views/marketing/CardInterestForm.html

@@ -106,24 +106,16 @@
 				return '<a href="javascript:void(0);">' + params.value + '</a>';
 			}
 		},
-		{headerName: "노출여부", field: "dispYn", width: 180, cellClass: 'text-center'},
-		{headerName: "시작일", field: "prmtStd", width: 150, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		},
-		{headerName: "종료일", field: "prmtEdd", width: 150, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		},
-		{headerName: "수정자", field: "updNm" , width: 100, cellClass: 'text-center'},
+		{headerName: "노출여부", field: "dispYn", width: 100, cellClass: 'text-center'},
+		{headerName: "시작일", field: "prmtStd", width: 120, cellClass: 'text-center'},
+		{headerName: "종료일", field: "prmtEdd", width: 120, cellClass: 'text-center'},
+		{headerName: "수정자", field: "updNm" , width: 150, cellClass: 'text-center'},
 		{headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
 			}
 		},
-		{headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
+		{headerName: "등록자", field: "regNm", width: 150, cellClass: 'text-center'},
 		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
@@ -140,9 +132,8 @@
 
 	// Row Click
 	gridOptions.onCellClicked = function(event) {
-		var goodsCd = event.data.goodsCd;
 		if (event.colDef.field == "prmtNm"){
-			
+			cardInterestPopup(event.data.cardPrmtSq);
 		}
 	}
 
@@ -255,10 +246,9 @@
 		
 		cfnOpenModalPopup(actionUrl, 'popupCardInterest'); 
 	}
-	
-	
-	//카드 프로모션 삭제
-	$('#btnCardPromotionDelete').click(function(e) {
+
+	//카드 프로모션 비노출
+	$('#btnCardPromotionDispUpdate').click(function(e) {
 		//상품선택여부 확인처리 추가
 		var selectedData = gridOptions.api.getSelectedRows();
 
@@ -267,32 +257,68 @@
 			return false;
 		}
 		
-		var arrGoodsCd = [];
-		var arrGoodsTnmResSq = [];
+		var arrCardPrmtSq = [];
 		var chkFlag = false;
-		//selectedData = gagaAgGrid.getAllRowData(gridOptions);
 		$.each(selectedData, function(idx, item) {
 			
-			if (gagajf.isNull(item.goodsTnmResSq) || item.goodsTnmResSq == "0"){
+			var toDateStr = new Date().format("YYYYMMDD");
+			if (toDateStr > item.prmtEdd.replace(/-/gi,'') ){
 				chkFlag = true;
-				mcxDialog.alert(item.goodsCd +"상품은 상품타이틀이 예약된 상품이 아닙니다.");
+				mcxDialog.alertC("종료된 무이자할부정보는 삭제할 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						gridOptions.api.setFocusedCell(idx, "prmtEdd", null);
+					}
+				});
 				return false;
 			}
+		
+			arrCardPrmtSq.push(item.cardPrmtSq);
+		});
+
+		if (chkFlag){
+			return;
+		}
+		
+		mcxDialog.confirm('비노출 처리 하시겠습니까? ',  {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var data = {arrCardPrmtSq : arrCardPrmtSq};
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/marketing/card/promotion/dispYn/update', jsonData, fnCardPromotionDeleteCollBack);
+			}
+		});
+		
+	});
+	
+	//카드 프로모션 삭제
+	$('#btnCardPromotionDelete').click(function(e) {
+		//상품선택여부 확인처리 추가
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return false;
+		}
+		
+		var arrCardPrmtSq = [];
+		var chkFlag = false;
+		$.each(selectedData, function(idx, item) {
 			
-			var toDateStr = new Date().format("YYYYMMDDHHmmss");
-			if (toDateStr > item.applyEddt){
+			var toDateStr = new Date().format("YYYYMMDD");
+			if (toDateStr > item.prmtEdd.replace(/-/gi,'') ){
 				chkFlag = true;
-				mcxDialog.alertC("종료된 예약 상품은 삭제할 수 없습니다.", {
+				mcxDialog.alertC("종료된 무이자할부정보는 삭제할 수 없습니다.", {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						$('#goodsRsvtTnmForm input[name=applyEdYMD]').focus();
+						gridOptions.api.setFocusedCell(idx, "prmtEdd", null);
 					}
 				});
 				return false;
 			}
 		
-			arrGoodsCd.push(item.goodsCd);
-			arrGoodsTnmResSq.push(item.goodsTnmResSq);
+			arrCardPrmtSq.push(item.cardPrmtSq);
 		});
 
 		if (chkFlag){
@@ -303,18 +329,15 @@
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function(){
-				var data = {arrGoodsCd : arrGoodsCd
-						,arrGoodsTnmResSq : arrGoodsTnmResSq
-			};
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit('/goods/title/reserve/delete', jsonData, fnCardPromotionDeleteCollBack);
+				var data = {arrCardPrmtSq : arrCardPrmtSq};
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/marketing/card/promotion/delete', jsonData, fnCardPromotionDeleteCollBack);
 			}
 		});
 	});
 	
 	var fnCardPromotionDeleteCollBack = function(){
-		//fnCardPromotionListSearch($();
+		fnCardPromotionListSearch();
 	}
 	
 	$(document).ready(function() {

+ 78 - 20
src/main/webapp/WEB-INF/views/marketing/CardInterestPopupForm.html

@@ -21,6 +21,9 @@
 				<button type="button" class="close" onclick="uifnPopupClose('popupCardInterest')"><i class="fa fa-times"></i></button>
 			</div>
 			<form id="cardInterestForm" name="cardInterestForm" >
+			<input type="hidden" name="prmtGb"  value="B"/> <!-- 무이자 -->
+			<input type="hidden" name="delCardPrmtCdtSq" /> <!-- 삭제할 프로모션조건 -->
+			
 			<div class="panelContent">
 				<table class="frmStyle">
 					<colgroup>
@@ -31,24 +34,22 @@
 					</colgroup>
 					<tr>
 						<th>프로모션명<em class="required" title="필수"></em></th>
-						<td><input type="text" class="w500" id="prmtNm" name="prmtNm"  maxlength="30" required="required" data-valid-name="프로모션명" /></td>
+						<td><input type="text" class="w500" id="prmtNm" name="prmtNm"  maxlength="30" required="required" data-valid-name="프로모션명"  th:value="${cardPrmt.prmtNm}"/></td>
 						<th>프로모션ID</th>
-						<td><input type="text" class="w100 formControl" id="cardPrmtSq" name="cardPrmtSq"  readonly/></td>
+						<td><input type="text" class="w100 formControl" id="cardPrmtSq" name="cardPrmtSq"  readonly th:value="${cardPrmt.cardPrmtSq}"/></td>
 					</tr>
 					<tr>
 						<th>행사기간<em class="required" title="필수"></em></th>
 						<td >
-							<input name="prmtStdYMD" id="prmtStdYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="행사시작일" />
-							<input name="prmtStd" id="prmtStd" type="hidden" />
+							<input name="prmtStd" id="prmtStd" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="행사시작일" th:value="${cardPrmt.prmtStd}"/>
 							~
-							<input name="prmtEddYMD" id="prmtEddYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="행사종료일" />
-							<input name="prmtEdd" id="prmtEdd" type="hidden" />
+							<input name="prmtEdd" id="prmtEdd" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="행사종료일" th:value="${cardPrmt.prmtEdd}"/>
 						</td>
 						<th>노출여부<em class="required" title="필수"></em></th>
 						<td >
-							<label class="rdoBtn"><input type="radio" name="dispYn" value="Y"  checked/>Y</label>
-							<label class="rdoBtn"><input type="radio" name="dispYn" value="N"/>N</label>
-							<input type="hidden" id="dispYnOrg" name="dispYnOrg"/>
+							<label class="rdoBtn"><input type="radio" name="dispYn" value="Y" th:checked="${cardPrmt.dispYn =='Y' or #strings.isEmpty(cardPrmt.dispYn)}"/>Y</label>
+							<label class="rdoBtn"><input type="radio" name="dispYn" value="N" th:checked="${cardPrmt.dispYn =='N'}"/>N</label>
+							<input type="hidden" id="dispYnOrg" name="dispYnOrg" th:value="${cardPrmt.dispYn}"/>
 						</td>
 					</tr>
 					<tr>
@@ -63,16 +64,34 @@
 									<col/>
 								</colgroup>
 								<tbody id="cardContionList">
-								<tr>
+								
+								<tr th:if="${#lists.isEmpty(cardPrmt.cardPrmtCdtList)}" >
 									<td style="height:100px;"></td>
-									<td><p class="dot">무이자개월 <input type="text" class="w100"  name="minNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월"/>개월 ~
-										<input type="text" class="w100"  name="maxNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월"/>개월</p>
-										<p class="dot">구매금액기준 <input type="text" class="w100"  name="minPayAmt" data-valid-type="numeric" required="required" data-valid-name="구매금액기준"/>원 이상 구매시</p>
-										<p class="dot">대상카드 <button type="button" class="btn btn-base btn-sm" onClick="fnCardAdd(1);">선택</button><br/><span id="arrCardNm1" class="cRed"></span></p>
+									<td><p class="dot">무이자개월 <input type="text" class="w100"  name="minNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" />개월 ~
+										<input type="text" class="w100"  name="maxNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" />개월</p>
+										<p class="dot">구매금액기준 <input type="text" class="w100"  name="minPayAmt" data-valid-type="numeric" required="required" data-valid-name="구매금액기준" />원 이상 구매시</p>
+										<p class="dot">대상카드 <button type="button" class="btn btn-base btn-sm" onClick="fnCardAdd(1);">선택</button><br/>
+										<span id="arrCardNm1" class="cRed"></span></p>
 										<input type="hidden" name="arrCardCd"/>
+										<input type="hidden" name="cardPrmtCdtSq" />
 										<input type="hidden" name="cardIdx" id="cardIdx"/>
 									</td>
 								</tr>
+								<tr th:if="${cardPrmt.cardPrmtCdtList}" th:each="cardPrmtCdt, sizeStatus : ${cardPrmt.cardPrmtCdtList}">
+									<td style="height:100px;" th:if="${sizeStatus.first}"></td>
+									<td style="height:100px;" th:unless="${sizeStatus.first}"><button type="button" class="btn icn"><i class="fa fa-times" aria-hidden="true" th:onclick="fnDeleteCardPrmtCdt([[${cardPrmtCdt.cardPrmtCdtSq}]]);$(this).parent().parent().parent().remove();return false;"></i></button></td>
+									<td>
+										<p class="dot">무이자개월 <input type="text" class="w100"  name="minNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" th:value="${cardPrmtCdt.minNoItrt}"/>개월 ~
+										<input type="text" class="w100"  name="maxNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" th:value="${cardPrmtCdt.maxNoItrt}"/>개월</p>
+										<p class="dot">구매금액기준 <input type="text" class="w100"  name="minPayAmt" data-valid-type="numeric" required="required" data-valid-name="구매금액기준" th:value="${cardPrmtCdt.minPayAmt}"/>원 이상 구매시</p>
+										<p class="dot">대상카드 <button type="button" class="btn btn-base btn-sm" th:onClick="fnCardAdd([[${sizeStatus.count}]]);">선택</button><br/>
+										<span th:id="${'arrCardNm'+ sizeStatus.count}" class="cRed"  th:text="${cardPrmtCdt.arrCardNm}"></span>
+										</p>
+										<input type="hidden" name="arrCardCd" th:value="${cardPrmtCdt.arrCardCd}"/>
+										<input type="hidden" name="cardPrmtCdtSq" th:value="${cardPrmtCdt.cardPrmtCdtSq}"/>
+										<input type="hidden" name="cardIdx" id="cardIdx" th:if="${sizeStatus.first}"/>
+									</td>
+								</tr>
 								</tbody>
 							</table>
 							</div>
@@ -81,17 +100,17 @@
 					<tr>
 						<th>부분무이자안내</th>
 						<td  colspan="3">
-						<textarea class="textareaR2" name="note" id="note"></textarea>
+						<textarea class="textareaR2" name="note" id="note" th:field="${cardPrmt.note}"></textarea>
 						</td>
 					</tr>
 				</table>
 			</div>
 			<ul class="panelBar">
 				<li class="left">
-					<button type="button" class="btn btn-danger btn-lg" id="btnDeleteGoodsRsvtTnm">상품삭제</button>
+					<button type="button" class="btn btn-danger btn-lg" id="btnCardInterestDelete" th:if="${cardPrmtSq}">삭제</button>
 				</li>	
 				<li class="right">
-					<button type="button" class="btnRight btn btn-success btn-lg" id="btnSaveCardInterest">적용</button>
+					<button type="button" class="btnRight btn btn-success btn-lg" id="btnCardInterestSave">적용</button>
 				</li>
 			</ul>
 			</form>	
@@ -119,6 +138,7 @@
 		cardHtml +='	<p class="dot">구매금액기준 <input type="text" class="w100"  name="minPayAmt" data-valid-type="numeric" required="required" data-valid-name="구매금액기준"/>원 이상 구매시</p>';
 		cardHtml +='	<p class="dot">대상카드 <button type="button" class="btn btn-base btn-sm" onClick="fnCardAdd('+ (len+1) +');">선택</button><br/><span id="arrCardNm'+(len+1)+'" class="cRed"></span></p>';
 		cardHtml +='	<input type="hidden" name="arrCardCd"/>';
+		cardHtml +='	<input type="hidden" name="cardPrmtCdtSq" />';
 		cardHtml +='	</td>';
 		cardHtml +='</tr>';
 		
@@ -137,11 +157,49 @@
 	var fnCardAddCallBakup = function(arrCardCd, arrCardNm) {
 		var index = $('#cardInterestForm').find('#cardIdx').val();
 		$('#cardInterestForm').find("#arrCardNm" + (index)).html(arrCardNm);
-		$('#cardInterestForm').find("input[name=arrCardCd]").eq(index-1).val(arrCardCd);
-	};
+		$('#cardInterestForm input[name=arrCardCd]').eq(index-1).val(arrCardCd);
+	}
+	
+	// 카드프로모션 조건 삭제항목 설정
+	var fnDeleteCardPrmtCdt = function(cardPrmtCdtSq){
+		var delCardPrmtCdtSq = $('#cardInterestForm input[name=delCardPrmtCdtSq]').val();
+		delCardPrmtCdtSq += "/" + cardPrmtCdtSq; 
+		$('#cardInterestForm input[name=delCardPrmtCdtSq]').val(delCardPrmtCdtSq);
+	}
+	
+	//카드 프로모션 삭제
+	$('#btnCardInterestDelete').click(function(e) {
+		var arrCardPrmtSq = [];
+		
+		var toDateStr = new Date().format("YYYYMMDD");
+		var prmtEdd = $('#cardInterestForm input[name=prmtEdd]').val();
+		if (toDateStr > prmtEdd.replace(/-/gi,'') ){
+			chkFlag = true;
+			mcxDialog.alertC("종료된 무이자할부정보는 삭제할 수 없습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#cardInterestForm input[name=prmtEdd]').focus();
+				}
+			});
+			return false;
+		}
+	
+		arrCardPrmtSq.push($('#cardInterestForm input[name=cardPrmtSq]').val());
+		
+		mcxDialog.confirm('삭제하시겠습니까? <br/> 삭제한 프로모션은 복구할수 없습니다.',  {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var data = {arrCardPrmtSq : arrCardPrmtSq};
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/marketing/card/promotion/delete', jsonData, fnSaveCardInterestCallBack);
+			}
+		});
+	});
+	
 	
 	// 저장 클릭 시
-	$('#btnSaveCardInterest').on('click', function() {
+	$('#btnCardInterestSave').on('click', function() {
 		
 		var optCheck = false;
 		// 입력 값 체크

+ 1 - 1
src/main/webapp/WEB-INF/views/marketing/CardListPopupForm.html

@@ -26,7 +26,7 @@
 					<tr>
 						<td id="cardArea">
 							<th:block th:if="${cardList}" th:each="oneData, status : ${cardList}">
-							<label class="chkBox" th:classappend="${not #strings.isEmpty(params.arrCard) and  #strings.contains(params.arrCard,oneData.cd)?'checked':''}"><input type="checkbox" name="card" th:value="${oneData.cd}" th:text="${oneData.cdNm}" th:checked="${not #strings.isEmpty(params.arrCard) and  #strings.contains(params.arrCard,oneData.cd)}">국민</label>
+							<label class="chkBox" th:classappend="${not #strings.isEmpty(params.arrCard) and  #strings.contains(params.arrCard,oneData.cd)?'checked':''}"><input type="checkbox" name="card" th:value="${oneData.cd}" th:text="${oneData.cdNm}" th:checked="${not #strings.isEmpty(params.arrCard) and  #strings.contains(params.arrCard,oneData.cd)}"></label>
 							</th:block>
 						</td>
 					</tr>