2025-08-16 23:42:56 +08:00
<?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" />
2025-08-24 15:09:12 +08:00
<result property= "changeStatus" column= "sub_change_status" />
2025-08-16 23:42:56 +08:00
<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,
2025-08-24 15:09:12 +08:00
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
2025-08-16 23:42:56 +08:00
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>
2025-08-24 15:09:12 +08:00
<!-- 减少钱包金额 -->
<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>
2025-08-16 23:42:56 +08:00
</mapper>