Browse Source

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.admin.git into develop

eskim 4 years ago
parent
commit
d2b74241ed

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

@@ -85,5 +85,14 @@ public interface TsaSocialDao {
 	int getSocialGoOffCount(Social params);
 	
 
+	/**
+	 * 소셜 상품 저장 시 수정 확인
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 7. 23
+	 */
+	int getSocialGoodsGoOffCount(Integer socialSq);
 
 }

+ 11 - 2
src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java

@@ -194,18 +194,26 @@ public class TsaMorebetterService {
         List<MoreBetterGoods> dgList = moreBetter.getDefaultGoodsList();
         List<MoreBetterGoods> agList = moreBetter.getGridApplyGoodsList();
         List<MoreBetterGoods> applyList = new ArrayList<>();
+        int dupCnt = 0;
         if(agList.size() > 0){
+            applyList = dgList;
             for(int i=0; i<agList.size(); i++){
                 for(int j=0; j<dgList.size(); j++){
-                    if(!agList.get(i).getGoodsCd().equals(dgList.get(j).getGoodsCd())){
-                        applyList.add(agList.get(i));
+                    if(agList.get(i).getGoodsCd().equals(dgList.get(j).getGoodsCd())){
+                        //applyList.add(agList.get(i));
+                        dupCnt++;
                     }
                 }
+                if(dupCnt==0){
+                    applyList.add(agList.get(i));
+                }
             }
         }else{
             applyList = dgList;
         }
 
+        log.info("applyList ::::{}",applyList);
+
         for(MoreBetterGoods regApplyGoods : applyList){
             // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
             regApplyGoods.setTmtbSq(moreBetter.getTmtbSq());
@@ -254,6 +262,7 @@ public class TsaMorebetterService {
         StringBuilder sb = new StringBuilder();
         StringBuilder sb3 = new StringBuilder();
         //int i = 1;
+        log.info("applyList2 ::::{}",applyList);
 
         if(applyList.size()>0){
             for(int i=0; i<applyList.size(); i++){

+ 5 - 0
src/main/java/com/style24/admin/biz/service/TsaSocialService.java

@@ -97,6 +97,11 @@ public class TsaSocialService {
 	@Transactional("shopTxnManager")
 	public void saveSocialGoods(Collection<Social> paramList) {
 		Integer userNo = TsaSession.getInfo().getUserNo();
+		Integer socialSq = paramList.iterator().next().getSocialSq();
+
+		if (socialDao.getSocialGoodsGoOffCount(socialSq) > 0){
+			throw new IllegalStateException("해당 핫딜은 진행중이므로 수정하실 수 없습니다.");
+		}
 
 		for (Social social : paramList) {
 			social.setRegNo(userNo);

+ 2 - 1
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -1028,7 +1028,8 @@ public class TsaMarketingController extends TsaBaseController {
 				if (duplicateGoodsList.size() > 0) {
 					map.set("duplicateYn", "Y");
 					map.set("duplicateGoodsList", duplicateGoodsList);
-					map.set("message", message.getMessage("FAIL_0001"));
+//					map.set("message", message.getMessage("FAIL_0001"));
+					map.set("message", "다다익선 진행중인 상품이 있어 상태 변경되지 않았습니다. 재확인 후 상태 변경해주세요.");
 				} else {
 					// 조회 건수 없으면 -> 저장으로 넘어감
 					map.set("duplicateYn", "N");

+ 15 - 14
src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml

@@ -540,22 +540,23 @@
 		</if>
 	</delete>
 
+	<!-- 진행중인 다다익선 상품과 중복 체크 -->
 	<select id="getMorebetterDuplicateList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
 		/* TsaMorebetter.getMorebetterDuplicateList */
-		SELECT 	REG_NO
-		      , GOODS_CD
-		      , GOODS_NM
-		 FROM	TB_TMTB_APPLY_GOODS_TEMP
-		WHERE	1=1
-		  AND	REG_NO = #{regNo}
-		  AND	GOODS_CD NOT IN (
-		                SELECT	B.GOODS_CD
-		                FROM	TB_TMTB A, TB_TMTB_APPLY_GOODS B
-		                WHERE	1=1
-		                AND		A.TMTB_SQ = B.TMTB_SQ
-		                AND		NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
-		                AND		B.TMTB_SQ = #{tmtbSq}
-		              )
+		SELECT  TG.GOODS_CD
+		      , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = TG.GOODS_CD) AS GOODS_NM
+		FROM    TB_TMTB T, TB_TMTB_APPLY_GOODS TG
+		WHERE   T.TMTB_SQ = TG.TMTB_SQ
+		  AND   T.TMTB_STAT = 'G232_11'
+		  AND   NOW() BETWEEN T.TMTB_ST_DT AND T.TMTB_ED_DT
+		  AND   T.TMTB_SQ NOT IN (#{tmtbSq})
+		  AND   EXISTS (
+		            SELECT  TMP.GOODS_CD
+		            FROM    TB_TMTB_APPLY_GOODS_TEMP TMP
+		            WHERE   1=1
+		              AND   TMP.REG_NO = #{regNo}
+		              AND   TMP.GOODS_CD = TG.GOODS_CD
+			)
 	</select>
 
 	<update id="updateMorebetterStat" parameterType="MoreBetter">

+ 20 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsaSocial.xml

@@ -203,6 +203,12 @@
 		FROM TB_SOCIAL A
 		WHERE 1=1
 		AND A.USE_YN = 'Y'
+		<if test='applyGb == "A"'>
+		    AND A.APPLY_GB = 'A'
+		</if>
+		<if test='applyGb == "P"'>
+		    AND A.APPLY_GB IN ('A','P')
+		</if>
 		<if test='frontGb == "P"'> <!-- PC웹 -->
 		    AND A.FRONT_GB IN ('A','P')
 		</if>
@@ -211,14 +217,21 @@
 		</if> 
 		<if test='frontGb == "A"'> <!-- 전체 -->
 		    AND A.FRONT_GB IN ('A','M','P')
-		</if> 
-		AND A.APPLY_GB IN ('A', #{applyGb})
-		<if test="socialSq != null and socialSq != ''">
-		AND A.SOCIAL_SQ != #{socialSq}
 		</if>
+		AND A.SOCIAL_SQ != #{socialSq}
 		AND A.SOCIAL_EDDT <![CDATA[ >= ]]> DATE_FORMAT(#{socialStdt} , '%Y-%m-%d %H:%i:%S')
 		AND A.SOCIAL_STDT <![CDATA[ <= ]]> DATE_FORMAT(#{socialEddt} , '%Y-%m-%d %H:%i:%S')
 	</select>
+
+	<!-- 상품 저장 시 진행중인 소셜인지 확인 -->
+	<select id="getSocialGoodsGoOffCount" parameterType="Social" resultType="int">
+		/*  TsaSocial.getSocialGoodsGoOffCount */
+		SELECT COUNT(*)
+		FROM TB_SOCIAL
+		WHERE SOCIAL_SQ = #{socialSq}
+		AND   USE_YN    = 'Y'
+		AND   APPLY_GB  = 'A'
+	</select>
 	
 	
 	
@@ -239,11 +252,11 @@
 			AND (FRONT_GB = 'A' OR FRONT_GB = #{frontGb} )
 		</if>
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
-        AND    SOCIAL_STDT <![CDATA[ <= ]]> DATE_FORMAT(#{stDate},'%Y-%m-%d %H:%i:%S')
-        AND    SOCIAL_EDDT <![CDATA[ >= ]]> DATE_FORMAT(#{edDate},'%Y-%m-%d %H:%i:%S')
+        AND    SOCIAL_STDT <![CDATA[ >= ]]> DATE_FORMAT(#{stDate},'%Y-%m-%d %H:%i:%S')
+        AND    SOCIAL_EDDT <![CDATA[ <= ]]> DATE_FORMAT(#{stDate},'%Y-%m-%d %H:%i:%S')
 		</if>
 	</sql>
-	
+
 	<sql id="getListPagingCondition_sql">
 		<choose>
 			<when test="pageable != null">

+ 42 - 7
src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html

@@ -625,6 +625,27 @@
 			}else{
 				$("#moreBetterForm .buttonSpan").hide();	//행추가,삭제버튼
 			}
+
+			// 대기모드 아닐시 수정안되게 비활성화
+			if(tmtbMstInfo.tmtbStat != "G232_10"){
+				$("#moreBetterForm").find("input[name=tmtbNm]").attr('disabled',true);		// 프로모션명
+				$("#moreBetterForm").find("input[name=eventStdt]").attr('disabled',true);		// 시작일
+				$("#moreBetterForm select[name=eventStHH]").attr("readonly", true);
+				$("#moreBetterForm select[name=eventStHH]").attr("disabled", true);
+				$("#moreBetterForm select[name=eventStMM]").attr("readonly", true);
+				$("#moreBetterForm select[name=eventStMM]").attr("disabled", true);
+				$("#moreBetterForm").find("input[name=eventEddt]").attr('disabled',true);		// 종료일
+				$("#moreBetterForm select[name=eventEdHH]").attr("readonly", true);
+				$("#moreBetterForm select[name=eventEdHH]").attr("disabled", true);
+				$("#moreBetterForm select[name=eventEdMM]").attr("readonly", true);
+				$("#moreBetterForm select[name=eventEdMM]").attr("disabled", true);
+				$("#moreBetterForm input:radio[name='sectionGb']").attr('readonly', true);		// 할인구간
+				$("#moreBetterForm input:radio[name='sectionGb']").prop('disabled', true);
+				$("#moreBetterForm input:radio[name='sectionGb']").parent().prop('disabled', true);
+				$("#moreBetterForm input:radio[name='dcWay']").attr('readonly', true);		// 할인구분
+				$("#moreBetterForm input:radio[name='dcWay']").prop('disabled', true);
+				$("#moreBetterForm input:radio[name='dcWay']").parent().prop('disabled', true);
+			}
 		}
 
 		// 구분 -> 대기로 체크
@@ -777,11 +798,15 @@
 
 		var multiApplyGoods = [];
 		$.each(allApplyGoodsData, function(agIdx, agItem) {
+			var dupCnt = 0;
 			$.each(allDefaultGoodsData, function(idx, item) {
-				if(agItem.goodsCd != item.goodsCd){
-					multiApplyGoods.push(agItem.goodsCd);
+				if(agItem.goodsCd == item.goodsCd){
+					dupCnt++;
 				}
 			});
+			if(dupCnt==0){
+				multiApplyGoods.push(agItem.goodsCd);
+			}
 		});
 
 		var multiExceptGoods = [];
@@ -815,7 +840,7 @@
 		};
 
 		var jsonData = JSON.stringify(data);
-// console.log(jsonData);
+console.log(jsonData);
 		gagajf.ajaxJsonSubmit($('#moreBetterForm').prop('action'), jsonData, fnMorebetterSaveCollback);
 	});
 
@@ -1008,7 +1033,7 @@
         gridOptionsFGBrandList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGBrandList)});
     });
 	// 기준상품 선택삭제 버튼 클릭시
-	$('#moreBetterForm #btnAddDefaultGoods').on('click', function() {
+	$('#moreBetterForm #btnDeleteDefaultGoods').on('click', function() {
 		gridOptionsDefaultGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsDefaultGoodsList)});
 	});
     // 적용상품 선택삭제 버튼 클릭시
@@ -1190,6 +1215,11 @@
 			return false;
 		}
 
+		// 기본상품 1개이상 있는지 체크
+		if(!fnGoodsGbCheck()) {
+			return false;
+		}
+
 		// 공급업체+브랜드 상품조회
 		var multiSupplyCompCd = [];
 		$.each(allSupplyCompData, function(idx, item) {
@@ -1208,11 +1238,15 @@
 
 		var multiApplyGoods = [];
 		$.each(allApplyGoodsData, function(agIdx, agItem) {
+			var dupCnt = 0;
 			$.each(allDefaultGoodsData, function(idx, item) {
-				if(agItem.goodsCd != item.goodsCd){
-					multiApplyGoods.push(agItem.goodsCd);
+				if(agItem.goodsCd == item.goodsCd){
+					dupCnt++;
 				}
 			});
+			if(dupCnt==0){
+				multiApplyGoods.push(agItem.goodsCd);
+			}
 		});
 
 		var multiExceptGoods = [];
@@ -1266,6 +1300,7 @@
 						, exceptGoodsList : allExceptGoodsData
 						, burdenList : allApplyBurdenData
 						, sectionGbList : allSectionGbData
+						, defaultGoodsList : allDefaultGoodsData
 						, multiSupplyCompCd : multiSupplyCompCd
 						, multiBrand : multiBrand
 						, multiApplyGoods : multiApplyGoods
@@ -1273,7 +1308,7 @@
 						, multiDefaultGoods : multiDefaultGoods
 					}
 					var jsonData = JSON.stringify(data);
-					// console.log('jsonData::'+jsonData);
+					console.log('jsonData::'+jsonData);
 					gagajf.ajaxJsonSubmit('/marketing/morebetter/changeStat', jsonData, fnMorebetterChangeStatCollback);
 				}
 			}

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

@@ -383,6 +383,11 @@
 		$(formId + ' input[name=edDate]').val(edDate);
 		$('#edTimeHour').val(edTime.substring(0,2));
 	}
+
+	// 초기화 클릭 시
+	var fnReset = function (){
+		$('#searchForm')[0].reset();
+	}
 	
 	// 신규버튼  클릭 시 
 	var afreshBtn = function() {
@@ -514,6 +519,9 @@
 		{headerName: '상품타입'	         , field:'goodsType'		, width:100 , cellClass: 'text-center', hide: true},
 		{headerName: '삭제여부'				, field:'delYn'		, width:100 , cellClass: 'text-center', hide: true},
 		{headerName: '변경전 할인율'				, field:'dcBrate'		, width:100 , cellClass: 'text-center', hide: true},
+		{headerName: '노출순서'				, field:'dispOrd'		, width:100 , cellClass: 'text-center', editable: true
+			, valueGetter: function(params) { return params.node.rowIndex + 1 }
+		}
 	];
 
 	var gridOptionsGoods = gagaAgGrid.getGridOptions(columnDefsSocialGoods);
@@ -642,22 +650,22 @@
 				mcxDialog.alert('소셜을 선택 해주세요.');
 				return;
 			} */
-			
+
 			for (var disp = 0; disp < result.length; disp++) {
 				var goods = { socialSq : Number(socialSq) ,
 							  scgoodsSq : Number(0) ,
-							  goodsCd : result[disp].goodsCd, 
+							  goodsCd : result[disp].goodsCd,
 							  goodsNm : result[disp].goodsNm,
 							  currBprice: result[disp].currPrice,
 							  dcBrate: result[disp].dcRate,
 							  listPrice : result[disp].listPrice,
 							  sysImgNm : result[disp].sysImgNm,
 							  goodsType : result[disp].goodsType,
-							  dispOrd : disp+1
+							  dispOrd : oldGoodsList.length+(disp+1)
 							  };
-				
+
 				oldGoodsList.unshift(goods);
-				
+
 			}
 		}
 		mcxDialog.alert('상품이 적용되었습니다.');
@@ -741,11 +749,10 @@
 				msg = '상품코드 : ' + goods.goodsCd + '<br/>판매가와 할인율 모두 값이 존재하지않습니다.';
 				return false;
 			}
-		/* 	if (gagajf.isNull(goods.dispOrd)) {
+		 	if (gagajf.isNull(goods.dispOrd)) {
 				msg = '상품코드 : ' + goods.goodsCd + '<br/>전시순서를  입력해주세요.';
 				return false;
-			} */
-			
+			}
 			if(!gagajf.isNull(goods.currAprice)){
 				dcRate =  100 - Math.floor(Number(goods.currAprice) / Number(goods.listPrice) * 100);	//절사
 				goods.dcArate = dcRate;

+ 1 - 1
src/main/webapp/WEB-INF/views/order/OrderMemoRegistForm.html

@@ -47,7 +47,7 @@
 							<th>파일</th>
 							<td><div class="uFile">
 								<input id="imageFile" name="imageFile" type="file" class="uFileInput"/>
-								<label for="imageFile" class="uFileLabel" th:text="${#strings.isEmpty(orderMemo.sysFileNm) ? '파일선택' : orderMemo.sysFileNm}">파일선택</label>
+								<label for="imageFile" class="uFileLabel" th:text="${mode == 'U' and orderMemo.sysFileNm != null and orderMemo.sysFileNm != '' ? orderMemo.sysFileNm : '파일선택'}">파일선택</label>
 								<input type="hidden" name="orgFileNm"/>
 								<input type="hidden" name="sysFileNm"/>
 							</div>