<?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.order.mapper.OrderMapper">
|
|
|
<select id="selectOrderListByUserId" resultType="com.ruoyi.order.vo.OrderVO">
|
SELECT
|
CAST(o.id AS CHAR) id,
|
o.order_number,
|
o.order_status,
|
o.good_name,
|
o.good_pics,
|
o.num,
|
o.point,
|
o.payment_amount,
|
o.express_amount,
|
COUNT(o.id) AS order_count
|
FROM
|
t_order o
|
<where>
|
pay_status = 2
|
<if test="status != null">
|
<choose>
|
<when test="status == 4">
|
and o.order_status in (4, 8)
|
</when>
|
<otherwise>
|
and o.order_status = #{status}
|
</otherwise>
|
</choose>
|
</if>
|
<if test="userId != null">
|
AND o.app_user_id = #{userId}
|
</if>
|
</where>
|
GROUP BY
|
o.id,
|
o.order_number,
|
o.order_status,
|
o.good_name,
|
o.good_pics,
|
o.num,
|
o.point,
|
o.payment_amount,
|
o.create_time,
|
o.express_amount
|
ORDER BY
|
o.create_time DESC
|
</select>
|
|
|
|
<select id="getOrderPageList" resultType="com.ruoyi.order.vo.OrderPageListVo">
|
select
|
id,
|
order_number as code,
|
DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') as createTime,
|
DATE_FORMAT(after_sale_time, '%Y-%m-%d %H:%i:%s') as afterSaleTime,
|
app_user_id as appUserId,
|
CASE WHEN order_type = 1 THEN 1 WHEN order_type = 2 and distribution_mode = 1 THEN 2 ELSE 3 END as goodsType,
|
pay_method as paymentType,
|
total_amount as orderMoney,
|
point,
|
order_status as status,
|
shop_id,
|
distribution_mode as distributionMode,
|
express_json,
|
deliver_province,
|
deliver_province_code,
|
deliver_city,
|
deliver_city_code
|
from t_order where del_flag = 0 and pay_status = 2
|
<if test="null != item.code and '' != item.code">
|
and order_number like CONCAT('%', #{item.code}, '%')
|
</if>
|
<if test="null != item.appUserIds and item.appUserIds.size() > 0">
|
and app_user_id in
|
<foreach collection="item.appUserIds" separator="," item="tem" index="index" open="(" close=")">
|
#{tem}
|
</foreach>
|
</if>
|
<if test="null != item.goodsType and 1 == item.goodsType">
|
and order_type = #{item.goodsType}
|
</if>
|
<if test="null != item.goodsType and 2 == item.goodsType">
|
and order_type = 2 and distribution_mode = 1
|
</if>
|
<if test="null != item.goodsType and 3 == item.goodsType">
|
and order_type = 2 and distribution_mode = 2
|
</if>
|
<if test="null != item.paymentType">
|
and pay_method = #{item.paymentType}
|
</if>
|
<if test="null != item.status and 4 != item.status">
|
and order_status = #{item.status}
|
</if>
|
<if test="null != item.status and 4 == item.status">
|
and order_status in (4, 8)
|
</if>
|
<if test="null != item.shopId">
|
and shop_id = #{item.shopId} and distribution_mode != 2
|
</if>
|
<if test="null != item.startTime and null != item.endTime">
|
and create_time between #{item.startTime} and #{item.endTime}
|
</if>
|
order by create_time desc
|
</select>
|
<select id="getOrderStatistics" resultType="com.ruoyi.order.vo.OrderStatistics">
|
SELECT
|
coalesce(SUM( CASE WHEN tor.order_status!=5 THEN 1 ELSE 0 END ), 0) as total,
|
coalesce(SUM( CASE WHEN tor.order_type = 1 and tor.order_status!=5 THEN 1 ELSE 0 END ),0) as serviceTotal,
|
coalesce(SUM( CASE WHEN tor.order_type = 2 and tor.order_status!=5 THEN 1 ELSE 0 END ),0) as singleTotal,
|
coalesce(SUM( CASE WHEN tor.order_status!=5 THEN tor.total_amount ELSE 0 END ),0) as totalMoney,
|
coalesce(SUM( CASE WHEN tor.order_type = 1 and tor.order_status!=5 THEN tor.total_amount ELSE 0 END ),0) as
|
serviceTotalMoney,
|
coalesce( SUM( CASE WHEN tor.order_type = 2 and tor.order_status!=5 THEN tor.total_amount ELSE 0 END ),0) as
|
singleTotalMoney
|
FROM
|
t_order tor where tor.del_flag = 0 and tor.order_status in (1, 2, 3, 4, 7, 8) and tor.pay_status = 2
|
<if test="null != shopId">
|
and tor.shop_id = #{shopId} and (if(tor.order_type = 2, tor.distribution_mode = 1, 1 = 1))
|
</if>
|
</select>
|
|
|
<select id="getGoodsSaleNum" resultType="int">
|
select
|
ifnull(sum(a.num), 0)
|
from t_order_good a
|
left join t_order b on (a.order_id = b.id)
|
where b.del_flag = 0 and b.pay_status = 2 and b.order_status in (1, 2, 3, 4, 7, 8) and a.goods_id = #{goodsId}
|
<if test="null != type">
|
and a.type = #{type}
|
</if>
|
<if test="userId != null">
|
and b.app_user_id = #{userId}
|
</if>
|
</select>
|
|
|
<select id="getShopSaleNum" resultType="int">
|
select
|
ifnull(count(1), 0)
|
from t_order a
|
where del_flag = 0 and pay_status = 2 and order_status in (1, 2, 3, 4, 7, 8)
|
<if test="null != shopId and 0 != shopId">
|
and shop_id = #{shopId}
|
</if>
|
<if test="null != type">
|
and order_type = #{type}
|
</if>
|
</select>
|
<select id="getShopSaleNumByShopIds" resultType="java.lang.Integer">
|
select
|
ifnull(count(1), 0)
|
from t_order a
|
where del_flag = 0 and pay_status = 2 and order_status in (1, 2, 3, 4, 7, 8)
|
<if test="null != shopIds and shopIds.size() > 0">
|
and shop_id in
|
<foreach collection="shopIds" item="shopId" separator="," open="(" close=")" index="index">
|
#{shopId}
|
</foreach>
|
</if>
|
<if test="null != type and 1 == type">
|
and a.order_type = #{type}
|
</if>
|
<if test="null != type and 2 == type">
|
and a.order_type = #{type} and a.distribution_mode = 1
|
</if>
|
</select>
|
<select id="getOrderExportList" resultType="com.ruoyi.order.vo.OrderExport">
|
SELECT
|
o.order_status,
|
o.order_number,
|
CASE WHEN o.order_type = 1 THEN 1 WHEN o.order_type = 2 and o.distribution_mode = 1 THEN 2 ELSE 3 END as orderType,
|
case when o.order_type = 1 then 1 else o.distribution_mode end as distributionMode,
|
o.address_Json,
|
o.create_time,
|
o.app_user_id,
|
og.goods_id,
|
(og.selling_price * og.num) as selling_price,
|
og.good_json,
|
o.payment_amount orderMoney,
|
o.express_json,
|
o.serial_number,
|
o.deliver_province province,
|
o.deliver_province_code provinceCode,
|
o.deliver_city city,
|
o.deliver_city_code cityCode
|
FROM
|
t_order_good og
|
LEFT JOIN t_order o ON og.order_id = o.id
|
where o.del_flag = 0 and o.pay_status = 2
|
<if test="null != item.code and '' != item.code">
|
and o.order_number like CONCAT('%', #{item.code}, '%')
|
</if>
|
<if test="null != item.appUserIds and item.appUserIds.size() > 0">
|
and o.app_user_id in
|
<foreach collection="item.appUserIds" separator="," item="tem" index="index" open="(" close=")">
|
#{tem}
|
</foreach>
|
</if>
|
<if test="null != item.goodsType and 1 == item.goodsType">
|
and order_type = #{item.goodsType}
|
</if>
|
<if test="null != item.goodsType and 2 == item.goodsType">
|
and order_type = 2 and distribution_mode = 1
|
</if>
|
<if test="null != item.goodsType and 3 == item.goodsType">
|
and order_type = 2 and distribution_mode = 2
|
</if>
|
<if test="null != item.paymentType">
|
and o.pay_method = #{item.paymentType}
|
</if>
|
<if test="null != item.status and 4 != item.status">
|
and o.order_status = #{item.status}
|
</if>
|
<if test="null != item.status and 4 == item.status">
|
and o.order_status in (4, 8)
|
</if>
|
<if test="null != item.shopId">
|
and o.shop_id = #{item.shopId} and distribution_mode != 2
|
</if>
|
<if test="null != item.startTime and null != item.endTime">
|
and o.create_time between #{item.startTime} and #{item.endTime}
|
</if>
|
order by o.create_time desc
|
</select>
|
|
|
|
<select id="getOrderByAppUserIdsAndWriteOffShop" resultType="com.ruoyi.order.model.Order">
|
select * from t_order where del_flag = 0 and pay_status = 2 and order_status in (1, 2, 3, 4, 5, 7, 8)
|
<if test="null != shopId and 0 != shopId">
|
and shop_id = #{shopId} and (order_type = 1 or (order_type = 2 and distribution_mode = 1))
|
</if>
|
<if test="null != appUserId and appUserId.size() > 0">
|
and app_user_id in
|
<foreach collection="appUserId" item="item" index="index" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
</select>
|
</mapper>
|