Bonus-Cloud-JYY-Smart-Canteen/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml

168 lines
7.6 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.bonus.canteen.core.account.mapper.AccWalletInfoMapper">
<resultMap type="com.bonus.canteen.core.account.domain.AccWalletInfo" id="AccWalletInfoResult">
<result property="walletId" column="wallet_id" />
<result property="userId" column="user_id" />
<result property="accountId" column="account_id" />
<result property="walletType" column="wallet_type" />
<result property="walletBal" column="wallet_bal" />
<result property="limitBalance" column="limit_balance" />
<result property="frozenBalance" column="frozen_balance" />
<result property="expiredTime" column="expired_time" />
<result property="lastSubsidyAmount" column="last_subsidy_amount" />
<result property="lastSubsidyTime" column="last_subsidy_time" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectAccWalletInfoVo">
select wallet_id, user_id, account_id, wallet_type, wallet_bal, limit_balance, frozen_balance,
expired_time, last_subsidy_amount, last_subsidy_time, create_by, create_time,
update_by, update_time, del_flag
from account_wallet_info
</sql>
<select id="selectAccWalletInfoList" parameterType="com.bonus.canteen.core.account.domain.AccWalletInfo" resultMap="AccWalletInfoResult">
<include refid="selectAccWalletInfoVo"/>
<where>
<if test="accountId != null "> and account_id = #{accountId}</if>
<if test="walletBal != null "> and wallet_bal = #{walletBal}</if>
<if test="limitBalance != null "> and limit_balance = #{limitBalance}</if>
<if test="frozenBalance != null "> and frozen_balance = #{frozenBalance}</if>
<if test="expiredTime != null "> and expired_time = #{expiredTime}</if>
<if test="lastSubsidyAmount != null "> and last_subsidy_amount = #{lastSubsidyAmount}</if>
<if test="lastSubsidyTime != null "> and last_subsidy_time = #{lastSubsidyTime}</if>
<if test="delFlag != null "> and del_flag = #{delFlag}</if>
</where>
</select>
<select id="selectAccWalletInfoByUserId" parameterType="Long" resultMap="AccWalletInfoResult">
<include refid="selectAccWalletInfoVo"/>
where user_id = #{userId}
</select>
<select id="selectAccWalletInfoByUserIdAndWalletType" resultMap="AccWalletInfoResult">
<include refid="selectAccWalletInfoVo"/>
where user_id = #{userId} and wallet_type = #{walletType}
</select>
<select id="selectAccWalletInfoByUserIds" resultType="com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO">
SELECT
user_id,
account_id,
wallet_type,
wallet_bal,
limit_balance,
frozen_balance,
last_subsidy_amount,
last_subsidy_time
FROM account_wallet_info
WHERE user_id IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</select>
<insert id="insertAccWalletInfo" parameterType="com.bonus.canteen.core.account.domain.AccWalletInfo">
insert into account_wallet_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="accountId != null">account_id,</if>
<if test="walletType != null">wallet_type,</if>
<if test="walletBal != null">wallet_bal,</if>
<if test="limitBalance != null">limit_balance,</if>
<if test="frozenBalance != null">frozen_balance,</if>
<if test="expiredTime != null">expired_time,</if>
<if test="lastSubsidyAmount != null">last_subsidy_amount,</if>
<if test="lastSubsidyTime != null">last_subsidy_time,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">#{userId},</if>
<if test="accountId != null">#{accountId},</if>
<if test="walletType != null">#{walletType},</if>
<if test="walletBal != null">#{walletBal},</if>
<if test="limitBalance != null">#{limitBalance},</if>
<if test="frozenBalance != null">#{frozenBalance},</if>
<if test="expiredTime != null">#{expiredTime},</if>
<if test="lastSubsidyAmount != null">#{lastSubsidyAmount},</if>
<if test="lastSubsidyTime != null">#{lastSubsidyTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<insert id="batchInsertAccWalletInfo" parameterType="com.bonus.canteen.core.account.domain.AccWalletInfo">
insert into account_wallet_info(user_id,account_id,wallet_type,create_by,create_time) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.userId},#{item.accountId},#{item.walletType},#{item.createBy},NOW())
</foreach>
</insert>
<delete id="deleteAccWalletInfoByUserId" parameterType="Long">
update account_wallet_info set del_flag = '2' where user_id = #{userId}
</delete>
<delete id="deleteAccWalletInfoByUserIds" parameterType="String">
update account_wallet_info set del_flag = '2' where user_id in
<foreach item="userId" collection="array" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
<update id="updateMinBalanceByUserId">
UPDATE
account_wallet_info
SET limit_balance = #{minBalance},
update_by = #{updateBy},
update_time = #{updateTime}
<where>
<if test="userIds != null and userIds.size() != 0">
AND user_id IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
AND wallet_type = #{walletType}
</where>
</update>
<update id="addAccWalletInfo">
UPDATE account_wallet_info
SET wallet_bal = wallet_bal + #{amount},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE user_id = #{userId}
AND wallet_type = #{walletType}
</update>
<update id="reduceAccWalletInfo">
UPDATE account_wallet_info
SET wallet_bal = wallet_bal - #{amount},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE user_id = #{userId}
AND wallet_type = #{walletType}
</update>
<update id="clearAccWalletInfo">
UPDATE account_wallet_info
SET wallet_bal = 0,
update_by = #{updateBy},
update_time = #{updateTime}
WHERE user_id = #{userId}
AND wallet_type = #{walletType}
</update>
</mapper>