Просмотр исходного кода

Merge branch 'develop' into bin2107

bin2107 5 лет назад
Родитель
Сommit
401c78e808

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

@@ -148,6 +148,34 @@ public interface TsaPlanDao {
 	 */
 	void createPlanAfChannel(Plan param);
 	
+	/**
+	 * 기획전 제휴채널  복사
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	void createPlanAfChannelCopy(Plan param);
+	
+	/**
+	 * 기획전 고객유형 복사
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 5
+	 */
+	void createPlanCustGbCopy(Plan param);
+	
+	/**
+	 * 기획전 고객등급 복사
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 5
+	 */
+	void createPlanCustGradeCopy(Plan param);
+	
+	
 	/**
 	 * 기획전 제휴채널 목록
 	 *

+ 39 - 4
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -91,7 +91,7 @@ public class TsaPlanService {
 		String[] channel = param.getMultiChannel();
 		// 기획전 제휴채널 insert
 		for (int j = 0; j < channel.length; j++) {
-			plan.setAfChannel(channel[j]);
+			plan.setAfLinkCd(channel[j]);
 			plan.setPlanSq(param.getPlanSq());
 			plan.setRegNo(TsaSession.getInfo().getUserNo());
 			planDao.createPlanAfChannel(plan);
@@ -331,7 +331,7 @@ public class TsaPlanService {
 		String[] channel = param.getMultiChannel();
 		// 기획전 제휴채널 insert
 		for (int j = 0; j < channel.length; j++) {
-			plan.setAfChannel(channel[j]);
+			plan.setAfLinkCd(channel[j]);
 			plan.setPlanSq(param.getPlanSq());
 			plan.setRegNo(TsaSession.getInfo().getUserNo());
 			planDao.createPlanAfChannel(plan);
@@ -391,7 +391,7 @@ public class TsaPlanService {
 	 *
 	 * @param 복사대상 기획전 번호
 	 * @return 복사된 기획전 번호
-	 * @author rladbwnd5
+	 * @author sowon
 	 * @since 2021. 02. 09
 	 */
 	@Transactional("shopTxnManager")
@@ -403,6 +403,9 @@ public class TsaPlanService {
 		param.setUpdNo(userNo);
 		planDao.createPlanCopy(param);
 		
+		plan.setRegNo(userNo);
+		plan.setUpdNo(userNo);
+		
 		// 02. 기획전 브랜드 복사
 		plan.setPlanSq(param.getCopyPlanSq());
 		Collection <Plan> brandList = planDao.getPlanBrandList(plan);
@@ -414,7 +417,7 @@ public class TsaPlanService {
 			planDao.createPlanBrandCopy(plan);
 		}
 		
-		// 02. 기획전 브랜드 복사
+		// 02. 기획전 카테고리 복사
 		plan.setPlanSq(param.getCopyPlanSq());
 		Collection <Plan> cateList = planDao.getPlanCateList(plan);
 		
@@ -425,6 +428,38 @@ public class TsaPlanService {
 			planDao.createPlanCateCopy(plan);
 		}
 		
+		// 03.기획전 제휴채널 복사
+		plan.setPlanSq(param.getCopyPlanSq());
+		Collection <Plan> afChannelList = planDao.getPlanAfChannelList(plan);
+		
+		for(Plan afChannel : afChannelList){
+			plan.setPlanSq(param.getPlanSq());
+			plan.setAfLinkCd(afChannel.getAfLinkCd());
+			plan.setCopyPlanSq(param.getCopyPlanSq()); 
+			planDao.createPlanAfChannelCopy(plan);
+		}
+		
+		// 04.고객 유형복사
+		plan.setPlanSq(param.getCopyPlanSq());
+		Collection <Plan> custGbList = planDao.getPlanCustGbList(plan);
+		
+		for(Plan custGb : custGbList){
+			plan.setPlanSq(param.getPlanSq());
+			plan.setCustGb(custGb.getCustGb());
+			plan.setCopyPlanSq(param.getCopyPlanSq()); 
+			planDao.createPlanCustGbCopy(plan);
+		}
+		
+		// 05.고객 등급 복사
+		plan.setPlanSq(param.getCopyPlanSq());
+		Collection <Plan> custGradeList = planDao.getPlanCustGradeList(plan);
+		
+		for(Plan custGrade : custGradeList){
+			plan.setPlanSq(param.getPlanSq());
+			plan.setCustGrade(custGrade.getCustGrade());
+			plan.setCopyPlanSq(param.getCopyPlanSq()); 
+			planDao.createPlanCustGradeCopy(plan);
+		}
 
 		return plan;
 	}

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

@@ -1649,10 +1649,6 @@ public class TsaMarketingController extends TsaBaseController {
 
 		} else if(param.getMode().equals("U")){ // 상세 일 때
 			mav.addObject("planInfo", planService.getPlanDetailInfo(param));
-
-			//mav.addObject("fsrcPc", planService.getPlanFsrcPcList(param));
-
-			//mav.addObject("fsrcMobile", planService.getPlanFsrcMobileList(param));
 			
 			// 등록했던 브랜드
 			mav.addObject("planBrandList", planService.getPlanBrandList(param));

+ 71 - 9
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -490,13 +490,13 @@
 	
 	<select id="getPlanAfChannelList" parameterType="Plan" resultType="Plan">
 			SELECT A.PLAN_SQ 
-			      ,A.AF_CHANNEL AS afLinkCd
+			      ,A.AF_LINK_CD 
 			      ,B.AF_LINK_NM  
 			      ,A.REG_DT 
 			      ,B.FEE_RATE 
 			      ,B.DISP_ORD 
 			      ,B.AF_CHANNEL 
-			FROM TB_PLAN_AF_CHANNEL A LEFT JOIN tb_af_link B ON A.AF_CHANNEL = B.AF_LINK_CD 
+			FROM TB_PLAN_AF_CHANNEL A LEFT JOIN TB_AF_LINK B ON A.AF_LINK_CD = B.AF_LINK_CD 
 			WHERE PLAN_SQ = #{planSq}
 	</select>
 	
@@ -512,12 +512,13 @@
 					  ,REG_DT  
 					  ,UPD_NO  
 					  ,UPD_DT  
-     			      ) SELECT 	BRAND_GROUP_NO
-						  , ${planSq} 
+     			      ) SELECT 	
+     			      		BRAND_GROUP_NO
+						  , #{planSq} 
 						  , DISP_YN 
-						  , REG_NO  
+						  , #{regNo} 
 						  , CURRENT_TIMESTAMP  
-						  , UPD_NO  
+						  , #{updNo} 
 						  , CURRENT_TIMESTAMP  
 	        	   FROM   TB_PLAN_BRAND
 	        	   WHERE 1=1
@@ -588,11 +589,11 @@
 					  ,UPD_DT 
      			      ) SELECT 	
      			      		CATE_NO
-						  , ${planSq} 
+						  , #{planSq} 
 						  , DISP_YN 
-						  , REG_NO  
+						  ,#{regNo}
 						  , now()  
-						  , UPD_NO  
+						  ,#{updNo}
 						  , now()  
 	        	   FROM   TB_PLAN_CATE
 	        	   WHERE 1=1
@@ -600,6 +601,67 @@
 	        	     AND CATE_NO = #{cateNo}
 	</insert>
 	
+	<insert id="createPlanAfChannelCopy" parameterType="Plan">
+		/* TsaPlan.createPlanAfChannelCopy */
+			INSERT INTO
+					 TB_PLAN_AF_CHANNEL
+					 (
+			         	  PLAN_SQ
+			         	, AF_CHANNEL
+			         	, REG_NO
+			         	, REG_DT
+     			      ) SELECT 	
+     			      		 #{planSq}
+     			      		,AF_CHANNEL
+     			      		,#{regNo}
+     			      		,now()
+	        	   FROM   TB_PLAN_AF_CHANNEL
+	        	   WHERE 1=1
+					 AND PLAN_SQ = #{copyPlanSq}
+					 AND AF_CHANNEL = #{afChannel}
+	</insert>
+	
+	<insert id="createPlanCustGbCopy" parameterType="Plan">
+		/* TsaPlan.createPlanCustGbCopy */
+			INSERT INTO
+					 TB_PLAN_CUST_DIVISION
+					 (
+			         	 PLAN_SQ
+			           , CUST_GB
+			           , REG_NO
+			           , REG_DT
+     			      ) SELECT 	
+     			      		 #{planSq}
+     			      		, CUST_GB
+     			      		,#{regNo}
+     			      		,now()
+	        	   FROM  TB_PLAN_CUST_DIVISION
+	        	   WHERE 1=1
+					 AND PLAN_SQ = #{copyPlanSq}
+					 AND CUST_GB = #{custGb}
+	</insert>
+	
+	<insert id="createPlanCustGradeCopy" parameterType="Plan">
+		/* TsaPlan.createPlanCustGbCopy */
+			INSERT INTO
+					 TB_PLAN_CUST_GRADE
+					 (
+			         	PLAN_SQ
+			          , CUST_GRADE
+			          , REG_NO
+			          , REG_DT
+     			      ) SELECT 	
+     			      		 #{planSq}
+     			      		, CUST_GRADE
+     			      		,#{regNo}
+     			      		,now()
+	        	   FROM  TB_PLAN_CUST_GRADE
+	        	   WHERE 1=1
+					 AND PLAN_SQ = #{copyPlanSq}
+					 AND CUST_GRADE = #{custGrade}
+	</insert>
+	
+	
 	<!-- 기획전 코너 시퀀스 조회 -->
 	<select id="getPlanDtlSq" parameterType="Plan" resultType="Integer">
 		/* TsaPlan.getPlanDtlSq */

+ 46 - 5
src/main/webapp/WEB-INF/views/marketing/PlanDetailPopupForm.html

@@ -138,7 +138,7 @@
   						</td>
 					</tr>
 					<tr>
-						<th>제휴채널<em class="required" title="필수"></em></th>
+						<th>제휴채널</th>
 						<td colspan="3">
 							<!-- 수정시 프로모션명 입력 : before -->
 							<div class="padding10"	style="display: inline-block; width: 49%;">
@@ -410,9 +410,9 @@
 						<td>
 							<input type="text" name="planNm" id="planNm" maxlength="50" required="required" data-valid-name="기획전명"/>
 						</td>
-						<th>서브제목<em class="required" title="필수"></em></th>
+						<th>서브제목</th>
 						<td>
-							<input type="text" name="dtlTitle1" id="dtlTitle1"/>
+							<input type="text" name="dtlTitle1" id="dtlTitle1" data-valid-name="서브제목"/>
 						</td>
 					</tr>
 					<tr>
@@ -478,7 +478,7 @@
   						</td>
 					</tr>
 					<tr>
-						<th>제휴채널<em class="required" title="필수"></em></th>
+						<th>제휴채널</th>
 						<td colspan="3">
 							<!-- 수정시 프로모션명 입력 : before -->
 							<div class="padding10"	style="display: inline-block; width: 49%;">
@@ -527,7 +527,7 @@
 							<input type="text" name="replyTitle1" id="replyTitle1" maxlength="50" required="required"/>
 						</td>
 						
-						<th>댓글서브제목<em class="required" title="필수"></em></th>
+						<th>댓글서브제목</th>
 						<td>
 							<input type="text" name="replyTitle2" id="replyTitle3" maxlength="50" required="required"/>
 						</td>
@@ -969,14 +969,29 @@
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
+					if(!validationPlanDetail()){
+						return false;
+					}
+					
 					var usableCustGradeArr = [];
 					var chkCustGrade = $('#planRegisterForm input:checkbox[name=usableCustGradeArr]:checked');
+					
+					if(chkCustGrade.length < 1){
+						mcxDialog.alert("사용가능고객등급을 체크해주세요.");
+						return false;
+					}
 					for(let i=0; i< chkCustGrade.length; i++){
 						usableCustGradeArr.push(chkCustGrade.eq(i).val());
 					}
 					
 					var usableCustGbArr = [];
 					var chkCustGb = $('#planRegisterForm input:checkbox[name=usableCustGbArr]:checked');
+					
+					if(chkCustGb.length < 1){
+						mcxDialog.alert("사용가능고객구분을 체크해주세요.");
+						return false;
+					}
+					
 					for(let i=0; i< chkCustGb.length; i++){
 						usableCustGbArr.push(chkCustGb.eq(i).val());
 					}
@@ -1028,18 +1043,35 @@
 				}
 			});
 		} else { // 기획전 수정
+	
 			mcxDialog.confirm('저장 하시겠습니까?', {
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
+					if(!validationPlanDetail()){
+						return false;
+					}
+					
 					var usableCustGradeArr = [];
 					var chkCustGrade = $('#planUpdateForm input:checkbox[name=usableCustGradeArr]:checked');
+					
+					if(chkCustGrade.length < 1){
+						mcxDialog.alert("사용가능고객등급을 체크해주세요.");
+						return false;
+					}
+					
 					for(let i=0; i< chkCustGrade.length; i++){
 						usableCustGradeArr.push(chkCustGrade.eq(i).val());
 					}
 					
 					var usableCustGbArr = [];
 					var chkCustGb = $('#planUpdateForm input:checkbox[name=usableCustGbArr]:checked');
+					
+					if(chkCustGb.length < 1){
+						mcxDialog.alert("사용가능고객구분을 체크해주세요.");
+						return false;
+					}
+					
 					for(let i=0; i< chkCustGb.length; i++){
 						usableCustGbArr.push(chkCustGb.eq(i).val());
 					}
@@ -1290,6 +1322,15 @@
     $('#btnDeleteAf').on('click', function() {
     	gridOptionsAfList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsAfList)});
     });
+	
+	// validation 체크
+	function validationPlanDetail() {
+		if( $('#planUpdateForm input[name=planNm]').val() == '' || $('#planRegisterForm input[name=planNm]').val() == ''){
+			mcxDialog.alert('기획전명을 입력하세요.');
+			return false;
+		}
+		return true;
+	} 
 
 	$(document).ready(function() {
 		

+ 10 - 10
src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html

@@ -338,7 +338,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd1" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd1" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -397,7 +397,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd2" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd2" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -457,7 +457,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd3" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd3" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -517,7 +517,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd4" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd4" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -577,7 +577,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd5" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd5" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -637,7 +637,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd6" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd6" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -697,7 +697,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd7" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd7" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -757,7 +757,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd8" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd8" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -817,7 +817,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd9" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd9" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>
@@ -877,7 +877,7 @@
 														</tr>
 														<tr>
 															<th>전시 순서</th>
-															<td><input type="text" name="goodsDispOrd10" class="w300 aR">
+															<td><input type="text" name="goodsDispOrd10" class="w300 aR" data-valid-type="numeric">
 															</td>
 														</tr>
 													</table>