Jelajahi Sumber

수정

수정
xyzp1539 5 tahun lalu
induk
melakukan
3a43e8a4f0

+ 27 - 2
src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java

@@ -4,7 +4,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.CommonCode;
 import com.style24.persistence.domain.Coupon;
+import org.springframework.stereotype.Component;
 
 /**
  * 쿠폰 DAO
@@ -17,7 +19,7 @@ public interface TsaCouponDao {
 
 	/**
 	 * 쿠폰 리스트 조회
-	 * @param  Coupon
+	 * @param  param
 	 * @return ArrayList<Coupon>
 	 * @author xyzp1539
 	 * @since 2020-12-22
@@ -26,7 +28,7 @@ public interface TsaCouponDao {
 
 	/**
 	 * 쿠폰 리스트 카운트 조회
-	 * @param  Coupon
+	 * @param  param
 	 * @return int
 	 * @author xyzp1539
 	 * @since 2020-12-22
@@ -50,4 +52,27 @@ public interface TsaCouponDao {
 	 */
 	Collection<Coupon> getCouponRetrieveList(Coupon coupon);
 
+	/**
+	 * 쿠폰 적용대상 등록
+	 * @param supplyComp
+	 * @author xyzp1539
+	 * @since  2021-01-14
+	 */
+	void saveCouponRefVal(Coupon supplyComp);
+
+	/**
+	 * 쿠폰 입점업체 분담 등록
+	 * @param burden
+	 * @author xyzp1539
+	 * @since  2021-01-14
+	 */
+	void saveCouponBurden(Coupon burden);
+
+	/**
+	 * 자사브랜드 조회
+	 * @param
+	 * @author xyzp1539
+	 * @since  2021-01-14
+	 */
+    Collection<CommonCode> getSelfBrandList();
 }

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

@@ -8,6 +8,7 @@ import java.util.Date;
 
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
+import com.style24.persistence.domain.CommonCode;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -37,9 +38,6 @@ public class TsaCouponService {
 	@Autowired
 	private TsaCommonService commonService;
 
-
-
-
 	/**
 	 * 쿠폰 저장
 	 * @param params
@@ -47,14 +45,14 @@ public class TsaCouponService {
 	 * @since  2021-01-11
 	 */
 	@Transactional("shopTxnManager")
-	public void couponSave(Coupon params) {
+	public void saveCoupon(Coupon params) {
 		String cpnId = "";		// 쿠폰ID
 
 		params.setRegNo(TsaSession.getInfo().getUserNo());
 		params.setUpdNo(TsaSession.getInfo().getUserNo());
 
 		// 자동생성이면 시퀀스 가져오기
-		/*if(StringUtils.isBlank(params.getCpnId())) {
+		if(StringUtils.isBlank(params.getCpnId())) {
 			Integer sequence = commonService.getNextSequence("SEQ_COUPON");
 			cpnId = "CPN"+sequence;
 		} else {
@@ -63,19 +61,68 @@ public class TsaCouponService {
 		params.setCpnId(cpnId);
 
 		couponDao.couponInsert(params);
-		*/
-		Gson gson = new Gson();
 
+		Gson gson = new Gson();
+		// 적용대상 - 공급업체
 		Collection<Coupon>	supplyCompList = gson.fromJson(params.getSupplyCompList() , new TypeToken<Collection<Coupon>>(){}.getType());
 		for(Coupon supplyComp : supplyCompList) {
-		//	couponDao.couponRefValInsert(supplyComp);
+			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			supplyComp.setCpnId(cpnId);
+			supplyComp.setCpnRefvalSq(sequence);
+			supplyComp.setCpnTarget("G260_13");
+			supplyComp.setRefVal(supplyComp.getSupplyCompCd());
+			couponDao.saveCouponRefVal(supplyComp);
 		}
+		// 적용대상 - 브랜드
 		Collection<Coupon> brandList = gson.fromJson(params.getBrandList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		for(Coupon brand : brandList) {
+			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			brand.setCpnId(cpnId);
+			brand.setCpnRefvalSq(sequence);
+			brand.setCpnTarget("G260_12");
+			brand.setRefVal(brand.getBrandCd());
+			couponDao.saveCouponRefVal(brand);
+		}
+		// 적용대상 - 적용상품
 		Collection<Coupon> applyGoodsList = gson.fromJson(params.getApplyGoodsList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		for(Coupon applyGoods : applyGoodsList ) {
+			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			applyGoods.setCpnId(cpnId);
+			applyGoods.setCpnRefvalSq(sequence);
+			applyGoods.setCpnTarget("G260_10");
+			applyGoods.setRefVal(applyGoods.getGoodsCd());
+			couponDao.saveCouponRefVal(applyGoods);
+		}
+		// 적용대상 - 카테고리
 		Collection<Coupon> cateList = gson.fromJson(params.getCateList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		for(Coupon cate : cateList ) {
+			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			cate.setCpnId(cpnId);
+			cate.setCpnRefvalSq(sequence);
+			cate.setCpnTarget("G260_10");
+			cate.setRefVal(cate.getCateNo());
+			cate.setRefFormalGb(cate.getFormalGb());
+			cate.setRefBrandCd(cate.getBrandCd());		// ag-grid 브랜드코드
+			couponDao.saveCouponRefVal(cate);
+		}
+		// 적용대상 - 제외상품
 		Collection<Coupon> exceptGoodsList = gson.fromJson(params.getExceptGoodsList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		for(Coupon exceptGoods: exceptGoodsList ) {
+			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			exceptGoods.setCpnId(cpnId);
+			exceptGoods.setCpnRefvalSq(sequence);
+			exceptGoods.setCpnTarget("G260_10");
+			exceptGoods.setRefVal(exceptGoods.getGoodsCd());
+			couponDao.saveCouponRefVal(exceptGoods);
+		}
+		// 입점업체분담율
 		Collection<Coupon> burdenList = gson.fromJson(params.getBurdenList() , new TypeToken<Collection<Coupon>>(){}.getType());
-
+		for(Coupon burden: burdenList ) {
+			Integer sequence = commonService.getNextSequence("SEQ_COUPON_REFVAL");
+			burden.setCpnId(cpnId);
+			burden.setCpnTarget("G260_10");
+			couponDao.saveCouponBurden(burden);
+		}
 		//checkCpnValidation(params);
 
 	}
@@ -184,4 +231,14 @@ public class TsaCouponService {
 		return couponDao.getCouponRetrieveList(coupon);
 	}
 
+	/**
+	 * 쿠폰조회 목록
+	 * @param coupon - 쿠폰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 8
+	 */
+	public Collection<CommonCode> getSelfBrandList() {
+		return couponDao.getSelfBrandList();
+	}
 }

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

@@ -253,6 +253,12 @@ public class TsaMarketingController extends TsaBaseController {
 		mav.addObject("hhList", hhList);
 		// 입점업체 조회
 		mav.addObject("ibSupplyCompList", rendererService.getSupplyCompanyList("", "N"));
+		// 정상/이월 조회
+		mav.addObject("formalGbList" , rendererService.getCommonCodeList("G009"));
+		// 카테고리 구분 조회
+		mav.addObject("cateGbList" , rendererService.getCommonCodeList("G032"));
+		// 자사 브랜드 조회
+		mav.addObject("selfBrandList" , couponService.getSelfBrandList());
 
 		mav.setViewName("marketing/CouponCreatePopupForm");
 		return mav;
@@ -270,7 +276,7 @@ public class TsaMarketingController extends TsaBaseController {
 	public GagaResponse couponSave(@RequestBody Coupon coupon) {
 		log.info("couponSave : {}", coupon);
 
-		couponService.couponSave(coupon);
+		couponService.saveCoupon(coupon);
 
 		return super.ok(message.getMessage("SUCC_0001"));
 	}

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

@@ -41,7 +41,7 @@ public class Category extends TscBaseDomain {
 	// 검색조건
 	private String siteCd;		// 사이트코드
 	private Integer selLvl;		// 선택레벨
-	private String callbackFn;	// 콜백함수
+	private String callBackFun;	// 콜백함수
 
 	// 품목카테고리매핑관리 화면에서 사용
 	private String fullCateNo;	// FULL카테고리번호

+ 13 - 6
src/main/java/com/style24/persistence/domain/Coupon.java

@@ -15,7 +15,7 @@ import java.util.Collection;
 @SuppressWarnings("serial")
 @Data
 public class Coupon extends TscBaseDomain {
-
+    // TB_COUPON
     private String  cpnId;					// 쿠폰ID
     private String  cpnNm;					// 쿠폰명
     private String  siteCd;					// 사이트코드(공통코드G000)
@@ -55,27 +55,34 @@ public class Coupon extends TscBaseDomain {
     private String  payType;                 // 결제수단
     private String  custJoinYn;             // 신규회원여부
 
+    // 그리드 컬럼
     private String  supplyCompCd;            // 공급업체코드
-    private int     burdenRate;                 // 업체분담율
+    private Integer burdenRate;              // 업체분담율
     private String  delYn;                   // 삭제여부
     private String  supplyCompNm;            // 공급업체명
-
     private String  brandCd;                 // 브랜드코드
     private String  brandEnm;                // 브랜드영문명
-
     private String  goodsGb;                 // 상품구분
     private String  goodsCd;                 // 상품코드
     private String  goodsNm;                 // 상품명
-
     private String  cateNm;                  // 카테고리코드명
     private String  cateNo;                  // 카테고리코드
-
     private String  supplyCompList;          // 공급업체 리스트
     private String  brandList;               // 브랜드 리스트
     private String  applyGoodsList;          // 적용상품 리스트
     private String  exceptGoodsList;         // 제외상품 리스트
     private String  burdenList;              // 업체 분담율 리스트
     private String  cateList;                // 카테고리 리스트
+    private String  formalGb;                // 이월정상구분
+
+    // TB_COUPON_REFVAL
+    private String  cpnTarget;               // 쿠폰대상구분(공통코드G260)
+    private String  refVal;                  // 관련값(쿠폰대상이 "10:상품"일 때는 상품코드, "20:브랜드"일 때는 브랜드코드, "30:카테고리"일 때는 카테고리코드, "40:제외상품"일 때는 상품코드)
+    private Integer cpnRefvalSq;             // 쿠폰대상일련번호
+    private String  refFormalGb;             // 정상/이월구분(G009). 쿠폰대상구분이 카테고리일 경우 사용
+    private String  refBrandCd;              // 브랜드코드. 쿠폰대상구분이 카테고리일 경우 사용
+    private Integer cpnRefValSq;
+
 
     // Pagination
     private TsaPageRequest pageable;

+ 5 - 5
src/main/webapp/WEB-INF/views/display/CategorySearchForm.html

@@ -14,7 +14,7 @@
  * 1.0  2021.01.11   xyzp1539    최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" data-width="900" id="popupCategory">
+<div class="modalPopup" data-width="1100" id="popupCategory">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -126,7 +126,7 @@
 			return false;
 		}
 		
-		var callbackFn = [[${params.callbackFn}]];
+		var callbackFn = [[${params.callBackFun}]];
 
 		var jsonData = JSON.stringify(selectedData);
 
@@ -162,11 +162,11 @@
 				selLvl = 1;
 			}
 		}
-		$('#searchForm input[name=selLvl]').val(selLvl);
+		$('#searchCategoryListForm input[name=selLvl]').val(selLvl);
 
 		// Fetch data
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm', function(data) {
-			let selLvl = Number($('#searchForm input[name=selLvl]').val()) + 1;
+		gagaAgGrid.fetch($('#searchCategoryListForm').prop('action'), categoryGridOptions, '#searchCategoryListForm', function(data) {
+			let selLvl = Number($('#searchCategoryListForm input[name=selLvl]').val()) + 1;
 
 			for (let i = 2; i <= 5; i++) {
 				if (i >= selLvl) {

+ 30 - 5
src/main/webapp/WEB-INF/views/marketing/CouponCreatePopupForm.html

@@ -438,7 +438,11 @@
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	var ibSupplyComList = gagajf.convertToArray([[${ibSupplyCompList}]]);
+	var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
+	var cateGbList = gagajf.convertToArray([[${cateGbList}]]);
 	var delYnList = { "Y":"Yes", "N":"No" };
+	var siteCdList = gagajf.convertToArray([[${siteCdList}]]);
+	var selfBrandList = gagajf.convertToArray([[${selfBrandList}]]);
 
 	// ag-grid 입점업체분담율 컬럼
 	var columnDefs = [
@@ -472,7 +476,6 @@
 		{ 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: "targetGb" , width: 150, cellClass: 'text-center'}
 	];
 
 	// ag-grid 적용상품 컬럼
@@ -481,15 +484,37 @@
 		{ headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
 		{ headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
 		{ headerName: "상품명"  , field: "goodsNm" , width: 120 , cellClass: 'text-center'} ,
-		//{ headerName: "적용대상" , field: "targetGB" , width: 150, cellClass: 'text-center'}
 	];
 
 	// ag-grid 카테고리 컬럼
 	var cateSelColumnDefs = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{ headerName: "사이트" , field: "siteCd" , width: 100 , cellClass: 'text-center' ,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(siteCdList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteCdList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(siteCdList, params.newValue); }
+		},
+		{ headerName: "카테고리구분" , field: "cateGb" , width: 100 , cellClass: 'text-center' ,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(cateGbList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(cateGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(cateGbList, params.newValue); }
+		},
 		{ headerName: "카테고리코드" , field: "cateNo" , width: 100 , cellClass: 'text-center'} ,
 		{ headerName: "카테고리명" , field: "cateNm" , width: 120 , cellClass: 'text-center'},
-		//{ headerName: "적용대사"}
+		{ headerName: "이월/정상구분" , field: "formalGb" , width: 120 , cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
+		},
+		{ headerName: "브랜드명" , field:"brandCd" , width:150, cellClass: "text-center",
+			editable: true, cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(selfBrandList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(selfBrandList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(selfBrandList, params.newValue); }
+		}
 	];
 
 	// ag-grid 제외상품 컬럼
@@ -715,12 +740,12 @@
 			// 받아온 data for
 			for(let j = 0 ; j < gridListValue.length ; j++) {
 				// 동일한 data는 추가하지 않음
-				if(gridListValue[j].supplyCompCd == result[i].supplyCompCd) {	addChk = false;	}		// 중복체크
+				if(gridListValue[j].cateNo == result[i].cateNo) {	addChk = false;	}		// 중복체크
 			}
 
 			// 중복되지 않은 데이터 리스트에 추가
 			if(addChk) {
-				gagaAgGrid.addRowData(cateGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm});
+				gagaAgGrid.addRowData(cateGridOptions, {"siteCd":result[i].siteCd , "cateGb":result[i].cateGb , "cateNo":result[i].cateNo, "cateNm":result[i].cateNm , "formalGb":result[i].formalGb , "brandEnm":null});
 			}
 		}
 	}