mitao
2024-04-30 ab4ea7b8f10c9b66aed9c2ea161a08b25c3851a7
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<?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.sinata.rest.modular.mall.dao.MallOrderMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.sinata.rest.modular.mall.model.MallOrder">
        <id column="order_no" property="orderNo"/>
        <result column="order_main_no" property="orderMainNo"/>
        <result column="merchant_id" property="merchantId"/>
        <result column="user_id" property="userId"/>
        <result column="goods_money" property="goodsMoney"/>
        <result column="freight_money" property="freightMoney"/>
        <result column="coupon_id" property="couponId"/>
        <result column="coupon_money" property="couponMoney"/>
        <result column="pay_money" property="payMoney"/>
        <result column="take_name" property="takeName"/>
        <result column="phone" property="phone"/>
        <result column="address" property="address"/>
        <result column="number" property="number"/>
        <result column="express_company" property="expressCompany"/>
        <result column="waybill_no" property="waybillNo"/>
        <result column="mark" property="mark"/>
        <result column="transaction_no" property="transactionNo"/>
        <result column="pay_type" property="payType"/>
        <result column="pay_time" property="payTime"/>
        <result column="send_time" property="sendTime"/>
        <result column="take_time" property="takeTime"/>
        <result column="cancel_type" property="cancelType"/>
        <result column="cancel_time" property="cancelTime"/>
        <result column="cause" property="cause"/>
        <result column="cancel_describe" property="cancelDescribe"/>
        <result column="state" property="state"/>
        <result column="is_delete" property="isDelete"/>
        <result column="cms_delete" property="cmsDelete"/>
        <result column="create_time" property="createTime"/>
        <result column="is_after_sale" property="isAfterSale"/>
        <result column="out_trade_no" property="outTradeNo"/>
        <result column="pay_total_fee" property="payTotalFee"/>
        <result column="use_user_id" property="useUserId"/>
        <result column="sale_user_id" property="saleUserId"/>
        <result column="order_type" property="orderType"/>
        <result column="city_code" property="cityCode"/>
        <result column="start_time" property="startTime"/>
        <result column="end_time" property="endTime"/>
        <result column="goods_id" property="goodsId"/>
        <result column="is_trading_dividend" property="isTradingDividend"/>
    </resultMap>
 
    <select id="getOrderByUserIdList" resultType="com.sinata.rest.modular.mall.controller.vo.VoMallOrder">
        SELECT
            mo.*,
            ms.goods_name, ms.goods_image
        FROM
            mall_order mo
        LEFT JOIN `mall_order_detail` md ON md.order_no = mo.order_no
        LEFT JOIN mall_goods ms ON ms.id = md.goods_id
        LEFT JOIN mem_user u ON mo.user_id = u.id
        <where>mo.is_delete = 0
        <if test="userId != null">
            and (mo.user_id = #{userId} or mo.use_user_id = #{userId})
        </if>
        <if test="saleUserId != null">
            and mo.sale_user_id = #{saleUserId}
        </if>
        <if test="state != null">
            and mo.state = #{state}
        </if>
        </where>
        group by mo.order_no
        order by mo.order_no desc
    </select>
 
    <select id="getOrderDetailByUserIdList" resultType="com.sinata.rest.modular.mall.controller.vo.VoMallOrderDetail">
        SELECT
            order_detail.*,
            o.order_no, o.create_time, o.number, o.pay_money, o.coupon_id, o.coupon_money, o.goods_money, o.state
        FROM mall_order o
        RIGHT JOIN mall_order_detail order_detail ON order_detail.order_no = o.order_no
        WHERE o.is_delete=0
        <if test="userId != null">
            and o.user_id = #{userId}
        </if>
        <if test="stateArray != null">
            AND o.state IN
            <foreach collection="stateArray" open="(" separator="," close=")" item="ids">
                #{ids}
            </foreach>
        </if>
        ORDER BY o.order_no DESC
    </select>
 
    <select id="getOrderListByOrderNo" resultType="com.sinata.rest.modular.mall.controller.vo.VoMallOrder">
        SELECT
            o.*,
            merchant.id merchant_id,
            merchant.merchant_name,
            merchant.logo
            <if test="orderNo != null">
                ,tab.*
            </if>
        FROM
            mall_order o
        LEFT JOIN mem_merchant merchant ON merchant.id = o.merchant_id
        <if test="orderNo != null">
            LEFT JOIN (
            SELECT
            md.goods_name,
            md.goods_image,
            md.start_time,
            md.end_time,
            mo.use_time,
            order_no,
            (SELECT GROUP_CONCAT( mt.`tag_name` ) FROM mall_tag mt WHERE FIND_IN_SET( mt.id, md.tag_ids)) tagName
            FROM
            mall_order_detail mo
            LEFT JOIN mall_goods md ON md.id = mo.goods_id
            WHERE
            mo.order_no = #{orderNo}
            ) tab ON tab.order_no = o.order_no
        </if>
        WHERE
            o.is_delete = 0
            <if test="orderNo != null">
                and o.order_no = #{orderNo}
            </if>
        ORDER BY o.order_no DESC
    </select>
 
    <select id="getOrderDetailByOrderNoList" resultType="com.sinata.rest.modular.mall.controller.vo.VoMallOrderDetail">
        SELECT
            order_detail.*,
            o.order_no, o.create_time, o.number, o.pay_money, o.coupon_id, o.coupon_money, o.goods_money, o.state
        FROM mall_order o
        RIGHT JOIN mall_order_detail order_detail ON order_detail.order_no = o.order_no
        WHERE o.is_delete=0
        <if test="orderNo != null">
            and o.order_no = #{orderNo}
        </if>
        ORDER BY o.order_no DESC
    </select>
 
    <!--  待评价订单  -->
    <select id="getOrderWaitEvaluate" resultType="java.util.Map">
        SELECT
            order_detail.order_detail_no, order_detail.goods_id,
            o.order_no, o.merchant_id, o.user_id
        FROM mall_order o
        RIGHT JOIN mall_order_detail order_detail ON order_detail.order_no = o.order_no
        WHERE o.is_delete=0
        AND (order_detail.is_evaluate = 0 OR order_detail.is_evaluate IS NULL)
        <if test="outTime != null">
            AND o.take_time <![CDATA[ <= ]]> #{outTime}
        </if>
    </select>
 
    <!-- 获取订单支付信息 -->
    <select id="getOrderPayInfoByOrderDetailNo"
            resultType="com.sinata.rest.modular.mall.controller.vo.VoMallOrderPayInfo">
        SELECT o.order_no,
               o.pay_money,
               o.coupon_id,
               o.coupon_money,
               o.pay_type,
               o.transaction_no,
               o.out_trade_no,
               o.pay_total_fee,
               od.order_detail_no,
               od.goods_num,
               od.refund_num,
               od.refund_money
        FROM mall_order o
                 LEFT JOIN mall_order_detail od
                           ON o.order_no = od.order_no
        WHERE od.order_detail_no = #{orderDetailNo}
    </select>
 
    <!--  默认评价订单  -->
    <update id="defaultOrderEvaluate">
        UPDATE mall_order_detail SET is_evaluate = 1
        WHERE (is_evaluate = 0 OR is_evaluate IS NULL)
        AND order_no IN
        (
        SELECT o.order_no FROM mall_order o
        WHERE o.is_delete=0
        <if test="outTime != null">
            AND o.take_time <![CDATA[ <= ]]> #{outTime}
        </if>
        )
    </update>
 
    <select id="getSumMoneyBySaleUser" resultType="java.math.BigDecimal">
        SELECT
            IFNULL(SUM( pay_money ), 0) sumMoney
        FROM
        mall_order
        <where>
            <if test="saleUserIdList != null and saleUserIdList.size != 0">
                AND sale_user_id IN
                <foreach collection="saleUserIdList" open="(" separator="," close=")" item="item">
                    #{item}
                </foreach>
            </if>
            <if test="stateList != null and stateList.size != 0">
                AND state IN
                <foreach collection="stateList" open="(" separator="," close=")" item="item">
                    #{item}
                </foreach>
            </if>
            <if test="beginTime != null and beginTime != ''">
                AND create_time <![CDATA[ >= ]]> #{beginTime}
            </if>
            <if test="endTime != null and endTime != ''">
                AND create_time <![CDATA[ <= ]]> #{endTime}
            </if>
        </where>
    </select>
 
    <select id="getNotCommissionSettlementOrderList" resultType="com.sinata.rest.modular.mall.controller.vo.VoMallOrder">
        SELECT
            o.*
        FROM mall_order o
            LEFT JOIN mall_commission_settlement cs ON cs.order_no = o.order_no
        WHERE
            (o.state = 3 OR o.state = 4)
            AND cs.order_no IS NULL
    </select>
 
</mapper>