Pārlūkot izejas kodu

[ST24PRJ-569] [MD개선][BOS] 기획전관리 > 코너 진열상품 순서 변경

jmh 4 gadi atpakaļ
vecāks
revīzija
eda8c2b4f2

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

@@ -319,6 +319,15 @@ public interface TsaPlanDao {
 	 */
 	void deletePlanCornerGoods(Plan param);
 	
+	/**
+	 * 기획전 코너 상품 수정
+	 *
+	 * @param 
+	 * @author jmh
+	 * @since 2021. 12. 02
+	 */
+	void updatePlanCornerGoods(Plan param);
+	
 	/**
 	 * 기획전 코너 복사
 	 *

+ 16 - 0
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -579,6 +579,22 @@ public class TsaPlanService {
 		}
 	}
 	
+	/**
+	 * 기획전 코너 상품 수정
+	 *
+	 * @param
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 02
+	 */
+	@Transactional("shopTxnManager")
+	public void updatePlanCornerGoods(Collection<Plan> paramList) {
+		for (Plan cornerInfo : paramList) {
+			cornerInfo.setUpdNo(TsaSession.getInfo().getUserNo());
+			planDao.updatePlanCornerGoods(cornerInfo);
+		}
+	}
+	
 	/**
 	 * 기획전 코너 저장
 	 *

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

@@ -2591,6 +2591,20 @@ public class TsaMarketingController extends TsaBaseController {
 		planService.deletePlanCornerGoods(paramList);
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
+	
+	/**
+	 * 기획전 코너 상품 정렬순서변경
+	 *
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 02
+	 */
+	@PostMapping("/planning/corner/goods/modify")
+	@ResponseBody
+	public GagaResponse modifyPlanCornerGoods(@RequestBody Collection<Plan> paramList) {
+		planService.updatePlanCornerGoods(paramList);
+		return super.ok(message.getMessage("SUCC_0002"));
+	}
 
 	/**
 	 * 기획전 코너 복사

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

@@ -747,6 +747,17 @@
 		</if>
 	</update>
 	
+	<!-- 기획전 코너 상품 순서변경 -->
+	<update id="updatePlanCornerGoods" parameterType="Plan">
+		/* TsaPlan.updatePlanCornerGoods */
+		UPDATE TB_PLAN_GOODS
+		SET  UPD_DT = now()
+			 , UPD_NO  = #{updNo}
+		     , DISP_ORD = #{dispOrd}
+		WHERE  PLAN_DTL_SQ = #{planDtlSq}
+		AND    GOODS_CD = #{goodsCd}
+	</update>
+	
 	<!-- 기획전 코너 저장 -->
 	<insert id="savePlanCornerInfo" parameterType="Plan">
 		/* TsaPlan.savePlanCornerInfo */

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

@@ -82,6 +82,7 @@
 					<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-info btn-lg" onclick="fnModifyGoods();">정렬수정</button>
 					<button type="button" class="btn btn-danger btn-lg"	onclick="fnDeleteGoods();">선택삭제</button>
 				</div>
 			</div>
@@ -357,14 +358,15 @@
 	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 	var columnDefsGoods = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "정렬"		, field:'dispOrd'		, width:50, cellClass: 'text-center'
-			, valueFormatter: function(params) { return params.value.addComma(); }
+		{headerName: "정렬"		, field:'dispOrd'				, width:50, cellClass: 'text-right',
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 3, required: true }
 		},
-		{headerName: "상품코드"	, field:'goodsCd'		, width:150, cellClass: 'text-left'
+		{headerName: "상품코드"	, field:'goodsCd'		, width:150, cellClass: 'text-left', editable: false
 			, 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'
+		{headerName: "상품명"		, field:'goodsNm'		, width:300, cellClass: 'text-left', editable: false},
+		{headerName: "이미지"		, field:'sysImgNm'		, width:100 , height:60, cellClass: 'text-right', editable: false
 			,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\';"/>';
 			}
@@ -373,23 +375,23 @@
 			, editable : true, cellEditor: 'numericCellEditor'
 			, valueFormatter: function(params) { return params.value.addComma(); }
 		}, */
-		{headerName: "재고"		, field:'stockQtySum'			, width:80 , cellClass: 'text-center'
+		{headerName: "재고"		, field:'stockQtySum'			, width:80 , cellClass: 'text-center', editable: false
 			, cellRenderer: function(params) {return !gagajf.isNull(params.value) ? params.value : '0'; }
 		},
-		{headerName: "할인율(%)"		, field:'dcRate'		, width:80 , cellClass: 'text-center'},
+		{headerName: "할인율(%)"		, field:'dcRate'		, width:80 , cellClass: 'text-center', editable: false},
 		{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'
+		{headerName: "판매가"		, field:'currPrice'		, width:100, cellClass: 'text-right', editable: false
 			, valueFormatter: function(params) { return params.value.addComma(); }
 		},
-		{headerName: "정상/이월여부", field:'formalGb'		, width:120, cellClass: 'text-center'},
-		{headerName: "상품상태"	, field:'goodsStat'		, width:100, cellClass: 'text-center'
+		{headerName: "정상/이월여부", field:'formalGb'		, width:120, cellClass: 'text-center', editable: false},
+		{headerName: "상품상태"	, field:'goodsStat'		, width:100, cellClass: 'text-center', editable: false
 			, valueFormatter: function(params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); }
 		},
-		{headerName: "업체"		, field:'supplyCompNm'	, width:150, cellClass: 'text-left'},
+		{headerName: "업체"		, field:'supplyCompNm'	, width:150, cellClass: 'text-left', editable: false},
 		{headerName: "기획전상세"	, field:'planDtlSq'		, width:200, cellClass: 'text-left', hide: true},
-		{headerName: "등록일"		, field:'regDt'			, width:100,  cellClass: 'text-left'
+		{headerName: "등록일"		, field:'regDt'			, width:100,  cellClass: 'text-left', editable: false
 			, cellRenderer: function(params) { return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:MM:SS").format("YYYY-MM-DD") : ''; }
 		},
 	];
@@ -398,7 +400,9 @@
 	gridOptionsGoods.rowSelection = 'multiple';
 	gridOptionsGoods.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
 	gridOptionsGoods.suppressRowClickSelection = true;
-
+	gridOptionsGoods.stopEditingWhenGridLosesFocus = true;
+	gridOptionsGoods.defaultColDef.editable = true;
+	
 	gridOptionsGoods.onCellClicked = function(event) {
 		if (event.colDef.field == 'goodsCd') {
 			// 상품 상세 팝업
@@ -432,7 +436,24 @@
 			}
 		});
 	}
+	
+	// 상품 정렬(순서) 전체 변경
+	var fnModifyGoods = function() {
+		var changeData = gagaAgGrid.getChangedData(gridOptionsGoods);
+		
+		mcxDialog.confirm('정렬된 순서를 변경하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var jsonData = JSON.stringify(changeData);
 
+				gagajf.ajaxJsonSubmit('/marketing/planning/corner/goods/modify', jsonData, function() {
+					fnConnerGoodsSearch();
+				});
+			}
+		});		
+	}
+	
 	// 기획전 상세일련번호 전역 변수
 	var _planDtlSq = '';