|
@@ -805,15 +805,27 @@
|
|
|
</update>
|
|
</update>
|
|
|
<update id="updateTotal">
|
|
<update id="updateTotal">
|
|
|
UPDATE yt_dyz_user
|
|
UPDATE yt_dyz_user
|
|
|
- SET nearly_income = 0, nearly_begin_time = NOW()
|
|
|
|
|
- WHERE user_id = #{userId}
|
|
|
|
|
- AND last_login_time <![CDATA[ < ]]> DATE_SUB(NOW(), INTERVAL 3 DAY)
|
|
|
|
|
- AND IFNULL(nearly_begin_time, NOW()) <![CDATA[ < ]]> DATE_SUB(NOW(), INTERVAL 3 DAY);
|
|
|
|
|
- UPDATE yt_dyz_user SET nearly_begin_time = NOW() WHERE user_id = #{userId} AND nearly_begin_time IS NULL;
|
|
|
|
|
- UPDATE yt_dyz_user
|
|
|
|
|
- SET total_video = COALESCE(total_video, 0) + #{videoCount},
|
|
|
|
|
- total_income = COALESCE(total_income, 0) + #{revenue},
|
|
|
|
|
- nearly_income = COALESCE(nearly_income, 0) + #{revenue}
|
|
|
|
|
|
|
+ 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()
|
|
|
|
|
+ -- 处理初始值为NULL的情况
|
|
|
|
|
+ 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}
|
|
|
WHERE user_id = #{userId};
|
|
WHERE user_id = #{userId};
|
|
|
</update>
|
|
</update>
|
|
|
</mapper>
|
|
</mapper>
|