From 97dc5a83dc41301e7ff497d2e74cfe886cabbb73 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期五, 11 一月 2019 08:58:42 +0800
Subject: [PATCH] 订单优化

---
 fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml |  161 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 129 insertions(+), 32 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml b/fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
index f6d67f6..4a24160 100644
--- a/fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
+++ b/fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
@@ -304,16 +304,28 @@
 
 	<select id="listUserOrder" resultMap="ResultMap">   
 	    <!-- 鏌ヨ鐢ㄦ埛璁㈠崟 -->
-		SELECT COALESCE(SUM(hb.`hb_money`),0)AS totalMoney,hb.hb_state AS hongBaoState,hb.hb_type AS hongBaoType,
-		 	hb.hb_get_time AS accountTime,hb.hb_get_time AS accountTime,hb.hb_pre_get_time AS preAccountTime,co.*
+		SELECT COALESCE(SUM(IF(hb.hb_id IS NULL,hbp.`hb_money`,hb.`hb_money`)),0)AS totalMoney,
+				IF(hb.hb_id IS NULL,hbp.`hb_state`,hb.hb_state) AS hongBaoState,
+				IF(hb.hb_id IS NULL,hbp.`hb_type`,hb.`hb_type`) AS hongBaoType,
+				IF(hb.hb_id IS NULL,hbp.`hb_get_time`,hb.`hb_get_time`)  AS accountTime,
+				IF(hb.hb_id IS NULL,hbp.`hb_pre_get_time`,hb.`hb_pre_get_time`) AS preAccountTime,
+				co.*
 		FROM yeshi_ec_hongbao_order ho 
+		
 		LEFT JOIN (SELECT * FROM yeshi_ec_hongbao_v2 v2 
 					WHERE v2.`hb_uid`= #{uid} 
 						<include refid="SELECT_PARAM_HONGBAO_TYPE"/>  <!-- 绾㈠寘绫诲瀷 -->
 						<include refid="SELECT_PARAM_HONGBAO_STATE"/> <!-- 绾㈠寘鐘舵�� -->
-				)hb ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+				)hb ON hb.hb_id=ho.`ho_hongbao_id`
+				
+		LEFT JOIN (SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`= #{uid} 
+						<include refid="SELECT_PARAM_HONGBAO_TYPE"/>  <!-- 绾㈠寘绫诲瀷 -->
+						<include refid="SELECT_PARAM_HONGBAO_STATE"/> <!-- 绾㈠寘鐘舵�� -->
+				)hbp ON  hbp.hb_pid=ho.`ho_hongbao_id`
+				
 		LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-		WHERE hb.hb_id IS NOT NULL AND co.co_id IS NOT NULL
+		WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
 			  <include refid="SELECT_PARAM_ORDER_STATE"/>        <!-- 璁㈠崟鐘舵�� -->
 			  <include refid="SELECT_PARAM_ORDER_CREATE_TIME"/>  <!-- 璁㈠崟鏃堕棿 -->
 			  <if test="orderNo != null and orderNo !='' ">
@@ -332,9 +344,16 @@
 					WHERE v2.`hb_uid`= #{uid} 
 						<include refid="SELECT_PARAM_HONGBAO_TYPE"/>  <!-- 绾㈠寘绫诲瀷 -->
 						<include refid="SELECT_PARAM_HONGBAO_STATE"/> <!-- 绾㈠寘鐘舵�� -->
-				)hb ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+				)hb ON hb.hb_id=ho.`ho_hongbao_id`
+				
+			LEFT JOIN (SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`= #{uid} 
+						<include refid="SELECT_PARAM_HONGBAO_TYPE"/>  <!-- 绾㈠寘绫诲瀷 -->
+						<include refid="SELECT_PARAM_HONGBAO_STATE"/> <!-- 绾㈠寘鐘舵�� -->
+				)hbp ON hbp.hb_pid=ho.`ho_hongbao_id`
+				
 		 	 LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-			 WHERE hb.hb_id IS NOT NULL AND co.co_id IS NOT NULL 
+			 WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
 			  	   <include refid="SELECT_PARAM_ORDER_STATE"/>        <!-- 璁㈠崟鐘舵�� -->
 			       <include refid="SELECT_PARAM_ORDER_CREATE_TIME"/>  <!-- 璁㈠崟鏃堕棿 -->
 				   <if test="orderNo != null and orderNo !='' ">
@@ -368,23 +387,59 @@
 			SELECT IFNULL(COUNT(ho_id),0) AS self,0 AS shared,0 AS invite
 			FROM  (SELECT ho.`ho_id` FROM yeshi_ec_hongbao_order ho 
 				LEFT JOIN ( 
-				SELECT * FROM yeshi_ec_hongbao_v2 v2 
-				WHERE v2.`hb_uid`= ${uid} AND (v2.`hb_type` = 1 OR v2.`hb_type` = 2)
-			) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+					SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`= ${uid} AND (v2.`hb_type` = 1 OR v2.`hb_type` = 2)
+					) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+				LEFT JOIN ( 
+					SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`= ${uid} AND (v2.`hb_type` = 1 OR v2.`hb_type` = 2)
+					) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
 			LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-			WHERE hb.hb_id IS NOT NULL <include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
+			WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
+				<if test="day != null and day == 1"> <!-- 浠婂ぉ -->
+					AND TO_DAYS(co.`co_create_time`) = TO_DAYS(NOW())
+				</if>
+				<if test="day != null and day == 2">  <!-- 鏄ㄥぉ -->
+					AND TO_DAYS(NOW()) - TO_DAYS(co.`co_create_time`) = 1
+				</if>
+				<if test="day != null and day == 3">  <!-- 鏈湀 -->
+					AND DATE_FORMAT(co.`co_create_time`,'%Y%m') =
+					DATE_FORMAT(CURDATE(),'%Y%m')
+				</if>
+				<if test="day != null and day == 4">  <!-- 涓婃湀 -->
+					AND PERIOD_DIFF(DATE_FORMAT(NOW(), '%Y%m'),
+					DATE_FORMAT(co.`co_create_time`, '%Y%m')) = 1
+				</if>
 			GROUP BY co.`co_order_no`, co.`co_source_type`)YX
 			
 			UNION ALL
 			<!-- 鍒嗕韩璁㈠崟 -->
 			SELECT 0 AS self,IFNULL(COUNT(ho_id),0) AS shared,0 AS invite
 			FROM  (SELECT ho.`ho_id` FROM yeshi_ec_hongbao_order ho 
-				LEFT JOIN ( 
-					SELECT * FROM yeshi_ec_hongbao_v2 v2 
-					WHERE v2.`hb_uid`= ${uid} AND v2.`hb_type` = 20
-				) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+					LEFT JOIN ( 
+						SELECT * FROM yeshi_ec_hongbao_v2 v2 
+						WHERE v2.`hb_uid`= ${uid} AND v2.`hb_type` = 20
+					) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+					LEFT JOIN ( 
+						SELECT * FROM yeshi_ec_hongbao_v2 v2 
+						WHERE v2.`hb_uid`= ${uid} AND v2.`hb_type` = 20
+					) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
 				LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-				WHERE hb.hb_id IS NOT NULL <include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
+				WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
+					<if test="day != null and day == 1"> <!-- 浠婂ぉ -->
+						AND TO_DAYS(co.`co_create_time`) = TO_DAYS(NOW())
+					</if>
+					<if test="day != null and day == 2">  <!-- 鏄ㄥぉ -->
+						AND TO_DAYS(NOW()) - TO_DAYS(co.`co_create_time`) = 1
+					</if>
+					<if test="day != null and day == 3">  <!-- 鏈湀 -->
+						AND DATE_FORMAT(co.`co_create_time`,'%Y%m') =
+						DATE_FORMAT(CURDATE(),'%Y%m')
+					</if>
+					<if test="day != null and day == 4">  <!-- 涓婃湀 -->
+						AND PERIOD_DIFF(DATE_FORMAT(NOW(), '%Y%m'),
+						DATE_FORMAT(co.`co_create_time`, '%Y%m')) = 1
+					</if>
 				GROUP BY co.`co_order_no`, co.`co_source_type`)WQ
 				
 			UNION ALL
@@ -396,17 +451,34 @@
 					WHERE v2.`hb_uid`= ${uid}
 						 AND (v2.`hb_type` = 5 OR v2.`hb_type` = 6 OR v2.`hb_type` = 7
 							   OR v2.`hb_type` = 21 OR v2.`hb_type` = 22 )
-							   
-				) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+					) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+				LEFT JOIN ( 
+					SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`= ${uid}
+						 AND (v2.`hb_type` = 5 OR v2.`hb_type` = 6 OR v2.`hb_type` = 7
+							   OR v2.`hb_type` = 21 OR v2.`hb_type` = 22 )
+					) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
 				LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-				WHERE hb.hb_id IS NOT NULL  <include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
+				WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
+					<if test="day != null and day == 1"> <!-- 浠婂ぉ -->
+						AND TO_DAYS(co.`co_create_time`) = TO_DAYS(NOW())
+					</if>
+					<if test="day != null and day == 2">  <!-- 鏄ㄥぉ -->
+						AND TO_DAYS(NOW()) - TO_DAYS(co.`co_create_time`) = 1
+					</if>
+					<if test="day != null and day == 3">  <!-- 鏈湀 -->
+						AND DATE_FORMAT(co.`co_create_time`,'%Y%m') =
+						DATE_FORMAT(CURDATE(),'%Y%m')
+					</if>
+					<if test="day != null and day == 4">  <!-- 涓婃湀 -->
+						AND PERIOD_DIFF(DATE_FORMAT(NOW(), '%Y%m'),
+						DATE_FORMAT(co.`co_create_time`, '%Y%m')) = 1
+					</if>
 				GROUP BY co.`co_order_no`, co.`co_source_type`)SX
 		)A
 	</select>
 	
 	
-	
-
 	<select id="countByUidAndOrderState" resultType="java.util.HashMap">
 		SELECT SUM(A.valid)AS totalValid, SUM(A.proces)AS totalProces,SUM(A.Invalid)AS totalInvite
 		FROM ( 
@@ -416,9 +488,15 @@
 			LEFT JOIN ( 
 				SELECT * FROM yeshi_ec_hongbao_v2 v2 
 				WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
-			) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+			) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+			LEFT JOIN ( 
+				SELECT * FROM yeshi_ec_hongbao_v2 v2 
+				WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
+			) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
+			
 			LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-			WHERE hb.hb_id IS NOT NULL  AND (co.`co_state_whole_order` =1 OR  co.`co_state_whole_order` = 2) 
+			WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
+				AND (co.`co_state_whole_order` =1 OR  co.`co_state_whole_order` = 2) 
 				<include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
 			GROUP BY co.`co_order_no`, co.`co_source_type`)YX
 			
@@ -426,13 +504,17 @@
 			<!-- 缁存潈璁㈠崟 -->
 			SELECT 0 AS valid,IFNULL(COUNT(ho_id),0) AS proces,0 AS Invalid
 			FROM  (SELECT ho.`ho_id` FROM yeshi_ec_hongbao_order ho 
-			
 				LEFT JOIN ( 
 					SELECT * FROM yeshi_ec_hongbao_v2 v2 
 					WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
-				) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+				) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+				LEFT JOIN ( 
+					SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
+				) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
 				LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-				WHERE hb.hb_id IS NOT NULL AND (co.`co_state_whole_order` =1 OR  co.`co_state_whole_order` = 2) 
+				WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
+					  AND co.`co_state` = 3 
 					<include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
 				GROUP BY co.`co_order_no`, co.`co_source_type`)WQ
 				
@@ -443,9 +525,14 @@
 				LEFT JOIN ( 
 					SELECT * FROM yeshi_ec_hongbao_v2 v2 
 					WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
-				) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+				) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+				LEFT JOIN ( 
+					SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
+				) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
 				LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-				WHERE hb.hb_id IS NOT NULL  AND co.`co_state_whole_order` = 3  
+				WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
+					AND co.`co_state_whole_order` = 3 
 					<include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
 				GROUP BY co.`co_order_no`, co.`co_source_type`)SX
 		)A
@@ -460,9 +547,15 @@
 				LEFT JOIN ( 
 					SELECT * FROM yeshi_ec_hongbao_v2 v2 
 					WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
-				) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+				) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+				
+				LEFT JOIN ( 
+					SELECT * FROM yeshi_ec_hongbao_v2 v2 
+					WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
+				) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
+				
 				LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-				WHERE hb.hb_id IS NOT NULL  
+				WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
 					<include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
 					<if test="day != null and day == 4"> 
 						AND co.`co_state` = 2 <!-- 涓婃湀 :缁熻宸叉敹璐� -->
@@ -473,14 +566,18 @@
 
 	<select id="countBonusOrderMoney" resultType="java.math.BigDecimal">
 		<!-- 濂栭噾缁熻锛氳鍗曟�昏繑鍒╅噾棰� -->
-		SELECT  COALESCE(SUM(hb.`hb_money`),0)AS totalmoney 
+		SELECT COALESCE(SUM(IF(hb.hb_id IS NULL,hbp.`hb_money`,hb.`hb_money`)),0)AS totalmoney
 		FROM yeshi_ec_hongbao_order ho 	
 		LEFT JOIN ( 
 			SELECT * FROM yeshi_ec_hongbao_v2 v2 
 			WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
-		) hb  ON (hb.hb_id=ho.`ho_hongbao_id` OR hb.hb_pid=ho.`ho_hongbao_id`)
+		) hb  ON hb.hb_id=ho.`ho_hongbao_id`
+		LEFT JOIN ( 
+			SELECT * FROM yeshi_ec_hongbao_v2 v2 
+			WHERE v2.`hb_uid`=${uid} <include refid="SELECT_PARAM_HONGBAO_TYPE" />
+		) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
 		LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
-		WHERE hb.hb_id IS NOT NULL  
+		WHERE (hb.hb_id IS NOT NULL OR hbp.hb_id IS NOT NULL)
 			<include refid="SELECT_PARAM_ORDER_CREATE_TIME" />
 			<if test="day != null and day == 4"> 
 				AND co.`co_state` = 2 <!-- 涓婃湀 :缁熻宸叉敹璐� -->

--
Gitblit v1.8.0