Sfoglia il codice sorgente

주문서개발중

jsh77b 5 anni fa
parent
commit
c8d60104e2

+ 34 - 0
src/main/java/com/style24/core/biz/dao/TscOrderDao.java

@@ -526,6 +526,40 @@ public interface TscOrderDao {
 	 */
 	int createOrderDetailItemHst(Order order);
 	
+	/**
+	 * 8. 주문사은품 마스터 정보 등록
+	 *
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 03. 09
+	 */
+	int createOrdFreegift(Order order);
+	
+	/**
+	 * 9. 주문사은품 상품 정보 등록
+	 *
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 03. 09
+	 */
+	int createOrdFreegiftVal(Order order);
+	
+	/**
+	 * 10. 주문사은품 주문상세 정보 등록
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 03. 09
+	 */
+	int createOrdFreegiftDtl(Order order);
+	
+	
+	
+	
+	
+	
 	
 	
 	

+ 51 - 13
src/main/java/com/style24/core/biz/service/TscFreegiftService.java

@@ -47,19 +47,56 @@ public class TscFreegiftService {
 		Collection<Order> freegiftList 			= null;
 		
 		// 1. 장바구니 담긴 상품으로 적용된 사은품 프로모션 정보 조회 (with 상품금액)
-		Collection<Order> fregiftGoodsApplyAmtList = freegiftDao.getFreeGiftGoodsApplyAmt(order);
+		Collection<Order> freegiftApplyAmtList = freegiftDao.getFreeGiftGoodsApplyAmt(order);
 		
 		// 1.1 장바구니 상품으로 적용된 사은품 여부 판단
-		if (fregiftGoodsApplyAmtList.size() > 0) {
-			int[] freegiftSqArr = new int[fregiftGoodsApplyAmtList.size()];
+		if (freegiftApplyAmtList.size() > 0) {
 			
-			int i = 0;
-			int tempFreegiftSq = 0;
+			Collection<Order> freegiftGoodsApplyAmtList = new ArrayList<Order>();
+			int tempFreegiftSq 		= 0;
+			int tempGoodsApplyAmt 	= 0;
+			int index				= 0;
+			boolean	temp			 = false;
+			
+			// 사은품시퀀스 담기
+			for (Order freegiftApplyAmt : freegiftApplyAmtList) {
+				temp = true;
+				if (freegiftGoodsApplyAmtList.size() > 0) {
+					for (Order freegiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
+						if (freegiftApplyAmt.getFreegiftSq() == freegiftGoodsApplyAmt.getFreegiftSq()) {
+							temp = false;
+						}
+					}
+					
+					if (temp) {
+						freegiftGoodsApplyAmtList.add(freegiftApplyAmt);
+					}
+				} else {
+					freegiftGoodsApplyAmtList.add(freegiftApplyAmt);
+				}
+			}
+			
+			// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
+			for (Order freegiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
+				// 금액초기화
+				freegiftGoodsApplyAmt.setFreegiftAmt(0);
+				
+				for (Order freegiftApplyAmt : freegiftApplyAmtList) {
+					int ordAmt = (freegiftApplyAmt.getCurrPrice() + freegiftApplyAmt.getOptAddPrice()) * freegiftApplyAmt.getGoodsQty();
+					if (freegiftGoodsApplyAmt.getFreegiftSq() == freegiftApplyAmt.getFreegiftSq()) {
+						freegiftGoodsApplyAmt.setFreegiftAmt(freegiftGoodsApplyAmt.getFreegiftAmt() + ordAmt);
+					}
+				}
+			}
+			
+			// 사은품시퀀스배열생성
+			int[] freegiftSqArr = new int[freegiftGoodsApplyAmtList.size()];
+			index = 0;
 			
 			// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
-			for (Order fregiftGoodsApplyAmt : fregiftGoodsApplyAmtList) {
-				freegiftSqArr[i] = fregiftGoodsApplyAmt.getFreegiftSq();
-				i++;
+			for (Order fregiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
+				freegiftSqArr[index] = fregiftGoodsApplyAmt.getFreegiftSq();
+				index++;
 			}
 			
 			order.setFreegiftSqArr(freegiftSqArr);
@@ -75,8 +112,8 @@ public class TscFreegiftService {
 				int k = 0;
 				
 				// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
-				for (Order fregiftGoodsApplyAmt : fregiftGoodsApplyAmtList) {
-					int freegiftAmt 	= fregiftGoodsApplyAmt.getFreegiftAmt();
+				for (Order freegiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
+					int freegiftAmt 	= freegiftGoodsApplyAmt.getFreegiftAmt();
 					
 					// 사은풐구간시퀀스(FREEGIFT_SECTION_SQ, 사은품시퀀스(FREEGIFT_SQ), 사은풐구간금액(SECTION_VAL)
 					for (Order freegiftGoodsApplySection : freegiftGoodsApplySectionList) {
@@ -84,7 +121,7 @@ public class TscFreegiftService {
 						int sectionVal 			= freegiftGoodsApplySection.getSectionVal();
 						
 						// 같은 사은품 프로모션끼리 등록
-						if (fregiftGoodsApplyAmt.getFreegiftSq() == freegiftGoodsApplySection.getFreegiftSq()) {
+						if (freegiftGoodsApplyAmt.getFreegiftSq() == freegiftGoodsApplySection.getFreegiftSq()) {
 							if (freegiftAmt > sectionVal) {
 								tempFreegiftSectionSq = freegiftSectionSq;
 							}
@@ -115,8 +152,9 @@ public class TscFreegiftService {
 			}
 		}
 		
-		resultMap.set("freegiftGoodsList"	, freegiftGoodsList);
-		resultMap.set("freegiftList"		, freegiftList);
+		resultMap.set("freegiftApplyAmtList"		, freegiftApplyAmtList);
+		resultMap.set("freegiftGoodsList"			, freegiftGoodsList);
+		resultMap.set("freegiftList"				, freegiftList);
 		
 		return resultMap;
 	}

+ 1 - 1
src/main/java/com/style24/core/biz/service/TscKcpService.java

@@ -69,7 +69,7 @@ public class TscKcpService {
 		}
 
 		// 05. 실행
-		if (result.getTranCd().length() > 0) {
+		if (result.getTranCd().length() > 0) {			
 			c_PayPlus.mf_do_tx(env.getProperty("pg.kcp.site.cd"), env.getProperty("pg.kcp.site.key"), result.getTranCd(), "", result.getOrdNo() + "", env.getProperty("pg.kcp.log.level"), "0");
 		} else {
 			c_PayPlus.m_res_cd  = "9562";

+ 15 - 0
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -1382,6 +1382,21 @@ public class TscOrderService {
 			}
 		}
 		
+		// 5. 주문사은품정보등록
+		order.setOrdDtlStat(TscConstants.OrderDetailStat.ORDER_RECEIPT.value());
+		orderDao.createOrdFreegift(order);
+		
+		// 6. 주문사은품 상품 정보 등록
+		orderDao.createOrdFreegiftVal(order);
+		
+		// 7. 주문사은품 주문상세정보 등록
+		for(int i = 0 ; i < order.getFreegiftGoodsArr().length ; i++) {
+			order.setFreegiftSq(order.getFreegiftSqArr()[i]);
+			order.setGoodsCd(order.getFreegiftGoodsArr()[i]);
+			
+			orderDao.createOrdFreegiftDtl(order);
+		}
+		
 		
 		
 		

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

@@ -565,7 +565,10 @@ public class Order extends TscBaseDomain {
 	
 	// 주묹정보등록
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] freegiftValArr;			// 다다익선 일련번호
+	private int[] freegiftValArr;			// 사은품상품 일련번호
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] freegiftGoodsArr;		// 사은품장바구니 일련번호
+	
 	private String prePntDcAmtYn; 			// 선포인트사용여부
 	Collection<Order> orderDetailList;		// 주문상세목록
 	Collection<Order> delvFeeCdList;		// 배송정보목록

+ 6 - 6
src/main/java/com/style24/persistence/mybatis/shop/TscFreegift.xml

@@ -13,6 +13,7 @@
 			     , FN_GET_APPLY_CPN1_PRICE(CA.GOODS_CD, 'P') AS CURR_PRICE -- 즉시할인 쿠폰 적용가
 			     , OP.ADD_PRICE -- 옵션가
 			     , G.GOODS_TYPE
+			     , CA.CART_SQ
 			FROM   TB_CART CA
 			INNER  JOIN TB_CART_DETAIL CD
 			ON     CA.CART_SQ = CD.CART_SQ
@@ -35,7 +36,10 @@
 			</foreach>
 		)
 		SELECT FGG.FREEGIFT_SQ
-		     , SUM(IFNULL((FGG.CURR_PRICE + FGG.ADD_PRICE) * FGG.GOODS_QTY, 0)) FREEGIFT_AMT
+		     , FGG.GOODS_CD
+		     , FGG.CURR_PRICE
+		     , IFNULL(FGG.ADD_PRICE, 0) AS OPT_ADD_PRICE 
+		     , FGG.GOODS_QTY
 		FROM   TB_FREEGIFT FG
 		INNER  JOIN (
 			SELECT FGG.FREEGIFT_SQ
@@ -59,14 +63,10 @@
 			FROM   GOODS_DATA GD
 			INNER  JOIN TB_FREEGIFT_GOODS_APPLY FGG1
 			ON     GD.SUPPLY_COMP_CD = FGG1.TARGET_VAL
-			-- AND    FGG1.GOODS_GB = 'G800_20' -- 적용상품
 			AND    FGG1.TARGET_GB= 'G260_13' -- 공급처
-			-- AND    FGG1.DEL_YN = 'N'
 			INNER  JOIN TB_FREEGIFT_GOODS_APPLY FGG2
 			ON     GD.BRAND_CD = FGG2.TARGET_VAL
-			-- AND    FGG2.GOODS_GB = 'G800_20' -- 적용상품
 			AND    FGG2.TARGET_GB= 'G260_12' -- 브랜드
-			-- AND    FGG2.DEL_YN = 'N'
 		) FGG
 		ON     FG.FREEGIFT_SQ = FGG.FREEGIFT_SQ 
 		LEFT   OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY_GOODS
@@ -80,7 +80,7 @@
 		AND    FG.FREEGIFT_STAT = 'G232_11' -- 진행
 		AND    FG.FREEGIFT_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
 		AND    FG.FREEGIFT_EDDT > CURRENT_TIMESTAMP
-		GROUP  BY FGG.FREEGIFT_SQ
+		ORDER  BY FGG.FREEGIFT_SQ
 	</select>
 	
 	<!-- 사은품 : 2차조건 적용된 사은품상품금액 구간정보조회 -->

+ 123 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -2731,6 +2731,129 @@
 		   AND ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
 	</insert>
 	
+	<!-- 8. 주문사은품 마스터 정보 등록 -->
+	<insert id="createOrdFreegift" parameterType="Order">
+		/* TscOrder.createOrdFreegift */
+		INSERT INTO TB_ORD_FREEGIFT (
+		    ORD_NO
+		    , FREEGIFT_SQ
+		    , DEL_YN
+		    , REG_NO
+		    , REG_DT
+		    , UPD_NO
+		    , UPD_DT
+		)
+		SELECT #{ordNo}
+		     , FG.FREEGIFT_SQ
+		     , 'N' 
+		     , #{custNo}
+		     , NOW()
+		     , #{custNo}
+		     , NOW()
+		FROM   TB_FREEGIFT_VAL FGV
+		INNER  JOIN TB_FREEGIFT FG
+		ON     FGV.FREEGIFT_SQ = FG.FREEGIFT_SQ
+		WHERE  1=1
+		AND    FREEGIFT_VAL_SQ IN
+		<foreach collection="freegiftValArr" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+		</foreach> 
+		GROUP  BY FREEGIFT_SQ
+	</insert>
+	
+	<!-- 9. 주문사은품 상품 정보 등록 -->
+	<insert id="createOrdFreegiftVal" parameterType="Order">
+		/* TscOrder.createOrdFreegiftVal */
+		INSERT INTO TB_ORD_FREEGIFT_VAL (
+		    ORD_FREEGIFT_SQ
+		    , ORD_NO
+		    , FREEGIFT_SQ
+		    , FREEGIFT_VAL_SQ
+		    , ORD_DTL_STAT
+		    , USE_POINT
+		    , ITEM_QTY
+		    , PRODUCT_NO
+		    , PRODUCT_CODE
+		    , GOODS_NUM
+		    , BRAND_CD
+		    , DEL_YN
+		    , REG_NO
+		    , REG_DT
+		    , UPD_NO
+		    , UPD_DT
+		)
+		SELECT OFG.ORD_FREEGIFT_SQ 
+		    , #{ordNo}
+		    , FGV.FREEGIFT_SQ
+		    , FGV.FREEGIFT_VAL_SQ
+		    , #{ordDtlStat}
+		    , CASE WHEN FG.ALL_YN IN ('Y')
+		           THEN 0
+		           ELSE FGV.USE_POINT
+		           END USE_POINT
+		    , FGV.ITEM_QTY
+		    , FGV.PRODUCT_NO
+		    , FRG.PRODUCT_CODE
+		    , FRG.GOODS_NUM
+		    , FRG.BRAND_CD
+		    , 'N'
+		    , #{custNo}
+		    , NOW()
+		    , #{custNo}
+		    , NOW()
+		FROM   TB_FREEGIFT_VAL FGV
+		INNER  JOIN TB_FREEGIFT FG
+		ON     FGV.FREEGIFT_SQ = FG.FREEGIFT_SQ
+		INNER  JOIN TB_FREE_GOODS FRG
+		ON     FGV.PRODUCT_NO = FRG.PRODUCT_NO
+		INNER  JOIN TB_ORD_FREEGIFT OFG
+		ON     FGV.FREEGIFT_SQ = OFG.FREEGIFT_SQ
+		WHERE  1=1
+		AND    OFG.ORD_NO = #{ordNo}
+		AND    FGV.FREEGIFT_VAL_SQ IN
+		<foreach collection="freegiftValArr" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+		</foreach> 
+	</insert>
+	
+	<!-- 10. 주문사은품 주문상세 정보 등록 -->
+	<insert id="createOrdFreegiftDtl" parameterType="Order">
+		/* TscOrder.createOrdFreegiftDtl */
+		INSERT INTO TB_ORD_FREEGIFT_DTL (
+		    ORD_FREEGIFT_SQ
+		    , FREGIFT_SQ
+		    , ORD_NO
+		    , ORD_DTL_NO
+		    , DEL_YN
+		    , REG_NO
+		    , REG_DT
+		    , UPD_NO
+		    , UPD_DT
+		)
+		SELECT OFR.ORD_FREEGIFT_SQ
+		     , OFR.FREEGIFT_SQ
+		     , OD.ORD_NO
+		     , OD.ORD_DTL_NO
+		     , 'N'
+		     , #{custNo}
+		     , NOW()
+		     , #{custNo}
+		     , NOW()
+		FROM   TB_ORDER_DETAIL OD
+		INNER  JOIN TB_ORD_FREEGIFT OFR
+		ON     OD.ORD_NO = OFR.ORD_NO
+		INNER  JOIN TB_ORD_FREEGIFT_VAL OFV
+		ON     OFR.ORD_FREEGIFT_SQ = OFV.ORD_FREEGIFT_SQ
+		WHERE  1=1
+		AND    OD.GOODS_CD = #{goodsCd}
+		AND    OFR.FREEGIFT_SQ = #{freegiftSq}
+		AND    OD.ORD_NO = #{ordNo}
+		GROUP  BY OD.ORD_DTL_NO
+		     , OFR.FREEGIFT_SQ 
+		     , OFR.ORD_FREEGIFT_SQ 
+	</insert>
+
+	
 	
 	
 </mapper>