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

Merge branch 'sowon' into develop

sowon4187 5 лет назад
Родитель
Сommit
2d4a832d2a

+ 1 - 0
src/main/java/com/style24/persistence/domain/Plan.java

@@ -228,6 +228,7 @@ public class Plan extends TscBaseDomain{
 		private String goodsItemVal;		//상품아이템
 		private String brandEnm;			//브랜드명
 		private Integer goodsPlanContSq;	//상품 컨텐츠일련번호
+		private String goodsImg;			//상품이미지
 		
 		// Pagination
 		private TscPageRequest pageable;

+ 10 - 2
src/main/java/com/style24/persistence/domain/Social.java

@@ -1,6 +1,9 @@
 package com.style24.persistence.domain;
 
 
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
 
@@ -39,8 +42,8 @@ public class Social extends TscBaseDomain{
 		private String goodsCd;			// 상품코드(상품)
 		private int currBprice;		// 변경전현재판매가
 		private int currAprice;		// 변경후현재판매가
-		private float dcBrate;			// 변경전할인율
-		private float dcArate;			// 변경후할인율
+		private int dcBrate;			// 변경전할인율
+		private int dcArate;			// 변경후할인율
 		private float pntBprate;		// 변경전포인트적립율(PC)
 		private float pntAprate;		// 변경후포인트적립율(PC)
 		private float pntBmrate;		// 변경전포인트적립율(모바일)
@@ -54,7 +57,12 @@ public class Social extends TscBaseDomain{
 		private float dcRate;			// 할인율
 		private float pntPrate;		// PC 포인트 적립율
 		private float pntMrate;		// MOBILE 포인트 적립율
+		private String goodsImg;	//상품이미지
+		private String goodsNm;		//상품명
+		private float listPrice;	//정상가
 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> socialList; 
 		
 
 		private String excelFileNm;		// 엑셀파일명

+ 34 - 25
src/main/java/com/style24/persistence/mybatis/shop/TsaSocial.xml

@@ -6,7 +6,8 @@
 		/* TsaSocial.saveSocial */
 		INSERT INTO TB_SOCIAL
 				(
-				  SOCIAL_NM
+				  SOCIAL_SQ
+				,  SOCIAL_NM
 				, SOCIAL_TYPE
 				, SITE_CD
 				, FRONT_GB
@@ -22,7 +23,8 @@
 				, UPD_DT
 				)
 		VALUES(
-				#{socialNm}
+		        #{socialSq}
+			  ,	#{socialNm}
 		      , #{socialType}
 		      , #{siteCd}
 		      , #{frontGb}
@@ -153,26 +155,33 @@
 	<!-- 쇼셜 상품 목록 -->
 	<select id="getSocialGoodsList" parameterType="Social" resultType="Social">
 		/* TsaSocial.getSocialGoodsList */
-		SELECT SCGOODS_SQ    
-		     , SOCIAL_SQ     
-		     , GOODS_CD      
-		     , CURR_BPRICE   
-		     , CURR_APRICE   
-		     , DC_BRATE      
-		     , DC_ARATE      
-		     , PNT_BPRATE    
-		     , PNT_APRATE    
-		     , PNT_BMRATE    
-		     , PNT_AMRATE    
-		     , DISP_ORD      
-		     , DEL_YN        
-		FROM   TB_SOCIAL_GOODS
-		WHERE  SOCIAL_SQ = #{socialSq}
-		<if test="goodsCd != null and goodsCd != ''">
-		AND    GOODS_CD = #{goodsCd}
-		</if>
-		AND    DEL_YN = 'N'
-		ORDER  BY DISP_ORD
+		SELECT P.*
+		FROM
+		(
+			SELECT SG.SCGOODS_SQ    
+			     , SG.SOCIAL_SQ     
+			     , SG.GOODS_CD      
+			     , SG.CURR_BPRICE   
+			     , SG.CURR_APRICE   
+			     , SG.DC_BRATE      
+			     , SG.DC_ARATE      
+			     , SG.PNT_BPRATE    
+			     , SG.PNT_APRATE    
+			     , SG.PNT_BMRATE    
+			     , SG.PNT_AMRATE    
+			     , SG.DISP_ORD      
+			     , SG.DEL_YN
+			     , G.GOODS_NM 
+			     , G.LIST_PRICE
+			     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = G.GOODS_CD AND DEFAULT_IMG_YN = 'Y' ) AS GOODS_IMG
+			FROM   TB_SOCIAL_GOODS SG LEFT JOIN TB_GOODS G ON SG.GOODS_CD = G.GOODS_CD 
+			WHERE  SG.SOCIAL_SQ = #{socialSq}
+			<if test="goodsCd != null and goodsCd != ''">
+			AND    SG.GOODS_CD = #{goodsCd}
+			</if>
+			AND    SG.DEL_YN = 'N'
+			ORDER  BY SG.DISP_ORD
+		)P
 	</select>
 	
 	<!-- 소셜 상품 삭제 -->
@@ -201,9 +210,9 @@
 		</if>
 		<if test="socialType != null and socialType != ''">
 		AND    SOCIAL_TYPE = #{socialType}
-		</if>	
-		<if test="frontGb != null and frontGb != ''">
-		AND    FRONT_GB = #{frontGb}
+		</if>
+		<if test='frontGb != null and frontGb != "" and frontGb != "A"'>
+			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')

+ 1 - 1
src/main/resources/config/application-locd.yml

@@ -33,7 +33,7 @@ upload:
         target.path: /WIDE/workspace/files/data/style24/Upload/ProductImage
         max.size: 10
         allow.extension: jpg|gif|jpeg
-        view: //ldimage.style24.com/Upload/ProductImage
+        view: //image.istyle24.com/Upload/ProductImage
     image:
         target.path: /WIDE/workspace/files/data/style24
         max.size: 10

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

@@ -207,7 +207,7 @@
 			return;
 		} else {
 	
-			var data = { planDtlSq: '', planSq:planSq, cornerNm:'',cornerDispType: 6 + '', startSearchDate: _today, startSearchTime: stdt[1], endSearchDate: eddt[0], endSearchTime: eddt[1]};
+			var data = { planDtlSq: '', planSq:planSq, cornerNm:'',cornerDispType: '', startSearchDate: _today, startSearchTime: stdt[1], endSearchDate: eddt[0], endSearchTime: eddt[1]};
 			gagaAgGrid.addRowData(gridOptionsCorner, data);
 		}
 

+ 2 - 2
src/main/webapp/WEB-INF/views/marketing/PlanListForm.html

@@ -179,12 +179,12 @@
 			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
 		},
 		{headerName: "서브제목"		, field:'dtlTitle1'	, width:300 , cellClass: 'text-center'},
-		{headerName: "기획전템플릿유형"	, field:'templateType'	, width:100, cellClass: 'text-center',
+		/* {headerName: "기획전템플릿유형"	, field:'templateType'	, width:100, cellClass: 'text-center',
 			cellEditor: 'agRichSelectCellEditor',
 			cellEditorParams: { values: gagaAgGrid.extractValues(templateTypeList) },
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(templateTypeList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(templateTypeList, params.newValue); }
-		},
+		}, */
 		{headerName: "전시순서"		, field:'dispOrd'	, width:100, cellClass: 'text-right' },
 		{headerName: "진행시작일시"		, field:'dispStdt'	, width:150, cellClass: 'text-center'},
 		{headerName: "진행종료일시"		, field:'dispEddt'	, width:150, cellClass: 'text-center'},

+ 64 - 17
src/main/webapp/WEB-INF/views/marketing/SocialShoppingListForm.html

@@ -197,13 +197,13 @@
 											<option th:if="${socialTypeList}" th:each="oneData, status : ${socialTypeList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
 										</select>
 										
-											<button type="button" class="btn btn-base btn-lg" id="btnSearchPlan">기획전 조회</button>
+									 <!-- 		<button type="button" class="btn btn-base btn-lg" id="btnSearchPlan">기획전 조회</button>
 											/ 기획전
 										 <span id="planSpan">
 											<select name="planSq" id="planSq">
 													<option th:if="${planList}" th:each="oneData, status : ${planList}" th:value="${oneData.planSq}" th:text="|[${oneData.planSq}]  ${oneData.planNm}|"></option>
 											</select>
-										</span>
+										</span> -->
 									</td>
 									
 									<th>진행기간</th>
@@ -252,10 +252,9 @@
 								<option value="">선택</option>
 								<option value="currAprice">판매가</option>
 								<option value="dcArate">할인율</option>
-								<option value="pntAprate">PC 포인트</option>
-								<option value="pntAmrate">MOBILE 포인트</option>
-							</select>
-							
+								<!-- <option value="pntAprate">PC 포인트</option> -->
+								<!-- <option value="pntAmrate">MOBILE 포인트</option> -->
+							</select>					
 							<input type="text" class="w100 aR" id="price" name="price" data-valid-type="numeric"/>
 							
 							<button type="button" class="btn btn-default btn-lg" onclick="fnPriceApply();">일괄적용</button>
@@ -361,7 +360,7 @@
 		$(formId + ' select[name=socialType]').trigger('change');
 		
 		$(formId + ' select[name=planSq]').attr("disabled",true);
-		$(formId + ' select[name=socialType]').attr("disabled",true);
+		//$(formId + ' select[name=socialType]').attr("disabled",true);
 		$(formId + ' button[id=btnSearchPlan]').css("display","none");
 		// 진행 기간 설정
 		var stDate = data.socialStdt.split(" ")[0];
@@ -510,20 +509,36 @@
 	
 	var columnDefsGoods = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "상품코드"				, field:'goodsCd'	, width:300 , cellClass: 'text-center',
+		{headerName: '상품이미지'				, field:'goodsImg'	, width: 100, height: 60, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return '<img width="60" src="' + _goodsUrl + '/' + params.value + '" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \'' + _goodsUrl + '/' + params.value + '\')" onerror="this.src=\'/image/no.gif\';"/>';
+			}
+		},
+		{headerName: '상품코드'				, field:'goodsCd'	, width:250 , cellClass: 'text-center',
 			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
 		},
-		{headerName: '적용 판매가'			, field:'currAprice', width:200 , cellClass: 'text-right', cellEditor: 'numericCellEditor'
+		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'},
+		{headerName: '정상가'			, field:'listPrice', width:200 , cellClass: 'text-center', cellEditor: 'numericCellEditor'
+			, cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : params.value.addComma(); }
+		},
+		{headerName: '기존 판매가'			, field:'currBprice', width:200 , cellClass: 'text-center', cellEditor: 'numericCellEditor'
+			, cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : params.value.addComma(); }
+		},
+		{headerName: '적용 판매가'			, field:'currAprice', width:200 , cellClass: 'text-center', cellEditor: 'numericCellEditor'
 			, editable: function(params) { return gagajf.isNull(params.data.dcArate) ? true : false; } 
 			, cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : params.value.addComma(); }
 		}, // 변경 후 현재판매가
-		{headerName: '적용 할인율'			, field:'dcArate'	, width:200 , cellClass: 'text-right', cellEditor: 'numericCellEditor'
+		{headerName: '변경전 할인율(%)'				, field:'dcBrate'		, width:100 , cellClass: 'text-center'},
+		{headerName: '적용 할인율(%)'			, field:'dcArate'	, width:200 , cellClass: 'text-center', cellEditor: 'numericCellEditor'
 			, editable: function(params) { return gagajf.isNull(params.data.currAprice) ? true : false; }
 		}, // 변경 후 할인율
-		{headerName: '적용 PC 포인트율'		, field:'pntAprate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor'}, // 변경 후 포인트적립율(PC)
-		{headerName: '적용 MOBILE 포인트율'	, field:'pntAmrate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor' }, // 변경 후 포인트적립율(모바일)
+		/* {headerName: '적용 PC 포인트율'		, field:'pntAprate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor'}, // 변경 후 포인트적립율(PC) */
+		/* {headerName: '적용 MOBILE 포인트율'	, field:'pntAmrate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor' }, // 변경 후 포인트적립율(모바일) */
 		{headerName: '표시순서'				, field:'dispOrd'	, width:100 , cellClass: 'text-center', editable : true, cellEditor: 'numericCellEditor'},
 		{headerName: '삭제여부'				, field:'delYn'		, width:100 , cellClass: 'text-center', hide: true},
+		{headerName: '변경전 할인율'				, field:'dcBrate'		, width:100 , cellClass: 'text-center', hide: true},
+		{headerName: '기존 판매가'	         , field:'currBprice'		, width:100 , cellClass: 'text-center', hide: true},
+		{headerName: '기존 판매가'	         , field:'cur'		, width:100 , cellClass: 'text-center', hide: true},
 	];
 
 	var gridOptionsGoods = gagaAgGrid.getGridOptions(columnDefsGoods);
@@ -630,19 +645,25 @@
 			return;
 			
 		} else {
-			if (gagajf.isNull(socialSq)) {
+			/* if (gagajf.isNull(socialSq)) {
 				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,
+							  };
 				oldGoodsList.unshift(goods);
+				
 			}
 		}
-		
+		mcxDialog.alert('상품이 적용되었습니다.');
 		gridOptionsGoods.api.setRowData(oldGoodsList);
 	}
 	
@@ -687,6 +708,9 @@
 	
 	// 소셜 상품 저장
 	var fnSocialGoodsSave = function() {
+		
+	var dcRate;
+	var currAprice;
 		var goodsList = gagaAgGrid.getAllRowData(gridOptionsGoods);
 		
 		if (goodsList.length < 1) {
@@ -698,7 +722,7 @@
 		var msg = '';
 		$(goodsList).each(function(idx, goods) {
 			if (goods.dcArate > 100) {
-				msg = '할인율은 100 넘을 수 없습니다.';
+				msg = '할인율은 100%를 넘을 수 없습니다.';
 				return false;
 			}
 			
@@ -706,6 +730,22 @@
 				msg = '상품코드 : ' + goods.goodsCd + '<br/>판매가와 할인율 모두 값이 존재하지않습니다.';
 				return false;
 			}
+			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;
+				//var good = {dcArate : dcRate};
+				//goodsList.unshift(good);	
+			}
+			else{
+				currAprice =   Number(goods.listPrice) - ( Number(goods.listPrice) * (Number(goods.dcArate)/100) );
+				console.log("여기들어왓어"+currAprice);
+				goods.currAprice = currAprice;
+			}
 			
 		});
 		
@@ -724,6 +764,13 @@
 		});
 	}
 	
+	// Row Click
+	gridOptionsGoods.onCellClicked = function(event) {
+		var goodsCd = event.data.goodsCd;
+		if (event.colDef.field == "goodsCd"){
+			cfnOpenGoodsDetailPopup('U',goodsCd);
+		}
+	}
 	
 	$('#btnSearchPlan').on('click', function() {
 		cfnOpenPlanPopup('popupPlan');