sowon4187 4 лет назад
Родитель
Сommit
4d69e9ab64

+ 39 - 0
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -644,4 +644,43 @@ public interface TsaPlanDao {
 	 * @since 2021. 06. 29
 	 */
 	void updateShotBrand(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 카운트
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	int getShotBrandGoodsListCount(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 리스트
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 29
+	 */
+	Collection<Plan> getShotBrandGoodsList(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 등록
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 06. 29
+	 */
+	void saveShotBrandGoods(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 삭제
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 06. 29
+	 */
+	void deleteShotBrandGoods(Plan param);
+	
 }

+ 80 - 1
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -1676,7 +1676,86 @@ public class TsaPlanService {
 		for (Plan cornerInfo : paramList) {
 			cornerInfo.setRegNo(TsaSession.getInfo().getUserNo());
 			cornerInfo.setUpdNo(TsaSession.getInfo().getUserNo());
-			planDao.savePlanCornerInfo(cornerInfo);
+			planDao.updateShotBrand(cornerInfo);
+		}
+	}
+	
+	/**
+	 * 총알배송 브랜드 상품 카운트
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	public int getShotBrandGoodsListCount(Plan param) {
+		return planDao.getShotBrandGoodsListCount(param);
+	}
+	
+	/**
+	 * 총알배송 그룹브랜드 상품리스트
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	public Collection<Plan> getShotBrandGoodsList(Plan param){
+		return planDao.getShotBrandGoodsList(param);
+	}
+	
+
+	/**
+	 * 총알배송 그룹브랜드 상품 추가
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 129
+	 */
+	@Transactional("shopTxnManager")
+	public void saveShotBrandGoods(Collection<Plan> paramList) {
+		for (Plan param : paramList) {
+			saveShotBrandGoods(param);
+		}
+	}
+	
+	/**
+	 * 총알배송 그룹브랜드 상품 저장
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 17
+	 */
+	@Transactional("shopTxnManager")
+	public void saveShotBrandGoods(Plan param) {
+		Plan plan = new Plan();
+		
+		plan.setRegNo(TsaSession.getInfo().getUserNo());
+		plan.setUpdNo(TsaSession.getInfo().getUserNo());
+		plan.setDelYn("N");
+		plan.setGoodsCd(param.getGoodsCd());
+		plan.setDispOrd(param.getDispOrd());
+		plan.setBrandGroupNo(param.getBrandGroupNo());
+		planDao.saveShotBrandGoods(plan);
+	}
+	
+	/**
+	 * 총알배송 그룹브랜드 상품삭제
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteShotBrandGoods(Collection<Plan> paramList) {
+		for (Plan brandInfo : paramList) {
+			brandInfo.setUpdNo(TsaSession.getInfo().getUserNo());
+			planDao.deleteShotBrandGoods(brandInfo);
 		}
 	}
+	
+
 }

+ 50 - 0
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -2659,6 +2659,8 @@ public class TsaMarketingController extends TsaBaseController {
 		
 		// 코너유형목록
 		mav.addObject("cornerDispTypeList", rendererService.getCommonCodeList("G045", "Y"));
+		// 상품상태
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y"));
 		
 		mav.setViewName("marketing/ShotDeliveryForm");
 		return mav;
@@ -2691,4 +2693,52 @@ public class TsaMarketingController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * 총알배송 브랜드 상품조회
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@PostMapping("/shot/delivery/goods/list")
+	@ResponseBody
+	public GagaMap getShotBrandGoodsList(@RequestBody Plan plan) {
+		GagaMap result = new GagaMap();
+
+		if ("Y".equals(plan.getPageYn())) {
+			plan.setPageable(new TscPageRequest(plan.getPageNo() - 1, plan.getPageSize()));
+			plan.getPageable().setTotalCount(planService.getShotBrandGoodsListCount(plan));
+		}
+		result.set("pageing", plan);
+		result.set("brandGoodsList", planService.getShotBrandGoodsList(plan));
+		return result;
+	}
+	
+	/**
+	 * 총알배송 브랜드 상품추가
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@PostMapping("/shot/delivery/goods/save")
+	@ResponseBody
+	public GagaResponse saveShotBrandGoods(@RequestBody Collection<Plan> paramList) {
+		planService.saveShotBrandGoods(paramList);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+	
+	/**
+	 * 총알배송 브랜드 상품 삭제
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@PostMapping("/shot/delivery/goods/delete")
+	@ResponseBody
+	public GagaResponse deleteShotBrandGoods(@RequestBody Collection<Plan> paramList) {
+		planService.deleteShotBrandGoods(paramList);
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
 }

+ 106 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -1542,6 +1542,112 @@
 		   ,CORNER_DISP_TYPE = #{cornerDispType}
 		WHERE BRAND_GROUP_NO = #{brandGroupNo}
 	</update>
+	
+	<!-- 기획전 코너 상품 목록 조회 건수 -->
+	<select id="getShotBrandGoodsListCount" parameterType="Plan" resultType="int">
+		/* TsaPlan.getShotBrandGoodsListCount */
+		SELECT COUNT(*) AS CNT
+		FROM TB_SHOT_DELV_GOODS
+		AND DEL_YN = 'N'
+		WHERE BRAND_GROUP_NO = #{brandGroupNo}
+	</select>
+	
+	<select id="getShotBrandGoodsList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getShotBrandGoodsList */
+		SELECT Q.*
+		    , IFNULL((SELECT STOCK_QTY FROM TB_GOODS_STOCK WHERE GOODS_CD = Q.GOODS_CD),0) AS STOCK_QTY_SUM
+		    , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Q.GOODS_CD AND COLOR_CD = Q.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
+		    , CASE IFNULL((SELECT COUNT(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Q.GOODS_CD AND COLOR_CD = Q.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ),0) 
+		            WHEN 0 THEN 'N'
+		            ELSE 'Y' END AS GOODS_IMAGE_YN
+		FROM (     
+		      SELECT Z.*
+		      FROM (
+		          SELECT A.*, @rownum := @rownum + 1 AS RNUM 
+		          FROM (
+		              SELECT
+		                       G.GOODS_CD                                                                   
+		                     , G.GOODS_TYPE                                                                 
+		                     , G.SUPPLY_COMP_CD                                                             
+		                     , G.SUPPLY_GOODS_CD                                                            
+		                     , G.GOODS_NUM                                                                  
+		                     , G.GOODS_NM                                                                   
+		                     , G.GOODS_STAT                                                                 
+		                     , G.LIST_PRICE                                                                 
+		                     , G.CURR_PRICE                                                                 
+		                     , G.DC_RATE      
+		                     , G.TAG_PRICE                                                              
+		                     , CASE G.FORMAL_GB WHEN 'G009_20' THEN '이월' ELSE '정상' END AS FORMAL_GB                                                                 
+		                     , G.SEASON_CD       
+		                     , (SELECT SUPPLY_COMP_NM
+		              FROM   TB_SUPPLY_COMPANY
+		              WHERE  SUPPLY_COMP_CD = G.SUPPLY_COMP_CD
+		               ) AS SUPPLY_COMP_NM                                                           
+		                   , G.ERP_STOCK_LINK_YN                                                          
+		                   , G.ERP_PRICE_LINK_YN                                                          
+		                   , G.CHANGEABLE_YN                                                              
+		                   , G.RETURNABLE_YN                                                              
+		                   , G.NEW_CUST_ORD_YN                                                            
+		                   , G.GIFT_PACK_YN                                                               
+		                   , G.DELV_FEE_CD                                                                
+		                   , G.MAIN_COLOR_CD                                                              
+		                   , G.FRST_CFRM_DT                  
+		                   , G.SELL_FEE_RATE                                                              
+		                   , G.PRICE_UPD_DT                   
+		                   , SDE.BRAND_GROUP_NO    
+		                   , SDE.REG_DT                   
+		             FROM TB_GOODS G
+		                   JOIN ( SELECT @rownum := 0) R
+		                   INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		                   INNER JOIN TB_SHOT_DELV_GOODS SDE ON G.GOODS_CD = SDE.GOODS_CD  
+		             WHERE 1=1
+		                 AND SDE.BRAND_GROUP_NO = #{brandGroupNo}
+		                 AND SDE.DEL_YN = 'N'
+		             ORDER BY G.REG_DT DESC, G.GOODS_CD
+		<include refid="getListPagingCondition_sql"/>
+		)Q
+	</select>
+	
+	<insert id="saveShotBrandGoods" parameterType="Plan">
+		/* TsaPlan.saveShotBrandGoods */
+		INSERT INTO TB_SHOT_DELV_GOODS
+		       (
+		          BRAND_GROUP_NO
+		        , GOODS_CD
+		        , DISP_ORD
+		        , DEL_YN
+		        , REG_NO
+		        , REG_DT
+		        , UPD_NO
+		        , UPD_DT
+		       )
+		       VALUES
+		       (
+		          #{brandGroupNo}
+		        , #{goodsCd}
+		        , #{dispOrd}
+		        , #{delYn}
+		        , #{regNo}
+		        , now()
+		        , #{updNo}
+		        , now()
+		       )
+		        ON DUPLICATE KEY
+		          UPDATE
+		        DEL_YN = 'N'
+		      , UPD_DT = now()
+		      , UPD_NO = #{updNo}                                  
+	</insert>
+	
+	<update id="deleteShotBrandGoods" parameterType="Plan">
+		/* TsaPlan.updateShotBrandGoods */
+		UPDATE TB_SHOT_DELV_GOODS
+		SET  DEL_YN = 'Y'
+		   , UPD_NO = #{updNo}
+		   , UPD_DT = NOW()
+		WHERE BRAND_GROUP_NO = #{brandGroupNo}
+		 AND  GOODS_CD       = #{goodsCd}
+	</update>
 </mapper>
 
 

+ 2 - 2
src/main/webapp/WEB-INF/views/marketing/PlanCornerListForm.html

@@ -79,8 +79,8 @@
 					코너명 : <label id="cornerNm"></label>
 				</h4>
 				<div class="aR" style="float: right; margin-top: 10px;">
-					<button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
-					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button>
+					<!-- <button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
+					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button> -->
 					<button type="button" class="btn btn-default btn-lg" onclick="fnOpenGoodsPopup();">상품추가</button>
 					<button type="button" class="btn btn-danger btn-lg"	onclick="fnDeleteGoods();">선택삭제</button>
 				</div>

+ 81 - 4
src/main/webapp/WEB-INF/views/marketing/ShotDeliveryForm.html

@@ -44,8 +44,8 @@
 					브랜드명 : <label id="brandNm"></label>
 				</h4>
 				<div class="aR" style="float: right; margin-top: 10px;">
-					<button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
-					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button>
+					<!-- <button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
+					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button> -->
 					<button type="button" class="btn btn-default btn-lg" onclick="fnOpenGoodsPopup();">상품추가</button>
 					<button type="button" class="btn btn-danger btn-lg"	onclick="fnDeleteGoods();">선택삭제</button>
 				</div>
@@ -54,14 +54,18 @@
 			<div id="gridListGoods"	style="width: 100%; max-height: 350px; height: 350px;" class="ag-theme-balham lh60"></div>
 			<ul class="panelBar">
 				<li class="center">
-					<div class="tablePaging" id="planListPagination"></div>
+					<div class="tablePaging" id="brandGoodsPagination"></div>
 				</li>
 			</ul>
 		</div>
 	</div>
 </div>
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	var cornerDispTypeList = gagajf.convertToArray([[${cornerDispTypeList}]]);
+	var goodsStatList =gagajf.convertToArray([[${goodsStatList}]]);
+	// 브랜드 그룹번호 전역변수
+	var _brandGroupNo = '';
 	
 	var columnDefsBrand = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
@@ -146,8 +150,9 @@
 		if (!gagajf.isNull(data.brandNm)) {
 
 			$('#brandNm').html(data.brandNm);
+			_brandGroupNo = data.brandGroupNo;
 
-			//fnConnerGoodsSearch();
+			fnShotGoodsSearch();
 		}
 	}
 	// 상품 추가 버튼 클릭시 
@@ -201,6 +206,78 @@
 			}
 		});
 	}
+	
+	// 상품추가
+	var fnCreateGoods = function(result) {
+		if (result.length < 1) return;
+	
+		var oldGoodsList = gagaAgGrid.getAllRowData(gridOptionsGoods);
+		for (var disp = 0; disp < result.length; disp++) {
+			let addChk = true;
+			
+			// 받아온 data for
+			for(let j = 0 ; j < oldGoodsList.length ; j++) {
+				if(oldGoodsList[j].goodsCd == result[disp].goodsCd) {	addChk = false;	}					// 중복체크
+			}
+			
+			if(addChk) {
+				var goods = { brandGroupNo : _brandGroupNo ,
+						      goodsCd : result[disp].goodsCd ,
+						      dispOrd : oldGoodsList.length+1
+						    };
+				oldGoodsList.unshift(goods);
+			}
+		}
+		
+		mcxDialog.confirm('선택하신 상품을 추가 하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var jsonData = JSON.stringify(oldGoodsList);
+				gagajf.ajaxJsonSubmit('/marketing/shot/delivery/goods/save', jsonData, fnShotGoodsSearch);
+			}
+		});
+	}
+
+
+	// 브랜드 상품 조회
+	var fnShotGoodsSearch = function() {
+		uifnPopupClose('popupGoods');
+		var actionUrl = '/marketing/shot/delivery/goods/list';
+		var data = {brandGroupNo:_brandGroupNo};
+		var jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(actionUrl, jsonData, function(data) {
+			gridOptionsGoods.api.setRowData(data.brandGoodsList);
+		});
+	}
+	
+	//선택삭제
+	var fnDeleteGoods = function() {
+		var removedData = gagaAgGrid.removeRowData(gridOptionsGoods);
+
+		if (removedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+
+		mcxDialog.confirm('선택된 상품을 삭제하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var jsonData = JSON.stringify(removedData);
+
+				gagajf.ajaxJsonSubmit('/marketing/shot/delivery/goods/delete', jsonData, function() {
+					fnShotGoodsSearch();
+				});
+			}
+		});
+	}
+	
+	// 엑셀상품추가
+	var fnGoodsExcelUpload = function() {
+		cfnExcelUploadPopup('createGoods', 'fnCreatePlanGoodsExcel');
+	}
 
 
 	$(document).ready(function() {