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

Merge branch 'jsshin' into develop

jsshin 5 лет назад
Родитель
Сommit
e5eaaaa23e

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

@@ -1,6 +1,7 @@
 package com.style24.admin.biz.dao;
 
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
 import com.style24.persistence.domain.Delivery;
@@ -82,6 +83,16 @@ public interface TsaCustomerDao {
 	 */
 	void saveCustomerDeliveryAddr(Delivery delivery);
 
+	/**
+	 * 회원상세-쿠폰내역
+	 *
+	 * @param custNo -고객일련번호
+	 * @return Collection<Coupon>
+	 * @author jsshin
+	 * @since 2021. 01. 21
+	 */
+	Collection<Coupon> getCustomerCouponList(Integer custNo);
+
 	/**
 	 * 탈퇴회원 목록
 	 * @param customerSearch - 검색조건
@@ -102,4 +113,5 @@ public interface TsaCustomerDao {
 
 	void createException();
 
+
 }

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

@@ -4,6 +4,7 @@ import com.style24.admin.biz.dao.TsaCustomerDao;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.biz.dao.TscCustomerDao;
 import com.style24.core.biz.service.TscCustomerService;
+import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
 import com.style24.persistence.domain.Delivery;
@@ -122,6 +123,17 @@ public class TsaCustomerService {
 		customerDao.saveCustomerDeliveryAddr(delivery);
 	}
 
+	/**
+	 * 회원상세-쿠폰내역
+	 *
+	 * @param custNo -고객일련번호
+	 * @return Collection<Coupon>
+	 * @author jsshin
+	 * @since 2021. 01. 21
+	 */
+	public Collection<Coupon> getCustomerCouponList(Integer custNo) {
+		return customerDao.getCustomerCouponList(custNo);
+	}
 
 	/**
 	 * 탈퇴회원 목록
@@ -146,4 +158,5 @@ public class TsaCustomerService {
 	}
 
 
+
 }

+ 15 - 14
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -8,6 +8,7 @@ import com.style24.admin.biz.service.TsaKakaoService;
 import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.session.TscSession;
+import com.style24.core.support.util.CryptoUtils;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
@@ -642,6 +643,20 @@ public class TsaCustomerController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * 회원상세-쿠폰내역
+	 *
+	 * @param custNo -고객일련번호
+	 * @return Collection<Coupon>
+	 * @author jsshin
+	 * @since 2021. 01. 21
+	 */
+	@GetMapping("/coupon/list/{custNo}")
+	@ResponseBody
+	public Collection<Coupon> getCustomerCouponList(@PathVariable Integer custNo) {
+		return customerService.getCustomerCouponList(custNo);
+	}
+
 	/**
 	 * 회원상세-1:1문의내역
 	 *
@@ -689,20 +704,6 @@ public class TsaCustomerController extends TsaBaseController {
 		return mav;
 	}
 
-	/**
-	 * 회원상세-쿠폰내역
-	 *
-	 * @param custNo -고객일련번호
-	 * @return Collection<Coupon>
-	 * @author jsshin
-	 * @since 2021. 01. 21
-	 */
-	@GetMapping("/coupon/list/{custNo}")
-	@ResponseBody
-	public Collection<Coupon> getCustomerCouponList(@PathVariable Integer custNo) {
-		//return customerService.getCustomerCouponList(custNo);
-		return null;
-	}
 
 	/**
 	 * 회원상세-포인트

+ 87 - 18
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -196,8 +196,8 @@
 		                    END,
 		     SMS_AGREE_YN = #{smsAgreeYn},
 		    </if>
-		    <if test="homePostNo != null and homePostNo != ''">
-		     HOME_POST_NO = #{homePostNo},
+		    <if test="homeZipNo != null and homeZipNo != ''">
+		     HOME_POST_NO = #{homeZipNo},
 		    </if>
 		    <if test="homeBaseAddr != null and homeBaseAddr != ''">
 		     HOME_BASE_ADDR = #{homeBaseAddr},
@@ -256,18 +256,23 @@
 		     , C.CUST_NO
 		     , DA.RECIP_NM
 		FROM   TB_CUSTOMER C
-		     , TB_ORDER O
-		     , TB_ORDER_DETAIL OD
-		     , TB_ORDER_DETAIL_ITEM ODI
-		     , TB_GOODS E
-		     , TB_DELIVERY_ADDR DA
-		WHERE  C.CUST_NO = O.CUST_NO
-		AND    O.ORD_NO = OD.ORD_NO
-		AND    OD.ORD_NO = ODI.ORD_NO
+		INNER JOIN
+		       TB_ORDER O
+		ON     C.CUST_NO = O.CUST_NO
+		INNER JOIN
+		       TB_ORDER_DETAIL OD
+		ON     O.ORD_NO = OD.ORD_NO
+		INNER JOIN
+		       TB_ORDER_DETAIL_ITEM ODI
+		ON     OD.ORD_NO = ODI.ORD_NO
 		AND    OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		AND    OD.GOODS_CD = E.GOODS_CD
-		AND    OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
-		AND    C.CUST_NO = #{custNo}
+		INNER JOIN
+		       TB_GOODS E
+		ON     OD.GOODS_CD = E.GOODS_CD
+		INNER JOIN
+		       TB_DELIVERY_ADDR DA
+		ON     OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
+		WHERE  C.CUST_NO = #{custNo}
 		ORDER BY O.ORD_NO DESC, OD.ORD_DTL_NO
 	</select>
 
@@ -283,6 +288,7 @@
 		     , CDA.RECIP_NM
 		     , CDA.RECIP_PHNNO
 		     , CDA.RECIP_TELNO
+		     , CDA.RECIP_ZIP_NO
 		     , CDA.RECIP_BASE_ADDR
 		     , CDA.RECIP_DTL_ADDR
 		     , CDA.DEL_YN
@@ -291,9 +297,10 @@
 		     , FN_GET_USER_NM(CDA.UPD_NO)              AS UPD_NM
 		     , DATE_FORMAT(CDA.UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
 		FROM   TB_CUSTOMER C
-		     , TB_CUST_DELIVERY_ADDR CDA
-		WHERE  C.CUST_NO = CDA.CUST_NO
-		AND    C.CUST_NO = #{custNo}
+		INNER JOIN
+		       TB_CUST_DELIVERY_ADDR CDA
+		ON     C.CUST_NO = CDA.CUST_NO
+		WHERE  C.CUST_NO = #{custNo}
 	</select>
 
 	<!-- 주소정보 - 기본배송지 초기화 -->
@@ -329,7 +336,7 @@
 		VALUES (
 		       #{custNo}
 		     , #{delvAddrNm}
-		     , #{defaultYn}
+		     , IFNULL(#{defaultYn}, 'N')
 		     , #{recipNm}
 		     , #{recipPhnno}
 		     , #{recipTelno}
@@ -337,7 +344,7 @@
 		     , #{recipBaseAddr}
 		     , #{recipDtlAddr}
 		     , #{delvMemo}
-		     , #{delYn}
+		     , IFNULL(#{delYn}, 'N')
 		     , #{regNo}
 		     , NOW()
 		     , #{updNo}
@@ -357,6 +364,68 @@
 		     , UPD_DT = NOW()
 	</update>
 
+	<!--회원 쿠폰내역  -->
+	<select id="getCustomerCouponList" parameterType="Integer" resultType="Coupon">
+		/* TsaCustomer.getCustomerCounponList */
+		WITH TAB1 AS (
+		              SELECT O.ORD_NO             AS ORD_NO
+		                   , MAX(OD.GOODS_CPN_SQ) AS GOODS_CPN_SQ
+		                   , MAX(OD.CART_CPN_SQ)  AS CART_CPN_SQ
+		                   , MAX(OD.CPN1_CPN_SQ)  AS CPN1_CPN_SQ
+		              FROM   TB_ORDER O
+		              INNER JOIN
+		                     TB_ORDER_DETAIL OD
+		              ON     O.ORD_NO = OD.ORD_NO
+		              WHERE  O.CUST_NO = #{custNo}
+		              GROUP BY O.ORD_NO
+		)
+		, TAB2 AS (
+		           SELECT ORD_NO
+		                , CPN1_CPN_SQ AS CPN_SQ
+		           FROM   TAB1
+		           WHERE  CPN1_CPN_SQ > 0
+		           AND    CPN1_CPN_SQ IS NOT NULL
+		           UNION ALL
+		           SELECT ORD_NO
+		                , GOODS_CPN_SQ AS CPN_SQ
+		           FROM   TAB1
+		           WHERE  GOODS_CPN_SQ > 0
+		           AND    GOODS_CPN_SQ IS NOT NULL
+		           UNION ALL
+		           SELECT ORD_NO
+		                , CART_CPN_SQ AS CPN_SQ
+		           FROM   TAB1
+		           WHERE  CART_CPN_SQ > 0
+		           AND    CART_CPN_SQ IS NOT NULL
+		)
+		SELECT C.SITE_CD
+		     , CC.CUST_CPN_SQ
+		     , CC.CUST_NO
+		     , C.CPN_ID
+		     , C.CPN_NM
+		     , DATE_FORMAT(CC.AVAIL_STDT, '%Y%m%d%H%i%S')             AS AVAIL_STDT
+		     , DATE_FORMAT(CC.AVAIL_EDDT, '%Y%m%d%H%i%S')             AS AVAIL_EDDT
+		     , CC.PUB_REASON
+		     , CC.PUB_REASON_DTL
+		     , DATE_FORMAT(CC.USED_DT, '%Y%m%d%H%i%S')               AS USED_DT
+		     , FN_GET_USER_NM(CC.REG_NO)                             AS REG_NM
+		     , FN_GET_USER_NM(CC.UPD_NO)                             AS USER_NM
+		     , DATE_FORMAT(CC.REG_DT, '%Y%m%d%H%i%S')                AS REG_DT
+		     , E.ORD_NO
+		FROM   TB_COUPON C
+		INNER JOIN
+		       TB_CUST_COUPON CC
+		ON     C.CPN_ID = CC.CPN_ID
+		INNER JOIN
+		       TB_CUSTOMER CU
+		ON     CC.CUST_NO = CU.CUST_NO
+		LEFT OUTER JOIN
+		       TAB2 E
+		ON     CC.CUST_CPN_SQ = E.CPN_SQ
+		WHERE  CC.CUST_NO = #{custNo}
+		ORDER BY E.ORD_NO DESC, CC.REG_DT DESC
+	</select>
+
 	<!-- 탈퇴회원목록 -->
 	<select id="getCustomerSecedeList" parameterType="CustomerSearch" resultType="Customer">
 		/* TsaCustomer.getSecedeCustomerList */

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

@@ -14,7 +14,7 @@
  * 1.0  2021.01.18   jsshin     최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" id="popupCustomerDetail" data-width="1600">
+<div class="modalPopup" data-width="1600">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -148,7 +148,7 @@
 									<tr>
 										<th class="dashR">자택주소</th>
 										<td class="dashR" colspan="3">
-											<input type="text" id="homePostNo" name="homePostNo" class="w100" readonly="readonly"/>
+											<input type="text" id="homeZipNo" name="homeZipNo" class="w100" readonly="readonly"/>
 											<button type="button" class="btn btn-info btn-lg" onclick="fnOpenDaumAddr('custInfoForm');">우편번호찾기</button>
 											<br/>
 											<input type="text" id="homeBaseAddr" name="homeBaseAddr" class="w300" readonly="readonly"/>
@@ -277,9 +277,9 @@
 									</tr>
 									<tr>
 										<th>전화번호</th>
-										<td>
-											<input th:type="hidden" id="recipTelno" name="recipTelno">
-											<select class="w100" id="telFirstNo" name="telFirstNo"/>
+										<td >
+											<input type="hidden" id="recipTelno" name="recipTelno"/>
+											<select class="w100" id="telFirstNo" name="telFirstNo">
 												<option value="">선택</option>
 												<option th:if="${nationalNumberList}" th:each="oneData, status : ${nationalNumberList}"
 														th:value="${oneData.cd}" th:text="|${oneData.cd}|"></option>
@@ -291,7 +291,7 @@
 										</td>
 										<th>휴대전화번호<i class="star"></i></th>
 										<td colspan="4">
-											<input th:type="hidden" id="recipPhnno" name="recipPhnno"/>
+											<input type="hidden" id="recipPhnno" name="recipPhnno"/>
 											<select class="w100" id="recipFirstNo" name="recipFirstNo">
 												<option value="">선택</option>
 												<option th:if="${nationalHpNumberList}" th:each="oneData, status : ${nationalHpNumberList}"
@@ -662,7 +662,7 @@
 			}
 		},
 		{headerName: "쿠폰발행 상세사유", field: "pubReasonDtl", width: 300, cellClass: 'text-center'},
-		{headerName: "등록자", field: "regId", width: 100, cellClass: 'text-center'},
+		{headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
 		{
 			headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
 			cellRenderer: function (params) {
@@ -785,8 +785,7 @@
 		{headerName: "수령자", field: "recipNm", width: 100, cellClass: 'text-center'},
 		{headerName: "전화번호", field: "recipTelno", width: 130, cellClass: 'text-center'},
 		{headerName: "휴대전화번호", field: "recipPhnno", width: 130, cellClass: 'text-center'},
-		{headerName: "이메일", field: "recipEmail", width: 150, cellClass: 'text-center'},
-		{headerName: "우편번호", field: "recipPostNo", width: 100, cellClass: 'text-center'},
+		{headerName: "우편번호", field: "recipZipNo", width: 100, cellClass: 'text-center'},
 		{headerName: "기본주소", field: "recipBaseAddr", width: 300, cellClass: 'text-left'},
 		{headerName: "상세주소", field: "recipDtlAddr", width: 150, cellClass: 'text-left'},
 		{
@@ -796,7 +795,7 @@
 			}
 		},
 		{headerName: "삭제", field: "delYn", width: 50, cellClass: 'text-center'},
-		{headerName: "수정자", field: "updId", width: 100, cellClass: 'text-center'},
+		{headerName: "수정자", field: "updNm", width: 100, cellClass: 'text-center'},
 		{
 			headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
 			cellRenderer: function (params) {
@@ -947,13 +946,13 @@
 			return false;
 
 		// 전화번호
-		let telFirstNo = $('#custAddrForm input[name=telFirstNo]').val();
+		let telFirstNo = $('#custAddrForm select[name=telFirstNo]').val();
 		let telMiddleNo = $('#custAddrForm input[name=telMiddleNo]').val();
 		let telLastNo = $('#custAddrForm input[name=telLastNo]').val();
 		$('#custAddrForm input[name=recipTelno]').val(telFirstNo + '-' + telMiddleNo + '-' + telLastNo);
 
 		// 핸드폰번호 필수값 validation 함수에서 null 체크
-		let recipFirstNo = $('#custAddrForm input[name=recipFirstNo]').val();
+		let recipFirstNo = $('#custAddrForm select[name=recipFirstNo]').val();
 		let recipMiddleNo = $('#custAddrForm input[name=recipMiddleNo]').val();
 		let recipLastNo = $('#custAddrForm input[name=recipLastNo]').val();
 		$('#custAddrForm input[name=recipPhnno]').val(recipFirstNo + '-' + recipMiddleNo + '-' + recipLastNo);
@@ -1068,21 +1067,20 @@
 		if (!gagajf.isNull(event.data)) {
 			$('#custAddrForm input[name=custDelvAddrSq]').val(event.data.custDelvAddrSq);
 			$('#custAddrForm input[name=delvAddrNm]').val(event.data.delvAddrNm);
-			$('#custAddrForm input[name=recipEmail]').val(event.data.recipEmail);
 			$('#custAddrForm input[name=recipNm]').val(event.data.recipNm);
 
 			if (!gagajf.isNull(event.data.recipPhnno)) {
 				let phnNoSplit = event.data.recipPhnno.split("-");
-				$('#custAddrForm input[name=recipFirstNo]').val(phnNoSplit[0]);
+				$('#custAddrForm select[name=recipFirstNo]').val(phnNoSplit[0]);
 				$('#custAddrForm input[name=recipMiddleNo]').val(phnNoSplit[1]);
 				$('#custAddrForm input[name=recipLastNo]').val(phnNoSplit[2]);
 			}
 
 			if (!gagajf.isNull(event.data.recipTelno)) {
 				let telNoSplit = event.data.recipTelno.split("-");
-				$('#custAddrForm input[name=telFirstNo]').val(telNoSplit[0]);
+				$('#custAddrForm select[name=telFirstNo]').val(telNoSplit[0]);
 				$('#custAddrForm input[name=telMiddleNo]').val(telNoSplit[1]);
-				$('#custAddrForm input[name=telLiastNo]').val(telNoSplit[2]);
+				$('#custAddrForm input[name=telLastNo]').val(telNoSplit[2]);
 			}
 
 			$('#custAddrForm input[name=recipZipNo]').val(event.data.recipZipNo);
@@ -1125,7 +1123,7 @@
 					let snsType = fnGetSnsType(data.nvJoinId, data.kkJoinId, data.ysJoinId);
 					$('#snsType').text(snsType);
 
-					$('#homePostNo').val(data.homePostNo);
+					$('#homeZipNo').val(data.homeZipNo);
 					$('#homeBaseAddr').val(data.homeBaseAddr);
 					$('#homeDtlAddr').val(data.homeDtlAddr);
 					$('#sexGb').text(gagaAgGrid.lookupValue(genderGbList, data.sexGb));
@@ -1136,9 +1134,6 @@
 					fnDisplayCellPhnno(data.maskingCellPhnno);		// 핸드폰
 					fnDisplayManaged(data.managedRsn);			// 관리대상
 
-					//custInfoForm Hidden : LMS팝업 사용시 필요
-					$('#custNm').val(data.maskingCustNm);
-
 					//기존데이트 저장
 					orgData = data;
 
@@ -1220,7 +1215,7 @@
 			oncomplete: function(data) {
 				// 우편번호와 주소 정보를 해당 필드에 넣는다.
 				if (id === 'custInfoForm') {
-					$('#homePostNo').val(data.zonecode);
+					$('#homeZipNo').val(data.zonecode);
 					$('#homeBaseAddr').val(cfnGetDaumRoadAddr(data));
 					$('#homeDtlAddr').focus();
 				}

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

@@ -14,7 +14,7 @@
  * 1.0  2021.01.21   jsshin     최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" id="popupLmsForm" data-width="800">
+<div class="modelessPopup draggable" data-width="634">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">