You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
355 lines
19 KiB
355 lines
19 KiB
<?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.yami.shop.dao.OrderMapper">
|
|
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.Order">
|
|
<id column="order_id" jdbcType="BIGINT" property="orderId"/>
|
|
<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
|
|
<result column="prod_name" jdbcType="VARCHAR" property="prodName"/>
|
|
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
|
|
<result column="order_number" jdbcType="VARCHAR" property="orderNumber"/>
|
|
<result column="total" jdbcType="DECIMAL" property="total"/>
|
|
<result column="actual_total" jdbcType="DECIMAL" property="actualTotal"/>
|
|
<result column="pay_type" jdbcType="INTEGER" property="payType"/>
|
|
<result column="remarks" jdbcType="VARCHAR" property="remarks"/>
|
|
<result column="status" jdbcType="INTEGER" property="status"/>
|
|
<result column="dvy_type" jdbcType="VARCHAR" property="dvyType"/>
|
|
<result column="dvy_id" jdbcType="BIGINT" property="dvyId"/>
|
|
<result column="dvy_flow_id" jdbcType="VARCHAR" property="dvyFlowId"/>
|
|
<result column="freight_amount" jdbcType="DECIMAL" property="freightAmount"/>
|
|
<result column="addr_order_id" jdbcType="BIGINT" property="addrOrderId"/>
|
|
<result column="product_nums" jdbcType="INTEGER" property="productNums"/>
|
|
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
|
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
|
<result column="pay_time" jdbcType="TIMESTAMP" property="payTime"/>
|
|
<result column="dvy_time" jdbcType="TIMESTAMP" property="dvyTime"/>
|
|
<result column="finally_time" jdbcType="TIMESTAMP" property="finallyTime"/>
|
|
<result column="cancel_time" jdbcType="TIMESTAMP" property="cancelTime"/>
|
|
<result column="is_payed" jdbcType="BIT" property="isPayed"/>
|
|
<result column="delete_status" jdbcType="INTEGER" property="deleteStatus"/>
|
|
<result column="refund_sts" jdbcType="INTEGER" property="refundSts"/>
|
|
</resultMap>
|
|
|
|
<resultMap id="MyOrderMap" type="com.yami.shop.bean.app.dto.MyOrderDto">
|
|
<result column="order_number" jdbcType="VARCHAR" property="orderNumber"/>
|
|
<result column="actual_total" jdbcType="DECIMAL" property="actualTotal"/>
|
|
<result column="status" jdbcType="INTEGER" property="status"/>
|
|
<collection property="orderItemDtos" ofType="com.yami.shop.bean.app.dto.MyOrderItemDto">
|
|
<result column="pic" jdbcType="VARCHAR" property="pic"/>
|
|
<result column="prod_name" jdbcType="VARCHAR" property="prodName"/>
|
|
<result column="prod_count" jdbcType="INTEGER" property="prodCount"/>
|
|
<result column="price" jdbcType="DECIMAL" property="price"/>
|
|
<result column="sku_name" jdbcType="VARCHAR" property="skuName"/>
|
|
</collection>
|
|
</resultMap>
|
|
|
|
<resultMap id="OrderShopMap" type="com.yami.shop.bean.app.dto.OrderShopDto">
|
|
<result column="shop_id" jdbcType="INTEGER" property="shopId"/>
|
|
<result column="shop_name" jdbcType="VARCHAR" property="shopName"/>
|
|
<result column="actual_total" jdbcType="DECIMAL" property="actualTotal"/>
|
|
<result column="total" jdbcType="DECIMAL" property="total"/>
|
|
<result column="total_num" jdbcType="INTEGER" property="totalNum"/>
|
|
<result column="transfee" jdbcType="DECIMAL" property="transfee"/>
|
|
<result column="reduce_amount" jdbcType="DECIMAL" property="reduceAmount"/>
|
|
<association property="userAddrDto" javaType="com.yami.shop.bean.app.dto.UserAddrDto">
|
|
<result column="addr_id" jdbcType="INTEGER" property="addrId"/>
|
|
<result column="receiver" jdbcType="VARCHAR" property="receiver"/>
|
|
<result column="province" jdbcType="VARCHAR" property="province"/>
|
|
<result column="city" jdbcType="VARCHAR" property="city"/>
|
|
<result column="area" jdbcType="VARCHAR" property="area"/>
|
|
<result column="addr" jdbcType="VARCHAR" property="addr"/>
|
|
<result column="mobile" jdbcType="VARCHAR" property="mobile"/>
|
|
</association>
|
|
<collection property="orderItemDtos" ofType="com.yami.shop.bean.app.dto.OrderItemDto">
|
|
<result column="prod_name" jdbcType="VARCHAR" property="prodName"/>
|
|
<result column="prod_count" jdbcType="INTEGER" property="prodCount"/>
|
|
<result column="pic" jdbcType="VARCHAR" property="pic"/>
|
|
<result column="price" jdbcType="DECIMAL" property="price"/>
|
|
<result column="product_total_amount" jdbcType="INTEGER" property="productTotalAmount"/>
|
|
<result column="prod_id" jdbcType="INTEGER" property="prodId"/>
|
|
<result column="sku_id" jdbcType="INTEGER" property="skuId"/>
|
|
</collection>
|
|
</resultMap>
|
|
|
|
<resultMap type="com.yami.shop.bean.model.Order" id="orderAndOrderItemMap">
|
|
<id column="order_id" jdbcType="BIGINT" property="orderId"/>
|
|
<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
|
|
<result column="prod_name" jdbcType="VARCHAR" property="prodName"/>
|
|
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
|
|
<result column="order_number" jdbcType="VARCHAR" property="orderNumber"/>
|
|
<result column="total" jdbcType="DECIMAL" property="total"/>
|
|
<result column="actual_total" jdbcType="DECIMAL" property="actualTotal"/>
|
|
<result column="pay_type" jdbcType="INTEGER" property="payType"/>
|
|
<result column="remarks" jdbcType="VARCHAR" property="remarks"/>
|
|
<result column="status" jdbcType="INTEGER" property="status"/>
|
|
<result column="dvy_type" jdbcType="VARCHAR" property="dvyType"/>
|
|
<result column="dvy_id" jdbcType="BIGINT" property="dvyId"/>
|
|
<result column="dvy_flow_id" jdbcType="VARCHAR" property="dvyFlowId"/>
|
|
<result column="freight_amount" jdbcType="DECIMAL" property="freightAmount"/>
|
|
<result column="addr_order_id" jdbcType="BIGINT" property="addrOrderId"/>
|
|
<result column="product_nums" jdbcType="INTEGER" property="productNums"/>
|
|
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
|
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
|
<result column="pay_time" jdbcType="TIMESTAMP" property="payTime"/>
|
|
<result column="dvy_time" jdbcType="TIMESTAMP" property="dvyTime"/>
|
|
<result column="finally_time" jdbcType="TIMESTAMP" property="finallyTime"/>
|
|
<result column="cancel_time" jdbcType="TIMESTAMP" property="cancelTime"/>
|
|
<result column="is_payed" jdbcType="BIT" property="isPayed"/>
|
|
<result column="delete_status" jdbcType="INTEGER" property="deleteStatus"/>
|
|
<result column="refund_sts" jdbcType="INTEGER" property="refundSts"/>
|
|
<collection property="orderItems" ofType="com.yami.shop.bean.model.OrderItem">
|
|
<id column="order_item_id" jdbcType="BIGINT" property="orderItemId"/>
|
|
<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
|
|
<result column="order_number" jdbcType="VARCHAR" property="orderNumber"/>
|
|
<result column="prod_id" jdbcType="BIGINT" property="prodId"/>
|
|
<result column="sku_id" jdbcType="BIGINT" property="skuId"/>
|
|
<result column="prod_count" jdbcType="INTEGER" property="prodCount"/>
|
|
<result column="prod_name" jdbcType="VARCHAR" property="prodName"/>
|
|
<result column="pic" jdbcType="VARCHAR" property="pic"/>
|
|
<result column="price" jdbcType="DECIMAL" property="price"/>
|
|
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
|
|
<result column="product_total_amount" jdbcType="DECIMAL" property="productTotalAmount"/>
|
|
<result column="rec_time" jdbcType="TIMESTAMP" property="recTime"/>
|
|
<result column="comm_sts" jdbcType="INTEGER" property="commSts"/>
|
|
</collection>
|
|
</resultMap>
|
|
|
|
<resultMap type="com.yami.shop.bean.model.Order" id="orderAndOrderItemAndUserAddrMap">
|
|
<id column="order_id" jdbcType="BIGINT" property="orderId"/>
|
|
<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
|
|
<result column="prod_name" jdbcType="VARCHAR" property="prodName"/>
|
|
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
|
|
<result column="order_number" jdbcType="VARCHAR" property="orderNumber"/>
|
|
<result column="total" jdbcType="DECIMAL" property="total"/>
|
|
<result column="actual_total" jdbcType="DECIMAL" property="actualTotal"/>
|
|
<result column="pay_type" jdbcType="INTEGER" property="payType"/>
|
|
<result column="remarks" jdbcType="VARCHAR" property="remarks"/>
|
|
<result column="status" jdbcType="INTEGER" property="status"/>
|
|
<result column="dvy_type" jdbcType="VARCHAR" property="dvyType"/>
|
|
<result column="dvy_id" jdbcType="BIGINT" property="dvyId"/>
|
|
<result column="dvy_flow_id" jdbcType="VARCHAR" property="dvyFlowId"/>
|
|
<result column="freight_amount" jdbcType="DECIMAL" property="freightAmount"/>
|
|
<result column="addr_order_id" jdbcType="BIGINT" property="addrOrderId"/>
|
|
<result column="product_nums" jdbcType="INTEGER" property="productNums"/>
|
|
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
|
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
|
<result column="pay_time" jdbcType="TIMESTAMP" property="payTime"/>
|
|
<result column="dvy_time" jdbcType="TIMESTAMP" property="dvyTime"/>
|
|
<result column="finally_time" jdbcType="TIMESTAMP" property="finallyTime"/>
|
|
<result column="cancel_time" jdbcType="TIMESTAMP" property="cancelTime"/>
|
|
<result column="is_payed" jdbcType="BIT" property="isPayed"/>
|
|
<result column="delete_status" jdbcType="INTEGER" property="deleteStatus"/>
|
|
<result column="refund_sts" jdbcType="INTEGER" property="refundSts"/>
|
|
<association property="userAddrOrder" javaType="com.yami.shop.bean.model.UserAddrOrder">
|
|
<id column="addr_order_id" jdbcType="BIGINT" property="addrOrderId"/>
|
|
<result column="province" jdbcType="VARCHAR" property="province"/>
|
|
<result column="city" jdbcType="VARCHAR" property="city"/>
|
|
<result column="area" jdbcType="VARCHAR" property="area"/>
|
|
<result column="addr" jdbcType="VARCHAR" property="addr"/>
|
|
<result column="mobile" jdbcType="VARCHAR" property="mobile"/>
|
|
<result column="receiver" jdbcType="VARCHAR" property="receiver"/>
|
|
</association>
|
|
<collection property="orderItems" ofType="com.yami.shop.bean.model.OrderItem">
|
|
<id column="order_item_id" jdbcType="BIGINT" property="orderItemId"/>
|
|
<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
|
|
<result column="order_number" jdbcType="VARCHAR" property="orderNumber"/>
|
|
<result column="prod_id" jdbcType="BIGINT" property="prodId"/>
|
|
<result column="sku_id" jdbcType="BIGINT" property="skuId"/>
|
|
<result column="prod_count" jdbcType="INTEGER" property="prodCount"/>
|
|
<result column="item_prod_name" jdbcType="VARCHAR" property="prodName"/>
|
|
<result column="pic" jdbcType="VARCHAR" property="pic"/>
|
|
<result column="price" jdbcType="DECIMAL" property="price"/>
|
|
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
|
|
<result column="product_total_amount" jdbcType="DECIMAL" property="productTotalAmount"/>
|
|
<result column="rec_time" jdbcType="TIMESTAMP" property="recTime"/>
|
|
<result column="comm_sts" jdbcType="INTEGER" property="commSts"/>
|
|
</collection>
|
|
</resultMap>
|
|
|
|
<select id="getOrderByOrderNumber" resultType="com.yami.shop.bean.model.Order">
|
|
select * from tz_order o where o.order_number = #{orderNumber}
|
|
</select>
|
|
|
|
<select id="listOrderAndOrderItems" resultMap="orderAndOrderItemMap">
|
|
select o.*,oi.* from tz_order o left join tz_order_item oi on o.order_number = oi.order_number
|
|
where o.status = #{orderStatus}
|
|
and o.update_time < #{lessThanUpdateTime}
|
|
</select>
|
|
|
|
<update id="cancelOrders">
|
|
update tz_order set `status`=6,cancel_time = NOW() where order_id in
|
|
<foreach collection="orders" item="order" open="(" close=")" separator=",">
|
|
#{order.orderId}
|
|
</foreach>
|
|
</update>
|
|
|
|
<update id="confirmOrder">
|
|
update tz_order set `status`=5,finally_time = NOW() where order_id in
|
|
<foreach collection="orders" item="order" open="(" close=")" separator=",">
|
|
#{order.orderId}
|
|
</foreach>
|
|
</update>
|
|
|
|
<update id="updateByToPaySuccess">
|
|
update tz_order set status = 2,is_payed =1,update_time=NOW(),pay_time=NOW(),pay_type =#{payType} where order_number in
|
|
<foreach collection="orderNumbers" item="orderNumber" separator="," open="(" close=")">
|
|
#{orderNumber}
|
|
</foreach>
|
|
</update>
|
|
|
|
<select id="listOrdersDetialByOrder" resultMap="orderAndOrderItemAndUserAddrMap">
|
|
select o.*,oi.*,oi.prod_name as item_prod_name,uao.* from tz_order o
|
|
left join tz_order_item oi on o.order_number = oi.order_number
|
|
left join tz_user_addr_order uao on o.addr_order_id = uao.addr_order_id
|
|
where o.order_id in (
|
|
select * from (
|
|
select o.order_id from tz_order o
|
|
where 1=1
|
|
<if test="order.orderNumber != null and order.orderNumber != ''">
|
|
and o.order_number like concat('%',#{order.orderNumber},'%')
|
|
</if>
|
|
<if test="order.status != null">
|
|
and o.status = #{order.status}
|
|
</if>
|
|
<if test="order.shopId != null">
|
|
and o.shop_id = #{order.shopId}
|
|
</if>
|
|
<if test="order.isPayed != null">
|
|
and o.is_payed = #{order.isPayed}
|
|
and o.status != 6
|
|
</if>
|
|
<if test="startTime != null">
|
|
and o.create_time > #{startTime}
|
|
</if>
|
|
<if test="endTime != null">
|
|
and o.create_time < #{endTime}
|
|
</if>
|
|
ORDER BY o.create_time DESC
|
|
)
|
|
AS limittable) ORDER BY o.create_time DESC
|
|
</select>
|
|
|
|
<select id="listOrdersDetialByOrderParam" resultMap="orderAndOrderItemAndUserAddrMap">
|
|
SELECT * FROM
|
|
(
|
|
SELECT * FROM tz_order
|
|
<where>
|
|
<if test="orderParam.orderNumber != null and orderParam.orderNumber != ''">
|
|
and order_number = #{orderParam.orderNumber}
|
|
</if>
|
|
<if test="orderParam.status != null">
|
|
and status = #{orderParam.status}
|
|
</if>
|
|
<if test="orderParam.shopId != null">
|
|
and shop_id = #{orderParam.shopId}
|
|
</if>
|
|
<if test="orderParam.isPayed != null">
|
|
and is_payed = #{orderParam.isPayed}
|
|
and status != 6
|
|
</if>
|
|
<if test="orderParam.startTime != null">
|
|
and create_time > #{orderParam.startTime}
|
|
</if>
|
|
<if test="orderParam.endTime != null">
|
|
and create_time < #{orderParam.endTime}
|
|
</if>
|
|
</where>
|
|
ORDER BY update_time DESC
|
|
LIMIT #{adapter.begin} , #{adapter.end}
|
|
) AS o
|
|
LEFT JOIN tz_order_item oi
|
|
ON o.order_number = oi.order_number
|
|
LEFT JOIN tz_user_addr_order uao
|
|
ON o.addr_order_id = uao.addr_order_id
|
|
</select>
|
|
|
|
<select id="countOrderDetial" resultType="long">
|
|
SELECT COUNT(0) FROM tz_order
|
|
<where>
|
|
<if test="orderParam.orderNumber != null and orderParam.orderNumber != ''">
|
|
and order_number = #{orderParam.orderNumber}
|
|
</if>
|
|
<if test="orderParam.status != null">
|
|
and status = #{orderParam.status}
|
|
</if>
|
|
<if test="orderParam.shopId != null">
|
|
and shop_id = #{orderParam.shopId}
|
|
</if>
|
|
<if test="orderParam.isPayed != null">
|
|
and is_payed = #{orderParam.isPayed}
|
|
and status != 6
|
|
</if>
|
|
<if test="orderParam.startTime != null">
|
|
and create_time > #{orderParam.startTime}
|
|
</if>
|
|
<if test="orderParam.endTime != null">
|
|
and create_time < #{orderParam.endTime}
|
|
</if>
|
|
</where>
|
|
</select>
|
|
|
|
|
|
|
|
<select id="listBoughtProdByUserIdAndShopId" resultType="long">
|
|
select
|
|
oi.prod_id
|
|
from tz_order_item oi
|
|
join tz_order o on o.order_number = oi.order_number
|
|
where o.user_id=#{userId} and o.shop_id = #{shopId} and (o.status = 4 or o.status = 5)
|
|
</select>
|
|
|
|
|
|
<select id="calculateUserInShopData" resultType="com.yami.shop.bean.distribution.UserShoppingDataDto">
|
|
select
|
|
count(o.order_number) as expense_number,
|
|
ifnull(SUM(o.actual_total),0) as expense_amount
|
|
from tz_order o
|
|
where o.user_id=#{userId} and o.shop_id = #{shopId} and (o.status = 4 or o.status = 5)
|
|
</select>
|
|
|
|
<select id="listMyOrderByUserIdAndStatus" resultMap="MyOrderMap">
|
|
SELECT o.actual_total,oi.pic,oi.price,oi.prod_name,oi.sku_name,oi.prod_count,o.status,o.order_number
|
|
FROM (
|
|
SELECT * FROM tz_order temp
|
|
WHERE temp.user_id = #{userId} and temp.delete_status = 0
|
|
<if test="status != null and status != 0">
|
|
AND temp.status = #{status}
|
|
</if>
|
|
ORDER BY temp.create_time DESC
|
|
LIMIT #{adapter.begin} , #{adapter.end}
|
|
)AS o
|
|
LEFT JOIN tz_order_item oi ON o.order_number = oi.order_number
|
|
</select>
|
|
|
|
|
|
<select id="countMyOrderByUserIdAndStatus" resultType="Long">
|
|
select count(0) from tz_order o
|
|
where o.user_id = #{userId} and o.delete_status = 0
|
|
<if test="status != null and status != 0">
|
|
and o.status = #{status}
|
|
</if>
|
|
</select>
|
|
|
|
|
|
<update id="deleteOrders">
|
|
UPDATE tz_order SET `delete_status`=2
|
|
WHERE order_id IN
|
|
<foreach collection="orders" item="order" open="(" close=")" separator=",">
|
|
#{order.orderId}
|
|
</foreach>
|
|
</update>
|
|
|
|
<select id="getOrderCount" resultType="com.yami.shop.bean.app.dto.OrderCountData">
|
|
SELECT
|
|
COUNT(o.order_id) all_count,
|
|
COUNT( CASE WHEN o.status = 1 THEN o.order_id ELSE NULL END ) AS unPay,
|
|
COUNT( CASE WHEN o.status = 2 THEN o.order_id ELSE NULL END ) AS payed,
|
|
COUNT( CASE WHEN o.status = 3 THEN o.order_id ELSE NULL END ) AS consignment,
|
|
COUNT( CASE WHEN o.status = 4 THEN o.order_id ELSE NULL END ) AS confirm,
|
|
COUNT( CASE WHEN o.status = 5 THEN o.order_id ELSE NULL END ) AS success,
|
|
COUNT( CASE WHEN o.status = 6 THEN o.order_id ELSE NULL END ) AS `close`
|
|
FROM tz_order o
|
|
WHERE o.user_id =#{userId}
|
|
</select>
|
|
|
|
</mapper>
|