2026-06-26 20b96473f2520590a0dca6b775b81e3ea06a77a0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?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="cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeOrderStatisticsMapper">
 
    <select id="selectSummaryListByAreaId"
            resultType="cn.iocoder.yudao.module.statistics.service.member.bo.MemberAreaStatisticsRespBO">
        SELECT receiver_area_id                                AS areaId,
               (SELECT COUNT(DISTINCT s.user_id)
                FROM trade_order AS s
                WHERE s.receiver_area_id = m.receiver_area_id) AS orderCreateUserCount,
               (SELECT COUNT(DISTINCT s.user_id)
                FROM trade_order AS s
                WHERE s.receiver_area_id = m.receiver_area_id
                  AND s.pay_status = TRUE
                  AND s.deleted = FALSE)                       AS orderPayUserCount,
               (SELECT SUM(s.pay_price)
                FROM trade_order AS s
                WHERE s.receiver_area_id = m.receiver_area_id
                  AND s.pay_status = TRUE
                  AND s.deleted = FALSE)                       AS orderPayPrice
        FROM trade_order m
        WHERE deleted = FALSE
        GROUP BY receiver_area_id
    </select>
 
    <select id="selectUserCountByCreateTimeBetween" resultType="java.lang.Integer">
        SELECT COUNT(DISTINCT (user_id))
        FROM trade_order
        WHERE deleted = FALSE
          AND create_time BETWEEN #{beginTime} AND #{endTime}
    </select>
 
    <select id="selectUserCountByPayTimeBetween" resultType="java.lang.Integer">
        SELECT COUNT(DISTINCT (user_id))
        FROM trade_order
        WHERE pay_time BETWEEN #{beginTime} AND #{endTime}
          AND pay_status = TRUE
          AND deleted = FALSE
    </select>
 
    <select id="selectCountByCreateTimeBetween" resultType="java.lang.Integer">
        SELECT COUNT(1)
        FROM trade_order
        WHERE create_time BETWEEN #{beginTime} AND #{endTime}
          AND deleted = FALSE
    </select>
 
    <select id="selectCountByPayTimeBetween" resultType="java.lang.Integer">
        SELECT COUNT(1)
        FROM trade_order
        WHERE pay_status = TRUE
          AND create_time BETWEEN #{beginTime} AND #{endTime}
          AND deleted = FALSE
    </select>
 
    <select id="selectSummaryPriceByPayTimeBetween" resultType="java.lang.Integer">
        SELECT SUM(pay_price)
        FROM trade_order AS s
        WHERE s.pay_status = TRUE
          AND deleted = FALSE
          AND create_time BETWEEN #{beginTime} AND #{endTime}
    </select>
 
    <select id="selectListByPayTimeBetweenAndGroupByDay"
            resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeOrderTrendRespVO">
        SELECT DATE_FORMAT(pay_time, '%Y-%m-%d') AS date,
               COUNT(1)                          AS orderPayCount,
               SUM(pay_price)                    AS orderPayPrice
        FROM trade_order
        WHERE pay_status = TRUE
          AND create_time BETWEEN #{beginTime} AND #{endTime}
          AND deleted = FALSE
        GROUP BY date
    </select>
 
    <select id="selectListByPayTimeBetweenAndGroupByMonth"
            resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeOrderTrendRespVO">
        SELECT DATE_FORMAT(pay_time, '%Y-%m') AS date,
               COUNT(1)                       AS order_pay_count,
               SUM(pay_price)                 AS order_pay_price
        FROM trade_order
        WHERE pay_status = TRUE
          AND create_time BETWEEN #{beginTime} AND #{endTime}
          AND deleted = FALSE
        GROUP BY date
    </select>
 
    <select id="selectCountByStatusAndDeliveryType" resultType="java.lang.Long">
        SELECT COUNT(1)
        FROM trade_order
        WHERE status = #{status}
          ANd delivery_type = #{deliveryType}
          AND deleted = FALSE
    </select>
 
    <select id="selectPaySummaryByPayStatusAndPayTimeBetween"
            resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeOrderSummaryRespVO">
        SELECT IFNULL(SUM(pay_price), 0) AS order_pay_price,
               COUNT(1)                  AS order_pay_count
        FROM trade_order
        WHERE pay_status = #{payStatus}
          AND pay_time BETWEEN #{beginTime} AND #{endTime}
          AND deleted = FALSE
    </select>
 
</mapper>