Selaa lähdekoodia

Merge branch 'develop' into jsshin

jsshin 5 vuotta sitten
vanhempi
commit
8fa43cef80

+ 22 - 0
src/main/java/com/style24/core/biz/dao/NetpathyMailDao.java

@@ -1,7 +1,11 @@
 package com.style24.core.biz.dao;
 
+import java.util.Collection;
+
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.MailTemplate;
+import com.style24.persistence.domain.MailTemplateCorner;
+import com.style24.persistence.domain.MailTemplateGoods;
 import com.style24.persistence.domain.Netpathy;
 
 /**
@@ -22,6 +26,24 @@ public interface NetpathyMailDao {
 	 */
 	MailTemplate getMailTemplate(Integer mailtSq);
 
+	/**
+	 * 메일템플릿코너 목록
+	 * @param mailtSq - 메일템플릿일련번호
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 11
+	 */
+	Collection<MailTemplateCorner> getMailTemplateCornerList(Integer mailtSq);
+
+	/**
+	 * 메일템플릿코너상품 목록
+	 * @param mailtcSq - 메일템플릿코너일련번호
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 11
+	 */
+	Collection<MailTemplateGoods> getMailTemplateCornerGoodsList(Integer mailtcSq);
+
 	/**
 	 * 메일 생성
 	 * @param netpathy - 넷퍼시메일 정보

+ 3 - 3
src/main/java/com/style24/core/biz/service/TscOrderRefundService.java

@@ -174,7 +174,7 @@ public class TscOrderRefundService {
 				// 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
 				cancelDelvRefundList.get(k).setPntDcAmt(cancelDelvRefundList.get(k).getPntDcAmt() + orderObj.getPntDcAmt());
 				cancelDelvRefundList.get(k).setPrePntDcAmt(cancelDelvRefundList.get(k).getPrePntDcAmt() + orderObj.getPrePntDcAmt());
-				cancelDelvRefundList.get(k).setCpn1CpnSq(cancelDelvRefundList.get(k).getCpn1DcAmt() + orderObj.getCpn1DcAmt());
+				cancelDelvRefundList.get(k).setCpn1DcAmt(cancelDelvRefundList.get(k).getCpn1DcAmt() + orderObj.getCpn1DcAmt());
 				cancelDelvRefundList.get(k).setGoodsCpnDcAmt(cancelDelvRefundList.get(k).getGoodsCpnDcAmt() + orderObj.getGoodsCpnDcAmt());
 				cancelDelvRefundList.get(k).setCartCpnDcAmt(cancelDelvRefundList.get(k).getCartCpnDcAmt() + orderObj.getCartCpnDcAmt());
 				cancelDelvRefundList.get(k).setTmtb1DcAmt(cancelDelvRefundList.get(k).getTmtb1DcAmt() + orderObj.getTmtb1DcAmt());
@@ -243,9 +243,9 @@ public class TscOrderRefundService {
 		// 4. 추가배송비 발생여부, 추가배송비, 배송비정책단위 전체취소 여부 체크
 		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
 			Order obj = cancelDelvRefundList.get(i);
-			
+
 			// 주문금액 - 기취소 금액 - 취소요청금액
-			int leftOrdAmt = obj.getOrdAmt() - obj.getOrgCnclRtnAmt() - obj.getCnclRtnAmt();
+			int leftOrdAmt = (obj.getOrdAmt() + obj.getCpn1DcAmt()) - obj.getOrgCnclRtnAmt() - obj.getCnclRtnAmt();
 
 			// 취소금액이 있을때 처리
 			if (obj.getCnclRtnAmt() > 0) {

+ 22 - 0
src/main/java/com/style24/core/biz/thirdparty/NetpathyMailSender.java

@@ -1,6 +1,7 @@
 package com.style24.core.biz.thirdparty;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import javax.annotation.PostConstruct;
@@ -13,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.core.biz.dao.NetpathyMailDao;
 import com.style24.persistence.domain.MailTemplate;
+import com.style24.persistence.domain.MailTemplateCorner;
 import com.style24.persistence.domain.Netpathy;
 
 import lombok.extern.slf4j.Slf4j;
@@ -103,8 +105,28 @@ public class NetpathyMailSender {
 	@Cacheable(value = "mailTemplate", key = "#mailtSq")
 	public MailTemplate getMailTemplate(Integer mailtSq, GagaMap replaceInfo) {
 		MailTemplate mailTemplate = netpathyDao.getMailTemplate(mailtSq);
+
 		mailTemplate.setMailtNm(GagaStringUtil.replace(this.mergeData(mailTemplate.getMailtNm(), replaceInfo), "&gt;", ">"));
+		mailTemplate.setMailhContent(GagaStringUtil.replace(this.mergeData(mailTemplate.getMailhContent(), replaceInfo), "&gt;", ">"));
+		mailTemplate.setMailfContent(GagaStringUtil.replace(this.mergeData(mailTemplate.getMailfContent(), replaceInfo), "&gt;", ">"));
+
+		// 마케팅메일이면
+		if (mailTemplate.getMailtGb().equals("M")) {
+			// 메일템플릿코너 목록
+			Collection<MailTemplateCorner> mtcList = netpathyDao.getMailTemplateCornerList(mailtSq);
+
+			if (mtcList != null && !mtcList.isEmpty()) {
+				for (MailTemplateCorner mtc : mtcList) {
+					// 메일템플릿코너상품 목록
+					mtc.setMailtcGoodsList(netpathyDao.getMailTemplateCornerGoodsList(mtc.getMailtcSq()));
+				}
+			}
+
+//			replaceInfo.setString("", mtc)
+		}
+
 		mailTemplate.setMailContent(GagaStringUtil.replace(this.mergeData(mailTemplate.getMailContent(), replaceInfo), "&gt;", ">"));
+
 		return mailTemplate;
 	}
 

+ 6 - 0
src/main/java/com/style24/persistence/domain/MailTemplate.java

@@ -1,5 +1,7 @@
 package com.style24.persistence.domain;
 
+import java.util.Collection;
+
 import com.style24.persistence.TscBaseDomain;
 
 import lombok.Data;
@@ -27,7 +29,11 @@ public class MailTemplate extends TscBaseDomain {
 	private String mailtNm;			// 메일템플릿명
 	private String mailtGb;			// 메일템플릿구분(A:자동메일, M:마케팅메일)
 	private Integer mailhSq;		// 메일헤더일련번호
+	private String mailhContent;	// 메일헤더내용
 	private Integer mailfSq;		// 메일푸터일련번호
+	private String mailfContent;	// 메일푸터내용
 	private String mailContent;		// 메일내용
 
+	Collection<MailTemplateCorner> mailtcList;	// 메일템플릿코너 목록
+
 }

+ 28 - 0
src/main/java/com/style24/persistence/domain/MailTemplateCorner.java

@@ -0,0 +1,28 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 메일템플릿코너 Domain
+ *
+ * @author gagamel
+ * @since 2021. 5. 11
+ */
+@SuppressWarnings("serial")
+@Data
+public class MailTemplateCorner extends TscBaseDomain {
+
+	private Integer mailtcSq;	// 메일템플릿코너번호
+	private Integer mailtSq;	// 메일템플릿일련번호
+	private String mailtcNm;	// 메일템플릿코너명
+	private Integer goodsCpr;	// 상품노출건수(한 행에 노출될 상품개수)
+	private String mailtcLink;	// 메일템플릿코너링크
+	private String useYn;		// 사용여부
+
+	Collection<MailTemplateGoods> mailtcGoodsList;	// 메일템플릿코너상품 목록
+
+}

+ 28 - 0
src/main/java/com/style24/persistence/domain/MailTemplateGoods.java

@@ -0,0 +1,28 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 메일템플릿코너상품 Domain
+ *
+ * @author gagamel
+ * @since 2021. 5. 11
+ */
+@SuppressWarnings("serial")
+@Data
+public class MailTemplateGoods extends TscBaseDomain {
+
+	private Integer mailtcSq;	// 메일템플릿코너일련번호
+	private String goodsCd;		// 상품코드
+	private int dispOrd;		// 표시순서
+
+	private String brandNm;		// 브랜드명
+	private String goodsNm;		// 상품명
+	private String goodsStat;	// 판매상태
+	private String listPrice;	// 정상가
+	private String currPrice;	// 판매가
+	private String sysImgNm;	// 이미지정보
+
+}

+ 43 - 7
src/main/java/com/style24/persistence/mybatis/shop/NetpathyMail.xml

@@ -5,14 +5,50 @@
 	<!-- 메일템플릿 조회 -->
 	<select id="getMailTemplate" parameterType="Integer" resultType="MailTemplate">
 		/* NetpathyMail.getMailTemplate */
-		SELECT MAILT_SQ     /*메일템플릿일련번호*/
-		     , MAILT_GB     /*메일템플릿구분*/
-		     , MAILH_SQ     /*메일템플릿헤더일련번호*/
-		     , MAILF_SQ     /*메일템플릿푸터일련번호*/
-		     , MAILT_NM     /*메일템플릿명*/
-		     , MAIL_CONTENT /*메일내용*/
-		FROM   TB_MAILT
+		SELECT A.MAILT_GB                        /*메일템플릿구분*/
+		     , A.MAILT_NM                        /*메일템플릿명*/
+		     , B.MAILHF_CONTENT AS MAILH_CONTENT /*헤더내용*/
+		     , C.MAILHF_CONTENT AS MAILF_CONTENT /*푸터내용*/
+		     , A.MAIL_CONTENT                    /*메일내용*/
+		FROM   TB_MAILT A
+		     , TB_MAILHF B
+		     , TB_MAILHF C
+		WHERE  A.MAILH_SQ = B.MAILHF_SQ /*헤더*/
+		AND    A.MAILF_SQ = C.MAILHF_SQ /*푸터*/
+		AND    A.MAILT_SQ = #{mailtSq}
+	</select>
+	
+	<!-- 메일템플릿코너 목록 -->
+	<select id="getMailTemplateCornerList" parameterType="Integer" resultType="MailTemplateCorner">
+		/* NetpathyMail.getMailTemplateCornerList */
+		SELECT MAILTC_SQ   /*메일템플릿코너일련번호*/
+		     , MAILT_SQ    /*메일템플릿일련번호*/
+		     , MAILTC_NM   /*메일템플릿코너명*/
+		     , GOODS_CPR   /*상품노출건수*/
+		     , MAILTC_LINK /*메일템플릿코너링크*/
+		FROM   TB_MAILTC
 		WHERE  MAILT_SQ = #{mailtSq}
+		AND    USE_YN = 'Y' /*사용하는넘만*/
+	</select>
+	
+	<!-- 메일템플릿코너상품 목록 -->
+	<select id="getMailTemplateCornerGoodsList" parameterType="Integer" resultType="MailTemplateGoods">
+		/* NetpathyMail.getMailTemplateCornerGoodsList */
+		SELECT M.MAILTC_SQ             /*메일템플릿코너일련번호*/
+		     , M.GOODS_CD              /*상품코드*/
+		     , B.BRAND_ENM AS BRAND_NM /*브랜드명*/
+		     , G.GOODS_NM              /*상품명*/
+		     , G.GOODS_STAT            /*상품상태*/
+		     , G.LIST_PRICE            /*정상가*/
+		     , G.CURR_PRICE            /*현재판매가*/
+		     , M.DISP_ORD              /*노출순서*/
+		FROM   TB_MAILTC_GOODS M
+		     , TB_GOODS G
+		     , TB_BRAND B
+		WHERE  M.GOODS_CD = G.GOODS_CD
+		AND    G.BRAND_CD = B.BRAND_CD
+		AND    M.MAILTC_SQ = #{mailtcSq}
+		ORDER  BY M.DISP_ORD
 	</select>
 	
 	<!-- 메일 생성 -->

+ 110 - 2
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -212,6 +212,8 @@
 			             , A.RECIP_ADDR
 			             , A.DELV_MEMO
 			             , A.DSTRBT_NOTE
+			             , A.RETURNABLE_YN
+			             , A.CHANGEABLE_YN
 			          FROM (SELECT O.ORD_NO
 			                     , OD.ORD_DTL_NO
 			                     , ODI.ORD_DTL_ITEM_SQ
@@ -267,6 +269,8 @@
 			                     , CONCAT(DA.RECIP_BASE_ADDR, ' ', DA.RECIP_DTL_ADDR) AS RECIP_ADDR 
 			                     , DA.DELV_MEMO
 			                     , OD.DSTRBT_NOTE
+			                     , OD.RETURNABLE_YN
+			                     , OD.CHANGEABLE_YN
 			                  FROM TB_ORDER O
 			                 INNER JOIN TB_ORDER_DETAIL OD
 			                    ON O.ORD_NO = OD.ORD_NO
@@ -452,6 +456,8 @@
 			                   , A.RECIP_ADDR
 			                   , A.DELV_MEMO
 			                   , A.DSTRBT_NOTE
+			                   , A.RETURNABLE_YN
+			                   , A.CHANGEABLE_YN
 			       ) Z
 			       JOIN (SELECT @rownum := 0) R
 			       ORDER BY Z.ORD_NO DESC
@@ -585,6 +591,9 @@
 		     , A.INVOICE_NO
 		     , A.DELV_LOC_CD
 		     , A.DELV_ADDR_SQ
+		     , A.RETURNABLE_YN
+		     , A.CHANGEABLE_YN
+		     , A.DELV_FEE_CD
 		FROM (
 			SELECT OD.ORD_NO
 		         , CASE WHEN OD.ORD_EXCH_GB = 'O'
@@ -652,6 +661,9 @@
 		         , OD.INVOICE_NO
 		         , OD.DELV_LOC_CD
 		         , OD.DELV_ADDR_SQ
+		         , OD.RETURNABLE_YN
+		         , OD.CHANGEABLE_YN
+		         , OD.DELV_FEE_CD
 		      FROM TB_ORDER O
 		     INNER JOIN TB_ORDER_DETAIL OD
 		        ON O.ORD_NO = OD.ORD_NO
@@ -746,6 +758,9 @@
 		     , A.INVOICE_NO
 		     , A.DELV_LOC_CD
 		     , A.DELV_ADDR_SQ
+		     , A.RETURNABLE_YN
+		     , A.CHANGEABLE_YN
+		     , A.DELV_FEE_CD
 	</select>
 
 	<!-- 주문상세 > 사은품목록 -->
@@ -2115,16 +2130,51 @@
 	<!-- 배송비쿠폰 조회 -->
 	<select id="getDelvCpnList" parameterType="Order" resultType="Order">
 		/* TscOrder.getDelvCpnList */
+		WITH GOODS_DATA AS (
+		    SELECT CA.GOODS_CD
+		         , G.SUPPLY_COMP_CD
+		         , G.BRAND_CD
+		         , CA.CART_SQ
+		         , (FN_GET_APPLY_CPN1_PRICE(CA.GOODS_CD, #{frontGb}) + IFNULL(OP.ADD_PRICE, 0)) * CA.GOODS_QTY AS CURR_PRICE
+		    FROM   TB_CART CA
+		    INNER  JOIN TB_CART_DETAIL CD
+		    ON     CA.CART_SQ = CD.CART_SQ
+		    INNER  JOIN TB_GOODS G
+		    ON     CA.GOODS_CD = G.GOODS_CD
+		    LEFT   OUTER JOIN ( SELECT OP.ADD_PRICE
+		                             , C.CART_SQ
+		                        FROM   TB_CART C
+		                        INNER  JOIN TB_CART_DETAIL CD
+		                        ON     C.CART_SQ = CD.CART_SQ
+		                        INNER  JOIN TB_OPTION OP
+		                        ON     C.GOODS_CD = OP.GOODS_CD
+		                        AND    CD.OPT_CD = OP.OPT_CD
+		    ) OP
+		    ON     CA.CART_SQ = OP.CART_SQ
+		    WHERE  1=1
+			<if test="custNo == 0">
+		    AND    CA.CUST_NO = 0
+		    AND    CA.JSESSION_ID = #{jsessionId}
+			</if>
+			<if test="custNo != 0">
+		    AND    CA.CUST_NO = #{custNo}
+			</if>
+		    AND    CA.CART_SQ IN
+			<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		)
 		SELECT CP.CPN_ID
 		     , CP.CPN_NM
 		     , CP.CPN_TYPE
 		     , 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
+		            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
+		            ELSE CP.DC_AVAL END AS DC_VAL
 		     , CP.MAX_DC_AMT
 		     , CP.BUY_LIMIT_AMT
 		     , CCP.CUST_CPN_SQ
+		     , CP.APPLY_SCOPE
 		FROM   TB_COUPON CP
 		INNER  JOIN TB_COUPON_CUST_GRADE CGR
 		ON     CP.CPN_ID = CGR.CPN_ID
@@ -2136,6 +2186,28 @@
 		INNER  JOIN TB_COUPON_CUST_GBN CGB
 		ON     CP.CPN_ID = CGB.CPN_ID
 		AND    CGB.USABLE_CUST_GB = CT.CUST_GB
+		INNER  JOIN (
+	        SELECT X.*
+	        FROM (
+	            SELECT CR2.CPN_ID
+	                 , GD.GOODS_CD
+	                 , GD.CART_SQ
+	                 , GD.CURR_PRICE
+	            FROM   GOODS_DATA GD
+	            INNER  JOIN TB_COUPON_REFVAL CR2 
+	            ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
+	            AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
+	            AND    CR2.DEL_YN = 'N'
+	        ) X
+	        LEFT   OUTER JOIN TB_COUPON_REFVAL CR
+	        ON     X.CPN_ID = CR.CPN_ID
+	        AND    X.GOODS_CD = CR.REF_VAL 
+	        AND    CR.CPN_TARGET = 'G260_14' -- 제외상품
+	        AND    CR.DEL_YN = 'N'
+	        WHERE  1=1
+	        AND    CR.REF_VAL IS NULL
+		) Z
+		ON     Z.CPN_ID = CP.CPN_ID
 		WHERE  1=1
 		AND    CP.SITE_CD = 'G000_10'
 		AND    CP.CPN_STAT = 'G232_11' -- 진행쿠폰
@@ -2144,6 +2216,42 @@
 		AND    CCP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
 		AND    CCP.AVAIL_EDDT > CURRENT_TIMESTAMP
 		AND    CT.CUST_NO = #{custNo}
+		AND    CP.APPLY_SCOPE = 'I'
+		UNION  ALL
+		SELECT CP.CPN_ID
+		     , CP.CPN_NM
+		     , CP.CPN_TYPE
+		     , 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
+		     , CP.MAX_DC_AMT
+		     , CP.BUY_LIMIT_AMT
+		     , CCP.CUST_CPN_SQ
+		     , CP.APPLY_SCOPE
+		FROM   TB_COUPON CP
+		INNER  JOIN TB_COUPON_CUST_GRADE CGR
+		ON     CP.CPN_ID = CGR.CPN_ID
+		INNER  JOIN TB_CUST_COUPON CCP
+		ON     CP.CPN_ID = CCP.CPN_ID
+		INNER  JOIN TB_CUSTOMER CT
+		ON     CCP.CUST_NO = CT.CUST_NO
+		AND    CGR.USABLE_CUST_GRADE = CT.CUST_GRADE
+		INNER  JOIN TB_COUPON_CUST_GBN CGB
+		ON     CP.CPN_ID = CGB.CPN_ID
+		AND    CGB.USABLE_CUST_GB = CT.CUST_GB
+		WHERE  1=1
+		<if test="cpnId != null and cpnId != 0">
+		AND    CP.CPN_ID = #{cpnId}
+		</if>
+		AND    CP.SITE_CD = 'G000_10'
+		AND    CP.CPN_STAT = 'G232_11'				-- 진행쿠폰
+		AND    CP.CPN_TYPE = 'G230_30'				-- 배송비쿠폰
+		AND    CCP.USED_DT IS NULL
+		AND    CCP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP
+		AND    CCP.AVAIL_EDDT > CURRENT_TIMESTAMP
+		AND    CT.CUST_NO = #{custNo}
+		AND    CP.APPLY_SCOPE = 'A'
 	</select>
 	
 	<!-- 장바구니쿠폰 가능결제수단목록조회 -->

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/wms/TscWmsDelivery.xml

@@ -98,10 +98,10 @@
 	<!-- WMS 배송상세 취소  -->
 	<update id="updateWmsIfDeliveryOrderItemCancel" parameterType="WmsDelivery">
 		/* TscWmsDelivery.updateWmsIfDeliveryOrderItemCancel */
-			UPDATE istyle24_Wmsif.dbo.TB_IF_DeliveryOrderItem A SET
+			UPDATE istyle24_Wmsif.dbo.TB_IF_DeliveryOrderItem  SET
 			  StatusCd = CASE WHEN (Qty - Cqty) = #{itemQty} THEN '60' ELSE StatusCd END 
 			, IsCancel = CASE WHEN (Qty - Cqty) = #{itemQty} THEN 1    ELSE IsCancel END 
-			, Cqty     = CASE WHEN (SELECT COUNT(*) FROM istyle24_Wmsif.dbo.TB_IF_RecallExceptionItem B WHERE A.DeliveryOrderItemNo = B.DeliveryOrderItemNo AND B.ReasonCode IN ('08','10') ) > 0 THEN Cqty ELSE  Cqty + #{itemQty} END 
+			, Cqty     = CASE WHEN (SELECT COUNT(*) FROM istyle24_Wmsif.dbo.TB_IF_RecallExceptionItem B WHERE DeliveryOrderItemNo = B.DeliveryOrderItemNo AND B.ReasonCode IN ('08','10') ) > 0 THEN Cqty ELSE  Cqty + #{itemQty} END 
 			WHERE 1=1
 			  <if test='ordDtlNo != null and ordDtlNo != ""'>
 			  AND OrderDtlNo = #{ordDtlNo}