65 lines
2.1 KiB
XML
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 >= #{startDate}
|
|
AND recharge_date <= #{endDate}
|
|
</select>
|
|
|
|
</mapper>
|