2026-01-07 19:22:04 +08:00

65 lines
2.1 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.other.infra.database.rds.dao.activity.UserActivityRechargeDAO">
<update id="incrAmount">
INSERT INTO user_activity_recharge (user_id, activity_id, recharge_date, recharge_type, amount, create_time, update_time)
VALUES (#{userId}, #{activityId}, #{rechargeDate}, #{rechargeType}, #{amount}, NOW(), NOW())
ON DUPLICATE KEY UPDATE
amount = amount + #{amount},
update_time = NOW()
</update>
<select id="pageRechargeRank" resultType="com.red.circle.other.infra.database.rds.dto.activity.ActivityRechargeRankDTO">
SELECT
user_id AS userId,
SUM(amount) AS totalAmount
FROM user_activity_recharge
WHERE activity_id = #{activityId}
GROUP BY user_id
ORDER BY totalAmount DESC
</select>
<select id="getUserTotalAmount" resultType="java.math.BigDecimal">
SELECT IFNULL(SUM(amount), 0)
FROM user_activity_recharge
WHERE activity_id = #{activityId}
AND user_id = #{userId}
</select>
<select id="getUserRank" resultType="java.lang.Integer">
SELECT COUNT(*) + 1
FROM (
SELECT user_id, SUM(amount) AS total_amount
FROM user_activity_recharge
WHERE activity_id = #{activityId}
GROUP BY user_id
) AS ranks
WHERE total_amount > (
SELECT IFNULL(SUM(amount), 0)
FROM user_activity_recharge
WHERE activity_id = #{activityId}
AND user_id = #{userId}
)
</select>
<select id="getFirstRechargeDate" resultType="java.lang.String">
SELECT MIN(recharge_date)
FROM user_activity_recharge
WHERE user_id = #{userId}
AND activity_id = #{activityId}
AND amount > 0
</select>
<select id="getRechargeAmountByDateRange" resultType="java.math.BigDecimal">
SELECT IFNULL(SUM(amount), 0)
FROM user_activity_recharge
WHERE user_id = #{userId}
AND activity_id = #{activityId}
AND recharge_date &gt;= #{startDate}
AND recharge_date &lt;= #{endDate}
</select>
</mapper>