175 lines
7.9 KiB
XML
175 lines
7.9 KiB
XML
<?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.ruoyi.xkt.mapper.StoreOrderMapper">
|
|
|
|
<select id="listStoreOrderPageItem" parameterType="com.ruoyi.xkt.dto.order.StoreOrderQueryDTO"
|
|
resultType="com.ruoyi.xkt.dto.order.StoreOrderPageItemDTO">
|
|
SELECT
|
|
so.*,
|
|
s.store_name,
|
|
e.express_name
|
|
FROM
|
|
store_order so
|
|
LEFT JOIN store s ON so.store_id = s.id
|
|
LEFT JOIN express e ON so.express_id = e.id
|
|
<where>
|
|
so.del_flag = '0'
|
|
<if test="storeOrderIds != null and !storeOrderIds.isEmpty()">
|
|
AND so.id IN
|
|
<foreach collection="storeOrderIds" item="obj" open="(" close=")" separator=",">
|
|
#{obj}
|
|
</foreach>
|
|
</if>
|
|
<if test="storeId != null">
|
|
AND so.store_id = #{storeId}
|
|
</if>
|
|
<if test="orderUserId != null">
|
|
AND so.order_user_id = #{orderUserId}
|
|
</if>
|
|
<if test="orderNo != null and orderNo !=''">
|
|
AND so.order_no LIKE CONCAT('%', #{orderNo}, '%')
|
|
</if>
|
|
<if test="originOrderNo != null and originOrderNo !=''">
|
|
AND EXISTS (SELECT 1 FROM store_order so1 WHERE so1.id = so.origin_order_id AND so1.order_no = #{originOrderNo} AND so1.del_flag = '0')
|
|
</if>
|
|
<if test="orderType != null">
|
|
AND so.order_type = #{orderType}
|
|
</if>
|
|
<if test="orderStatus != null">
|
|
AND so.order_status = #{orderStatus}
|
|
</if>
|
|
<if test="orderStatusList != null and !orderStatusList.isEmpty()">
|
|
AND so.order_status IN
|
|
<foreach collection="orderStatusList" item="obj" open="(" close=")" separator=",">
|
|
#{obj}
|
|
</foreach>
|
|
</if>
|
|
<if test="destinationContactName != null and destinationContactName !=''">
|
|
AND so.destination_contact_name LIKE CONCAT('%', #{destinationContactName}, '%')
|
|
</if>
|
|
<if test="destinationContactPhoneNumber != null and destinationContactPhoneNumber !=''">
|
|
AND so.destination_contact_phone_number LIKE CONCAT('%', #{destinationContactPhoneNumber}, '%')
|
|
</if>
|
|
<if test="deliveryType != null">
|
|
AND so.delivery_type = #{deliveryType}
|
|
</if>
|
|
<if test="orderTimeBegin != null and orderTimeEnd != null">
|
|
AND so.create_time BETWEEN #{orderTimeBegin} AND #{orderTimeEnd}
|
|
</if>
|
|
<if test="payTimeBegin != null and payTimeEnd != null">
|
|
AND so.pay_over_time BETWEEN #{payTimeBegin} AND #{payTimeEnd}
|
|
</if>
|
|
<if test="expressWaybillNo != null and expressWaybillNo !=''">
|
|
AND EXISTS (SELECT 1 FROM store_order_detail sod WHERE sod.store_order_id = so.id AND sod.del_flag = '0' AND sod.express_waybill_no LIKE CONCAT('%', #{expressWaybillNo}, '%'))
|
|
</if>
|
|
<if test="prodArtNum != null and prodArtNum !=''">
|
|
AND EXISTS (SELECT 1 FROM store_order_detail sod WHERE sod.store_order_id = so.id AND sod.del_flag = '0' AND sod.prod_art_num LIKE CONCAT('%', #{prodArtNum}, '%'))
|
|
</if>
|
|
</where>
|
|
</select>
|
|
<select id="listNeedContinueRefundOrder" resultType="com.ruoyi.xkt.domain.StoreOrder">
|
|
SELECT
|
|
so.*
|
|
FROM
|
|
store_order so
|
|
WHERE
|
|
so.del_flag = '0'
|
|
AND EXISTS (
|
|
SELECT 1 FROM
|
|
store_order_detail sod
|
|
WHERE
|
|
sod.store_order_id = so.id
|
|
AND sod.del_flag = '0'
|
|
AND sod.detail_status = 24
|
|
AND sod.pay_status = 2
|
|
)
|
|
</select>
|
|
<select id="countOrder" parameterType="com.ruoyi.xkt.dto.order.StoreOrderCountQueryDTO"
|
|
resultType="com.ruoyi.xkt.dto.order.StoreOrderCountDTO">
|
|
SELECT
|
|
SUM(1) AS `all`,
|
|
SUM(CASE WHEN `order_type` = 2 THEN 1 ELSE 0 END) AS `after_sale`,
|
|
SUM(CASE WHEN `order_status` = 10 THEN 1 ELSE 0 END) AS `cancelled`,
|
|
SUM(CASE WHEN `order_status` = 11 THEN 1 ELSE 0 END) AS `pending_payment`,
|
|
SUM(CASE WHEN `order_status` = 12 THEN 1 ELSE 0 END) AS `pending_shipment`,
|
|
SUM(CASE WHEN `order_status` = 13 THEN 1 ELSE 0 END) AS `shipped`,
|
|
SUM(CASE WHEN `order_status` = 14 THEN 1 ELSE 0 END) AS `completed`,
|
|
SUM(CASE WHEN `order_status` = 21 THEN 1 ELSE 0 END) AS `after_sale_in_progress`,
|
|
SUM(CASE WHEN `order_status` = 22 THEN 1 ELSE 0 END) AS `after_sale_rejected`,
|
|
SUM(CASE WHEN `order_status` = 23 THEN 1 ELSE 0 END) AS `platform_intervened`,
|
|
SUM(CASE WHEN `order_status` = 24 THEN 1 ELSE 0 END) AS `after_sale_completed`
|
|
FROM
|
|
store_order
|
|
<where>
|
|
del_flag = '0'
|
|
<if test="storeId != null">
|
|
AND store_id = #{storeId}
|
|
</if>
|
|
<if test="orderUserId != null">
|
|
AND order_user_id = #{orderUserId}
|
|
</if>
|
|
<if test="createTimeBegin != null and createTimeEnd != null">
|
|
AND create_time BETWEEN #{createTimeBegin} AND #{createTimeEnd}
|
|
</if>
|
|
<if test="orderStatusList != null and !orderStatusList.isEmpty()">
|
|
AND order_status IN
|
|
<foreach collection="orderStatusList" item="obj" open="(" close=")" separator=",">
|
|
#{obj}
|
|
</foreach>
|
|
</if>
|
|
</where>
|
|
</select>
|
|
<select id="listNeedAutoCompleteOrder" resultType="com.ruoyi.xkt.domain.StoreOrder">
|
|
SELECT
|
|
so.*
|
|
FROM
|
|
store_order so
|
|
<where>
|
|
so.del_flag = '0'
|
|
AND so.order_status = 13
|
|
AND so.delivery_over_time <= #{deliveryBeforeTime}
|
|
AND NOT EXISTS (SELECT 1 FROM store_order rso WHERE rso.origin_order_id = so.id AND rso.del_flag = '0' AND rso.order_type = 2 AND rso.order_status != 24)
|
|
</where>
|
|
</select>
|
|
<select id="listNeedAutoRefundOrder" resultType="com.ruoyi.xkt.domain.StoreOrder">
|
|
SELECT
|
|
so.*
|
|
FROM
|
|
store_order so
|
|
WHERE
|
|
so.del_flag = '0'
|
|
AND so.order_status = 12
|
|
AND so.delivery_end_time <= NOW()
|
|
AND NOT EXISTS (SELECT 1 FROM store_order rso WHERE rso.origin_order_id = so.id AND rso.del_flag = '0' AND rso.order_type = 2)
|
|
AND NOT EXISTS (SELECT 1 FROM store_order_detail sod WHERE so.id = sod.store_order_id AND sod.del_flag = '0' AND sod.detail_status != 12)
|
|
</select>
|
|
<select id="listNeedAutoCheckCompletePendingShipmentOrders" resultType="com.ruoyi.xkt.domain.StoreOrder">
|
|
SELECT DISTINCT
|
|
so2.*
|
|
FROM
|
|
store_order so1
|
|
JOIN store_order so2 ON so1.origin_order_id = so2.id
|
|
WHERE
|
|
so1.order_status = 24
|
|
AND so2.order_status = 12
|
|
AND so2.del_flag = '0'
|
|
</select>
|
|
<select id="listOrderDetailStatusByOrderIds"
|
|
resultType="com.ruoyi.xkt.dto.order.StoreOrderDetailStatusDTO">
|
|
SELECT
|
|
sod1.store_order_id AS order_id,
|
|
sod1.id AS detail_id,
|
|
sod1.detail_status,
|
|
sod2.id AS refund_detail_id,
|
|
sod2.detail_status AS refund_detail_status
|
|
FROM
|
|
store_order_detail sod1
|
|
LEFT JOIN store_order_detail sod2 ON sod1.id = sod2.origin_order_detail_id
|
|
WHERE
|
|
sod1.del_flag = '0'
|
|
AND sod1.store_order_id IN
|
|
<foreach collection="orderIds" item="obj" open="(" close=")" separator=",">
|
|
#{obj}
|
|
</foreach>
|
|
</select>
|
|
</mapper> |