MerchantFundMapper.xml
6.49 KB
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?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.diligrp.rider.mapper.MerchantFundMapper">
<sql id="merchantBillFilter">
WHERE o.is_del = 0
AND o.status IN (2, 3, 4, 6, 7, 8, 9)
AND o.pay_time >= #{startTime}
AND o.pay_time < #{endTime}
<if test="cityId != null">
AND o.city_id = #{cityId}
</if>
<if test="keyword != null and keyword != ''">
AND ms.name LIKE CONCAT('%', #{keyword}, '%')
</if>
</sql>
<sql id="merchantBillDetailFilter">
WHERE o.is_del = 0
AND o.status IN (2, 3, 4, 6, 7, 8, 9)
AND o.pay_time >= #{startTime}
AND o.pay_time < #{endTime}
AND CAST(o.store_oid AS CHAR) = #{outStoreId}
<if test="cityId != null">
AND o.city_id = #{cityId}
</if>
</sql>
<sql id="riderBillFilter">
WHERE o.is_del = 0
AND o.rider_id > 0
AND o.status IN (6, 7, 8, 9)
AND o.complete_time >= #{startTime}
AND o.complete_time < #{endTime}
<if test="cityId != null">
AND o.city_id = #{cityId}
</if>
<if test="keyword != null and keyword != ''">
AND (r.user_nickname LIKE CONCAT('%', #{keyword}, '%') OR r.mobile LIKE CONCAT('%', #{keyword}, '%'))
</if>
</sql>
<sql id="riderBillDetailFilter">
WHERE o.is_del = 0
AND o.rider_id = #{riderId}
AND o.status IN (6, 7, 8, 9)
AND o.complete_time >= #{startTime}
AND o.complete_time < #{endTime}
<if test="cityId != null">
AND o.city_id = #{cityId}
</if>
</sql>
<select id="countMerchantBills" resultType="long">
SELECT COUNT(1)
FROM (
SELECT ms.out_store_id
FROM orders o
INNER JOIN merchant_store ms ON ms.out_store_id = CAST(o.store_oid AS CHAR)
AND ms.city_id = o.city_id
AND ms.is_del = 0
<include refid="merchantBillFilter"/>
GROUP BY ms.out_store_id
) t
</select>
<select id="selectMerchantBills" resultType="com.diligrp.rider.vo.MerchantBillItemVO">
SELECT
MAX(ms.id) AS storeId,
ms.out_store_id AS outStoreId,
MAX(ms.name) AS storeName,
MAX(ms.city_id) AS cityId,
COUNT(o.id) AS orderCount,
COALESCE(SUM(o.money), 0) AS orderAmount,
COALESCE(SUM(o.money_delivery), 0) AS deliveryAmount,
COALESCE(SUM(rr.refund_amount), 0) AS refundAmount,
COALESCE(SUM(o.money), 0) - COALESCE(SUM(rr.refund_amount), 0) AS merchantReceivableAmount
FROM orders o
INNER JOIN merchant_store ms ON ms.out_store_id = CAST(o.store_oid AS CHAR)
AND ms.city_id = o.city_id
AND ms.is_del = 0
LEFT JOIN (
SELECT oid, SUM(money) AS refund_amount
FROM orders_refund_record
WHERE status = 1
GROUP BY oid
) rr ON rr.oid = o.id
<include refid="merchantBillFilter"/>
GROUP BY ms.out_store_id
ORDER BY MAX(o.pay_time) DESC
LIMIT #{offset}, #{pageSize}
</select>
<select id="countMerchantBillDetails" resultType="long">
SELECT COUNT(1)
FROM orders o
<include refid="merchantBillDetailFilter"/>
</select>
<select id="selectMerchantBillDetails" resultType="com.diligrp.rider.vo.MerchantBillDetailItemVO">
SELECT
o.id AS orderId,
o.order_no AS orderNo,
o.pay_time AS payTime,
o.complete_time AS completeTime,
o.status AS status,
o.money AS orderAmount,
o.money_delivery AS deliveryAmount,
COALESCE(rr.refund_amount, 0) AS refundAmount
FROM orders o
LEFT JOIN (
SELECT oid, SUM(money) AS refund_amount
FROM orders_refund_record
WHERE status = 1
GROUP BY oid
) rr ON rr.oid = o.id
<include refid="merchantBillDetailFilter"/>
ORDER BY o.pay_time DESC, o.id DESC
LIMIT #{offset}, #{pageSize}
</select>
<select id="countRiderBills" resultType="long">
SELECT COUNT(1)
FROM (
SELECT o.rider_id
FROM orders o
INNER JOIN rider r ON r.id = o.rider_id AND r.is_del = 0
<include refid="riderBillFilter"/>
GROUP BY o.rider_id
) t
</select>
<select id="selectRiderBills" resultType="com.diligrp.rider.vo.RiderBillItemVO">
SELECT
o.rider_id AS riderId,
MAX(r.user_nickname) AS riderName,
MAX(r.mobile) AS mobile,
COUNT(o.id) AS orderCount,
COALESCE(SUM(o.money_delivery), 0) AS deliveryAmount,
COALESCE(SUM(o.rider_income), 0) AS riderIncomeAmount,
COALESCE(SUM(rr.refund_amount), 0) AS refundAdjustAmount,
COALESCE(SUM(o.rider_income), 0) AS settleableAmount
FROM orders o
INNER JOIN rider r ON r.id = o.rider_id AND r.is_del = 0
LEFT JOIN (
SELECT oid, SUM(money) AS refund_amount
FROM orders_refund_record
WHERE status = 1
GROUP BY oid
) rr ON rr.oid = o.id
<include refid="riderBillFilter"/>
GROUP BY o.rider_id
ORDER BY MAX(o.complete_time) DESC
LIMIT #{offset}, #{pageSize}
</select>
<select id="countRiderBillDetails" resultType="long">
SELECT COUNT(1)
FROM orders o
<include refid="riderBillDetailFilter"/>
</select>
<select id="selectRiderBillDetails" resultType="com.diligrp.rider.vo.RiderBillDetailItemVO">
SELECT
o.id AS orderId,
o.order_no AS orderNo,
o.complete_time AS completeTime,
o.status AS status,
o.money_delivery AS deliveryAmount,
o.rider_income AS riderIncomeAmount,
COALESCE(rr.refund_amount, 0) AS refundAmount,
o.rider_income AS settleableAmount
FROM orders o
LEFT JOIN (
SELECT oid, SUM(money) AS refund_amount
FROM orders_refund_record
WHERE status = 1
GROUP BY oid
) rr ON rr.oid = o.id
<include refid="riderBillDetailFilter"/>
ORDER BY o.complete_time DESC, o.id DESC
LIMIT #{offset}, #{pageSize}
</select>
</mapper>