Explorar el Código

이태영 - 20210126 시리얼 쿠폰 등록 및 수정 완료

xodud1202 hace 5 años
padre
commit
d902cd82e3

+ 11 - 3
src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java

@@ -84,7 +84,7 @@ public interface TsaCouponDao {
 	 * @author xyzp1539
 	 * @since 2021-01-15
 	 */
-    Coupon getCouponDetail(String cpnId);
+    Coupon getCouponDetail(int cpnId);
 
 	/**
 	 * 쿠폰 발급개수 조회
@@ -93,7 +93,7 @@ public interface TsaCouponDao {
 	 * @author xyzp1539
 	 * @since 2021-01-15
 	 */
-	int getCouponIssueCnt(String cpnId);
+	int getCouponIssueCnt(int cpnId);
 
 	/**
 	 * 쿠폰 적용 대상 - 제외상품
@@ -147,7 +147,7 @@ public interface TsaCouponDao {
 	 * @author xyzp1539
 	 * @since 2021-01-18
 	 */
-	ArrayList<Coupon> getCouponBurdenList(String cpnId);
+	ArrayList<Coupon> getCouponBurdenList(int cpnId);
 
 	/**
 	 * 쿠폰 적용대상 삭제
@@ -200,4 +200,12 @@ public interface TsaCouponDao {
 	 * @since 2021. 01. 26
 	 */
 	int getSerialOverlapCheck(Coupon param);
+
+	/**
+	 * 동일 쿠폰명이 존재하는지 확인
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 01. 26
+	 */
+	ArrayList<CustCoupon> getRandomCouponInfo(int cpnId);
 }

+ 20 - 9
src/main/java/com/style24/admin/biz/service/TsaCouponService.java

@@ -45,7 +45,7 @@ public class TsaCouponService {
 	 */
 	@Transactional("shopTxnManager")
 	public String saveCoupon(Coupon params){
-		String cpnId = "";		// 쿠폰ID
+		int cpnId = 0;		// 쿠폰ID
 		params.setRegNo(TsaSession.getInfo().getUserNo());
 		params.setUpdNo(TsaSession.getInfo().getUserNo());
 
@@ -240,7 +240,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-15
 	 */
-    public Coupon getCouponDetail(String cpnId) { return couponDao.getCouponDetail(cpnId);}
+    public Coupon getCouponDetail(int cpnId) { return couponDao.getCouponDetail(cpnId);}
 
 	/**
 	 * 쿠폰 발급 개수 조회
@@ -249,7 +249,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-15
 	 */
-	public int getCouponIssueCnt(String cpnId) {
+	public int getCouponIssueCnt(int cpnId) {
 		return couponDao.getCouponIssueCnt(cpnId);
 	}
 
@@ -260,7 +260,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-18
 	 */
-	public ArrayList<CouponRefval> getCouponRefvalExceptGoodsList(String cpnId ) {
+	public ArrayList<CouponRefval> getCouponRefvalExceptGoodsList(int cpnId ) {
 		CouponRefval cpnRefval = new CouponRefval();
 		cpnRefval.setCpnId(cpnId);
 		cpnRefval.setCpnTarget("G260_14");
@@ -274,7 +274,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-18
 	 */
-	public ArrayList<CouponRefval> getCouponRefvalBrandList(String cpnId ) {
+	public ArrayList<CouponRefval> getCouponRefvalBrandList(int cpnId ) {
 		CouponRefval cpnRefval = new CouponRefval();
 		cpnRefval.setCpnId(cpnId);
 		cpnRefval.setCpnTarget("G260_12");
@@ -288,7 +288,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-18
 	 */
-	public ArrayList<CouponRefval> getCouponRefvalCategoryList(String cpnId) {
+	public ArrayList<CouponRefval> getCouponRefvalCategoryList(int cpnId) {
 		CouponRefval cpnRefval = new CouponRefval();
 		cpnRefval.setCpnId(cpnId);
 		cpnRefval.setCpnTarget("G260_11");
@@ -302,7 +302,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-18
 	 */
-	public ArrayList<CouponRefval> getCouponRefvalGoodsList(String cpnId , String cpnTarget) {
+	public ArrayList<CouponRefval> getCouponRefvalGoodsList(int cpnId , String cpnTarget) {
 		CouponRefval cpnRefval = new CouponRefval();
 		cpnRefval.setCpnId(cpnId);
 		cpnRefval.setCpnTarget(cpnTarget);
@@ -316,7 +316,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-18
 	 */
-	public ArrayList<CouponRefval> getCouponRefvalSupplyCompList(String cpnId) {
+	public ArrayList<CouponRefval> getCouponRefvalSupplyCompList(int cpnId) {
 		CouponRefval cpnRefval = new CouponRefval();
 		cpnRefval.setCpnId(cpnId);
 		cpnRefval.setCpnTarget("G260_13");
@@ -330,7 +330,7 @@ public class TsaCouponService {
 	 * @author xyzp1539
 	 * @since 2021-01-18
 	 */
-	public ArrayList<Coupon> getCouponBurdenList(String cpnId) {
+	public ArrayList<Coupon> getCouponBurdenList(int cpnId) {
 		return couponDao.getCouponBurdenList(cpnId);
 	}
 
@@ -372,4 +372,15 @@ public class TsaCouponService {
 			couponDao.saveCouponCustPub(custPub);
 		}
 	}
+
+	/**
+	 * 랜덤쿠폰 생성 리스트 조회
+	 * @param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021-01-26
+	 */
+	public ArrayList<CustCoupon> getRandomCouponInfo(int cpnId) {
+		return couponDao.getRandomCouponInfo(cpnId);
+	}
 }

+ 4 - 2
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -321,7 +321,7 @@ public class TsaMarketingController extends TsaBaseController {
 	 */
 	@GetMapping("/coupon/popup/form")
 	@ResponseBody
-	public ModelAndView couponCreatePopup(@RequestParam(value = "cpnId") String cpnId) {
+	public ModelAndView couponCreatePopup(@RequestParam(value = "cpnId") int cpnId) {
 		ModelAndView mav = new ModelAndView();
 		String num = "";
 		String mode = "N";
@@ -398,7 +398,7 @@ public class TsaMarketingController extends TsaBaseController {
 		mav.addObject("upperAfLinkCdList", rendererService.getCommonCodeList("G053"));
 
 		// 이미 쿠폰 아이디가 있으면 적용대상 조회
-		if (!StringUtils.isBlank(cpnId)) {
+		if (cpnId != 0) {
 			mode = "U";
 			issueCnt = couponService.getCouponIssueCnt(cpnId);
 			// 쿠폰상세조회
@@ -415,6 +415,8 @@ public class TsaMarketingController extends TsaBaseController {
 			mav.addObject("cpnDtlRefvalExceptGoodsList", couponService.getCouponRefvalGoodsList(cpnId, "G260_14"));
 			// 쿠폰 입점업체분담율 조회
 			mav.addObject("cpnDtlBurdenList", couponService.getCouponBurdenList(cpnId));
+			// 시리얼 및 난수 쿠폰 조회
+			mav.addObject("randomCpnList", couponService.getRandomCouponInfo(cpnId));
 		}
 
 		//issueCnt = 3;

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

@@ -13,7 +13,7 @@ import lombok.Data;
 @Data
 public class CouponBurden extends TscBaseDomain {
     // TB_COUPON_REFVAL
-    private String  cpnId;					// 쿠폰ID
+    private int  cpnId;					// 쿠폰ID
     private String  supplyCompCd;           // 공급업체코드
     private Integer burdenRate;             // 업체분담율
     private String  delYn;                  // 삭제여부

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

@@ -14,7 +14,7 @@ import lombok.Data;
 @Data
 public class CouponRefval extends TscBaseDomain {
     // TB_COUPON_REFVAL
-    private String  cpnId;					// 쿠폰ID
+    private int  cpnId;					    // 쿠폰ID
     private String  cpnTarget;              // 쿠폰대상구분(공통코드G260)
     private String  refVal;                 // 관련값(쿠폰대상이 "10:상품"일 때는 상품코드, "20:브랜드"일 때는 브랜드코드, "30:카테고리"일 때는 카테고리코드, "40:제외상품"일 때는 상품코드)
     private Integer cpnRefvalSq;            // 쿠폰대상일련번호

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

@@ -23,6 +23,9 @@ public class CustCoupon extends TscBaseDomain {
     private String  usedDt;                 // 사용된일시
     private String  endAlimSendYn;          // 만료알림발송여부
     private String  useYn;                  // 사용여부
+    private String  rdCpnNm;                // 랜덤쿠폰 및 시리얼쿠폰 키
+    private String  custId;                 // 고객 아이디
+    private String  custNm;                 // 고객명
 
     // 그리드 컬럼
     private String  custList;

+ 23 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml

@@ -409,7 +409,7 @@
 	</select>
 
 	<!-- 쿠폰 상세 조회-->
-	<select id="getCouponDetail" parameterType="String" resultType="Coupon">
+	<select id="getCouponDetail" parameterType="int" resultType="Coupon">
 		/* TsaCoupon.getCouponDetail */
 		SELECT B.CPN_ID
 			 , B.CPN_NM
@@ -441,6 +441,7 @@
 			 , B.END_ALIM_YN
 			 , B.FIRST_YN
 			 , B.DOWN_YN
+		     , B.DC_CD_GB
 			 , B.CUST_JOIN_STDT
 			 , B.CUST_JOIN_EDDT
 			 , B.BUY_STDT
@@ -462,7 +463,7 @@
 	</select>
 
 	<!-- 쿠폰 발급 개수 조회 -->
-	<select id="getCouponIssueCnt" parameterType="String" resultType="int">
+	<select id="getCouponIssueCnt" parameterType="int" resultType="int">
 		/* TsaCoupon.getCouponIssueCnt*/
 		SELECT COUNT(1)
 		  FROM TB_CUST_COUPON
@@ -535,7 +536,7 @@
 	</select>
 
 	<!-- 쿠폰 입점업체 분담율 조회-->
-	<select id="getCouponBurdenList" parameterType="String" resultType="CouponBurden">
+	<select id="getCouponBurdenList" parameterType="int" resultType="CouponBurden">
 		/* TsaCoupon.getCouponBurdenList */
 		SELECT SUPPLY_COMP_CD
 			 , BURDEN_RATE
@@ -690,4 +691,23 @@
 			, CURRENT_TIMESTAMP()
 		)
 	</insert>
+
+	<!-- 특정 쿠폰 발급받은 회원 조회-->
+	<select id="getRandomCouponInfo" parameterType="int" resultType="CustCoupon">
+		/* TsaCoupon.getRandomCouponInfo */
+		SELECT RC.CPN_ID
+			 , RC.RD_CPN_NM
+		     , C.CUST_NO
+			 , C.CUST_ID
+			 , C.CUST_NM
+			 , DATE_FORMAT(CC.REG_DT, '%Y-%m-%d %H:%i:%s') AS REG_DT
+			 , DATE_FORMAT(CC.USED_DT, '%Y-%m-%d %H:%i:%s') AS USED_DT
+		FROM TB_RANDOM_COUPON RC
+		LEFT OUTER JOIN TB_CUSTOMER C
+		ON RC.CUST_NO = C.CUST_NO
+		LEFT OUTER JOIN TB_CUST_COUPON CC
+		ON RC.CPN_ID = CC.CPN_ID
+		AND C.CUST_NO = CC.CUST_NO
+		WHERE RC.CPN_ID = #{cpnId}
+	</select>
 </mapper>

+ 28 - 8
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html

@@ -344,7 +344,7 @@
 									</tbody>
 								</table>
 								<div class="mdPopBtnB aR">
-									<button type="button" class="btn btn-info btn-lg" onclick="fnCustomerIssuePopUp();" 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="fnCouponCreate();" th:if="${mode == 'N'}">등록</button>
 									<button type="button" class="btn btn-info btn-lg" onclick="fnCouponUpdate();" th:if="${mode == 'U'}">수정</button>
 								</div>
@@ -480,6 +480,7 @@
 	var cpnDtlRefvalBrandList = [[${cpnDtlRefvalBrandList}]];
 	var cpnDtlRefvalExceptGoodsList = [[${cpnDtlRefvalExceptGoodsList}]];
 	var cpnDtlBurdenList = [[${cpnDtlBurdenList}]];
+	var randomCpnList = [[${randomCpnList}]];
 	var issueCnt = [[${issueCnt}]];
 
 	// 공통코드 리스트
@@ -577,11 +578,14 @@
 		{ headerName: "쿠폰대상일련번호"  , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
 	];
 
-	// ag-grid 공급처 컬럼
+	// ag-grid 시리얼 및 난수 리스트
 	var randomCouponDefs = [
-		{ headerName : "생성쿠폰명" , field: "supplyCompCd" , width:150, cellClass: 'text-center'} ,
-		{ headerName: "고객아이디" , field: "supplyCompNm" , width:150, cellClass: 'text-center'},
-		{ headerName: "고객명" , field: "supplyCompNm" , width:150, cellClass: 'text-center'}
+		{ headerName : "생성쿠폰키워드" , field: "rdCpnNm" , width:150, cellClass: 'text-center'} ,
+		{ headerName: "지급고객번호" , field: "custNm" , width:150, cellClass: 'text-center'},
+		{ headerName: "고객아이디" , field: "custId" , width:150, cellClass: 'text-center'},
+		{ headerName: "고객명" , field: "custNm" , width:150, cellClass: 'text-center'},
+		{ headerName: "지급일" , field: "regDt" , width:150, cellClass: 'text-center'},
+		{ headerName: "쿠폰사용일" , field: "usedDt" , width:150, cellClass: 'text-center'}
 	];
 
 	var inComGridOptions = gagaAgGrid.getGridOptions(columnDefs);
@@ -1219,9 +1223,13 @@
 		// 할인쿠폰 유형에 따른 총 발행수량 수정 (주문서 쿠폰이고 난수쿠폰일 경우)
 		if($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_20") {
 			$('#CouponForm input[name="totPubLimitQty"]').val($('#CouponForm input[name="randomCpnQty"]').val());	// 총 발행수량 난수 생성수량으로 변경
+			$('#CouponForm input[name="custPubLimitQty"]').val(1);		// 1인당 발행제한수량 1개 고정
+			$('#CouponForm input[name="onePubQty"]').val(1);			// 1회발행수량 1개 고정
 		} else if ($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_10") {		// 주문서 쿠폰이고 시리얼 유형일 경우
 			$('#CouponForm input[name="rdCpnNm"]').val($('#CouponForm input[name="serialCpnNm"]').val());			// 시리얼유형쿠폰명 저장
 			$('#CouponForm input[name="totPubLimitQty"]').val($('#CouponForm input[name="serialCpnQty"]').val());	// 총 발행수량 랜덤쿠폰발급수량으로 변경
+			$('#CouponForm input[name="custPubLimitQty"]').val(1);		// 1인당 발행제한수량 1개 고정
+			$('#CouponForm input[name="onePubQty"]').val(1);			// 1회발행수량 1개 고정
 		}
 
 		// 적용대상 - 공급처 그리드 전체값 세팅
@@ -1285,6 +1293,7 @@
 			excepGoodsGridOptions.api.setRowData(cpnDtlRefvalExceptGoodsList);
 			brandGridOptions.api.setRowData(cpnDtlRefvalBrandList);
 			cateGridOptions.api.setRowData(cpnDtlRefvalCateList);
+			randomCouponGridOptions.api.setRowData(randomCpnList);
 			// 기본정보 세팅
 			$("#CouponForm input:radio[name='rdoDcWay']:radio[value=" + cpnDetail.dcWay + "]").prop('checked', true);
 			$("#CouponForm input:radio[name='rdoCpnType']:radio[value=" + cpnDetail.cpnType + "]").prop('checked', true);
@@ -1314,24 +1323,35 @@
 
 			// 한번 저장되면 쿠폰유형, 할인쿠폰유형, 난수 생성수량, 시리얼명, 시리얼쿠폰발급수량 수정 불가 처리
 			$("#CouponForm input:radio[name='rdoCpnType']").attr('readonly', true);
+			$("#CouponForm input:radio[name='rdoCpnType']").prop('disabled', true);
 			$("#CouponForm input:radio[name='rdoCpnType']").parent().prop('disabled', true);
 			$("#CouponForm input:radio[name='dcCdGb']").attr('readonly', true);
+			$("#CouponForm input:radio[name='dcCdGb']").prop('disabled', true);
 			$("#CouponForm input:radio[name='dcCdGb']").parent().prop('disabled', true);
+			$("#CouponForm input:radio[name='dcCdGb']:radio[value=" + cpnDetail.dcCdGb + "]").prop('checked', true);
 			$("#CouponForm input[name='serialCpnNm']").prop("disabled", true);
 			$("#CouponForm input[name='serialCpnQty']").prop("disabled", true);
 			$("#CouponForm input[name='randomCpnQty']").prop("disabled", true);
 
-			// 할인코드유형이 일반유형이 아니면 시리얼 및 난수 생성 및 지급 내역 탭 노출
+			// 주문서 쿠폰이면 할인쿠폰유형 노출
+			if(cpnDetail.cpnType == "G230_20") {
+				$("#CouponForm .dcCdGb").show();
+			}
+			// 할인코드유형이 일반유형이 아니면
 			if(cpnDetail.dcCdGb != "G233_00" ) {
-				$("#CouponForm .randomCpnTab").show();
+				$("#CouponForm .randomCpnTab").show();							// 시리얼 및 난수 TAB 노출
+				$("#CouponForm .dcCdCheck").hide();								// 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
 				if(cpnDetail.dcCdGb == "G233_10") {		// 시리얼 유형
 					$("#CouponForm input[name='serialCpnQty']").val(cpnDetail.totPubLimitQty);
 					$("#CouponForm input[name='serialCpnNm']").val(cpnDetail.rdCpnNm);
+					$("#CouponForm .normalCol").attr("colspan", "5");
 					$("#CouponForm .serialCpnArea").show();
+					$("#CouponForm .randomCpnArea").hide();
 				} else if (cpnDetail.dcCdGb == "G233_20") {
 					$("#CouponForm input[name='randomCpnQty']").val(cpnDetail.totPubLimitQty);
-					$("#CouponForm .randomCpnArea").show();
 					$("#CouponForm .normalCol").attr("colspan", "");
+					$("#CouponForm .randomCpnArea").show();
+					$("#CouponForm .serialCpnArea").hide();
 				}
 			}
 

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

@@ -227,7 +227,7 @@
 		var custAllData = gagaAgGrid.getAllRowData(pubCustGridOptions);
 		var jsonCustPubData = JSON.stringify(custAllData);
 		$("#pubRegForm #custList").val(jsonCustPubData);
-		$("#pubRegForm #cpnId").val($("#CouponForm #cpnId2").val());
+		$("#pubRegForm #cpnId").val($("#CouponForm #cpnId").val());
 	}
 
 	$(document).ready(function(){