Administrator
2020-02-25 fb6eb1e6b9df772d243b5ade8b9e3dd08028e935
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderCountMapper.xml
@@ -1,323 +1,331 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeshi.fanli.dao.mybatis.order.CommonOrderCountMapper">
    <resultMap id="ChartMap" type="com.yeshi.fanli.dto.ChartTDO">
      <result column="showDate" property="showDate" jdbcType="VARCHAR" />
      <result column="showValue" property="showValue" jdbcType="VARCHAR" />
   </resultMap>
    <resultMap id="CountOrderMap" type="com.yeshi.fanli.dto.order.CountOrderDTO">
      <result column="uid" property="uid" jdbcType="BIGINT" />
      <result column="totalOrder" property="totalOrder" jdbcType="INTEGER" />
      <result column="commission" property="commission" jdbcType="DECIMAL" />
   </resultMap>
   <sql id="Column_DateType">
      <if test="dateType == 1">
         DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d') AS 'showDate'
      </if>
      <if test="dateType == 2">
         DATE_FORMAT(t.`co_third_create_time`,'%m') AS 'showDate'
      </if>
      <if test="dateType == 3">
         DATE_FORMAT(t.`co_third_create_time`,'%Y') AS 'showDate'
      </if>
   </sql>
   <sql id="Count_Select_DateType">
      <if test="startTime != null and startTime != '' ">
         AND DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d')<![CDATA[ >= ]]>'${startTime}'
      </if>
      <if test="endTime != null and endTime != '' ">
         AND DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d') <![CDATA[ <= ]]>'${endTime}'
      </if>
      <if test="year != null and year != '' ">
         AND DATE_FORMAT(t.`co_third_create_time`,'%Y') = '${year}'
      </if>
   </sql>
   <sql id="Count_Group_DateType">
      <if test="dateType == 1">
         GROUP BY DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d')
      </if>
      <if test="dateType == 2">
         GROUP BY DATE_FORMAT(t.`co_third_create_time`,'%Y-%m')
      </if>
      <if test="dateType == 3">
         GROUP BY DATE_FORMAT(t.`co_third_create_time`,'%Y')
      </if>
   </sql>
   <select id="countByState" resultType="java.lang.Long">
      SELECT IFNULL(COUNT(t.`co_id`),0) FROM  `yeshi_ec_common_order` t
      WHERE 1=1
         <if test="type != null">
            AND t.`co_state` = #{state}
         </if>
   </select>
   <select id="countOrderBySourceTypeAndDay" resultType="java.lang.Long">
      SELECT COUNT(t.`co_id`) FROM `yeshi_ec_common_order` t
      WHERE t.co_source_type=#{sourceType} AND DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d') = #{preDay}
   </select>
   <select id="countOrderNumberBySettleTime" resultType="java.util.HashMap">
      <!-- 统计历史订单数量  根据结算时间 -->
      SELECT SUM(A.self)AS totalSelf,SUM(A.shared)AS totalShared,SUM(A.invite)AS totalInvite
      FROM (
         <!-- 返利订单 -->
         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_state!=4 AND (v2.`hb_type` = 1 OR v2.`hb_type` = 2)
               ) hb  ON hb.hb_id=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
             <if test="state != null">
               AND co.`co_state` = ${state}
            </if>
            <if test="day != null and day == 1"> <!-- 今天 -->
               AND TO_DAYS(co.`co_settle_time`) = TO_DAYS(NOW())
            </if>
            <if test="day != null and day == 2">  <!-- 昨天 -->
               AND TO_DAYS(NOW()) - TO_DAYS(co.co_settle_time) = 1
            </if>
            <if test="day != null and day == 3">  <!-- 本月 -->
               AND DATE_FORMAT(co.`co_settle_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_settle_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 and v2.hb_state!=4
               ) hb  ON hb.hb_id=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 hb.hb_state!=4
               <if test="state != null">
                  AND co.`co_state` = ${state}
               </if>
               <if test="day != null and day == 1"> <!-- 今天 -->
                  AND TO_DAYS(co.`co_settle_time`) = TO_DAYS(NOW())
               </if>
               <if test="day != null and day == 2">  <!-- 昨天 -->
                  AND TO_DAYS(NOW()) - TO_DAYS(co.`co_settle_time`) = 1
               </if>
               <if test="day != null and day == 3">  <!-- 本月 -->
                  AND DATE_FORMAT(co.`co_settle_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_settle_time`, '%Y%m')) = 1
               </if>
            GROUP BY co.`co_order_no`, co.`co_source_type`)WQ
         UNION ALL
         <!-- 邀请订单 -->
         SELECT 0 AS self,0 AS shared,IFNULL(COUNT(ho_id),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` = 5 OR v2.`hb_type` = 6 OR v2.`hb_type` = 7
                        OR v2.`hb_type` = 21 OR v2.`hb_type` = 22 ) and v2.hb_state!=4
               ) 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  hbp.hb_id IS NOT NULL and hbp.hb_state!=4
               <if test="state != null">
                  AND co.`co_state` = ${state}
               </if>
               <if test="day != null and day == 1"> <!-- 今天 -->
                  AND TO_DAYS(co.`co_settle_time`) = TO_DAYS(NOW())
               </if>
               <if test="day != null and day == 2">  <!-- 昨天 -->
                  AND TO_DAYS(NOW()) - TO_DAYS(co.`co_settle_time`) = 1
               </if>
               <if test="day != null and day == 3">  <!-- 本月 -->
                  AND DATE_FORMAT(co.`co_settle_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_settle_time`, '%Y%m')) = 1
               </if>
            GROUP BY co.`co_order_no`, co.`co_source_type`)SX
      )A
   </select>
   <select id="countValidOrder" resultType="java.lang.Long">
      SELECT IFNULL(COUNT(co.`co_id`),0) FROM yeshi_ec_hongbao_order ho
      LEFT JOIN (SELECT * FROM yeshi_ec_hongbao_v2 v2
         WHERE v2.`hb_uid`= #{uid}  AND v2.`hb_type` IN(1,20))hb
         ON IF(hb.hb_pid IS NULL,hb.hb_id,hb.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 <![CDATA[co.`co_state` <> 4]]>
   </select>
   <select id="getMoneyByOrderNo" resultType="java.math.BigDecimal">
      SELECT SUM(v2.`hb_money`) FROM yeshi_ec_common_order co
      LEFT JOIN  yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
      LEFT JOIN yeshi_ec_hongbao_v2 v2 ON  v2.hb_id=ho.`ho_hongbao_id`
      WHERE co.`co_order_no` = #{orderNo}
   </select>
   <select id="countValidOrderByDate" resultType="Long">
      SELECT IFNULL(COUNT(co_order_no),0) FROM
         (SELECT DISTINCT co.co_order_no FROM yeshi_ec_common_order co
          LEFT JOIN  yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
          LEFT JOIN yeshi_ec_hongbao_v2 v2 ON  v2.hb_id=ho.`ho_hongbao_id`
          WHERE co.`co_uid` = #{uid} AND v2.`hb_type` = 1
               AND v2.`hb_state` = 3 AND  AND co.`co_third_create_time` <![CDATA[>]]> #{dateTime})A
   </select>
   <select id="countSameShopOrderByUidAndHongBaoType" resultType="Long">
      SELECT COUNT(*) FROM
      (
         SELECT a.*,COUNT(*) AS num FROM
         (
            SELECT co.*,COUNT(*) AS c,g.`cog_shop_id` AS shopId FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE  co.`co_uid`=#{uid}  AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            AND g.`cog_shop_id`>0 GROUP BY co.`co_order_no`,co.`co_source_type`
         ) a GROUP BY a.shopId
      ) b WHERE b.num>=#{minSameShopGoodsCount};
   </select>
   <select id="countSameGoodsOrderByUidAndHongBaoType" resultType="Long">
      SELECT COUNT(*) FROM
      (
         SELECT a.goodsId,COUNT(*) AS c FROM
         (
            SELECT co.`co_order_goods_id` AS goodsId,co.`co_order_no` FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE co.`co_uid`=#{uid} AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            GROUP BY co.`co_order_no`,co.`co_order_goods_id`
         ) a GROUP BY goodsId
      ) b WHERE b.c>=#{minSameGoodsOrderCount}
   </select>
   <select id="getSameShopOrderByUidAndHongBaoType" resultType="Long">
      SELECT b.shopId FROM
      (
         SELECT a.*,COUNT(*) AS num FROM
         (
            SELECT co.*,COUNT(*) AS c,g.`cog_shop_id` AS shopId FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE  co.`co_uid`=#{uid} AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            AND g.`cog_shop_id`>0 GROUP BY co.`co_order_no`,co.`co_source_type`
         ) a GROUP BY a.shopId
      ) b WHERE b.num>=#{minSameShopGoodsCount};
   </select>
   <select id="getSameGoodsOrderByUidAndHongBaoType" resultType="Long">
      SELECT b.goodsId FROM
      (
         SELECT a.goodsId,COUNT(*) AS c FROM
         (
            SELECT co.`co_order_goods_id` AS goodsId,co.`co_order_no` FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE co.`co_uid`=#{uid} AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            GROUP BY co.`co_order_no`,co.`co_order_goods_id`
         ) a GROUP BY goodsId
      ) b WHERE b.c>=#{minSameGoodsOrderCount}
   </select>
   <select id="countOderByUidAndDate" resultType="Integer">
      SELECT COUNT(1) FROM (SELECT d.`co_id` FROM `yeshi_ec_common_order` d
      WHERE d.`co_third_create_time`<![CDATA[<=]]> #{preDay} AND d.`co_uid` = #{uid}
           AND (d.`co_state`=1 OR d.`co_state`=2)
      GROUP BY d.`co_order_no`,d.`co_source_type`)A
   </select>
   <select id="countValidOrderByDay" resultMap="CountOrderMap">
      SELECT co_uid AS uid ,totalOrder FROM (
         SELECT COUNT(d.`co_id`) AS totalOrder,d.`co_uid` FROM `yeshi_ec_common_order` d
         WHERE DATE_FORMAT(d.`co_third_create_time`,'%Y-%m-%d') = '2019-11-11'  AND (d.`co_state`=1 OR d.`co_state`=2)
         GROUP BY d.`co_order_no`,d.`co_source_type`)A
      GROUP BY co_uid
   </select>
   <select id="countDownOrderUserByUidAndDate" resultType="Integer">
      SELECT COUNT(DISTINCT d.`co_uid`) FROM `yeshi_ec_common_order` d
      WHERE  d.`co_third_create_time`<![CDATA[<=]]> #{preDay} AND (d.`co_state`=1 OR d.`co_state`=2)
      <foreach collection="list" item="uid" open="AND (" separator="OR" close=")" >
         d.`co_uid` = #{uid}
      </foreach>
   </select>
   <select id="countCommissionByDay" resultMap="CountOrderMap">
   SELECT co_uid AS uid ,commission FROM (
         SELECT SUM(IFNULL(d.`co_eIncome`,d.`co_estimate`)) AS commission,d.`co_uid` FROM `yeshi_ec_common_order` d
         WHERE DATE_FORMAT(d.`co_third_create_time`,'%Y-%m-%d') = '2019-11-11'  AND (d.`co_state`=1 OR d.`co_state`=2)
         GROUP BY d.`co_order_no`,d.`co_source_type`)A
      GROUP BY co_uid
   </select>
   <select id="countOderByDate" resultType="Integer">
      SELECT COUNT(1) FROM (SELECT d.`co_id` FROM `yeshi_ec_common_order` d
      WHERE DATE_FORMAT(d.`co_third_create_time`,'%Y-%m-%d') = #{preDay} AND (d.`co_state`=1 OR d.`co_state`=2)
      GROUP BY d.`co_order_no`,d.`co_source_type`)A
   </select>
   <select id="countCommissionByDate" resultType="BigDecimal">
      SELECT SUM(IFNULL(d.`co_eIncome`,d.`co_estimate`)) FROM `yeshi_ec_common_order` d
      WHERE d.`co_third_create_time`= #{preDay} AND (d.`co_state`=1 OR d.`co_state`=2)
   </select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeshi.fanli.dao.mybatis.order.CommonOrderCountMapper">
    <resultMap id="ChartMap" type="com.yeshi.fanli.dto.ChartTDO">
      <result column="showDate" property="showDate" jdbcType="VARCHAR" />
      <result column="showValue" property="showValue" jdbcType="VARCHAR" />
   </resultMap>
    <resultMap id="CountOrderMap" type="com.yeshi.fanli.dto.order.CountOrderDTO">
      <result column="uid" property="uid" jdbcType="BIGINT" />
      <result column="totalOrder" property="totalOrder" jdbcType="INTEGER" />
      <result column="commission" property="commission" jdbcType="DECIMAL" />
   </resultMap>
   <sql id="Column_DateType">
      <if test="dateType == 1">
         DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d') AS 'showDate'
      </if>
      <if test="dateType == 2">
         DATE_FORMAT(t.`co_third_create_time`,'%m') AS 'showDate'
      </if>
      <if test="dateType == 3">
         DATE_FORMAT(t.`co_third_create_time`,'%Y') AS 'showDate'
      </if>
   </sql>
   <sql id="Count_Select_DateType">
      <if test="startTime != null and startTime != '' ">
         AND DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d')<![CDATA[ >= ]]>'${startTime}'
      </if>
      <if test="endTime != null and endTime != '' ">
         AND DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d') <![CDATA[ <= ]]>'${endTime}'
      </if>
      <if test="year != null and year != '' ">
         AND DATE_FORMAT(t.`co_third_create_time`,'%Y') = '${year}'
      </if>
   </sql>
   <sql id="Count_Group_DateType">
      <if test="dateType == 1">
         GROUP BY DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d')
      </if>
      <if test="dateType == 2">
         GROUP BY DATE_FORMAT(t.`co_third_create_time`,'%Y-%m')
      </if>
      <if test="dateType == 3">
         GROUP BY DATE_FORMAT(t.`co_third_create_time`,'%Y')
      </if>
   </sql>
   <select id="countByState" resultType="java.lang.Long">
      SELECT IFNULL(COUNT(t.`co_id`),0) FROM  `yeshi_ec_common_order` t
      WHERE 1=1
         <if test="type != null">
            AND t.`co_state` = #{state}
         </if>
   </select>
   <select id="countOrderBySourceTypeAndDay" resultType="java.lang.Long">
      SELECT COUNT(t.`co_id`) FROM `yeshi_ec_common_order` t
      WHERE t.co_source_type=#{sourceType} AND DATE_FORMAT(t.`co_third_create_time`,'%Y-%m-%d') = #{preDay}
   </select>
   <select id="countOrderNumberBySettleTime" resultType="java.util.HashMap">
      <!-- 统计历史订单数量  根据结算时间 -->
      SELECT SUM(A.self)AS totalSelf,SUM(A.shared)AS totalShared,SUM(A.invite)AS totalInvite
      FROM (
         <!-- 返利订单 -->
         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_state!=4 AND (v2.`hb_type` = 1 OR v2.`hb_type` = 2)
               ) hb  ON hb.hb_id=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
             <if test="state != null">
               AND co.`co_state` = ${state}
            </if>
            <if test="day != null and day == 1"> <!-- 今天 -->
               AND TO_DAYS(co.`co_settle_time`) = TO_DAYS(NOW())
            </if>
            <if test="day != null and day == 2">  <!-- 昨天 -->
               AND TO_DAYS(NOW()) - TO_DAYS(co.co_settle_time) = 1
            </if>
            <if test="day != null and day == 3">  <!-- 本月 -->
               AND DATE_FORMAT(co.`co_settle_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_settle_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 and v2.hb_state!=4
               ) hb  ON hb.hb_id=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 hb.hb_state!=4
               <if test="state != null">
                  AND co.`co_state` = ${state}
               </if>
               <if test="day != null and day == 1"> <!-- 今天 -->
                  AND TO_DAYS(co.`co_settle_time`) = TO_DAYS(NOW())
               </if>
               <if test="day != null and day == 2">  <!-- 昨天 -->
                  AND TO_DAYS(NOW()) - TO_DAYS(co.`co_settle_time`) = 1
               </if>
               <if test="day != null and day == 3">  <!-- 本月 -->
                  AND DATE_FORMAT(co.`co_settle_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_settle_time`, '%Y%m')) = 1
               </if>
            GROUP BY co.`co_order_no`, co.`co_source_type`)WQ
         UNION ALL
         <!-- 邀请订单 -->
         SELECT 0 AS self,0 AS shared,IFNULL(COUNT(ho_id),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` = 5 OR v2.`hb_type` = 6 OR v2.`hb_type` = 7
                        OR v2.`hb_type` = 21 OR v2.`hb_type` = 22 ) and v2.hb_state!=4
               ) 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  hbp.hb_id IS NOT NULL and hbp.hb_state!=4
               <if test="state != null">
                  AND co.`co_state` = ${state}
               </if>
               <if test="day != null and day == 1"> <!-- 今天 -->
                  AND TO_DAYS(co.`co_settle_time`) = TO_DAYS(NOW())
               </if>
               <if test="day != null and day == 2">  <!-- 昨天 -->
                  AND TO_DAYS(NOW()) - TO_DAYS(co.`co_settle_time`) = 1
               </if>
               <if test="day != null and day == 3">  <!-- 本月 -->
                  AND DATE_FORMAT(co.`co_settle_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_settle_time`, '%Y%m')) = 1
               </if>
            GROUP BY co.`co_order_no`, co.`co_source_type`)SX
      )A
   </select>
   <select id="countValidOrder" resultType="java.lang.Long">
      SELECT IFNULL(COUNT(co.`co_id`),0) FROM yeshi_ec_hongbao_order ho
      LEFT JOIN (SELECT * FROM yeshi_ec_hongbao_v2 v2
         WHERE v2.`hb_uid`= #{uid}  AND v2.`hb_type` IN(1,20))hb
         ON IF(hb.hb_pid IS NULL,hb.hb_id,hb.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 <![CDATA[co.`co_state` <> 4]]>
   </select>
   <select id="getMoneyByOrderNo" resultType="java.math.BigDecimal">
      SELECT SUM(v2.`hb_money`) FROM yeshi_ec_common_order co
      LEFT JOIN  yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
      LEFT JOIN yeshi_ec_hongbao_v2 v2 ON  v2.hb_id=ho.`ho_hongbao_id`
      WHERE co.`co_order_no` = #{orderNo}
   </select>
   <select id="countValidOrderByDate" resultType="Long">
      SELECT IFNULL(COUNT(co_order_no),0) FROM
         (SELECT DISTINCT co.co_order_no FROM yeshi_ec_common_order co
          LEFT JOIN  yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
          LEFT JOIN yeshi_ec_hongbao_v2 v2 ON  v2.hb_id=ho.`ho_hongbao_id`
          WHERE co.`co_uid` = #{uid} AND v2.`hb_type` = 1
               AND v2.`hb_state` = 3 AND  AND co.`co_third_create_time` <![CDATA[>]]> #{dateTime})A
   </select>
   <select id="countSameShopOrderByUidAndHongBaoType" resultType="Long">
      SELECT COUNT(*) FROM
      (
         SELECT a.*,COUNT(*) AS num FROM
         (
            SELECT co.*,COUNT(*) AS c,g.`cog_shop_id` AS shopId FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE  co.`co_uid`=#{uid}  AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            AND g.`cog_shop_id`>0 GROUP BY co.`co_order_no`,co.`co_source_type`
         ) a GROUP BY a.shopId
      ) b WHERE b.num>=#{minSameShopGoodsCount};
   </select>
   <select id="countSameGoodsOrderByUidAndHongBaoType" resultType="Long">
      SELECT COUNT(*) FROM
      (
         SELECT a.goodsId,COUNT(*) AS c FROM
         (
            SELECT co.`co_order_goods_id` AS goodsId,co.`co_order_no` FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE co.`co_uid`=#{uid} AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            GROUP BY co.`co_order_no`,co.`co_order_goods_id`
         ) a GROUP BY goodsId
      ) b WHERE b.c>=#{minSameGoodsOrderCount}
   </select>
   <select id="getSameShopOrderByUidAndHongBaoType" resultType="Long">
      SELECT b.shopId FROM
      (
         SELECT a.*,COUNT(*) AS num FROM
         (
            SELECT co.*,COUNT(*) AS c,g.`cog_shop_id` AS shopId FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE  co.`co_uid`=#{uid} AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            AND g.`cog_shop_id`>0 GROUP BY co.`co_order_no`,co.`co_source_type`
         ) a GROUP BY a.shopId
      ) b WHERE b.num>=#{minSameShopGoodsCount};
   </select>
   <select id="getSameGoodsOrderByUidAndHongBaoType" resultType="Long">
      SELECT b.goodsId FROM
      (
         SELECT a.goodsId,COUNT(*) AS c FROM
         (
            SELECT co.`co_order_goods_id` AS goodsId,co.`co_order_no` FROM yeshi_ec_common_order co
            LEFT JOIN yeshi_ec_hongbao_order ho ON co.`co_id`=ho.`ho_order_id`
            LEFT JOIN yeshi_ec_hongbao_v2 v ON v.`hb_id`=ho.`ho_hongbao_id`
            LEFT JOIN yeshi_ec_common_order_goods g  ON co.`co_order_goods_id`=g.`cog_id`
            WHERE co.`co_uid`=#{uid} AND g.`cog_shop_id` <![CDATA[<>]]> 725677994  <!-- 天猫超市 -->
            <if test="typeList!=null">
               <foreach collection="typeList" item="type" open=" and (" separator=" or " close=")">
                  v.`hb_type`=#{type}
               </foreach>
            </if>
            AND v.`hb_id` IS NOT NULL
            AND (co.`co_state`=1 OR  co.`co_state`=2 OR co.`co_state`=3)
            GROUP BY co.`co_order_no`,co.`co_order_goods_id`
         ) a GROUP BY goodsId
      ) b WHERE b.c>=#{minSameGoodsOrderCount}
   </select>
   <select id="countOderByUidAndDate" resultType="Integer">
      SELECT COUNT(1) FROM (SELECT d.`co_id` FROM `yeshi_ec_common_order` d
      WHERE d.`co_third_create_time`<![CDATA[<=]]> #{preDay} AND d.`co_uid` = #{uid}
           AND (d.`co_state`=1 OR d.`co_state`=2)
      GROUP BY d.`co_order_no`,d.`co_source_type`)A
   </select>
   <select id="countValidOrderByDay" resultMap="CountOrderMap">
      SELECT co_uid AS uid ,totalOrder FROM (
         SELECT COUNT(d.`co_id`) AS totalOrder,d.`co_uid` FROM `yeshi_ec_common_order` d
         WHERE DATE_FORMAT(d.`co_third_create_time`,'%Y-%m-%d') = '2019-11-11'  AND (d.`co_state`=1 OR d.`co_state`=2)
         GROUP BY d.`co_order_no`,d.`co_source_type`)A
      GROUP BY co_uid
   </select>
   <select id="countDownOrderUserByUidAndDate" resultType="Integer">
      SELECT COUNT(DISTINCT d.`co_uid`) FROM `yeshi_ec_common_order` d
      WHERE  d.`co_third_create_time`<![CDATA[<=]]> #{preDay} AND (d.`co_state`=1 OR d.`co_state`=2)
      <foreach collection="list" item="uid" open="AND (" separator="OR" close=")" >
         d.`co_uid` = #{uid}
      </foreach>
   </select>
   <select id="countCommissionByDay" resultMap="CountOrderMap">
   SELECT co_uid AS uid ,commission FROM (
         SELECT SUM(IFNULL(d.`co_eIncome`,d.`co_estimate`)) AS commission,d.`co_uid` FROM `yeshi_ec_common_order` d
         WHERE DATE_FORMAT(d.`co_third_create_time`,'%Y-%m-%d') = '2019-11-11'  AND (d.`co_state`=1 OR d.`co_state`=2)
         GROUP BY d.`co_order_no`,d.`co_source_type`)A
      GROUP BY co_uid
   </select>
   <select id="countOderByDate" resultType="Integer">
      SELECT COUNT(1) FROM (SELECT d.`co_id` FROM `yeshi_ec_common_order` d
      WHERE DATE_FORMAT(d.`co_third_create_time`,'%Y-%m-%d') = #{preDay} AND (d.`co_state`=1 OR d.`co_state`=2)
      GROUP BY d.`co_order_no`,d.`co_source_type`)A
   </select>
   <select id="countCommissionByDate" resultType="BigDecimal">
      SELECT SUM(IFNULL(d.`co_eIncome`,d.`co_estimate`)) FROM `yeshi_ec_common_order` d
      WHERE d.`co_third_create_time`= #{preDay} AND (d.`co_state`=1 OR d.`co_state`=2)
   </select>
   <select id="countOderByUidAndLess10" resultType="Integer">
      SELECT count(1) from (SELECT SUM(d.co_payment) as payment FROM `yeshi_ec_common_order` d
      where d.co_uid = #{uid} and d.co_source_type = 1  and d.co_state <![CDATA[<>]]> 4
      GROUP BY d.`co_order_no`
      ORDER BY d.co_third_create_time desc
      limit 50)A where A.payment<![CDATA[<]]> 10
   </select>
</mapper>