Преглед на файлове

전시 - 카테고리별 상품전시 개발중

bin2107 преди 5 години
родител
ревизия
7189def746

+ 24 - 0
src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java

@@ -192,4 +192,28 @@ public interface TsaDisplayDao {
 	 * @since 2021. 1. 27
 	 */
 	Collection<CategoryGoods> getCategoryGoodsList(CategoryGoods categoryGoods);
+
+	/**
+	 * 카테고리별상품전시 상품이동
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 2. 15
+	 */
+	void moveCategoryGoods(CategoryGoods categoryGoods);
+
+	/**
+	 * 카테고리별상품전시 상품삭제
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 2. 15
+	 */
+	void deleteCategoryGoods(CategoryGoods categoryGoods);
+
+	/**
+	 * 카테고리별상품전시 상품이동시 전시순위 조회
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 2. 15
+	 */
+	int getCategoryGoodsDispOrd(CategoryGoods categoryGoods);
 }

+ 19 - 0
src/main/java/com/style24/admin/biz/service/TsaDisplayService.java

@@ -289,4 +289,23 @@ public class TsaDisplayService {
 	public Collection<CategoryGoods> getCategoryGoodsList(CategoryGoods categoryGoods) {
 		return displayDao.getCategoryGoodsList(categoryGoods);
 	}
+
+	/**
+	 * 카테고리별상품전시 상품이동/복사 (브랜드/아울렛 정보 추가후 로직 재검토)
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 2. 15
+	 */
+	public void moveCategoryGoods(CategoryGoods categoryGoods){
+		for(int i=0; i<categoryGoods.getGoodsList().size(); i++){
+			categoryGoods.setGoodsCd(categoryGoods.getGoodsList().get(i).getGoodsCd());
+			int dispOrd = displayDao.getCategoryGoodsDispOrd(categoryGoods);
+			categoryGoods.setDispOrd(dispOrd);
+			displayDao.moveCategoryGoods(categoryGoods);
+			if("move".equals(categoryGoods.getMode())){
+				displayDao.deleteCategoryGoods(categoryGoods);
+			}
+		}
+	}
+
 }

+ 15 - 0
src/main/java/com/style24/admin/biz/web/TsaDisplayController.java

@@ -343,4 +343,19 @@ public class TsaDisplayController extends TsaBaseController {
 
 		return result;
 	}
+
+	/**
+	 * 카테고리별상품전시 상품이동/복사
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 2. 15
+	 */
+	@PostMapping("/category/goods/move")
+	@ResponseBody
+	public GagaResponse moveCategoryGoods(@RequestBody CategoryGoods categoryGoods){
+		categoryGoods.setRegNo(TsaSession.getInfo().getUserNo());
+		displayService.moveCategoryGoods(categoryGoods);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
 }

+ 6 - 0
src/main/java/com/style24/persistence/domain/CategoryGoods.java

@@ -4,6 +4,8 @@ import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 카테고리 Domain
  *
@@ -42,6 +44,10 @@ public class CategoryGoods extends TscBaseDomain {
 
 	private int stockQty;
 
+	private String mode;
+	private String addCateNo;
+	List<CategoryGoods> goodsList;
+
 	// Pagination
 	private TscPageRequest pageable;
 	private int pageNo = 1;

+ 32 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml

@@ -1191,4 +1191,36 @@
 					   ORDER BY A.DISP_ORD ASC, G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC
 			<include refid="getListPagingCondition_sql"/>
 	</select>
+
+	<select id="getCategoryGoodsDispOrd" parameterType="CategoryGoods" resultType="int">
+		SELECT IFNULL((MAX(DISP_ORD)+1),1) AS DISP_ORD
+		FROM TB_CATE_GOODS
+		WHERE CATE_NO = #{addCateNo}
+	</select>
+
+	<insert id="moveCategoryGoods" parameterType="CategoryGoods">
+		INSERT INTO TB_CATE_GOODS(
+			CATE_NO
+			,GOODS_CD
+			,DISP_ORD
+			,REG_NO
+			,REG_DT
+		)VALUES (
+			#{addCateNo}
+			,#{goodsCd}
+			,#{dispOrd}
+			,#{regNo}
+			,NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		REG_NO = #{regNo}
+		,REG_DT = NOW()
+	</insert>
+
+	<delete id="deleteCategoryGoods" parameterType="CategoryGoods">
+		DELETE FROM TB_CATE_GOODS
+		WHERE 1=1
+		AND CATE_NO = #{cateNo}
+		AND GOODS_CD = #{goodsCd}
+	</delete>
 </mapper>

+ 68 - 0
src/main/webapp/WEB-INF/views/display/CategoryGoodsForm.html

@@ -39,6 +39,7 @@
 					<th>카테고리</th>
 					<td>
 						<input type="hidden" name="selLvl"/>
+						<input type="hidden" name="cateCd" id="cateCd"/>
 						<select name="siteCd">
 							<!--<option value="">[사이트]</option> -->
 							<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
@@ -114,6 +115,7 @@
 			<input type="hidden" name="addSearchGb"/>
 			<input type="hidden" naem="addLeafYn" id="addLeafYn" value="N"/>
 			<input type="hidden" name="addSelLvl"/>
+			<input type="hidden" name="addCateCd" id="addCateCd"/>
 			<ul class="panelBar">
 				<li>
 					<strong>* 상품 선택 후 하단 leaf 카테고리 선택시 상품이동/ 상품복사 가능합니다.</strong>
@@ -209,6 +211,67 @@
 	let gridOptions = gagaAgGrid.getGridOptions(columnDefs1);
 	gridOptions.rowSelection = "multiple";
 
+	/**
+	 * 상품복사 버튼 클릭 시
+	 */
+	$("#btnCopyGoods").bind('click', function(){
+		var selectData = gridOptions.api.getSelectedRows();
+		if(selectData<1){
+			mcxDialog.alert("상품을 선택하세요.");
+			return false;
+		}
+
+		if($("#addLeafYn").val() != 'Y'){
+			mcxDialog.alert("leaf카테고리를 선택하세요.");
+			return false;
+		}
+
+		if($("#cateCd").val() == $("#addCateCd").val()){
+			mcxDialog.alert("상품을 복사할 카테고리가 동일합니다.");
+			return false;
+		}
+
+		var data = {
+			mode : 'copy'
+			,cateNo : $("#cateCd").val()
+			,addCateNo : $("#addCateCd").val()
+			,goodsList : selectData
+		};
+
+		var jsonData = JSON.stringify(data);
+		gagajf.ajaxJsonSubmit('/display/category/goods/move', jsonData, fnCategoryGoodsListSearch);
+	});
+
+	/**
+	* 상품이동 버튼 클릭 시
+	*/
+	$("#btnMoveGoods").bind('click', function(){
+		var selectData = gridOptions.api.getSelectedRows();
+		if(selectData<1){
+			mcxDialog.alert("상품을 선택하세요.");
+			return false;
+		}
+
+		if($("#addLeafYn").val() != 'Y'){
+			mcxDialog.alert("leaf카테고리를 선택하세요.");
+			return false;
+		}
+
+		if($("#cateCd").val() == $("#addCateCd").val()){
+			mcxDialog.alert("상품을 이동할 카테고리가 동일합니다.");
+			return false;
+		}
+		var data = {
+			mode : 'move'
+			,cateNo : $("#cateCd").val()
+			,addCateNo : $("#addCateCd").val()
+			,goodsList : selectData
+		};
+
+		var jsonData = JSON.stringify(data);
+		gagajf.ajaxJsonSubmit('/display/category/goods/move', jsonData, fnCategoryGoodsListSearch);
+	});
+
 	/**
 	 * 상품이동/복사 폼의 카테고리 선택 시
 	 */
@@ -259,8 +322,10 @@
 		if(selLvl > 2){
 			if(data.length<1){
 				$("#addLeafYn").val('Y');
+				$("#addCateCd").val($("#cateLvl"+(selLvl-1)).val());
 			}else{
 				$("#addLeafYn").val('N');
+				$("#addCateCd").val('');
 			}
 			$('#saveForm input[name=addSelLvl]').val(selLvl);
 		}
@@ -331,14 +396,17 @@
 		if(selLvl > 2){
 			if(data.length<1){
 				$("#cateLeafYn").val('Y');
+				$("#cateCd").val($("#selCate"+(selLvl-1)).val());
 			}else{
 				$("#cateLeafYn").val('N');
+				$("#cateCd").val('');
 			}
 			$('#searchForm input[name=selLvl]').val(selLvl);
 			fnCategoryGoodsListSearch();
 		}
 	}
 
+	// 저장후 콜백
 	var fnCategoryGoodsListSearch = function(){
 		gagaPaging.init('searchForm', fnSearchCallBack, 'categoryGoodsListPagination', $('#searchForm').find('#pageSize').val());
 		gagaPaging.load(1);