id, user_id, achievement_id, current_value, target_value, progress_percentage,
completed, last_update_time, create_time
INSERT INTO tb_user_achievement_progress (
id, user_id, achievement_id, current_value, target_value,
progress_percentage, completed, last_update_time, create_time
) VALUES (
#{ID}, #{userID}, #{achievementID}, #{currentValue}, #{targetValue},
#{progressPercentage}, #{completed}, #{lastUpdateTime}, #{createTime}
)
UPDATE tb_user_achievement_progress
current_value = #{currentValue},
target_value = #{targetValue},
progress_percentage = #{progressPercentage},
completed = #{completed},
last_update_time = #{lastUpdateTime},
WHERE id = #{ID}
UPDATE tb_user_achievement_progress
SET
current_value = current_value + #{incrementValue},
progress_percentage = LEAST(100, ROUND(((current_value + #{incrementValue}) * 100.0 / target_value), 0)),
completed = IF((current_value + #{incrementValue}) >= target_value, 1, 0),
last_update_time = NOW()
WHERE user_id = #{userId} AND achievement_id = #{achievementId}
INSERT INTO tb_user_achievement_progress (
id, user_id, achievement_id, current_value, target_value,
progress_percentage, completed, last_update_time, create_time
) VALUES
(
#{item.id}, #{item.userID}, #{item.achievementID}, #{item.currentValue},
#{item.targetValue}, #{item.progressPercentage}, #{item.completed},
#{item.lastUpdateTime}, #{item.createTime}
)
DELETE FROM tb_user_achievement_progress
WHERE user_id = #{userId} AND achievement_id = #{achievementId}