151 lines
6.5 KiB
XML
151 lines
6.5 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.app.mapper.AppVirtualOrderMapper">
|
||
|
|
<resultMap id="AppVirtualOrderResult" type="AppVirtualOrder">
|
||
|
|
<id property="id" column="id"/>
|
||
|
|
<result property="orderNo" column="order_no"/>
|
||
|
|
<result property="userId" column="user_id"/>
|
||
|
|
<result property="userName" column="user_name"/>
|
||
|
|
<result property="nickName" column="nick_name"/>
|
||
|
|
<result property="resourceId" column="resource_id"/>
|
||
|
|
<result property="resourceTitle" column="resource_title"/>
|
||
|
|
<result property="productId" column="product_id"/>
|
||
|
|
<result property="priceFen" column="price_fen"/>
|
||
|
|
<result property="openId" column="open_id"/>
|
||
|
|
<result property="status" column="status"/>
|
||
|
|
<result property="wxOrderNo" column="wx_order_no"/>
|
||
|
|
<result property="transactionId" column="transaction_id"/>
|
||
|
|
<result property="createTime" column="create_time"/>
|
||
|
|
<result property="payTime" column="pay_time"/>
|
||
|
|
<result property="provideTime" column="provide_time"/>
|
||
|
|
<result property="refundTime" column="refund_time"/>
|
||
|
|
<result property="lastQueryTime" column="last_query_time"/>
|
||
|
|
</resultMap>
|
||
|
|
|
||
|
|
<sql id="selectAppVirtualOrderVo">
|
||
|
|
select vo.id, vo.order_no, vo.user_id, u.user_name, u.nick_name,
|
||
|
|
vo.resource_id, r.resource_title, vo.product_id, vo.price_fen,
|
||
|
|
vo.open_id, vo.status, vo.wx_order_no, vo.transaction_id,
|
||
|
|
vo.create_time, vo.pay_time, vo.provide_time, vo.refund_time, vo.last_query_time
|
||
|
|
from app_virtual_order vo
|
||
|
|
left join sys_user u on u.user_id = vo.user_id
|
||
|
|
left join app_resource r on r.id = vo.resource_id
|
||
|
|
</sql>
|
||
|
|
|
||
|
|
<insert id="insertAppVirtualOrder" parameterType="AppVirtualOrder" useGeneratedKeys="true" keyProperty="id">
|
||
|
|
insert into app_virtual_order
|
||
|
|
(order_no, user_id, resource_id, product_id, price_fen, open_id, status, create_time)
|
||
|
|
values
|
||
|
|
(#{orderNo}, #{userId}, #{resourceId}, #{productId}, #{priceFen}, #{openId}, #{status}, #{createTime})
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<select id="selectByOrderNo" resultMap="AppVirtualOrderResult">
|
||
|
|
select id, order_no, user_id, resource_id, product_id, price_fen, open_id, status,
|
||
|
|
wx_order_no, transaction_id, create_time, pay_time, provide_time, refund_time, last_query_time
|
||
|
|
from app_virtual_order
|
||
|
|
where order_no = #{orderNo}
|
||
|
|
limit 1
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="selectAppVirtualOrderById" parameterType="Long" resultMap="AppVirtualOrderResult">
|
||
|
|
<include refid="selectAppVirtualOrderVo"/>
|
||
|
|
where vo.id = #{id}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="selectAppVirtualOrderList" parameterType="AppVirtualOrder" resultMap="AppVirtualOrderResult">
|
||
|
|
<include refid="selectAppVirtualOrderVo"/>
|
||
|
|
<where>
|
||
|
|
<if test="orderNo != null and orderNo != ''">
|
||
|
|
and vo.order_no like concat('%', #{orderNo}, '%')
|
||
|
|
</if>
|
||
|
|
<if test="transactionId != null and transactionId != ''">
|
||
|
|
and vo.transaction_id like concat('%', #{transactionId}, '%')
|
||
|
|
</if>
|
||
|
|
<if test="wxOrderNo != null and wxOrderNo != ''">
|
||
|
|
and vo.wx_order_no like concat('%', #{wxOrderNo}, '%')
|
||
|
|
</if>
|
||
|
|
<if test="userId != null">and vo.user_id = #{userId}</if>
|
||
|
|
<if test="userName != null and userName != ''">
|
||
|
|
and (u.user_name like concat('%', #{userName}, '%')
|
||
|
|
or u.nick_name like concat('%', #{userName}, '%'))
|
||
|
|
</if>
|
||
|
|
<if test="resourceId != null">and vo.resource_id = #{resourceId}</if>
|
||
|
|
<if test="productId != null and productId != ''">
|
||
|
|
and vo.product_id like concat('%', #{productId}, '%')
|
||
|
|
</if>
|
||
|
|
<if test="openId != null and openId != ''">
|
||
|
|
and vo.open_id like concat('%', #{openId}, '%')
|
||
|
|
</if>
|
||
|
|
<if test="status != null">and vo.status = #{status}</if>
|
||
|
|
<if test="params.beginTime != null and params.beginTime != ''">
|
||
|
|
and vo.create_time >= #{params.beginTime}
|
||
|
|
</if>
|
||
|
|
<if test="params.endTime != null and params.endTime != ''">
|
||
|
|
and vo.create_time <= concat(#{params.endTime}, ' 23:59:59')
|
||
|
|
</if>
|
||
|
|
</where>
|
||
|
|
order by vo.create_time desc, vo.id desc
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="countAnyEntitlement" resultType="int">
|
||
|
|
select
|
||
|
|
(select count(1) from app_resource_entitlement
|
||
|
|
where user_id = #{userId} and resource_id = #{resourceId} and status = 1)
|
||
|
|
+
|
||
|
|
(select count(1) from app_integral_record
|
||
|
|
where user_id = #{userId}
|
||
|
|
and resource_id = #{resourceId}
|
||
|
|
and source = '资源兑换'
|
||
|
|
and is_add = 1)
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<update id="markPaid">
|
||
|
|
update app_virtual_order
|
||
|
|
set status = 1,
|
||
|
|
wx_order_no = coalesce(#{wxOrderNo}, wx_order_no),
|
||
|
|
transaction_id = coalesce(#{transactionId}, transaction_id),
|
||
|
|
pay_time = coalesce(#{payTime}, pay_time),
|
||
|
|
provide_time = now()
|
||
|
|
where order_no = #{orderNo} and status = 0
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<insert id="insertEntitlement" parameterType="AppVirtualOrder">
|
||
|
|
insert into app_resource_entitlement
|
||
|
|
(user_id, resource_id, order_no, status, granted_time)
|
||
|
|
values
|
||
|
|
(#{userId}, #{resourceId}, #{orderNo}, 1, now())
|
||
|
|
on duplicate key update
|
||
|
|
order_no = values(order_no),
|
||
|
|
status = 1,
|
||
|
|
granted_time = now(),
|
||
|
|
revoked_time = null
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<update id="markRefunded">
|
||
|
|
update app_virtual_order
|
||
|
|
set status = 2, refund_time = #{refundTime}
|
||
|
|
where order_no = #{orderNo} and status in (0, 1)
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="deleteEntitlementByOrderNo">
|
||
|
|
update app_resource_entitlement
|
||
|
|
set status = 0, revoked_time = now()
|
||
|
|
where order_no = #{orderNo} and status = 1
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="markClosed">
|
||
|
|
update app_virtual_order set status = 3
|
||
|
|
where order_no = #{orderNo} and status = 0
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="markQuerying">
|
||
|
|
update app_virtual_order
|
||
|
|
set last_query_time = now()
|
||
|
|
where order_no = #{orderNo}
|
||
|
|
and status = 0
|
||
|
|
and (last_query_time is null or last_query_time < date_sub(now(), interval 5 second))
|
||
|
|
</update>
|
||
|
|
</mapper>
|