package com.rongyichuang.player.service; import com.rongyichuang.player.dto.input.ActivityPlayerRatingInput; import com.rongyichuang.player.dto.input.ActivityPlayerRatingItemInput; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; @Service public class ActivityPlayerRatingService { private static final Logger log = LoggerFactory.getLogger(ActivityPlayerRatingService.class); @Autowired private JdbcTemplate jdbcTemplate; @Transactional public boolean saveRating(ActivityPlayerRatingInput input) { try { log.info("开始保存评分,activityPlayerId: {}", input.getActivityPlayerId()); // 先删除已有的评分记录(如果存在) String deleteSql = "DELETE FROM t_activity_player_rating_item WHERE activity_player_id = ?"; int deletedCount = jdbcTemplate.update(deleteSql, input.getActivityPlayerId()); log.info("删除已有评分记录: {} 条", deletedCount); // 插入新的评分记录 String insertSql = "INSERT INTO t_activity_player_rating_item " + "(activity_player_id, rating_item_id, score, comment, create_time, update_time) " + "VALUES (?, ?, ?, ?, ?, ?)"; LocalDateTime now = LocalDateTime.now(); int totalInserted = 0; for (ActivityPlayerRatingItemInput ratingItem : input.getRatings()) { int inserted = jdbcTemplate.update(insertSql, input.getActivityPlayerId(), ratingItem.getItemId(), ratingItem.getScore(), input.getComment(), now, now ); totalInserted += inserted; log.info("保存评分项目: itemId={}, score={}", ratingItem.getItemId(), ratingItem.getScore()); } log.info("评分保存完成,共插入 {} 条记录", totalInserted); return true; } catch (Exception e) { log.error("保存评分失败", e); throw new RuntimeException("保存评分失败: " + e.getMessage()); } } }