yujian
2019-01-11 97dc5a83dc41301e7ff497d2e74cfe886cabbb73
订单优化
2个文件已修改
162 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml 161 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java
@@ -75,7 +75,6 @@
     * @return
     */
    Map<String, BigDecimal> countByUidAndOrderState(@Param("uid") Long uid, @Param("type") Integer type,
            @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("day") Integer day);
    /**
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 <!-- 上月 :统计已收货 -->