From 58d9f460b2f8c34430285115e2557d18333c5cab Mon Sep 17 00:00:00 2001 From: Codex Assistant <codex@example.com> Date: 星期三, 08 十月 2025 14:16:55 +0800 Subject: [PATCH] feat: 修复Player实体phone字段数据冗余问题并优化小程序报名逻辑 --- backend/src/main/java/com/rongyichuang/player/service/PlayerApplicationService.java | 29 +++++++++++++++++++++++++---- 1 files changed, 25 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/rongyichuang/player/service/PlayerApplicationService.java b/backend/src/main/java/com/rongyichuang/player/service/PlayerApplicationService.java index 03f19a7..772be77 100644 --- a/backend/src/main/java/com/rongyichuang/player/service/PlayerApplicationService.java +++ b/backend/src/main/java/com/rongyichuang/player/service/PlayerApplicationService.java @@ -23,11 +23,19 @@ @SuppressWarnings("unchecked") public PageResponse<ActivityPlayerApplicationResponse> listApplications(String name, Long activityId, Integer state, Integer page, Integer size) { String baseSql = - "SELECT ap.id, CONCAT(p.name, '锛�', ap.project_name, '锛�') AS player_name, parent.name AS activity_name, ap.project_name AS project_name, p.phone AS phone, ap.create_time AS apply_time, ap.state AS state " + + "SELECT ap.id, p.name AS player_name, parent.name AS activity_name, ap.project_name AS project_name, u.phone AS phone, ap.create_time AS apply_time, ap.state AS state, " + + "COALESCE(rating_stats.rating_count, 0) AS rating_count, rating_stats.average_score " + "FROM t_activity_player ap " + "JOIN t_player p ON p.id = ap.player_id " + + "JOIN t_user u ON u.id = p.user_id " + "JOIN t_activity stage ON stage.id = ap.stage_id " + - "JOIN t_activity parent ON parent.id = stage.pid "; + "JOIN t_activity parent ON parent.id = stage.pid " + + "LEFT JOIN (" + + " SELECT activity_player_id, COUNT(*) AS rating_count, AVG(total_score) AS average_score " + + " FROM t_activity_player_rating " + + " WHERE state = 1 " + + " GROUP BY activity_player_id" + + ") rating_stats ON rating_stats.activity_player_id = ap.id "; StringBuilder whereClause = new StringBuilder(); boolean hasCondition = false; @@ -76,6 +84,7 @@ if (activityId != null) { q.setParameter("activityId", activityId); } + if (state != null) { q.setParameter("state", state); } @@ -119,12 +128,13 @@ * 涓巐istApplications鐨勫尯鍒細涓嶈繃婊ゅ璧涘拰鍐宠禌闃舵 */ @SuppressWarnings("unchecked") - public PageResponse<ActivityPlayerApplicationResponse> listProjectReviewApplications(String name, Long activityId, Integer state, Integer page, Integer size) { + public PageResponse<ActivityPlayerApplicationResponse> listProjectReviewApplications(String name, Long activityId, Long regionId, Integer state, Integer page, Integer size) { String baseSql = - "SELECT ap.id, CONCAT(p.name, '锛�', ap.project_name, '锛�') AS player_name, stage.name AS activity_name, ap.project_name AS project_name, p.phone AS phone, ap.create_time AS apply_time, ap.state AS state, " + + "SELECT ap.id, CONCAT(p.name, '锛�', ap.project_name, '锛�') AS player_name, stage.name AS activity_name, ap.project_name AS project_name, u.phone AS phone, ap.create_time AS apply_time, ap.state AS state, " + "COALESCE(rating_stats.rating_count, 0) AS rating_count, rating_stats.average_score " + "FROM t_activity_player ap " + "JOIN t_player p ON p.id = ap.player_id " + + "JOIN t_user u ON u.id = p.user_id " + "JOIN t_activity stage ON stage.id = ap.stage_id " + "LEFT JOIN (" + " SELECT activity_player_id, COUNT(*) AS rating_count, AVG(total_score) AS average_score " + @@ -152,6 +162,14 @@ } // 鐩存帴鏌ヨ鎸囧畾闃舵ID鐨勬姤鍚嶉」鐩� whereClause.append("ap.stage_id = :activityId"); + hasCondition = true; + } + + if (regionId != null) { + if (hasCondition) { + whereClause.append(" AND "); + } + whereClause.append("ap.region_id = :regionId"); hasCondition = true; } @@ -190,6 +208,9 @@ if (activityId != null) { q.setParameter("activityId", activityId); } + if (regionId != null) { + q.setParameter("regionId", regionId); + } if (state != null) { q.setParameter("state", state); } -- Gitblit v1.8.0