Przeglądaj źródła

Merge remote-tracking branch 'origin/develop' into jsh77b

tsit14 5 lat temu
rodzic
commit
15d680b732

+ 1 - 0
src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java

@@ -217,4 +217,5 @@ public interface TsaCustomerDao {
 	int saveBatchBirth(Customer customer);
 
 
+
 }

+ 2 - 0
src/main/java/com/style24/admin/biz/service/TsaCustomerService.java

@@ -479,4 +479,6 @@ public class TsaCustomerService {
 	}
 
 
+
+
 }

+ 31 - 0
src/main/java/com/style24/admin/biz/web/TsaBusinessController.java

@@ -2,6 +2,10 @@ package com.style24.admin.biz.web;
 
 import java.util.Collection;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.style24.core.biz.service.TscKcpService;
+import com.style24.core.support.session.TscSession;
+import com.style24.persistence.domain.CustAccount;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -61,6 +65,9 @@ public class TsaBusinessController extends TsaBaseController {
 	@Autowired
 	private TscEnvsetService cenvsetService;
 
+	@Autowired
+	private TscKcpService coreKcpService;
+
 	/**
 	 * 공급벤더관리 화면
 	 * @return
@@ -851,4 +858,28 @@ public class TsaBusinessController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * 계좌인증
+	 *
+	 * @return GagaMap - 결과
+	 * @author jsshin
+	 * @since 2021. 06. 14
+	 */
+	@RequestMapping("/account/check")
+	@ResponseBody
+	public GagaMap getAccountCheck(@RequestBody CustAccount custAccount) {
+		custAccount.setIpAddress(TscSession.getIpAddress());
+		boolean isValid = false;
+
+		log.info("custAccount.getAccountNm() ::: {}",custAccount.getAccountNm());
+		log.info("custAccount.getBankCd() ::: {}",custAccount.getBankCd());
+		log.info("custAccount.getAccountNo() ::: {}",custAccount.getAccountNo());
+
+		GagaMap result = coreKcpService.checkAccount(custAccount);
+		if ("0000".equals(result.get("resCd"))) {
+			isValid = true;
+		}
+		result.set("isValid", isValid);
+		return result;
+	}
 }

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

@@ -1412,6 +1412,10 @@ public class TsaMarketingController extends TsaBaseController {
 	@GetMapping("/point/grant/popup/form")
 	@ResponseBody
 	public ModelAndView pointGrantPopupForm(@RequestParam(value = "elementCustNo") String elementCustNo) {
+		if (StringUtils.isBlank(elementCustNo)) {
+			throw new IllegalStateException("고객정보가 없습니다.");
+		}
+
 		ModelAndView mav = new ModelAndView();
 
 		mav.addObject("elementCustNo", elementCustNo);
@@ -1443,6 +1447,9 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/point/save")
 	@ResponseBody
 	public GagaResponse savePoint(@RequestBody Point point) {
+		if (point.getCustNo() == null || point.getCustNo() <= 0 ) {
+			throw new IllegalStateException("고객정보가 없습니다.");
+		}
 		Integer userNo = TsaSession.getInfo().getUserNo();
 		point.setRegNo(userNo);
 		point.setUpdNo(userNo);

+ 3 - 2
src/main/java/com/style24/admin/support/config/TsaWebMvcConfig.java

@@ -16,8 +16,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 import com.style24.admin.support.interceptor.TsaDefaultInterceptor;
 import com.style24.admin.support.interceptor.TsaPosInterceptor;
 import com.style24.admin.support.readable.TsaRequestFilter;
+import com.style24.core.support.filter.TscXssServletFilter;
 
-import com.gagaframework.web.core.filter.GagaXssServletFilter;
 import com.gagaframework.web.rest.client.GagaRequestStringTrim;
 
 /**
@@ -84,7 +84,8 @@ public class TsaWebMvcConfig implements WebMvcConfigurer {
 	@Bean
 	public FilterRegistrationBean xssFilterRegistrationBean() {
 		FilterRegistrationBean bean = new FilterRegistrationBean();
-		bean.setFilter(new GagaXssServletFilter());
+//		bean.setFilter(new GagaXssServletFilter());
+		bean.setFilter(new TscXssServletFilter());
 		bean.setOrder(2);
 		bean.addUrlPatterns("/*");
 		return bean;

+ 4 - 59
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -357,6 +357,7 @@
 		ORDER BY CC.REG_DT DESC
 	</select>
 
+	<!--회원 포인트내역  -->
 	<select id="getCustomerPoint" parameterType="Integer" resultType="Point">
 		/* TsaCustomer.getCustomerPoint */
 		SELECT IFNULL((
@@ -401,8 +402,7 @@
 		WHERE  C.CUST_NO = #{custNo}
 	</select>
 
-
-	<!--회원 포인트내역  -->
+	<!-- 회원 포인트내역  -->
 	<select id="getCustomerPointList" parameterType="Integer" resultType="Point">
 		/* TsaCustomer.getCustomerPointList */
 		SELECT  CPH.PNT_HST_SQ
@@ -683,36 +683,10 @@
 		SELECT CUST_NO
 		     , CUST_ID
 		     , CUST_NM
-		     , PASSWD
 		     , BIRTH_YMD
-		     , SEX_GB
 		     , CELL_PHNNO
-		     , APP_AGREE_YN
-		     , DATE_FORMAT(APP_AGREE_DT, '%Y%m%d%H%i%S') AS APP_AGREE_DT
-		     , SMS_AGREE_YN
-		     , DATE_FORMAT(SMS_AGREE_DT, '%Y%m%d%H%i%S') AS SMS_AGREE_DT
 		     , EMAIL
-		     , EMAIL_AGREE_YN
-		     , DATE_FORMAT(EMAIL_AGREE_DT, '%Y%m%d%H%i%S') AS EMAIL_AGREE_DT
-		     , HOME_ZIPCODE
-		     , HOME_BASE_ADDR
-		     , HOME_DTL_ADDR
 		     , SITE_CD
-		     , FRONT_GB
-		     , AF_LINK_CD
-		     , CUST_GB
-		     , CUST_GRADE
-		     , DATE_FORMAT(JOIN_DT, '%Y%m%d%H%i%S') AS JOIN_DT
-		     , FOREIGNER_YN
-		     , CUST_STAT
-		     , DATE_FORMAT(PASSWD_CHG_DT, '%Y%m%d%H%i%S') AS PASSWD_CHG_DT
-		     , TEMP_PASSWD_YN
-		     , DATE_FORMAT(LOGIN_LDT, '%Y%m%d%H%i%S') AS LOGIN_LDT
-		     , CI
-		     , DATE_FORMAT(AUTH_DT, '%Y%m%d%H%i%S') AS AUTH_DT
-		     , MANAGED_RSN
-		     , MANAGED_DTL_RSN
-		     , DATE_FORMAT(MANAGED_DT, '%Y%m%d%H%i%S') AS MANAGED_DT
 		     , SECEDE_RSN
 		     , SECEDE_DTL_RSN
 		     , DATE_FORMAT(SECEDE_DT, '%Y%m%d%H%i%S') AS SECEDE_DT
@@ -786,41 +760,12 @@
 		/* TsaCustomer.getDormantCustomerList */
 		<include refid="selectForPagingHeader"/>
 		SELECT CUST_NO
+		     , SITE_CD
 		     , CUST_ID
 		     , CUST_NM
-		     , PASSWD
-		     , BIRTH_YMD
-		     , SEX_GB
 		     , CELL_PHNNO
-		     , APP_AGREE_YN
-		     , DATE_FORMAT(APP_AGREE_DT, '%Y%m%d%H%i%S') AS APP_AGREE_DT
-		     , SMS_AGREE_YN
-		     , DATE_FORMAT(SMS_AGREE_DT, '%Y%m%d%H%i%S') AS SMS_AGREE_DT
 		     , EMAIL
-		     , EMAIL_AGREE_YN
-		     , DATE_FORMAT(EMAIL_AGREE_DT, '%Y%m%d%H%i%S') AS EMAIL_AGREE_DT
-		     , HOME_ZIPCODE
-		     , HOME_BASE_ADDR
-		     , HOME_DTL_ADDR
-		     , SITE_CD
-		     , FRONT_GB
-		     , AF_LINK_CD
-		     , CUST_GB
-		     , CUST_GRADE
-		     , DATE_FORMAT(JOIN_DT, '%Y%m%d%H%i%S') AS JOIN_DT
-		     , FOREIGNER_YN
-		     , CUST_STAT
-		     , DATE_FORMAT(PASSWD_CHG_DT, '%Y%m%d%H%i%S') AS PASSWD_CHG_DT
-		     , TEMP_PASSWD_YN
-		     , DATE_FORMAT(LOGIN_LDT, '%Y%m%d%H%i%S') AS LOGIN_LDT
-		     , CI
-		     , AUTH_DT
-		     , MANAGED_RSN
-		     , MANAGED_DTL_RSN
-		     , DATE_FORMAT(MANAGED_DT, '%Y%m%d%H%i%S') AS MANAGED_DT
-		     , SECEDE_RSN
-		     , SECEDE_DTL_RSN
-		     , DATE_FORMAT(SECEDE_DT, '%Y%m%d%H%i%S')  AS SECEDE_DT
+		     , BIRTH_YMD
 		     , DATE_FORMAT(DORMANT_DT, '%Y%m%d%H%i%S') AS DORMANT_DT
 		     , ROW_NUMBER() OVER(ORDER BY DORMANT_DT DESC)   AS NUMB
 		FROM   TB_DORMANT_CUST

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

@@ -1944,7 +1944,7 @@
 		     , CG.DISP_ORD AS CONTENTS_DISP_ORD
 		FROM TB_CONTENTS_GOODS CG
 		JOIN TB_GOODS G ON CG.GOODS_CD = G.GOODS_CD
-		JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD AND G.MAIN_COLOR_CD = COLOR_CD AND GI.DEFAULT_IMG_YN = 'Y'
+		LEFT OUTER JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD AND G.MAIN_COLOR_CD = COLOR_CD AND GI.DEFAULT_IMG_YN = 'Y'
 		WHERE 1=1
 		<if test="contentsLoc != 'SMM012'">
 		AND CG.CATE_NO = #{cateNo}

+ 1 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaFaq.xml

@@ -32,6 +32,7 @@
 		        LOWER(ANSWER) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
 		       )
 		</if>
+		ORDER BY REG_DT DESC
 	</select>
 
 	<!-- FAQ 등록/수정 -->

+ 2 - 2
src/main/webapp/WEB-INF/views/board/FaqForm.html

@@ -101,8 +101,8 @@
 	// specify the columns
 	let columnDefs = [
 		{
-			headerName: "No", width: 60, cellClass: 'text-center',
-			valueGetter: function(params) { return params.node.rowIndex + 1 }
+			headerName: "FAQ번호", field: "faqSq" ,width: 70, cellClass: 'text-center',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
 		},
 		{
 			headerName: "사이트", field: "siteCd", width: 150, cellClass: 'text-center',

+ 90 - 0
src/main/webapp/WEB-INF/views/business/SupplyCompanyForm.html

@@ -91,6 +91,9 @@
 		<!-- 등록/수정 -->
 		<div class="panelStyle">
 			<form id="detailForm" name="detailForm" action="#" th:action="@{'/business/supply/company/save'}">
+				<input type="hidden" name="orgBankCd" value=""/>
+				<input type="hidden" name="orgAccountNo" value=""/>
+				<input type="hidden" name="orgDepositorNm" value=""/>
 				<h4>기본정보</h4>
 				<table class="frmStyle" aria-describedby="등록/수정 폼">
 					<colgroup>
@@ -246,6 +249,7 @@
 						<th>예금주명</th>
 						<td>
 							<input type="text" class="w100" name="depositorNm" maxlength="50"/>
+<!--							<button type="button" id="btnAccountCheck" class="btn btn-info btn-sm">계좌인증</button>-->
 						</td>
 						<th>사용여부<i class="required" title="필수"></i></th>
 						<td>
@@ -327,6 +331,7 @@
 	let supplyStatList = gagajf.convertToArray([[${supplyStatList}]]);
 	let distributionGbList = gagajf.convertToArray([[${distributionGbList}]]);
 	let bankList = gagajf.convertToArray([[${bankList}]]);
+	let accountCheck = false;
 
 	let columnDefs = [
 		{ headerName: "업체코드", field: "supplyCompCd", width: 100, cellClass: 'text-center' },
@@ -469,6 +474,9 @@
 		$('#detailForm select[name=bankCd]').val(event.data.bankCd);
 		$('#detailForm input[name=accountNo]').val(event.data.accountNo);
 		$('#detailForm input[name=depositorNm]').val(event.data.depositorNm);
+		$('#detailForm input[name=orgBankCd]').val(event.data.bankCd);
+		$('#detailForm input[name=orgAccountNo]').val(event.data.accountNo);
+		$('#detailForm input[name=orgDepositorNm]').val(event.data.depositorNm);
 		$('#detailForm textarea[name=remarks]').val(event.data.remarks);
 		$('#detailForm textarea[name=note]').val(event.data.note);
 		
@@ -516,6 +524,11 @@
 		if (!gagajf.validation('#detailForm'))
 			return false;
 
+		// if (!fnValidationAccount()) {
+		// 	mcxDialog.alert('계좌 인증을 해주시길 바랍니다.');
+		// 	return false;
+		// }
+
 		mcxDialog.confirm("기본정보를 저장하시겠습니까?", {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
@@ -691,6 +704,83 @@
 		
 		cfnOpenDaumAddr(daumZip);
 	}
+
+	// 계좌인증
+	$('#btnAccountCheck').on('click', function () {
+		let $bankCd = $('#detailForm select[name=bankCd]');
+		let $accountNo = $('#detailForm input[name=accountNo]');
+		let $depositorNm = $('#detailForm input[name=depositorNm]');
+
+		if (gagajf.isNull($bankCd.val())) {
+			mcxDialog.alertC('은행을 선택해 주세요', {
+				sureBtnText: '확인',
+				sureBtnClick: function() {
+					$bankCd.select();
+				}
+			});
+			return;
+		}
+		if (gagajf.isNull($accountNo.val())) {
+			mcxDialog.alertC('계좌번호 입력해 주세요', {
+				sureBtnText: '확인',
+				sureBtnClick: function() {
+					$accountNo.focus();
+				}
+			});
+			return;
+		}
+
+		if (gagajf.isNull($depositorNm.val())) {
+			mcxDialog.alertC('예금주명 입력해 주세요', {
+				sureBtnText: '확인',
+				sureBtnClick: function() {
+					$depositorNm.focus();
+				}
+			});
+			return;
+		}
+
+		let custInfo = {};
+		custInfo.bankCd = $bankCd.val();
+		custInfo.accountNm = $accountNo.val();
+		custInfo.accountNo = $depositorNm.val();
+		let jsonData = JSON.stringify(custInfo)
+		gagajf.ajaxJsonSubmit('/business/account/check', jsonData, fnAccountCheckCallback);
+	});
+
+	var fnAccountCheckCallback = function (result) {
+		let msg = '계좌인증에 성공했습니다.'
+		if (result.isValid) { // 유효하면 true
+			accountCheck = true;
+		} else {
+			accountCheck = false;
+			msg = '계좌정보를 다시 확인해주세요.'
+		}
+		mcxDialog.alertC(msg ,{
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+			}
+		});
+	}
+
+	var fnValidationAccount = function () {
+		let bankCd = $('#detailForm select[name=bankCd]').val();
+		let accountNo = $('#detailForm input[name=accountNo]').val();
+		let depositorNm = $('#detailForm input[name=depositorNm]').val();
+
+		let orgBankCd = $('#detailForm select[name=orgBankCd]').val();
+		let orgAccountNo = $('#detailForm input[name=orgAccountNo]').val();
+		let orgDepositorNm = $('#detailForm input[name=orgDepositorNm]').val();
+		// 1. 수정사항이 있는지 확인
+		if (bankCd != orgBankCd && accountNo != orgAccountNo && depositorNm != orgDepositorNm) {
+			if (!accountCheck) {
+				return false;
+			}
+		} else {
+			accountCheck = true;
+			return true;
+		}
+	}
 	
 	$(document).ready(function() {
 		// Create a agGrid

+ 1 - 1
src/main/webapp/WEB-INF/views/customer/CustomerDetailForm.html

@@ -723,7 +723,7 @@
 		{
 			headerName: "만료예정일시", field: "expBeDt", width: 150, cellClass: 'text-center',
 			cellRenderer: function (params) {
-				return gagaAgGrid.toDateTimeFormat(params.value);
+				return params.data.pntAmt > 0 ? gagaAgGrid.toDateTimeFormat(params.value) : gagaAgGrid.toDateTimeFormat(params.data.pntUploadDt);
 			}
 		},
 		{

+ 1 - 1
src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html

@@ -920,7 +920,7 @@
 			}
 			if(contentsTypeVal=='P'){
 				if(gagajf.isNull($(this).find("input[name=planSq"+thisIdx+"]").val())){
-					mcxDialog.alert('기획전 번호를 입력해주세요.');
+					mcxDialog.alert((i+1)+'번째 기획전 번호를 입력해주세요.');
 					$(this).find("input[name=planSq"+thisIdx+"]").focus();
 					dataBool = false;
 				}

+ 17 - 10
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -1933,11 +1933,12 @@
 		}
 		
 		var basicColor = $("#goodsDetailForm input[name=basicColor]:checked").val();
-		
 		var dcRate = 0;
 		var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
 		var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
-		dcRate =  100 - Math.floor(Number(currPrice) / Number(listPrice) * 100);	//절사
+		if (listPrice > 0){
+			dcRate =  100 - Math.floor(Number(currPrice) / Number(listPrice) * 100);	//절사
+		}
 			
 		if (dcRate < 0 && ($("#goodsDetailForm input[name=goodsType]").val() != "G056_D")){
 			mcxDialog.alertC('할인율이 0보다 작습니다.\n판매가를 확인해주세요.', {
@@ -2544,14 +2545,20 @@
 		fnGoodsDeailSearch();
 		
 		// Create a summernote
-		var snOptions = gagaSn.getToolbarOptions('media');
-		gagaSn.createSummernote(snOptions, '#goodsContentsDesc');
-		gagaSn.createSummernote(snOptions, '#goodsCharacterDesc');
-		gagaSn.createSummernote(snOptions, '#goodsDesc');
-		gagaSn.createSummernote(snOptions, '#goodsPcTopDesc');
-		gagaSn.createSummernote(snOptions, '#goodsMobileTopDesc');
-		gagaSn.createSummernote(snOptions, '#goodsPcDownDesc');
-		gagaSn.createSummernote(snOptions, '#goodsMobileDownDesc');
+		var snOptions1 = gagaSn.getToolbarOptions('media');
+		var snOptions2 = gagaSn.getToolbarOptions('media');
+		var snOptions3 = gagaSn.getToolbarOptions('media');
+		var snOptions4 = gagaSn.getToolbarOptions('media');
+		var snOptions5 = gagaSn.getToolbarOptions('media');
+		var snOptions6 = gagaSn.getToolbarOptions('media');
+		var snOptions7 = gagaSn.getToolbarOptions('media');
+		gagaSn.createSummernote(snOptions1, '#goodsContentsDesc');
+		gagaSn.createSummernote(snOptions2, '#goodsCharacterDesc');
+		gagaSn.createSummernote(snOptions3, '#goodsDesc');
+		gagaSn.createSummernote(snOptions4, '#goodsPcTopDesc');
+		gagaSn.createSummernote(snOptions5, '#goodsMobileTopDesc');
+		gagaSn.createSummernote(snOptions6, '#goodsPcDownDesc');
+		gagaSn.createSummernote(snOptions7, '#goodsMobileDownDesc');
 		
 	});