RuoYi-Vue/xkt/src/main/resources/mapper/StoreOrderMapper.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 &lt;= #{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 &lt;= 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>