Files
sczx_web/ruoyi-admin/src/main/resources/mapper/baseUser/ZcBaseWalletMapper.xml
2025-08-24 15:09:12 +08:00

140 lines
7.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.baseUser.mapper.ZcBaseWalletMapper">
<resultMap type="ZcBaseWallet" id="ZcBaseWalletResult">
<result property="userId" column="user_id" />
<result property="userName" column="user_name" />
<result property="phoneNumber" column="phone_number" />
<result property="balance" column="balance" />
<result property="availableAmount" column="available_amount" />
<result property="freezeAmount" column="freeze_amount" />
<result property="delFlag" column="del_flag" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap id="ZcBaseWalletZcBaseWalletChangeResult" type="ZcBaseWallet" extends="ZcBaseWalletResult">
<collection property="zcBaseWalletChangeList" notNullColumn="sub_id" javaType="java.util.List" resultMap="ZcBaseWalletChangeResult" />
</resultMap>
<resultMap type="ZcBaseWalletChange" id="ZcBaseWalletChangeResult">
<result property="id" column="sub_id" />
<result property="userId" column="sub_user_id" />
<result property="changeType" column="sub_change_type" />
<result property="changeStatus" column="sub_change_status" />
<result property="payType" column="sub_pay_type" />
<result property="changeTime" column="sub_change_time" />
<result property="changeAmount" column="sub_change_amount" />
<result property="referralOrderNo" column="sub_referral_order_no" />
<result property="delFlag" column="sub_del_flag" />
<result property="createTime" column="sub_create_time" />
<result property="updateTime" column="sub_update_time" />
</resultMap>
<sql id="selectZcBaseWalletVo">
select user_id, user_name, phone_number, balance, available_amount, freeze_amount, del_flag, create_time, update_time from zc_base_wallet
</sql>
<select id="selectZcBaseWalletList" parameterType="ZcBaseWallet" resultMap="ZcBaseWalletResult">
<include refid="selectZcBaseWalletVo"/>
<where>
<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
<if test="phoneNumber != null and phoneNumber != ''"> and phone_number = #{phoneNumber}</if>
<if test="balance != null "> and balance = #{balance}</if>
<if test="availableAmount != null "> and available_amount = #{availableAmount}</if>
<if test="freezeAmount != null "> and freeze_amount = #{freezeAmount}</if>
</where>
</select>
<select id="selectZcBaseWalletByUserId" parameterType="Long" resultMap="ZcBaseWalletZcBaseWalletChangeResult">
select a.user_id, a.user_name, a.phone_number, a.balance, a.available_amount, a.freeze_amount, a.del_flag, a.create_time, a.update_time,
b.id as sub_id, b.user_id as sub_user_id, b.change_type as sub_change_type, b.change_status as sub_change_status, b.pay_type as sub_pay_type, b.change_time as sub_change_time, b.change_amount as sub_change_amount, b.referral_order_no as sub_referral_order_no, b.del_flag as sub_del_flag, b.create_time as sub_create_time, b.update_time as sub_update_time
from zc_base_wallet a
left join zc_base_wallet_change b on b.user_id = a.user_id
where a.user_id = #{userId}
</select>
<insert id="insertZcBaseWallet" parameterType="ZcBaseWallet" useGeneratedKeys="true" keyProperty="userId">
insert into zc_base_wallet
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userName != null and userName != ''">user_name,</if>
<if test="phoneNumber != null and phoneNumber != ''">phone_number,</if>
<if test="balance != null">balance,</if>
<if test="availableAmount != null">available_amount,</if>
<if test="freezeAmount != null">freeze_amount,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userName != null and userName != ''">#{userName},</if>
<if test="phoneNumber != null and phoneNumber != ''">#{phoneNumber},</if>
<if test="balance != null">#{balance},</if>
<if test="availableAmount != null">#{availableAmount},</if>
<if test="freezeAmount != null">#{freezeAmount},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateZcBaseWallet" parameterType="ZcBaseWallet">
update zc_base_wallet
<trim prefix="SET" suffixOverrides=",">
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="phoneNumber != null and phoneNumber != ''">phone_number = #{phoneNumber},</if>
<if test="balance != null">balance = #{balance},</if>
<if test="availableAmount != null">available_amount = #{availableAmount},</if>
<if test="freezeAmount != null">freeze_amount = #{freezeAmount},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where user_id = #{userId}
</update>
<delete id="deleteZcBaseWalletByUserId" parameterType="Long">
delete from zc_base_wallet where user_id = #{userId}
</delete>
<delete id="deleteZcBaseWalletByUserIds" parameterType="String">
delete from zc_base_wallet where user_id in
<foreach item="userId" collection="array" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
<delete id="deleteZcBaseWalletChangeByUserIds" parameterType="String">
delete from zc_base_wallet_change where user_id in
<foreach item="userId" collection="array" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
<delete id="deleteZcBaseWalletChangeByUserId" parameterType="Long">
delete from zc_base_wallet_change where user_id = #{userId}
</delete>
<insert id="batchZcBaseWalletChange">
insert into zc_base_wallet_change( id, user_id, change_type, pay_type, change_time, change_amount, referral_order_no, del_flag, create_time, update_time) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.userId}, #{item.changeType}, #{item.payType}, #{item.changeTime}, #{item.changeAmount}, #{item.referralOrderNo}, #{item.delFlag}, #{item.createTime}, #{item.updateTime})
</foreach>
</insert>
<!-- 减少钱包金额 -->
<update id="reduceWalletAmount">
UPDATE zc_base_wallet
SET
available_amount = available_amount - #{amount},
balance = balance - #{amount},
update_time = NOW()
WHERE user_id = #{userId}
AND available_amount >= #{amount}
AND balance >= #{amount}
</update>
</mapper>