|
|
@@ -1069,26 +1069,31 @@
|
|
|
</foreach>
|
|
|
</update>
|
|
|
<update id="updateTotal">
|
|
|
+ SET @four_days_ago = DATE_SUB(DATE(NOW()), INTERVAL 4 DAY), @current_time = NOW();
|
|
|
UPDATE yt_dyz_user
|
|
|
SET
|
|
|
- -- 处理近4天未登录 或间隔时间超过4天
|
|
|
- nearly_income = (
|
|
|
- CASE
|
|
|
- WHEN last_login_time <![CDATA[ < ]]> DATE_SUB(DATE(NOW()), INTERVAL 4 DAY)
|
|
|
- OR IFNULL(nearly_begin_time, NOW()) <![CDATA[ < ]]> DATE_SUB(DATE(NOW()), INTERVAL 4 DAY)
|
|
|
- THEN #{revenue}
|
|
|
- ELSE COALESCE(nearly_income, 0) + #{revenue}
|
|
|
- END
|
|
|
- ),
|
|
|
- nearly_begin_time = CASE
|
|
|
- WHEN last_login_time <![CDATA[ < ]]> DATE_SUB(DATE(NOW()), INTERVAL 4 DAY)
|
|
|
- OR IFNULL(nearly_begin_time, NOW()) <![CDATA[ < ]]> DATE_SUB(DATE(NOW()), INTERVAL 4 DAY)
|
|
|
- THEN NOW()
|
|
|
- WHEN nearly_begin_time IS NULL THEN NOW()
|
|
|
- ELSE nearly_begin_time
|
|
|
- END,
|
|
|
- total_video = COALESCE(total_video, 0) + #{videoCount},
|
|
|
- total_income = COALESCE(total_income, 0) + #{revenue}
|
|
|
+ -- 近4天收入更新逻辑:
|
|
|
+ -- 1. 最后登录时间早于4天前 或 近收入开始时间早于4天前 → 重置为当前收入
|
|
|
+ -- 2. 否则 → 原有近收入(为空则0)累加当前收入
|
|
|
+ nearly_income = CASE
|
|
|
+ WHEN last_login_time <![CDATA[ < ]]> @four_days_ago
|
|
|
+ OR COALESCE(nearly_begin_time, @current_time) <![CDATA[ < ]]> @four_days_ago
|
|
|
+ THEN #{revenue}
|
|
|
+ ELSE COALESCE(nearly_income, 0) + #{revenue}
|
|
|
+ END,
|
|
|
+ -- 近收入开始时间更新逻辑:
|
|
|
+ -- 1. 满足重置条件 → 设为当前时间
|
|
|
+ -- 2. 未满足则若为空值 → 设为当前时间,否则保留原值
|
|
|
+ nearly_begin_time = CASE
|
|
|
+ WHEN last_login_time <![CDATA[ < ]]> @four_days_ago
|
|
|
+ OR COALESCE(nearly_begin_time, @current_time) <![CDATA[ < ]]> @four_days_ago
|
|
|
+ THEN @current_time
|
|
|
+ ELSE COALESCE(nearly_begin_time, @current_time)
|
|
|
+ END,
|
|
|
+ -- 累计视频数:空值处理后累加新增数量
|
|
|
+ total_video = COALESCE(total_video, 0) + #{videoCount},
|
|
|
+ -- 累计收入:空值处理后累加新增收入
|
|
|
+ total_income = COALESCE(total_income, 0) + #{revenue}
|
|
|
WHERE user_id = #{userId};
|
|
|
</update>
|
|
|
</mapper>
|