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