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

이태영 - 20210208 장바구니 화면 생성 중

xodud1202 5 лет назад
Родитель
Сommit
a3f1f50f04

+ 44 - 16
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -57,19 +57,55 @@ public class TsfCouponService {
 	 * @since 2021. 02. 16
 	 * @since 2021. 02. 16
 	 */
 	 */
 	public Coupon serialCpnApplyInfo(Coupon param) {
 	public Coupon serialCpnApplyInfo(Coupon param) {
-		Coupon cpn = couponDao.getSearchSerialCpnInfo(param);
-		if(cpn != null && cpn.getCpnId() > 0) {
-			// 다운로드 받을 수 있는 쿠폰이 있음
+		// TODO 로그인 정보 입력
+		param.setCustNo(1000006);
+		param.setRegNo(1000006);
+		param.setUpdNo(1000006);
+		param.setFrontGb(TsfSession.getFrontGb());
+
+		// 시리얼키의 쿠폰이 다운로드 가능한지 확인
+		Coupon cpn = couponDao.getSearchSerialCpnInfo(param);   // >> 여기서 쿠폰 정보 다 빼내야함.
 
 
+
+		// 다운로드 받을 수 있는 쿠폰이 있으면
+		if(cpn != null && cpn.getCpnId() > 0) {
+			// 다운 받을 수 있는 쿠폰ID를 내가 받은 이력이 있는지 확인
+			cpn.setCustNo(param.getCustNo());
+			Coupon myCpn = couponDao.getSerialCpnUseInfo(cpn);
+
+			// 다운로드 받은 쿠폰이 있는 경우
+			if(myCpn != null && myCpn.getCpnId() > 0) {
+				// 이미 다운 받았고, 사용 한 쿠폰이 있을 경우 종료
+				if(!StringUtils.isEmpty(myCpn.getUsedDt())) {
+					cpn.setResult("해당 쿠폰은 이미 사용하신 쿠폰입니다.");
+				} else {
+					cpn.setResult("지급 받으신 쿠폰 사용 기한이 지났습니다.");
+				}
+				return cpn;
+			} else {
+				/* 다운받지 않은 경우 (tb_cust_coupon insert) */
+				// 랜덤쿠폰 할당 및 쿠폰 지급
+				cpn.setRegNo(param.getRegNo());
+				cpn.setUpdNo(param.getUpdNo());
+				updateGiveRandomCpnInfo(cpn);
+			}
 		} else {
 		} else {
 			// 다운로드 받을 수 있는 쿠폰이 존재하지 않음.
 			// 다운로드 받을 수 있는 쿠폰이 존재하지 않음.
-
+			cpn.setResult("해당 쿠폰은 존재하지 않습니다.");
+			return cpn;
 		}
 		}
 
 
+		// 장바구니쿠폰 토탈 할인 금액 계산
+		cpn.setDcAmt(getCartCpnApplyTotalAmt(param));
+		cpn.setResult("SUCCESS");
+
+		log.info("CHECK INFO >> {} / {}", cpn.getDcAmt(), cpn.getResult());
 
 
+		return cpn;
 
 
 
 
 
 
+/*
 		// 시리얼 쿠폰 지급 및 사용 내역 조회
 		// 시리얼 쿠폰 지급 및 사용 내역 조회
 		Coupon useSerial = getSerialCpnUseInfo(param);
 		Coupon useSerial = getSerialCpnUseInfo(param);
 		if(useSerial == null) {	useSerial = new Coupon();	}
 		if(useSerial == null) {	useSerial = new Coupon();	}
@@ -95,25 +131,17 @@ public class TsfCouponService {
 			if(coupon == null) {
 			if(coupon == null) {
 				useSerial.setResult("해당 쿠폰은 존재하지 않습니다.");
 				useSerial.setResult("해당 쿠폰은 존재하지 않습니다.");
 				return useSerial;
 				return useSerial;
-			} else if (!"Y".equals(coupon.getDownCanGb())) {
+			} *//*else if (!"Y".equals(coupon.getDownCanGb())) {
 				useSerial.setResult("해당 쿠폰은 사용 할 수 없습니다.");
 				useSerial.setResult("해당 쿠폰은 사용 할 수 없습니다.");
 				return useSerial;
 				return useSerial;
-			} else {
+			}*//* else {
 				// 랜덤쿠폰 할당 및 쿠폰 지급
 				// 랜덤쿠폰 할당 및 쿠폰 지급
 				coupon.setCustNo(useSerial.getCustNo());
 				coupon.setCustNo(useSerial.getCustNo());
 				coupon.setRegNo(useSerial.getRegNo());
 				coupon.setRegNo(useSerial.getRegNo());
 				coupon.setUpdNo(useSerial.getUpdNo());
 				coupon.setUpdNo(useSerial.getUpdNo());
 				updateGiveRandomCpnInfo(coupon);
 				updateGiveRandomCpnInfo(coupon);
 			}
 			}
-		}
-
-		// 장바구니쿠폰 토탈 할인 금액 계산
-		coupon.setDcAmt(getCartCpnApplyTotalAmt(useSerial));
-		coupon.setResult("SUCCESS");
-
-		log.info("CHECK INFO >> {} / {}", coupon.getDcAmt(), coupon.getResult());
-
-		return coupon;
+		}*/
 	}
 	}
 
 
 	// 장바구니쿠폰 토탈 할인 금액 계산
 	// 장바구니쿠폰 토탈 할인 금액 계산
@@ -140,7 +168,6 @@ public class TsfCouponService {
 			buyLimitAmt = info.getBuyLimitAmt();							// 최대할인율과 최소주문금액은 한 쿠폰에 값이 동일
 			buyLimitAmt = info.getBuyLimitAmt();							// 최대할인율과 최소주문금액은 한 쿠폰에 값이 동일
 			if(TscConstants.DcWay.RATE.value().equals(info.getDcWay())) {	// 할인방식이 할인율이면 각 상품별 할인금액을 따로 계산해야함
 			if(TscConstants.DcWay.RATE.value().equals(info.getDcWay())) {	// 할인방식이 할인율이면 각 상품별 할인금액을 따로 계산해야함
 				int dcAmt = (int) (info.getCurrPrice() * (info.getDcVal() / 100.0));		// 해당상품 할인금
 				int dcAmt = (int) (info.getCurrPrice() * (info.getDcVal() / 100.0));		// 해당상품 할인금
-				info.setCartCpnDcAmt(dcAmt);
 				totDcAmt = totDcAmt + dcAmt;								// 적용 상품 총 할인금액
 				totDcAmt = totDcAmt + dcAmt;								// 적용 상품 총 할인금액
 			} else {														// 할인 방식이 금액일 경우
 			} else {														// 할인 방식이 금액일 경우
 				totDcAmt = info.getDcVal();
 				totDcAmt = info.getDcVal();
@@ -175,6 +202,7 @@ public class TsfCouponService {
 		custCoupon.setPubReason("G068_60");		// 쿠폰 발행사유 (랜덤쿠폰등록)
 		custCoupon.setPubReason("G068_60");		// 쿠폰 발행사유 (랜덤쿠폰등록)
 		custCoupon.setPubReasonDtl(param.getRdCpnNm() + " 쿠폰 등록");
 		custCoupon.setPubReasonDtl(param.getRdCpnNm() + " 쿠폰 등록");
 
 
+		// 트랜잭션을 묶기 위해 dao 직접 호출
 		coreCouponDao.updateGiveRandomCoupon(custCoupon);		// 랜덤쿠폰 CUST_NO UPDATE
 		coreCouponDao.updateGiveRandomCoupon(custCoupon);		// 랜덤쿠폰 CUST_NO UPDATE
 		coreCouponDao.saveCouponCustPub(custCoupon);			// 랜덤쿠폰 고객 지급
 		coreCouponDao.saveCouponCustPub(custCoupon);			// 랜덤쿠폰 고객 지급
 	}
 	}

+ 0 - 5
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -145,11 +145,6 @@ public class TsfCartController extends TsfBaseController {
 		log.info("CHECK IN >> {}", param.getRdCpnNm());
 		log.info("CHECK IN >> {}", param.getRdCpnNm());
 		log.info("CHECK IN >> {}", param.getCartSqArr());
 		log.info("CHECK IN >> {}", param.getCartSqArr());
 
 
-		// TODO 로그인 정보 입력
-		param.setCustNo(1000006);
-		param.setRegNo(1000006);
-		param.setUpdNo(1000006);
-
 		// 시리얼 쿠폰 정보 조회 및 쿠폰 지급 미대상인 경우 쿠폰 지급
 		// 시리얼 쿠폰 정보 조회 및 쿠폰 지급 미대상인 경우 쿠폰 지급
 		Coupon useSerial = couponService.serialCpnApplyInfo(param);
 		Coupon useSerial = couponService.serialCpnApplyInfo(param);
 
 

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

@@ -27,9 +27,9 @@ public class Coupon extends TscBaseDomain {
 	private String rdCpnNm;			// 시리얼쿠폰 키
 	private String rdCpnNm;			// 시리얼쿠폰 키
 	private String usedDt;			// 쿠폰 사용완료 일자
 	private String usedDt;			// 쿠폰 사용완료 일자
 	private String result;			// 결과
 	private String result;			// 결과
-	private String downCanGb;		// 다운로드 가능 구분
 	private String pdGb;			// 기간/일수 구분 (P : 기간, D : 일수)
 	private String pdGb;			// 기간/일수 구분 (P : 기간, D : 일수)
 	private String availStdt;		// 쿠폰 유효일
 	private String availStdt;		// 쿠폰 유효일
 	private String availEddt;		// 쿠폰 유효일
 	private String availEddt;		// 쿠폰 유효일
 	private String endAlimYn;		// 쿠폰 종료 알림 여부
 	private String endAlimYn;		// 쿠폰 종료 알림 여부
+	private String frontGb;			// 화면 구분
 }
 }

+ 8 - 23
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -17,29 +17,11 @@
 	<!-- 시리얼 쿠폰 지급 정보 조회 -->
 	<!-- 시리얼 쿠폰 지급 정보 조회 -->
 	<select id="getSerialCpnUseInfo" parameterType="Coupon" resultType="Coupon">
 	<select id="getSerialCpnUseInfo" parameterType="Coupon" resultType="Coupon">
 		/* TsfCoupon.getSerialCpnUseInfo */
 		/* TsfCoupon.getSerialCpnUseInfo */
-		SELECT CP.CPN_ID
-			 , CP.CPN_NM
-			 , CP.END_ALIM_YN
-			 , RC.RD_CPN_NM
-			 , RC.RD_CPN_ID
-			 , DATE_FORMAT(CC.USED_DT, '%Y-%m-%d %H:%i:%S') AS USED_DT
-		FROM   TB_COUPON CP
-		INNER  JOIN TB_RANDOM_COUPON RC
-		ON     CP.CPN_ID = RC.CPN_ID
-		INNER  JOIN TB_CUST_COUPON CC
-		ON     CP.CPN_ID = CC.CPN_ID
-		LEFT OUTER JOIN (SELECT CC.CPN_ID			<!-- 해당 시리얼키로 다운받은 쿠폰번호를 올려서 제거 (기간이 맞지 않은 다른 쿠폰에서 같은 시리얼키로 쿠폰이 나올 수 있어 ID로 찾아야함) -->
-							  , CC.USED_DT
-						 FROM   TB_CUST_COUPON CC
-						 INNER  JOIN TB_RANDOM_COUPON RC
-						 ON     CC.CPN_ID = RC.CPN_ID
-						 WHERE  RC.RD_CPN_NM =  #{rdCpnNm}
-						 AND    CC.CUST_NO =  #{custNo}
-						 AND    CC.USED_DT IS NOT NULL)  USE_CPN
-		ON     CP.CPN_ID = USE_CPN.CPN_ID
+		SELECT CC.CPN_ID
+			 , DATE_FORMAT(CC.USED_DT, '%Y-%m-%d') AS USED_DT
+		FROM   TB_CUST_COUPON CC
 		WHERE  1=1
 		WHERE  1=1
-		AND    USE_CPN.CPN_ID IS NULL				<!-- 사용한 쿠폰 제거 -->
-		AND    RC.RD_CPN_NM = #{rdCpnNm}
+		AND    CC.CPN_ID = #{cpnId}
 		AND    CC.CUST_NO = #{custNo}
 		AND    CC.CUST_NO = #{custNo}
 	</select>
 	</select>
 
 
@@ -48,7 +30,10 @@
 		/* TsfCoupon.getSearchSerialCpnInfo : 입력된 시리얼 쿠폰 정보 조회 */
 		/* TsfCoupon.getSearchSerialCpnInfo : 입력된 시리얼 쿠폰 정보 조회 */
 		SELECT CP.CPN_ID
 		SELECT CP.CPN_ID
 			 , CP.CPN_NM
 			 , CP.CPN_NM
-		     , CP.END_ALIM_YN
+		     , CP.DC_WAY
+			 , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
+					WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
+					ELSE CP.DC_AVAL END AS DC_VAL
 			 , RC.RD_CPN_NM
 			 , RC.RD_CPN_NM
 		     , RC.RD_CPN_ID
 		     , RC.RD_CPN_ID
 			 , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S')
 			 , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S')