lrj
2 天以前 c61d4fe27c97d2ecc907756aa571a4ef14a7b9b6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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());
        }
    }
}