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

Merge branch 'develop' into eskim

eskim 5 лет назад
Родитель
Сommit
166feb096e

+ 25 - 1
src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java

@@ -276,9 +276,33 @@ public interface TsaCouponDao {
 
 
 	/**
 	/**
 	 * 선착순 쿠폰 저장
 	 * 선착순 쿠폰 저장
-	 * @param params
+	 * @param couponLimitedTime
 	 * @author bin2107
 	 * @author bin2107
 	 * @since 2021. 02. 04
 	 * @since 2021. 02. 04
 	 */
 	 */
 	void createLimitedTimeCoupon(CouponLimitedTime couponLimitedTime);
 	void createLimitedTimeCoupon(CouponLimitedTime couponLimitedTime);
+
+	/**
+	 * 선착순쿠폰 조회
+	 * @param cpnId
+	 * @author bin2107
+	 * @since 2021. 02. 05
+	 */
+	ArrayList<Coupon> getLimitedTimeCouponList(int cpnId);
+
+	/**
+	 * 선착순 쿠폰 삭제
+	 * @param couponLimitedTime
+	 * @author bin2107
+	 * @since 2021. 02. 05
+	 */
+	void updateLimitedTimeCouponList(CouponLimitedTime couponLimitedTime);
+
+	/**
+	 * 쿠폰 상태 변경
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	void updateCouponStat(Coupon coupon);
 }
 }

+ 56 - 26
src/main/java/com/style24/admin/biz/service/TsaCouponService.java

@@ -6,6 +6,7 @@ import com.style24.admin.biz.dao.TsaCouponDao;
 import com.style24.admin.support.env.TsaConstants;
 import com.style24.admin.support.env.TsaConstants;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.env.TscConstants;
+import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.*;
 import com.style24.persistence.domain.*;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,32 +33,8 @@ public class TsaCouponService {
 	@Autowired
 	@Autowired
 	private TsaCommonService commonService;
 	private TsaCommonService commonService;
 
 
-	/**
-	 * 선착순 쿠폰 저장 test
-	 * @param coupon - 쿠폰 정보
-	 * @return
-	 * @author bin2107
-	 * @since 2021. 2. 4
-	 */
-	@Transactional("shopTxnManager")
-	public String saveLimitedTimeCoupon(Coupon coupon){
-		int cpnId = coupon.getCpnId();		// 쿠폰ID (신규생성인지 수정인지 구분하기 위해 params의 cpnId를 먼저 가져옴 > 쿠폰 생성시 cpnId를 저장하기때문임)
-		coupon.setRegNo(TsaSession.getInfo().getUserNo());
-		coupon.setUpdNo(TsaSession.getInfo().getUserNo());
-
-		if(cpnId != 0) {    //수정모드일때
-		}else {    //등록모드일때
-			// 공급업체 등록
-			for(CouponLimitedTime couponLimitedTime : coupon.getLimitedTimeCpnList()){
-				couponLimitedTime.setCpnId(coupon.getCpnId());
-				couponLimitedTime.setRegNo(coupon.getRegNo());
-				couponLimitedTime.setUpdNo(coupon.getUpdNo());
-				couponDao.createLimitedTimeCoupon(couponLimitedTime);
-			}
-		}
-
-		return "SUCCESS";
-	}
+	@Autowired
+	private TscMessageByLocale message;
 
 
 	/**
 	/**
 	 * 쿠폰 저장
 	 * 쿠폰 저장
@@ -153,6 +130,14 @@ public class TsaCouponService {
 			couponDao.saveCouponBurden(couponBurden);
 			couponDao.saveCouponBurden(couponBurden);
 		}
 		}
 
 
+		// 선착순쿠폰
+		for(CouponLimitedTime couponLimitedTime : params.getLimitedTimeCpnList()){
+			couponLimitedTime.setCpnId(params.getCpnId());
+			couponLimitedTime.setRegNo(params.getRegNo());
+			couponLimitedTime.setUpdNo(params.getUpdNo());
+			couponDao.createLimitedTimeCoupon(couponLimitedTime);
+		}
+
 		// 수정모드이고 변경된 쿠폰상태가 대기 , 중지 인경우 고객이 발급받은 내용도 변경
 		// 수정모드이고 변경된 쿠폰상태가 대기 , 중지 인경우 고객이 발급받은 내용도 변경
 		if(cpnId != 0 &&
 		if(cpnId != 0 &&
 				(params.getCpnStat().equals("G232_10") || params.getCpnStat().equals("G232_12")) ) {
 				(params.getCpnStat().equals("G232_10") || params.getCpnStat().equals("G232_12")) ) {
@@ -470,4 +455,49 @@ public class TsaCouponService {
 	public Collection<Coupon> getCpnPubCustList(int cpnId) {
 	public Collection<Coupon> getCpnPubCustList(int cpnId) {
 		return couponDao.getCpnPubCustList(cpnId);
 		return couponDao.getCpnPubCustList(cpnId);
 	}
 	}
+
+	/**
+	 * 선착순쿠폰 조회
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021-02-05
+	 */
+	public ArrayList<Coupon> getLimitedTimeCouponList(int cpnId) {
+		return couponDao.getLimitedTimeCouponList(cpnId);
+	}
+
+	/**
+	 * 선착순쿠폰 삭제
+	 *
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	@Transactional("shopTxnManager")
+	public void updateLimitedTimeCouponList(CouponLimitedTime couponLimitedTime) {
+		if (couponLimitedTime == null || (couponLimitedTime.getArrLimitCpnId() == null && couponLimitedTime.getArrLimitCpnId().length <= 0)) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		couponLimitedTime.setRegNo(TsaSession.getInfo().getUserNo());
+		couponLimitedTime.setUpdNo(TsaSession.getInfo().getUserNo());
+
+		if (couponLimitedTime.getArrLimitCpnId().length > 0) {
+			couponDao.updateLimitedTimeCouponList(couponLimitedTime);
+		}
+	}
+
+	/**
+	 * 쿠폰 상태 변경
+	 * @param
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	@Transactional("shopTxnManager")
+	public void updateCouponStat(Coupon coupon) {
+		coupon.setUpdNo(TsaSession.getInfo().getUserNo());
+		couponDao.updateCouponStat(coupon);
+	}
 }
 }

+ 37 - 35
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -6,6 +6,7 @@ import java.util.Calendar;
 import java.util.Collection;
 import java.util.Collection;
 import java.util.Date;
 import java.util.Date;
 
 
+import com.style24.persistence.domain.*;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.env.Environment;
@@ -33,20 +34,6 @@ import com.style24.core.biz.service.TscPointService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.TscPageRequest;
-import com.style24.persistence.domain.CardPromotion;
-import com.style24.persistence.domain.CardPromotionTarget;
-import com.style24.persistence.domain.CommonCode;
-import com.style24.persistence.domain.Coupon;
-import com.style24.persistence.domain.CouponRefval;
-import com.style24.persistence.domain.CustCoupon;
-import com.style24.persistence.domain.FreeGoodsPromotion;
-import com.style24.persistence.domain.MoreBetter;
-import com.style24.persistence.domain.MoreBetterBurden;
-import com.style24.persistence.domain.MoreBetterGoods;
-import com.style24.persistence.domain.MoreBetterSection;
-import com.style24.persistence.domain.Point;
-import com.style24.persistence.domain.Review;
-import com.style24.persistence.domain.User;
 
 
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 
 
@@ -472,7 +459,7 @@ public class TsaMarketingController extends TsaBaseController {
 			// 쿠폰사용가능결제수단 조회
 			// 쿠폰사용가능결제수단 조회
 			mav.addObject("cpnPayTypeList", couponService.getCouponPayTypeList(cpnId));
 			mav.addObject("cpnPayTypeList", couponService.getCouponPayTypeList(cpnId));
 			// 선착순쿠폰 조회
 			// 선착순쿠폰 조회
-			mav.addObject("limitedTimeCpnList", couponService.getCouponPayTypeList(cpnId));
+			mav.addObject("limitedTimeCpnList", couponService.getLimitedTimeCouponList(cpnId));
 		}
 		}
 
 
 		//issueCnt = 3;
 		//issueCnt = 3;
@@ -484,26 +471,6 @@ public class TsaMarketingController extends TsaBaseController {
 		return mav;
 		return mav;
 	}
 	}
 
 
-	/**
-	 * 선착순 쿠폰 저장 test
-	 * @param coupon - 쿠폰 정보
-	 * @return
-	 * @author bin2107
-	 * @since 2021. 2. 4
-	 */
-	@PostMapping("/coupon/limitedtime/coupon/save")
-	@ResponseBody
-	public GagaResponse saveLimitedTimeCoupon(@RequestBody Coupon coupon) {
-		log.info("saveLimitedTimeCoupon : {}", coupon);
-
-		String result = couponService.saveLimitedTimeCoupon(coupon);
-		if(!"SUCCESS".equals(result)) {
-			return super.error(message.getMessage(result));
-		}
-
-		return super.ok(message.getMessage("SUCC_0001"));
-	}
-
 	/**
 	/**
 	 * 쿠폰 저장
 	 * 쿠폰 저장
 	 * @param coupon - 쿠폰 정보
 	 * @param coupon - 쿠폰 정보
@@ -940,6 +907,41 @@ public class TsaMarketingController extends TsaBaseController {
 		return mav;
 		return mav;
 	}
 	}
 
 
+	/**
+	 * 선착순쿠폰 삭제
+	 *
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 2. 5
+	 */
+	@PostMapping("/coupon/limitedtime/coupon/update")
+	@ResponseBody
+	public GagaResponse updateLimitedTimeCouponList(@RequestBody CouponLimitedTime couponLimitedTime) {
+		couponService.updateLimitedTimeCouponList(couponLimitedTime);
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
+
+	/**
+	 * 쿠폰 상태 변경
+	 * @param param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 02. 05
+	 */
+	@ResponseBody
+	@PostMapping("/marketing/coupon/changeStat")
+	public GagaResponse updateCouponStat(@RequestBody Coupon coupon) {
+		try {
+			couponService.updateCouponStat(coupon);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return super.error(message.getMessage("FAIL_0001"));
+		}
+
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
 	/* // CSB 진행 */
 	/* // CSB 진행 */
 
 
 	/**
 	/**

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

@@ -1,5 +1,6 @@
 package com.style24.persistence.domain;
 package com.style24.persistence.domain;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 import lombok.Data;
 
 
@@ -20,5 +21,9 @@ public class CouponLimitedTime extends TscBaseDomain {
     private int     downLimitQty;       // 다운로드가능수량
     private int     downLimitQty;       // 다운로드가능수량
     private String  downStdt;           // 다운로드시작일시
     private String  downStdt;           // 다운로드시작일시
     private String  downEddt;           // 다운로드종료일시
     private String  downEddt;           // 다운로드종료일시
+    private String  delYn;              // 삭제여부
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] arrLimitCpnId;
 
 
 }
 }

+ 48 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml

@@ -767,6 +767,7 @@
 	</select>
 	</select>
 
 
 	<insert id="createLimitedTimeCoupon" parameterType="CouponLimitedTime" keyProperty="limitCpnId">
 	<insert id="createLimitedTimeCoupon" parameterType="CouponLimitedTime" keyProperty="limitCpnId">
+		/* TsaCoupon.createLimitedTimeCoupon */
 		INSERT INTO TB_LIMITED_TIME_COUPON (
 		INSERT INTO TB_LIMITED_TIME_COUPON (
 				  LIMIT_CPN_ID
 				  LIMIT_CPN_ID
 				, LIMIT_CPN_NM
 				, LIMIT_CPN_NM
@@ -774,6 +775,7 @@
 				, DOWN_LIMIT_QTY
 				, DOWN_LIMIT_QTY
 				, DOWN_STDT
 				, DOWN_STDT
 				, DOWN_EDDT
 				, DOWN_EDDT
+				, DEL_YN
 				, REG_NO
 				, REG_NO
 				, REG_DT
 				, REG_DT
 				, UPD_NO
 				, UPD_NO
@@ -785,6 +787,7 @@
 				 ,#{downLimitQty}
 				 ,#{downLimitQty}
 				 ,DATE_FORMAT(#{downStdt},'%Y-%m-%d %H:%i:%s')
 				 ,DATE_FORMAT(#{downStdt},'%Y-%m-%d %H:%i:%s')
 				 ,DATE_FORMAT(#{downEddt},'%Y-%m-%d %H:%i:%s')
 				 ,DATE_FORMAT(#{downEddt},'%Y-%m-%d %H:%i:%s')
+				 ,'N'
 				 ,#{regNo}
 				 ,#{regNo}
 				 ,CURRENT_TIMESTAMP()
 				 ,CURRENT_TIMESTAMP()
 				 ,#{updNo}
 				 ,#{updNo}
@@ -792,4 +795,49 @@
 		)
 		)
 	</insert>
 	</insert>
 
 
+	<select id="getLimitedTimeCouponList" parameterType="int" resultType="CouponLimitedTime">
+		/* TsaCoupon.getLimitedTimeCouponList */
+		SELECT	LIMIT_CPN_ID
+				,LIMIT_CPN_NM
+				,CPN_ID
+				,DOWN_LIMIT_QTY
+				,DOWN_STDT
+				,DOWN_EDDT
+		     	,DEL_YN
+				,REG_NO
+				,REG_DT
+				,UPD_NO
+				,UPD_DT
+		  FROM	TB_LIMITED_TIME_COUPON
+		 WHERE	1=1
+		   AND  CPN_ID = #{cpnId}
+		   AND  DEL_YN = 'N'
+	</select>
+
+	<!-- 선착순쿠폰 삭제 -->
+	<update id="updateLimitedTimeCouponList" parameterType="CouponLimitedTime" >
+		/* TsaCoupon.updateLimitedTimeCouponList */
+		UPDATE TB_LIMITED_TIME_COUPON
+		SET DEL_YN = 'Y'
+		, UPD_NO = #{updNo}
+		, UPD_DT = now()
+		WHERE CPN_ID = #{cpnId}
+		AND LIMIT_CPN_ID IN
+		<foreach collection="arrLimitCpnId" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+		</foreach>
+	</update>
+
+	<update id="updateCouponStat" parameterType="Coupon">
+		/* TsaMarketing.updateCouponStat */
+		UPDATE TB_COUPON SET
+		CPN_STAT = #{cpnStat}
+		<if test="cpnStat == 'G232_14'">
+			, DEL_YN = 'Y'
+		</if>
+		, UPD_NO = #{updNo}
+		, UPD_DT = NOW()
+		WHERE CPN_ID = #{cpnId}
+	</update>
+
 </mapper>
 </mapper>

+ 174 - 67
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html

@@ -15,7 +15,7 @@
  *******************************************************************************
  *******************************************************************************
  -->
  -->
 <div class="modalPopup" data-width="1200">
 <div class="modalPopup" data-width="1200">
-	<div class="panelStyle" >
+	<div class="panelStyle" style="height: 750px">
 		<div class="panelTitle">
 		<div class="panelTitle">
 			<h2 th:text="${'쿠폰 ' + (mode == 'N' ? '등록' : '수정')}">쿠폰등록</h2>
 			<h2 th:text="${'쿠폰 ' + (mode == 'N' ? '등록' : '수정')}">쿠폰등록</h2>
 			<button type="button" class="close" onclick="uifnPopupClose('CouponRegForm')"><i class="fa fa-times"></i></button>
 			<button type="button" class="close" onclick="uifnPopupClose('CouponRegForm')"><i class="fa fa-times"></i></button>
@@ -73,7 +73,7 @@
 											</td>
 											</td>
 											<th class="limitedTimeCpnArea" style="display: none;">선착순쿠폰</th>
 											<th class="limitedTimeCpnArea" style="display: none;">선착순쿠폰</th>
 											<td class="limitedTimeCpnArea" style="display: none;">
 											<td class="limitedTimeCpnArea" style="display: none;">
-												<label class="chkBox limitedTimeCpnBox" id="limitedTimeCpnBox"><input type="checkbox" name="limitedTimeCpnYn" id="limitedTimeCpnYn" />선착순쿠폰</label>
+												<label class="chkBox limitedTimeCpnBox" id="limitedTimeCpnBox"><input type="checkbox" name="limitedTimeCpnYn" id="limitedTimeCpnYn" value="N"/>선착순쿠폰</label>
 											</td>
 											</td>
 										</tr>
 										</tr>
 										<tr class="dcCdGb" style="display:none;">
 										<tr class="dcCdGb" style="display:none;">
@@ -343,9 +343,10 @@
 										<tr>
 										<tr>
 											<th>쿠폰상태<em class="required" title="필수"></em></th>
 											<th>쿠폰상태<em class="required" title="필수"></em></th>
 											<td>
 											<td>
-												<select name="cpnStat" id="cpnStat" data-valid-name="쿠폰상태" required="required">
-													<option th:if="${cpnStatList}" th:each="oneData , status : ${cpnStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-												</select>
+												<label class="rdoBtn" th:if="${cpnStatList}" th:each="oneData, status : ${cpnStatList}" >
+													<input type="radio" id="disCpnStat" name="disCpnStat" th:value="${oneData.cd}" th:text="${oneData.cdNm}" data-valid-name="상태" disabled="disabled"/>
+												</label>
+												<input type="hidden" id="cpnStat" name="cpnStat"/>
 											</td>
 											</td>
 											<th>제휴링크코드<em class="required" title="필수"></em></th>
 											<th>제휴링크코드<em class="required" title="필수"></em></th>
 											<td>
 											<td>
@@ -358,13 +359,12 @@
 										</tr>
 										</tr>
 									</tbody>
 									</tbody>
 								</table>
 								</table>
-								<div class="mdPopBtnB aR">
+								<!--<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="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 btn-info btn-lg" onclick="fnCustomerIssuePopUp();" th:if="${mode == 'U' && cpnDetail.dcCdGb == 'G233_00'}">쿠폰발행</button>
 									<button type="button" class="btn btn-info btn-lg" onclick="fnCouponCreate();" th:if="${mode == 'N'}">등록</button>
 									<button type="button" class="btn btn-info btn-lg" 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 btn-info btn-lg" onclick="fnCouponUpdate();" th:if="${mode == 'U'}">수정</button>
-									<button type="button" class="btn btn-info btn-lg" onclick="fnSaveLimitedTimeCpn();" th:if="${mode == 'N'}">선착순쿠폰등록TEST</button>
-								</div>
+								</div>-->
 							</div>
 							</div>
 						</li>
 						</li>
 						<!-- 쿠폰적용대상-->
 						<!-- 쿠폰적용대상-->
@@ -494,6 +494,16 @@
 						<!-- 선착순 쿠폰 설정 END -->
 						<!-- 선착순 쿠폰 설정 END -->
 					</ul>
 					</ul>
 				</div>
 				</div>
+				<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="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>
+				</div>
+
 			</form>
 			</form>
 		</div>
 		</div>
 	</div>
 	</div>
@@ -691,7 +701,7 @@
 					};
 					};
 
 
 					var jsonData = JSON.stringify(data);
 					var jsonData = JSON.stringify(data);
-					//gagajf.ajaxJsonSubmit('/marketing/morebetter/sectionVal/delete', jsonData);
+					gagajf.ajaxJsonSubmit('/marketing/coupon/limitedtime/coupon/update', jsonData);
 				}
 				}
 			});
 			});
 		}
 		}
@@ -700,11 +710,27 @@
 	// 선착순 쿠폰 체크박스 클릭시
 	// 선착순 쿠폰 체크박스 클릭시
 	$("#CouponForm #limitedTimeCpnBox").bind('click', function (){
 	$("#CouponForm #limitedTimeCpnBox").bind('click', function (){
 		var chkBox= document.getElementById('limitedTimeCpnYn').checked;
 		var chkBox= document.getElementById('limitedTimeCpnYn').checked;
-		console.log('limitedTimeCpnBox chkBox>>'+chkBox);
+
 		if(chkBox){	//true 체크가 되어있었는데 해제됐어 -> 탭을 숨겨
 		if(chkBox){	//true 체크가 되어있었는데 해제됐어 -> 탭을 숨겨
 			$("#CouponForm .limitedTimeCpnTab").hide();
 			$("#CouponForm .limitedTimeCpnTab").hide();
+			$("#limitedTimeCpnYn").val("N");
+			$("#CouponForm #totPubLimitQty").val(0);
+			$("#CouponForm input[id=chkBoxTotPubQty]").prop("disabled", false);
+			$("#CouponForm input[id=totPubLimitQty]").prop("disabled", false);
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").removeClass("checked");
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', false);
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', false);
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', false);
 		}else{	//false 체크가 안되어있었는데 체크됐어 -> 탭을 보여줘
 		}else{	//false 체크가 안되어있었는데 체크됐어 -> 탭을 보여줘
 			$("#CouponForm .limitedTimeCpnTab").show();
 			$("#CouponForm .limitedTimeCpnTab").show();
+			$("#limitedTimeCpnYn").val("Y");
+			$("#CouponForm #totPubLimitQty").val(0);
+			$("#CouponForm input[id=chkBoxTotPubQty]").prop("disabled", true);
+			$("#CouponForm input[id=totPubLimitQty]").prop("disabled", true);
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").addClass("checked");
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', true);
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', true);
+			$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', true);
 		}
 		}
 	});
 	});
 
 
@@ -731,6 +757,7 @@
 
 
 	// 총발행 제한수량 -> 제한없음 처리
 	// 총발행 제한수량 -> 제한없음 처리
 	$("#CouponForm #chkBoxTotPubQty").bind('click', function (){
 	$("#CouponForm #chkBoxTotPubQty").bind('click', function (){
+
 		var chkBox= document.getElementById('chkNoLimitTotPubLimitQty').checked;
 		var chkBox= document.getElementById('chkNoLimitTotPubLimitQty').checked;
 		if(chkBox){ //true 체크가 되어있었는데 해제됐어 -> 값0 inputbox disabled 해제
 		if(chkBox){ //true 체크가 되어있었는데 해제됐어 -> 값0 inputbox disabled 해제
 			$("#CouponForm #totPubLimitQty").val(0);
 			$("#CouponForm #totPubLimitQty").val(0);
@@ -775,34 +802,6 @@
 		$("#CouponForm input[name=dcAval]").val(cdPval);
 		$("#CouponForm input[name=dcAval]").val(cdPval);
 	});
 	});
 
 
-	// 선착순쿠폰 등록 테스트
-	function fnSaveLimitedTimeCpn(){
-		mcxDialog.confirm('선착순 쿠폰 저장하시겠습니까?' , {
-			cancelBtnText:"취소",
-			sureBtnText:"확인",
-			sureBtnClick: function () {
-				let cpnData = gagaAgGrid.getAllRowData(limitedTimeCpnGridOptions);
-				if(cpnData.length < 1){
-					mcxDialog.alert("선착순 쿠폰을 설정해주세요.");
-					return false;
-				}
-				console.log('cpnData 1 up');
-
-				var data = {
-					limitedTimeCpnList : cpnData
-				};
-
-				var jsonData = JSON.stringify(data);
-
-				gagajf.ajaxJsonSubmit('/marketing/coupon/limitedtime/coupon/save', jsonData, fnSaveLimitedTimeCpnCollback);
-			}
-		});
-	}
-
-	var fnSaveLimitedTimeCpnCollback = function (result){
-		console.log('result::'+result);
-	}
-
 	// 쿠폰 등록 버튼 클릭시
 	// 쿠폰 등록 버튼 클릭시
 	function fnCouponCreate(){
 	function fnCouponCreate(){
 		mcxDialog.confirm('저장하시겠습니까?' , {
 		mcxDialog.confirm('저장하시겠습니까?' , {
@@ -861,7 +860,7 @@
 						,downStdt : $('#CouponForm input[name=downStdt]').val()
 						,downStdt : $('#CouponForm input[name=downStdt]').val()
 						,downEddt : $('#CouponForm input[name=downEddt]').val()
 						,downEddt : $('#CouponForm input[name=downEddt]').val()
 						,buyLimitAmt : $('#CouponForm input[name=buyLimitAmt]').val()
 						,buyLimitAmt : $('#CouponForm input[name=buyLimitAmt]').val()
-						,cpnStat : $('#CouponForm select[name=cpnStat]').val()
+						,cpnStat : $('input:radio[name="disCpnStat"]:checked').val()
 						,endAlimYn : $('#CouponForm select[name=endAlimYn]').val()
 						,endAlimYn : $('#CouponForm select[name=endAlimYn]').val()
 						,firstOrdYn : $('#CouponForm select[name=firstOrdYn]').val()
 						,firstOrdYn : $('#CouponForm select[name=firstOrdYn]').val()
 						,downAblYn : $('#CouponForm select[name=downAblYn]').val()
 						,downAblYn : $('#CouponForm select[name=downAblYn]').val()
@@ -882,6 +881,7 @@
 						,usableCustGbArr : usableCustGbArr
 						,usableCustGbArr : usableCustGbArr
 						,usableCustGradeArr : usableCustGradeArr
 						,usableCustGradeArr : usableCustGradeArr
 						,payTypeArr : payTypeArr
 						,payTypeArr : payTypeArr
+						,limitedTimeCpnList : gagaAgGrid.getAllRowData(limitedTimeCpnGridOptions)
 				};
 				};
 
 
 				var jsonData = JSON.stringify(data);
 				var jsonData = JSON.stringify(data);
@@ -893,36 +893,10 @@
 	}
 	}
 
 
 	var fnCouponSaveCollback = function (result){
 	var fnCouponSaveCollback = function (result){
-		console.log('AAAAAA');
 		uifnPopupClose('CouponRegForm');
 		uifnPopupClose('CouponRegForm');
 		$('#btnSearch').trigger('click');
 		$('#btnSearch').trigger('click');
 	}
 	}
 
 
-	function fnCouponCreate2(){
-		mcxDialog.confirm('저장하시겠습니까?' , {
-			cancelBtnText:"취소",
-			sureBtnText:"확인",
-			sureBtnClick: function () {
-				gagajf.removeCommaAtNumberFormattedInput('#CouponForm');
-				// 필수값들 셋팅
-				setReqValue();
-				// 필수값 validation 체크
-				if (!gagajf.validation('#CouponForm')) {
-					return false;
-				}
-				// 데이터 validation 체크
-				if(!checkValidation()) {
-					return false;
-				}
-
-				gagajf.ajaxFormSubmit($('#CouponForm').prop('action'), '#CouponForm', function() {
-					uifnPopupClose('CouponRegForm');
-					$('#btnSearch').trigger('click');
-				});
-			}
-		});
-	}
-
 	// 쿠폰 수정 시
 	// 쿠폰 수정 시
 	function fnCouponUpdate(){
 	function fnCouponUpdate(){
 		mcxDialog.confirm('수정하시겠습니까?' , {
 		mcxDialog.confirm('수정하시겠습니까?' , {
@@ -1077,6 +1051,47 @@
 				$("#CouponForm input[name=serialCpnQty]").focus();
 				$("#CouponForm input[name=serialCpnQty]").focus();
 				return false;
 				return false;
 			}
 			}
+		} else if ($('#CouponForm #cpnType').val() == "G230_11" && $("#limitedTimeCpnYn").val() == "Y") {	// 상품쿠폰이고 선착순쿠폰 체크되어 있을때
+			let cpnData = gagaAgGrid.getAllRowData(limitedTimeCpnGridOptions);
+			if(cpnData.length < 1){
+				mcxDialog.alert("선착순 쿠폰을 설정해주세요.");
+				return false;
+			}else{
+				for(i=0; i<cpnData.length; i++){
+
+					if(gagajf.isNull(cpnData[i].limitCpnNm)){
+						mcxDialog.alert(i+1 + "번 행의 선착순 쿠폰명을 입력해주세요.");
+						return false;
+					}
+
+					if(gagajf.isNull(cpnData[i].downStdt)){
+						mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드시작일을 입력해주세요.");
+						return false;
+					}
+
+					if(gagajf.isNull(cpnData[i].downEddt)){
+						mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드종료일을 입력해주세요.");
+						return false;
+					}else{
+						var tempEddt = cpnData[i].downEddt.replace(/[^0-9]/g, '');
+						if(tempEddt.substr(8,14) == '000000'){
+							tempEddt = tempEddt.substr(0,8)+'235959';
+							cpnData[i].downEddt = tempEddt;
+						}
+					}
+
+					if(gagajf.isNull(cpnData[i].downLimitQty)){
+						mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드가능수량을 입력해주세요.");
+						return false;
+					}else{
+						if(cpnData[i].downLimitQty<1){
+							mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드가능수량을 1개이상 입력해주세요.");
+							return false;
+						}
+					}
+				}
+				limitedTimeCpnGridOptions.api.setRowData(cpnData);
+			}
 		}
 		}
 
 
 		return true;
 		return true;
@@ -1602,6 +1617,8 @@
 		$('#CouponForm #dcWay').val($('#CouponForm input:radio[name="rdoDcWay"]:checked').val());
 		$('#CouponForm #dcWay').val($('#CouponForm input:radio[name="rdoDcWay"]:checked').val());
 		// 적용범위값 세팅
 		// 적용범위값 세팅
 		$('#CouponForm #applyScope').val($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val());
 		$('#CouponForm #applyScope').val($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val());
+		// 쿠폰상태
+		$('#CouponForm input[name=cpnStat]').val($('input:radio[name="disCpnStat"]:checked').val());
 		// 다운로드기간 세팅
 		// 다운로드기간 세팅
 		let downStdt = "";
 		let downStdt = "";
 		let downEddt = "";
 		let downEddt = "";
@@ -1719,6 +1736,9 @@
 		gagaAgGrid.createGrid('randomCpnList', randomCouponGridOptions);
 		gagaAgGrid.createGrid('randomCpnList', randomCouponGridOptions);
 		gagaAgGrid.createGrid('limitedTimeCpnList', limitedTimeCpnGridOptions);
 		gagaAgGrid.createGrid('limitedTimeCpnList', limitedTimeCpnGridOptions);
 
 
+		// 일단 버튼 숨김
+		$(".couponButton").hide();
+
 		// 초기화시 데이터 세팅
 		// 초기화시 데이터 세팅
 		if (mode == "N") {
 		if (mode == "N") {
 			$('input[name=rdoCpnType]').eq(0).attr("checked", true);
 			$('input[name=rdoCpnType]').eq(0).attr("checked", true);
@@ -1741,6 +1761,7 @@
 			$("#CouponForm .normalCol").attr("colspan", "5");
 			$("#CouponForm .normalCol").attr("colspan", "5");
 			$("#CouponForm .randomCpnArea").hide();
 			$("#CouponForm .randomCpnArea").hide();
 			$("#CouponForm .maxDcAmtArea").hide();
 			$("#CouponForm .maxDcAmtArea").hide();
+			$("input:radio[name='disCpnStat']:radio[value='G232_10']").prop('checked', true); // 선택하기
 			if($('input:radio[name="rdoCpnType"]:checked').val() == 'G230_10'){
 			if($('input:radio[name="rdoCpnType"]:checked').val() == 'G230_10'){
 				$('#CouponForm .custJoinTr').hide();
 				$('#CouponForm .custJoinTr').hide();
 				$('#CouponForm .custJoinDateTr').hide();
 				$('#CouponForm .custJoinDateTr').hide();
@@ -1748,7 +1769,23 @@
 				$('#CouponForm .buyDateTr').hide();
 				$('#CouponForm .buyDateTr').hide();
 				$('#CouponForm .dcCdCheck1').hide();
 				$('#CouponForm .dcCdCheck1').hide();
 			}
 			}
+			$("#btnCouponSave").show();	// 저장버튼
+			$("#CouponForm .buttonSpan").show();
 		} else {
 		} else {
+			if(cpnDetail.cpnStat == "G232_10"){
+				$("#btnCouponSave").show();		// 저장버튼
+				$("#btnChangeStatIng").show();		// 진행버튼
+				$("#btnCouponDelete").show();	// 삭제버튼
+				$("#CouponForm .buttonSpan").show();	//행추가,삭제버튼
+			}else if(cpnDetail.cpnStat == "G232_10"){
+				$("#btnCouponSave").hide();		// 저장버튼
+				$("#btnCouponStop").show();		// 중지버튼
+				$("#btnCouponDelete").show();	// 삭제버튼
+				$("#CouponForm .buttonSpan").hide();	//행추가,삭제버튼
+			}else{
+				$("#CouponForm .buttonSpan").hide();	//행추가,삭제버튼
+			}
+
 			if(cpnCustGbList.length > 0){
 			if(cpnCustGbList.length > 0){
 				var chkboxCnt = $('#CouponForm input:checkbox[name=usableCustGbArr]').length;
 				var chkboxCnt = $('#CouponForm input:checkbox[name=usableCustGbArr]').length;
 				var dataCnt = cpnCustGbList.length;
 				var dataCnt = cpnCustGbList.length;
@@ -1799,6 +1836,7 @@
 			brandGridOptions.api.setRowData(cpnDtlRefvalBrandList);
 			brandGridOptions.api.setRowData(cpnDtlRefvalBrandList);
 			cateGridOptions.api.setRowData(cpnDtlRefvalCateList);
 			cateGridOptions.api.setRowData(cpnDtlRefvalCateList);
 			randomCouponGridOptions.api.setRowData(randomCpnList);
 			randomCouponGridOptions.api.setRowData(randomCpnList);
+			limitedTimeCpnGridOptions.api.setRowData(limitedTimeCpnList);
 			// 기본정보 세팅
 			// 기본정보 세팅
 			$("#CouponForm input:radio[name='rdoDcWay']:radio[value=" + cpnDetail.dcWay + "]").prop('checked', true);
 			$("#CouponForm input:radio[name='rdoDcWay']:radio[value=" + cpnDetail.dcWay + "]").prop('checked', true);
 			$("#CouponForm input:radio[name='rdoCpnType']:radio[value=" + cpnDetail.cpnType + "]").prop('checked', true);
 			$("#CouponForm input:radio[name='rdoCpnType']:radio[value=" + cpnDetail.cpnType + "]").prop('checked', true);
@@ -1816,7 +1854,8 @@
 			$("#CouponForm #firstOrdYn").val(cpnDetail.firstOrdYn).prop("selected", true);
 			$("#CouponForm #firstOrdYn").val(cpnDetail.firstOrdYn).prop("selected", true);
 			$("#CouponForm #reissuance").val(cpnDetail.reissuance).prop("selected", true);
 			$("#CouponForm #reissuance").val(cpnDetail.reissuance).prop("selected", true);
 			$("#CouponForm #dnGb").val(cpnDetail.dnGb).prop("selected", true);
 			$("#CouponForm #dnGb").val(cpnDetail.dnGb).prop("selected", true);
-			$("#CouponForm #cpnStat").val(cpnDetail.cpnStat).prop("selected", true);
+			//$("#CouponForm #cpnStat").val(cpnDetail.cpnStat).prop("selected", true);
+			$("input:radio[name='disCpnStat']:radio[value="+cpnDetail.cpnStat+"]").prop('checked', true); // 선택하기
 			$("#CouponForm #newCustYn").val(cpnDetail.newCustYn).prop("selected", true);
 			$("#CouponForm #newCustYn").val(cpnDetail.newCustYn).prop("selected", true);
 			$("#CouponForm #pdGb").val(cpnDetail.pdGb).prop("selected", true);
 			$("#CouponForm #pdGb").val(cpnDetail.pdGb).prop("selected", true);
 			$("#CouponForm #siteCd").val(cpnDetail.siteCd).prop("selected", true);
 			$("#CouponForm #siteCd").val(cpnDetail.siteCd).prop("selected", true);
@@ -1826,6 +1865,25 @@
 			$("#CouponForm #buyLimitAmt").val(cpnDetail.buyLimitAmt);
 			$("#CouponForm #buyLimitAmt").val(cpnDetail.buyLimitAmt);
 			$("#CouponForm #cpnId").val(cpnDetail.cpnId);
 			$("#CouponForm #cpnId").val(cpnDetail.cpnId);
 
 
+			if(limitedTimeCpnList.length>0 && cpnDetail.cpnType == "G230_11"){  //상품쿠폰이고 선착순쿠폰일때
+				$("#CouponForm #limitedTimeCpnYn").val("Y");
+				$("#CouponForm .limitedTimeCpnTab").show();
+				$('#CouponForm .limitedTimeCpnArea').show();
+				$("#CouponForm input[id=limitedTimeCpnYn]").parent("label").addClass("checked");
+				$("#CouponForm input[id=limitedTimeCpnYn]").attr('readonly', true);
+				$("#CouponForm input[id=limitedTimeCpnYn]").prop('disabled', true);
+				$("#CouponForm input[id=limitedTimeCpnYn]").parent().prop('disabled', true);
+				$("#CouponForm input[id=totPubLimitQty]").prop("disabled", true);
+				$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").addClass("checked");
+				$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', true);
+				$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', true);
+				$("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', true);
+			}else{
+				$("#CouponForm #limitedTimeCpnYn").val("N");
+				$("#CouponForm .limitedTimeCpnTab").hide();
+				$('#CouponForm .limitedTimeCpnArea').hide();
+			}
+
 			// 한번 저장되면 쿠폰유형, 할인쿠폰유형, 난수 생성수량, 시리얼명, 시리얼쿠폰발급수량 수정 불가 처리
 			// 한번 저장되면 쿠폰유형, 할인쿠폰유형, 난수 생성수량, 시리얼명, 시리얼쿠폰발급수량 수정 불가 처리
 			$("#CouponForm input:radio[name='rdoCpnType']").attr('readonly', true);
 			$("#CouponForm input:radio[name='rdoCpnType']").attr('readonly', true);
 			$("#CouponForm input:radio[name='rdoCpnType']").prop('disabled', true);
 			$("#CouponForm input:radio[name='rdoCpnType']").prop('disabled', true);
@@ -2108,6 +2166,55 @@
 			});
 			});
 		}, 300);
 		}, 300);
 	}
 	}
+
+	// 진행 버튼 클릭
+	$("#btnChangeStatIng").on("click", function() {
+		mcxDialog.confirmC("쿠폰을 진행하시겠습니까?<br/>진행 후에는 수정이 제한될 수 있습니다.", {
+			btn: confirmBtnText,
+			btnClick: function(index) {
+				if(index == 1) {
+					let data = { cpnStat : "G232_11"				// 진행
+						, cpnId : $('#CouponForm input[name=cpnId]').val()
+					}
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/coupon/changeStat', jsonData, fnCouponSaveCollback);
+				}
+			}
+		});
+	});
+
+	// 중지 버튼 클릭
+	$("#btnCouponStop").on("click", function() {
+		mcxDialog.confirmC("쿠폰 진행을 중지하시겠습니까?<br/>중지 후에는 진행으로 복원하실 수 없습니다.", {
+			btn: confirmBtnText,
+			btnClick: function(index) {
+				if(index == 1) {
+					let data = { cpnStat : "G232_12"			// 중지
+						, cpnId : $('#CouponForm input[name=cpnId]').val()
+					}
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/coupon/changeStat', jsonData, fnCouponSaveCollback);
+				}
+			}
+		});
+	});
+
+	// 삭제 버튼 클릭
+	$("#btnCouponDelete").on("click", function() {
+		mcxDialog.confirmC("쿠폰을 삭제하시겠습니까?<br/>삭제한 프로모션은 복원하실 수 없습니다.", {
+			btn: confirmBtnText,
+			btnClick: function(index) {
+				if(index == 1) {
+					let data = { cpnStat: "G232_14"			// 삭제
+						, cpnId : $('#CouponForm input[name=cpnId]').val()
+					}
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/coupon/changeStat', jsonData, fnCouponSaveCollback);
+				}
+			}
+		});
+	});
+
 	/*]]>*/
 	/*]]>*/
 </script>
 </script>
 </html>
 </html>