2025-11-18 17:49:34 +08:00

47 lines
1.7 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.red.circle.wallet.infra.database.rds.dao.salary.SalaryAccountBalanceDAO">
<update id="incrIncome">
UPDATE user_salary_account_balance
SET earn_points = earn_points + #{amount} / 100,
balance = balance + #{amount} / 100,
available_balance = available_balance + #{amount} / 100
WHERE user_id = #{userId}
AND salary_type = #{salaryType}
</update>
<update id="incrExpenditure">
UPDATE user_salary_account_balance
SET consumption_points = consumption_points + #{amount} / 100,
balance = balance - #{amount} / 100,
available_balance = available_balance - #{amount} / 100
WHERE user_id = #{userId}
AND salary_type = #{salaryType}
AND available_balance >= #{amount} / 100
</update>
<update id="freezeAmount">
UPDATE user_salary_account_balance
SET frozen_amount = frozen_amount + #{amount} / 100,
available_balance = available_balance - #{amount} / 100,
version = version + 1
WHERE user_id = #{userId}
AND salary_type = #{salaryType}
AND version = #{version}
AND available_balance >= #{amount} / 100
</update>
<update id="unfreezeAmount">
UPDATE user_salary_account_balance
SET frozen_amount = frozen_amount - #{amount} / 100,
available_balance = available_balance + #{amount} / 100,
version = version + 1
WHERE user_id = #{userId}
AND salary_type = #{salaryType}
AND version = #{version}
AND frozen_amount >= #{amount} / 100
</update>
</mapper>