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

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

@@ -634,4 +634,14 @@ public interface TsaPlanDao {
 	 * @since 2021. 06. 25
 	 */
 	Collection<Plan> getShotSelfBrandList();
+	
+	/**
+	 * 총알배송 브랜드 업데이트
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 29
+	 */
+	void updateShotBrand(Plan param);
 }

+ 28 - 24
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -148,29 +148,6 @@ public class TsaPlanService {
 			attendInfo.setPlanSq(param.getPlanSq());
 			planDao.savePlanAttendBenefit(attendInfo);
 		}
-		
-		// 총알배송일떼 -- 코너에 자동으로 자사브랜드 insert
-		String planGb = param.getPlanGb();
-		if ("S".equals(planGb)) {
-			
-			Collection<Plan> brandList = planDao.getShotSelfBrandList();
-			int idx = 1;
-			for (Plan corner : brandList) {
-				// 5열 전시 default
-				corner.setRegNo(TsaSession.getInfo().getUserNo());
-				corner.setUpdNo(TsaSession.getInfo().getUserNo());
-				corner.setPlanSq(param.getPlanSq());
-				corner.setDispStdt(param.getDispStdt());
-				corner.setDispEddt(param.getDispEddt());
-				corner.setCornerDispType("G045_5");
-				corner.setDispOrd(idx);
-				corner.setCornerNm(corner.getBrandNm());
-				
-				planDao.savePlanCornerInfo(corner);
-				idx++;
-			}
-			
-		}
 
 	}
 
@@ -1674,5 +1651,32 @@ public class TsaPlanService {
 		return planDao.getPlanAttendCoupon(param);
 	}
 	
-		
+	/**
+	 * 총알배송 그룹브랜드 목록
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	public Collection<Plan> getShotSelfBrandList(){
+		return planDao.getShotSelfBrandList();
+	}
+	
+	/**
+	 * 총알배송 브랜드 업데이트
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@Transactional("shopTxnManager")
+	public void updateShotBrand(Collection<Plan> paramList){
+		for (Plan cornerInfo : paramList) {
+			cornerInfo.setRegNo(TsaSession.getInfo().getUserNo());
+			cornerInfo.setUpdNo(TsaSession.getInfo().getUserNo());
+			planDao.savePlanCornerInfo(cornerInfo);
+		}
+	}
 }

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

@@ -2646,5 +2646,49 @@ public class TsaMarketingController extends TsaBaseController {
 		}
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
+	
+	/**
+	 * 소셜쇼핑관리 화면
+	 *
+	 * @author sowon
+	 * @since 2021. 6. 29 
+	 */
+	@GetMapping("/shot/delivery/form")
+	public ModelAndView shotDeliveryForm() {
+		ModelAndView mav = new ModelAndView();
+		
+		// 코너유형목록
+		mav.addObject("cornerDispTypeList", rendererService.getCommonCodeList("G045", "Y"));
+		
+		mav.setViewName("marketing/ShotDeliveryForm");
+		return mav;
+	}
+	
+	/**
+	 * 총알배송 브랜드 그룹 목록
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2020. 6. 29
+	 */
+	@PostMapping("/shot/delivery/brand/list")
+	@ResponseBody
+	public Collection<Plan> getShotSelfBrandList() {
+		return planService.getShotSelfBrandList();
+	}
+
+	/**
+	 *  총알배송 브랜드 그룹 저장
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2020. 6. 29
+	 */
+	@PostMapping("/shot/delivery/brand/update")
+	@ResponseBody
+	public GagaResponse updateShotBrand(@RequestBody Collection<Plan> paramList) {
+		planService.updateShotBrand(paramList);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
 
 }

+ 21 - 13
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -1520,20 +1520,28 @@
 	
 	<select id="getShotSelfBrandList" parameterType="Plan" resultType="Plan">
 		/* TsaPlan.getShotSelfBrandList */
-		SELECT  B.BRAND_CD 
-		      , BG.BRAND_GROUP_NO 
-		      , CASE BG.DISP_NM_LANG WHEN 'EN' THEN BG.BRAND_GROUP_ENM
-		                  ELSE BG.BRAND_GROUP_KNM
-		        END                                                    AS BRAND_NM
-		FROM TB_BRAND B INNER JOIN TB_BRAND_GROUP BG 
-		  ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-		WHERE 1 = 1
-		  AND B.USE_YN  = 'Y'
-		  AND B.SELF_YN = 'Y'
-		  AND BG.USE_YN = 'Y'
-		ORDER  BY B.SUPPLY_COMP_CD
-		         ,BG.DISP_ORD
+		SELECT SDB.BRAND_GROUP_NO
+		      , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                BG.BRAND_GROUP_ENM
+		            ELSE
+		                BG.BRAND_GROUP_KNM
+		       END                                     AS BRAND_NM
+		  , SDB.CORNER_DISP_TYPE
+		  , SDB.DISP_ORD
+		  , SDB.REG_DT
+		FROM TB_SHOT_DELV_BRAND SDB INNER JOIN TB_BRAND_GROUP BG 
+		  ON SDB.BRAND_GROUP_NO = BG.BRAND_GROUP_NO 
+		WHERE BG.USE_YN = 'Y'
+		ORDER BY DISP_ORD 
 	</select>
+	
+	<update id="updateShotBrand" parameterType="Plan">
+		/* TsaPlan.updateShotBrand */
+		UPDATE TB_SHOT_DELV_BRAND  
+		SET DISP_ORD         = #{dispOrd}
+		   ,CORNER_DISP_TYPE = #{cornerDispType}
+		WHERE BRAND_GROUP_NO = #{brandGroupNo}
+	</update>
 </mapper>
 
 

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

@@ -52,7 +52,6 @@
 							<select name="planGb" id="planGb" th:field="*{planGb}" onchange="fnChangePlanGb(this);">
 								<option value="P">기획전</option>
 								<option value="E">이벤트</option>
-								<option value="S">총알배송</option>
 								<option value="C">출석체크</option>
 							</select>
 						</td>

+ 211 - 0
src/main/webapp/WEB-INF/views/marketing/ShotDeliveryForm.html

@@ -0,0 +1,211 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : ShotDeliveryForm.html
+ * @desc    : 총알배송 Page
+ *============================================================================
+ * SISUN
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.06.29   sowon        최초 작성
+ *******************************************************************************
+ -->
+ 
+ <div id="main">
+	<div class="main-title"></div>
+	<div class="panelStyle" style="height: 750px;">
+		<div class="panelContent">
+			<form id="shotBrandListForm" name="shotBrandListForm" action="#" th:action="@{'/marketing/shot/delivery/brand/list'}" th:method="post">
+				<div class="panelContent">
+					<ul class="panelBar">
+						<!-- <li class="boxContentBtnT" style="margin-left: -20px; margin-right: -23px;">
+							<span class="btnLeft">
+								<button type="button" class="btn btn-warning btn-sm"  id="btnAddRow">행추가</button>
+								<button type="button" class="btn btn-danger btn-sm" id="btnDeleteRow">행삭제</button>
+							</span> 
+						</li> -->
+						<li class="right">
+							<span class="btnRight"> 
+								<button type="button" class="btn btn-success btn-lg" onclick="fnShotBrandSave();">저장</button>
+						   </span>
+					   </li>
+					</ul>
+					<div id="gridListBrand" style="width: 100%; max-height: 230px; height: 230px;" class="ag-theme-balham"></div>
+				</div>
+			</form>
+		</div>
+
+		<div class="panelContent">
+			<div>
+				<h4>
+					브랜드명 : <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-default btn-lg" onclick="fnOpenGoodsPopup();">상품추가</button>
+					<button type="button" class="btn btn-danger btn-lg"	onclick="fnDeleteGoods();">선택삭제</button>
+				</div>
+			</div>
+
+			<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>
+				</li>
+			</ul>
+		</div>
+	</div>
+</div>
+<script th:inline="javascript">
+	var cornerDispTypeList = gagajf.convertToArray([[${cornerDispTypeList}]]);
+	
+	var columnDefsBrand = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "브랜드번호"		, field:'brandGroupNo'			, width:150, cellClass: 'text-center', editable: false },
+		{headerName: "브랜드그룹명"			, field:'brandNm'			, width:400, cellClass: 'text-center',
+			cellRenderer: function(params) {return '<a href="javascript:void(0);">' + params.value + '</a>'; },
+			cellEditorParams: { maxlength: 50, required: true }
+		},
+		{headerName: "코너유형"		, field:'cornerDispType'		, width:180, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(cornerDispTypeList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(cornerDispTypeList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(cornerDispTypeList, params.newValue); }
+		},
+		{headerName: "전시순서"		, field:'dispOrd'				, width:100, cellClass: 'text-right',
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 3, required: true }
+		},
+		{headerName: "등록일"			, field:'regDt'				, width:200, cellClass: 'text-center', editable: false }
+	];
+	
+	var columnDefsGoods = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "상품코드"	, field:'goodsCd'		, width:150, cellClass: 'text-left'
+			, cellRenderer: function(params) {return '<a href="javascript:void(0);">' + params.value + '</a>'; }
+		},
+		{headerName: "상품명"		, field:'goodsNm'		, width:300, cellClass: 'text-left'},
+		{headerName: "이미지"		, field:'sysImgNm'		, width:100 , height:60, cellClass: 'text-right'
+			,cellRenderer: function(params) {
+				return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '?RS=60" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \''+ _goodsUrl+ "/" + params.value +'\')" onerror="this.src=\'/image/no.png\';"/>';
+			}
+		},
+		{headerName: "재고"		, field:'stockQtySum'			, width:80 , cellClass: 'text-center'
+			, cellRenderer: function(params) {return !gagajf.isNull(params.value) ? params.value : '0'; }
+		},
+		{headerName: "할인율(%)"		, field:'dcRate'		, width:80 , cellClass: 'text-center'},
+		{headerName: "정상가"		, field:'listPrice'		, width:100, cellClass: 'text-right' , hide : true
+			, valueFormatter: function(params) { return params.value.addComma(); }
+		},
+		{headerName: "판매가"		, field:'currPrice'		, width:100, cellClass: 'text-right'
+			, valueFormatter: function(params) { return params.value.addComma(); }
+		},
+		{headerName: "정상/이월여부", field:'formalGb'		, width:120, cellClass: 'text-center'},
+		{headerName: "상품상태"	, field:'goodsStat'		, width:100, cellClass: 'text-center'
+			, valueFormatter: function(params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); }
+		},
+		{headerName: "업체"		, field:'supplyCompNm'	, width:150, cellClass: 'text-left'},
+		{headerName: "기획전상세"	, field:'planDtlSq'		, width:200, cellClass: 'text-left', hide: true},
+		{headerName: "등록일"		, field:'regDt'			, width:100,  cellClass: 'text-left'
+			, cellRenderer: function(params) { return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:MM:SS").format("YYYY-MM-DD") : ''; }
+		},
+	];
+	
+	var gridOptionsBrand = gagaAgGrid.getGridOptions(columnDefsBrand);
+	gridOptionsBrand.suppressRowClickSelection = true;
+	gridOptionsBrand.stopEditingWhenGridLosesFocus = true;
+	gridOptionsBrand.defaultColDef.editable = true;
+	//gridOptionsBrand.rowSelection = 'multiple';
+	
+	var gridOptionsGoods = gagaAgGrid.getGridOptions(columnDefsGoods);
+	gridOptionsGoods.rowSelection = 'multiple';
+	gridOptionsGoods.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
+	gridOptionsGoods.suppressRowClickSelection = true;
+
+	gridOptionsGoods.onCellClicked = function(event) {
+		if (event.colDef.field == 'goodsCd') {
+			// 상품 상세 팝업
+			cfnOpenGoodsDetailPopup('U',event.data.goodsCd);
+		}
+	}
+
+	// 브랜드 셀 클릭 이벤트
+	gridOptionsBrand.onCellClicked = function(event) {
+		var field = event.colDef.field;
+		if (field != 'brandNm') return;
+
+		fnBindSearch(event.data);
+	}
+
+	// 코너 상품 조회 바인딩
+	var fnBindSearch = function(data) {
+		if (!gagajf.isNull(data.brandNm)) {
+
+			$('#brandNm').html(data.brandNm);
+
+			//fnConnerGoodsSearch();
+		}
+	}
+	// 상품 추가 버튼 클릭시 
+	var fnOpenGoodsPopup = function() {
+		var allData = gagaAgGrid.getAllRowData(gridOptionsBrand);
+		if (allData.length < 1 ) {
+			mcxDialog.alert('브랜드가 존재 하지 않습니다.');
+			return;
+		}
+
+		if ($("#brandNm").text() == null || $("#brandNm").text()=='') {
+			mcxDialog.alert('브랜드를 선택해주세요.');
+			return;
+		}
+		cfnOpenGoodsPopup('fnCreateGoods');
+	}
+
+	// 브랜드 조회
+	var fnBrandSearch = function() {
+		var formId = '#shotBrandListForm';
+		gagaAgGrid.fetch($(formId).prop('action'), gridOptionsBrand, formId
+						, function() {
+								$('#gridListGoods').html('');
+								$('#brandNm').html('');
+								gagaAgGrid.createGrid('gridListGoods', gridOptionsGoods);
+				});
+		
+		uifnPopupClose('fnCreateGoods');
+	}
+	
+	// 코너 저장
+	var fnShotBrandSave = function() {
+		var changeData = gagaAgGrid.getChangedData(gridOptionsBrand);
+
+		if (changeData.length < 1) {
+			mcxDialog.alert('변경 된 코너가 없습니다.');
+			return;
+		}
+
+		// Validation
+		if (!gagaAgGrid.validation(gridOptionsBrand, changeData))
+			return;
+
+
+		mcxDialog.confirm('저장 하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var jsonData = JSON.stringify(changeData);
+				gagajf.ajaxJsonSubmit('/marketing/shot/delivery/brand/update', jsonData, fnBrandSearch);
+			}
+		});
+	}
+
+
+	$(document).ready(function() {
+		gagaAgGrid.createGrid('gridListBrand', gridOptionsBrand);
+		gagaAgGrid.createGrid('gridListGoods', gridOptionsGoods);
+		fnBrandSearch();
+	});
+</script>