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}