yujian
2020-06-09 554de444b87aab5f93cb1593a8095612cf9479a7
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderCountMapper.xml
@@ -7,7 +7,12 @@
      <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'
@@ -50,6 +55,11 @@
         <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="countOrderNumber" resultMap="ChartMap">
@@ -175,10 +185,188 @@
   </select>
   
   <select id="countValidOrderByDate" resultType="Long">
      SELECT IFNULL(COUNT(co.`co_id`),0) 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 co.`co_third_create_time` > #{dateTime}
      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') = #{preDay}
              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="getUidByValidOrderByDay"  resultType="Long">
      SELECT DISTINCT d.`co_uid` FROM `yeshi_ec_common_order` d
      WHERE TO_DAYS(co_third_create_time) = TO_DAYS(#{preDay}) AND (d.`co_state`=1 OR d.`co_state`=2)
      GROUP BY d.`co_order_no`,d.`co_source_type`
   </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="getDownOrderUserByListUidAndDate" resultType="Long">
      SELECT  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>
      GROUP BY d.`co_order_no`,d.`co_source_type`
   </select>
   <select id="countCommissionByDay" resultMap="CountOrderMap">
      SELECT  SUM(IF(d.`co_eIncome` >0,d.`co_eIncome`,d.`co_estimate`)) AS commission,d.co_uid as uid FROM `yeshi_ec_common_order` d
      WHERE TO_DAYS(d.`co_third_create_time`)= TO_DAYS(#{preDay}) AND (d.`co_state`=1 OR d.`co_state`=2)
      GROUP BY d.co_uid
   </select>
   <select id="countOderByDate" resultType="Integer">
      SELECT COUNT(co_id) FROM (SELECT d.`co_id` FROM `yeshi_ec_common_order` d
      WHERE TO_DAYS(d.`co_third_create_time`)= TO_DAYS(#{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(IF(d.`co_eIncome` >0,d.`co_eIncome`,d.`co_estimate`)) FROM `yeshi_ec_common_order` d
      WHERE TO_DAYS(d.`co_third_create_time`)= TO_DAYS(#{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 100)A where A.payment<![CDATA[<]]> 10
   </select>
   <select id="countOrderBySourceAndNearDay" resultType="Long">
      SELECT COUNT(co_id) FROM (SELECT d.`co_id` FROM `yeshi_ec_common_order` d
         WHERE d.co_uid = #{uid} AND d.`co_source_type` = #{source} AND (d.`co_state`=1 OR d.`co_state`=2)
            AND DATE_SUB(CURDATE(), INTERVAL #{day} DAY) <![CDATA[<=]]> DATE(d.`co_third_create_time`)
      GROUP BY d.`co_order_no`,d.`co_source_type`)A
   </select>
   <select id="countHistoryOrderNum" resultType="Long">
      SELECT COUNT(hb_id) FROM (SELECT v2.`hb_id` FROM yeshi_ec_hongbao_v2 v2
      LEFT JOIN yeshi_ec_hongbao_order ho ON IF(v2.hb_pid IS NULL,v2.hb_id,v2.hb_pid)=ho.`ho_hongbao_id`
      LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
      WHERE v2.hb_uid = #{uid}
      GROUP BY co.`co_order_no`, co.`co_source_type`)A
   </select>
</mapper>