Ver Fonte

이태영 - 20210118 중간커밋

xodud1202 há 5 anos atrás
pai
commit
3444d8591a

+ 20 - 2
src/main/java/com/style24/admin/biz/dao/TsaMarketingDao.java

@@ -20,12 +20,30 @@ public interface TsaMarketingDao {
 
 	/**
 	 * 사은품 프로모션 리스트
-	 * @param marketing
+	 * @param param
 	 * @return
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
-	Collection<FreeGoodsPromotion> getFreeGoodsPromotionList(FreeGoodsPromotion marketing);
+	Collection<FreeGoodsPromotion> getFreeGoodsPromotionList(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 제휴몰 리스트 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 18
+	 */
+	Collection<FreeGoodsPromotion> getFreegiftExtmallList(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 제휴몰 리스트 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 18
+	 */
+	Collection<FreeGoodsPromotion> getFreegiftSupplyCompList(FreeGoodsPromotion param);
 
 	/**
 	 * 사은품 프로모션 마스터 정보 저장

+ 25 - 0
src/main/java/com/style24/admin/biz/service/TsaMarketingService.java

@@ -82,6 +82,31 @@ public class TsaMarketingService {
 		return marketingDao.getFreeGoodsPromotionList(param);
 	}
 
+	/**
+	 * 사은품 프로모션 제휴몰 리스트
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2020. 12. 17
+	 */
+	public Collection<FreeGoodsPromotion> getFreegiftExtmallList(FreeGoodsPromotion param) {
+		return marketingDao.getFreegiftExtmallList(param);
+	}
+
+	/**
+	 * 사은품 프로모션 리스트
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2020. 12. 17
+	 */
+	public Collection<FreeGoodsPromotion> getFreegiftSupplyCompList(FreeGoodsPromotion param) {
+		// 공급업체 조건 세팅 및 조회
+		param.setGoodsGb("G800_20");		// 적용 상품
+		param.setTargetGb("G260_13");		// 공급처
+		return marketingDao.getFreegiftSupplyCompList(param);
+	}
+
 	@Transactional("shopTxnManager")
 	public void saveFreegoodsPromotionInfo(FreeGoodsPromotion param) {
 		param.setRegNo(TsaSession.getInfo().getUserNo());

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

@@ -86,6 +86,10 @@ public class TsaMarketingController extends TsaBaseController {
 	@GetMapping("/freeGoods/promotion/form")
 	public ModelAndView freeGoodsPromotionForm() {
 		ModelAndView mav = new ModelAndView();
+
+		// 프로모션 상태
+		mav.addObject("freegiftStatList", rendererService.getCommonCodeList("G232", "Y"));
+
 		mav.setViewName("marketing/FreeGoodsPromotionForm");
 		return mav;
 	}
@@ -100,14 +104,14 @@ public class TsaMarketingController extends TsaBaseController {
 	public GagaMap getFreeGoodsPromotionList(@RequestBody FreeGoodsPromotion param) {
 		GagaMap result = new GagaMap();
 
-		List<FreeGoodsPromotion> marketingList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
+		List<FreeGoodsPromotion> freeGoodsList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
-		param.getPageable().setTotalCount(marketingList.size());
+		param.getPageable().setTotalCount(freeGoodsList.size());
 
 		result.set("pageing", param);
-		result.set("freeGoodsList", marketingList);
+		result.set("freeGoodsList", freeGoodsList);
 
 		return result;
 	}
@@ -127,11 +131,37 @@ public class TsaMarketingController extends TsaBaseController {
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
+
 		mav.addObject("param", param);
+
 		mav.setViewName("marketing/FreeGoodsPromotionRegiForm");
 		return mav;
 	}
 
+	/**
+	 * 사은품 프로모션 목록 조회
+	 * @author xodud1202
+	 * @since 2020. 12. 16
+	 */
+	@PostMapping("/freeGoodsPromotion/detail")
+	@ResponseBody
+	public GagaMap getFreeGoodsPromotionDetail(FreeGoodsPromotion param) {
+		GagaMap result = new GagaMap();
+
+		// 사은품 프로모션 마스터 정보 조회
+		List<FreeGoodsPromotion> freeGoodsList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
+		// 상세 조회 내역이 없거나, 1개가 아닐 경우
+		if(freeGoodsList == null || freeGoodsList.size() != 1 ) {
+			return null;
+		}
+
+		result.set("freegift", freeGoodsList.get(0));												// 사은품 프로모션 마스터 정보
+		result.set("freegiftExtmallList", marketingService.getFreegiftExtmallList(param));			// 사은품 프로모션 제휴몰 목록 조회
+		result.set("freegiftSupplyCompList", marketingService.getFreegiftSupplyCompList(param));	// 사은품 프로모션 공급업체 목록 조회
+
+		return result;
+	}
+
 	/**
 	 * 사은품 프로모션 등록
 	 * @param param
@@ -143,20 +173,6 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/freeGoodsPromotion/save")
 	public GagaResponse freeGoodsPromotionSave(@RequestBody FreeGoodsPromotion param) {
 		try {
-			log.info("DATA CHECK getSelfYn >>			" + param.getSelfYn());
-			log.info("DATA CHECK getExtmallYn >>		" + param.getExtmallYn());
-			log.info("DATA CHECK getAllYn >>			" + param.getAllYn());
-			log.info("DATA CHECK getSectionVal >>		" + param.getSectionVal());
-			log.info("DATA CHECK getSectionVal2 >>		" + param.getSectionVal2());
-			log.info("DATA CHECK getSupplyCompCds >>	" + param.getSupplyCompCds()[0] + " / " + param.getSupplyCompCds().length);
-			log.info("DATA CHECK getBrandCds >>			" + param.getBrandCds()[0] + " / " + param.getBrandCds().length);
-			log.info("DATA CHECK getExtmallList >>		" + param.getExtmallList().length);
-			log.info("DATA CHECK getExtmallList >>		" + param.getExtmallList()[0].toString());
-			log.info("DATA CHECK getApplyGoodsList >>	" + param.getApplyGoodsList().length);
-			log.info("DATA CHECK getExceptGoodsList >>	" + param.getExceptGoodsList().length);
-			log.info("DATA CHECK getFreeGoods1 >>		" + param.getFreeGoods1().length);
-			log.info("DATA CHECK getFreeGoods2 >>		" + param.getFreeGoods2().length);
-
 			marketingService.saveFreegoodsPromotionInfo(param);
 		} catch(Exception e) {
 			e.printStackTrace();

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

@@ -37,6 +37,7 @@ public class FreeGoodsPromotion extends TscBaseDomain {
 	private String extmallYn;			// 제휴몰 여부
 	private String extmallId;			// 외부몰ID
 	private String vendorId;			// 벤더ID
+	private String extmallNm;			// 외부몰명
 
 	// 사은품 프로모션 적용 및 제외 상품
 	private String goodsGb;				// 상품 구분 (G800_10|기본상품, G800_20|적용상품, G800_30|제외상품, G800_40|ALL)

+ 60 - 14
src/main/java/com/style24/persistence/mybatis/shop/TsaMarketing.xml

@@ -3,29 +3,75 @@
 <mapper namespace="com.style24.admin.biz.dao.TsaMarketingDao">
 	<!-- xodud1202 진행 -->
 
-	<!-- 품목 목록 -->
+	<!-- 사은품 프로모션 리스트 조회 -->
 	<select id="getFreeGoodsPromotionList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
 		/* TsaMarketing.getFreeGoodsPromotionList : 사은품 프로모션 리스트 조회 */
 		SELECT FG.FREEGIFT_SQ
-		, FG.FREEGIFT_NM
-		, FG.FREEGIFT_STAT
-		, DATE_FORMAT(FG.FREEGIFT_STDT, '%Y.%m.%d') AS FREEGIFT_STDT
-		, DATE_FORMAT(FG.FREEGIFT_EDDT, '%Y.%m.%d') AS FREEGIFT_EDDT
-		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.REG_NO) AS REG_NM
-		, DATE_FORMAT(FG.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
-		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.UPD_NO) AS UPD_NM
-		, DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
-		FROM TB_FREEGIFT FG
-		WHERE 1=1
+			 , FG.FREEGIFT_NM
+			 , FG.FREEGIFT_STAT
+		     , FG.SELF_YN
+			 , DATE_FORMAT(FG.FREEGIFT_STDT, '%Y.%m.%d') AS FREEGIFT_STDT
+			 , DATE_FORMAT(FG.FREEGIFT_EDDT, '%Y.%m.%d') AS FREEGIFT_EDDT
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.REG_NO) AS REG_NM
+			 , DATE_FORMAT(FG.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.UPD_NO) AS UPD_NM
+			 , DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+		  FROM TB_FREEGIFT FG
+		 WHERE 1=1
 		<if test="searchTxt != null and searchTxt != ''">
 			<if test="promotionGubun != null and promotionGubun == 'freegiftSq'">
-				AND FG.FREEGIFT_SQ = #{searchTxt}
+		   AND FG.FREEGIFT_SQ = #{searchTxt}
 			</if>
 			<if test="promotionGubun != null and promotionGubun == 'freegiftNm'">
-				AND FG.FREEGIFT_NM = #{searchTxt}
+		   AND FG.FREEGIFT_NM = #{searchTxt}
 			</if>
 		</if>
-		ORDER BY REG_DT DESC
+		<if test="freegiftSq != null and freegiftSq != ''">
+		   AND FG.FREEGIFT_SQ = #{freegiftSq}
+		</if>
+		 ORDER BY REG_DT DESC
+	</select>
+
+	<!-- 사은품 프로모션 제휴몰 리스트 조회 -->
+	<select id="getFreegiftExtmallList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
+		/* TsaMarketing.getFreegiftExtmallList : 사은품 프로모션 제휴몰 리스트 조회 */
+		SELECT FE.FREEGIFT_EXTMALL_SQ
+		     , FE.FREEGIFT_SQ
+		     , FE.EXTMALL_ID
+		     , FE.VENDOR_ID
+		     , (SELECT EXTMALL_NM FROM TB_EXTMALL WHERE EXTMALL_ID = FE.EXTMALL_ID AND VENDOR_ID = FE.VENDOR_ID) AS EXTMALL_NM
+		     , FE.DEL_YN
+		     , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FE.REG_NO) AS REG_NM
+			 , DATE_FORMAT(FE.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+		     , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FE.UPD_NO) AS UPD_NM
+		     , DATE_FORMAT(FE.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+		  FROM TB_FREEGIFT_EXTMALL FE
+		 WHERE 1=1
+		   AND DEL_YN = 'N'
+		<if test="freegiftSq != null and freegiftSq != ''">
+		   AND FE.FREEGIFT_SQ = #{freegiftSq}
+		</if>
+		ORDER BY EXTMALL_ID ASC
+	</select>
+
+	<!-- 사은품 프로모션 공급업체 리스트 조회 -->
+	<select id="getFreegiftSupplyCompList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
+		/* TsaMarketing.getFreegiftExtmallList : 사은품 프로모션 공급업체 리스트 조회 */
+		SELECT FE.FREEGIFT_EXTMALL_SQ
+		, FE.FREEGIFT_SQ
+		, FE.EXTMALL_ID
+		, FE.VENDOR_ID
+		, FE.DEL_YN
+		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FE.REG_NO) AS REG_NM
+		, DATE_FORMAT(FE.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FE.UPD_NO) AS UPD_NM
+		, DATE_FORMAT(FE.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+		FROM TB_FREEGIFT_GOODS FE
+		WHERE 1=1
+		<if test="freegiftSq != null and freegiftSq != ''">
+			AND FE.FREEGIFT_SQ = #{freegiftSq}
+		</if>
+		ORDER BY EXTMALL_ID ASC
 	</select>
 
 	<!-- 사은품 프로모션 마스터 정보 저장 -->

+ 15 - 8
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionForm.html

@@ -91,17 +91,25 @@
 					</div>
 				</div>
 				<!-- 검색결과 영역 -->
-				<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh60"></div>
+				<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham"></div>
 			</div>
 		</form>
 <script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
-	var columnDefs = [];
-	columnDefs = [
+	let freegiftStatList = gagajf.convertToArray([[${freegiftStatList}]]);		// 프로모션 상태 리스트
+	let columnDefs = [
 		{headerName: "프로모션ID", field: "freegiftSq", width: 80, cellClass: 'text-center'},
-		{headerName: "프로모션명", field: "freegiftNm", width: 130, cellClass: 'text-center'},
-		{headerName: "상태", field: "freegiftStat", width: 140, cellClass: 'text-center'},
+		{headerName: "프로모션명", field: "freegiftNm", width: 350, cellClass: 'text-center'
+			,cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{headerName: "상태", field: "freegiftStat", width: 140, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(freegiftStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(freegiftStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(freegiftStatList, params.newValue); }
+		},
 		{headerName: "시작일", field: "freegiftStdt", width: 140, cellClass: 'text-center'},
 		{headerName: "종료일", field: "freegiftEddt", width: 140, cellClass: 'text-center'},
 		{headerName: "등록자", field: "regNm", width: 200, cellClass: 'text-left'
@@ -121,10 +129,9 @@
 
 	// Row Click
 	gridOptions.onCellClicked = function(event) {
-		var goodsCd = event.data.goodsCd;
+		var freegiftSq = event.data.freegiftSq;
 		if (event.colDef.field == "freegiftNm"){
-			// 수정 필요
-			// cfnOpenGoodsDetailPopup('U',goodsCd);
+			cfnOpenFreeGoodsPromotionSetPopup('U', freegiftSq);
 		}
 	}
 

+ 20 - 24
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -449,6 +449,22 @@
 	let gridOptionsFreeGoods2List = gagaAgGrid.getGridOptions(columnFreeGoods2List);
 	gridOptionsFreeGoods2List.rowSelection = "multiple";
 
+	var fnFreeGoodsPromotionSearchCallback = function(result) {
+		if (result != null) {
+			gridOptionsFGExtmallList.api.setRowData(result.freegiftExtmallList);
+
+		}
+	}
+
+	// 프로모션 상세 조회
+	var fnFreegiftSearch = function() {
+		var params = new Object();
+		params.gbn = $('#freeGoodsPromotionForm input[name=gbn]').val();
+		params.freegiftSq = $('#freeGoodsPromotionForm input[name=freegiftSq]').val();
+
+		cfnAjaxSubmit("/marketing/freeGoodsPromotion/detail", "json", fnFreeGoodsPromotionSearchCallback, params);
+	}
+
 	$(document).ready(function() {
 		gagaAgGrid.createGrid("gridFGExtmallList", gridOptionsFGExtmallList);
 		gagaAgGrid.createGrid("gridFGPromotionCompanyList", gridOptionsFGCompanyList);
@@ -458,14 +474,16 @@
 		gagaAgGrid.createGrid("gridFreeGoods1List", gridOptionsFreeGoods1List);
 		gagaAgGrid.createGrid("gridFreeGoods2List", gridOptionsFreeGoods2List);
 
+		cfnCreateCalendar('#promotionTerms', 'freegoodsStdt', 'freegoodsEddt', true, '행사기간', 'X');
+
 		if("C" == [[${param.gbn}]]) {
 			$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
 			$("#freeGoodsPromotionForm #extmallCntArea").hide();
 			$("#freeGoodsPromotionForm #extmallCnt").text(0);
 			$("#freeGoodsPromotionForm #extmallIds").val("");
+		} else {
+			fnFreegiftSearch();
 		}
-
-		cfnCreateCalendar('#promotionTerms', 'freegoodsStdt', 'freegoodsEddt', true, '행사기간', 'X');
 	});
 
 	// 제휴몰 체크 상태 확인
@@ -657,7 +675,6 @@
 		fnSetListInfo(result, gridOptionsFreeGoods2List, "productNo");
 	};
 
-
 	// 제휴몰 리스트 세팅
 	function fnSetPopupExtmallInfo(result) {
 		let resultList = [];											// 최종 상품 리스트
@@ -688,27 +705,6 @@
 		$("#freeGoodsPromotionForm #extmallCnt").text(gagaAgGrid.getAllRowData(gridOptionsFGExtmallList).length);
 	}
 
-	// 제휴몰 list 콜백함수
-	/* function fnSetPopupExtmallInfo(result) {
-		let extmallIds = [];
-		if($("#freeGoodsPromotionForm #extmallIds").val() != null && $("#freeGoodsPromotionForm #extmallIds").val() != "") {
-			extmallIds = JSON.parse($("#freeGoodsPromotionForm #extmallIds").val());
-		}
-
-		for(let i = 0 ; i < result.length ; i++) {
-			let addChk = true;
-			for(let j = 0 ; j < extmallIds.length ; j++) {
-				if(result[i].extmallId == extmallIds[j]) {	addChk = false;	}
-			}
-
-			if(addChk) {	extmallIds.push(result[i].extmallId)	}
-		}
-
-		var jsonData = JSON.stringify(extmallIds);
-		$("#freeGoodsPromotionForm #extmallIds").val(jsonData);
-		$("#freeGoodsPromotionForm #extmallCnt").text(extmallIds.length);
-	} */
-
 	// 제휴몰 선택 버튼 클릭시
 	$('#freeGoodsPromotionForm #btnExtmallPopup').on('click', function() {
 		cfnOpenExtmallListPopup("fnSetPopupExtmallInfo");

+ 2 - 1
src/main/webapp/ux/js/admin.popup.js

@@ -715,8 +715,9 @@ var cfnOpenBrandListPopup = function(callbackfn, multiGb, searchTxt) {
  * @since  : 2020/12/21
  * @author : xodud1202
  */
-var cfnOpenFreeGoodsPromotionSetPopup = function(gbn) {
+var cfnOpenFreeGoodsPromotionSetPopup = function(gbn, freegiftSq) {
 	var actionUrl = "/marketing/freeGoodsRegiPopup/form?gbn=" + gbn;
+	if (typeof(freegiftSq) != 'undefined') actionUrl += "&freegiftSq=" + freegiftSq;
 
 	uifnPopupClose('popupFreeGoodsPromotionRegi');
 	cfnOpenModalPopup(actionUrl, 'popupFreeGoodsPromotionRegi');