From 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期二, 30 九月 2025 17:38:04 +0800
Subject: [PATCH] feat: 完善比赛晋级功能并清理测试文件

---
 backend/src/main/resources/graphql/player.graphqls |  209 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 205 insertions(+), 4 deletions(-)

diff --git a/backend/src/main/resources/graphql/player.graphqls b/backend/src/main/resources/graphql/player.graphqls
index 71bea78..6246211 100644
--- a/backend/src/main/resources/graphql/player.graphqls
+++ b/backend/src/main/resources/graphql/player.graphqls
@@ -1,16 +1,41 @@
 extend type Query {
-  activityPlayerApplications(name: String, page: Int, size: Int): [ActivityPlayerApplicationResponse!]!
+  activityPlayerApplications(name: String, activityId: ID, state: Int, page: Int, size: Int): [ActivityPlayerApplicationResponse!]!
   activityPlayerDetail(id: ID!): ActivityPlayerDetailResponse
+  
+  # 鎶ュ悕鐘舵�佹煡璇�
+  playerRegistration(activityId: ID!): PlayerRegistrationResponse
+  
+  # 璇勫垎鐩稿叧鏌ヨ
+  judgeRatingsForPlayer(activityPlayerId: ID!): [JudgeRatingStatusResponse!]!
+  currentJudgeRating(activityPlayerId: ID!): CurrentJudgeRatingResponse
+  averageScoreForPlayer(activityPlayerId: ID!): Float
+  currentJudgeInfo: CurrentJudgeInfoResponse
+  
+  # 姣旇禌鏅嬬骇鐩稿叧鏌ヨ
+  promotionCompetitions(name: String, page: Int, size: Int): [PromotionCompetitionResponse!]!
+  competitionParticipants(competitionId: ID!, page: Int, size: Int): [CompetitionParticipantResponse!]!
+  promotableParticipants(currentStageId: ID!): PromotableParticipantsResponse!
 }
 
 extend type Mutation {
   saveActivityPlayerRating(input: ActivityPlayerRatingInput!): Boolean!
+  submitActivityRegistration(input: ActivityRegistrationInput!): ActivityRegistrationResponse!
+  updateActivityRegistration(activityPlayerId: ID!, input: ActivityRegistrationInput!): ActivityRegistrationResponse!
+  
+  # 瀹℃牳鐩稿叧mutations
+  approveActivityPlayer(activityPlayerId: ID!, feedback: String): Boolean!
+  rejectActivityPlayer(activityPlayerId: ID!, feedback: String!): Boolean!
+  updatePlayerFeedback(activityPlayerId: ID!, feedback: String!): Boolean!
+  
+  # 姣旇禌鏅嬬骇鐩稿叧mutations
+  promoteParticipants(input: PromotionInput!): PromotionResult!
 }
 
 type ActivityPlayerApplicationResponse {
   id: ID
   playerName: String!
   activityName: String!
+  projectName: String
   phone: String
   applyTime: String!
   state: Int
@@ -20,19 +45,35 @@
 type ActivityPlayerDetailResponse {
   id: ID!
   playerInfo: PlayerInfoResponse!
+  regionInfo: RegionInfoResponse
   activityName: String!
+  projectName: String
   description: String
+  feedback: String
+  state: Int
   submissionFiles: [SubmissionMediaResponse!]!
   ratingForm: RatingFormResponse
 }
 
 # 瀛﹀憳淇℃伅鍝嶅簲
 type PlayerInfoResponse {
+    id: ID
+    name: String
+    phone: String
+    description: String
+    avatarUrl: String
+    avatar: MediaResponse
+    gender: Int
+    birthday: String
+    education: String
+    introduction: String
+}
+
+# 鍖哄煙淇℃伅鍝嶅簲
+type RegionInfoResponse {
   id: ID!
   name: String!
-  phone: String
-  description: String
-  avatarUrl: String
+  fullPath: String
 }
 
 # 鎻愪氦璧勬枡鍝嶅簲
@@ -43,6 +84,7 @@
   fileExt: String
   fileSize: Int
   mediaType: Int
+  thumbUrl: String
 }
 
 # 璇勫垎琛ㄥ崟鍝嶅簲
@@ -63,5 +105,164 @@
 # 璇勫垎椤圭洰杈撳叆绫诲瀷
 input ActivityPlayerRatingItemInput {
   itemId: ID!
+  score: Float!
+}
+
+# 璇勫璇勫垎鐘舵�佸搷搴旂被鍨�
+type JudgeRatingStatusResponse {
+  judgeId: ID!
+  judgeName: String!
+  hasRated: Boolean!
+  ratingTime: String
+  totalScore: Float
+}
+
+# 褰撳墠璇勫璇勫垎鍝嶅簲绫诲瀷
+type CurrentJudgeRatingResponse {
+  id: ID!
+  totalScore: Float
+  status: Int
+  remark: String
+  items: [CurrentJudgeRatingItemResponse!]!
+}
+
+# 褰撳墠璇勫璇勫垎椤瑰搷搴旂被鍨�
+type CurrentJudgeRatingItemResponse {
+  ratingItemId: ID!
+  ratingItemName: String!
+  score: Float!
+  weightedScore: Float!
+}
+
+# 璇勫垎椤圭洰鍒嗘暟鍝嶅簲绫诲瀷
+type RatingItemScoreResponse {
+  itemId: ID!
+  itemName: String!
   score: Int!
+  maxScore: Int!
+}
+
+# 褰撳墠璇勫淇℃伅鍝嶅簲绫诲瀷
+type CurrentJudgeInfoResponse {
+  judgeId: ID!
+  judgeName: String!
+  title: String
+  company: String
+}
+
+# 鎶ュ悕鎻愪氦杈撳叆绫诲瀷
+input ActivityRegistrationInput {
+  activityId: ID!
+  playerInfo: PlayerRegistrationInput!
+  regionId: ID
+  projectName: String
+  description: String
+  mediaFiles: [MediaFileInput!]
+  attachmentMediaIds: [String!]
+}
+
+# 閫夋墜鎶ュ悕淇℃伅杈撳叆绫诲瀷
+input PlayerRegistrationInput {
+  name: String!
+  phone: String!
+  gender: Int
+  birthDate: String
+  education: String
+  introduction: String
+  description: String
+  avatarMediaId: String
+}
+
+
+
+# 濯掍綋鏂囦欢杈撳叆绫诲瀷
+input MediaFileInput {
+  name: String!
+  path: String!
+  fileExt: String
+  fileSize: Int
+  mediaType: Int!
+}
+
+# 鎶ュ悕鎻愪氦鍝嶅簲绫诲瀷
+type ActivityRegistrationResponse {
+  success: Boolean!
+  message: String
+  registrationId: ID
+  playerId: ID
+  userId: ID
+  activityPlayerId: ID
+}
+
+# 鐜╁鎶ュ悕鐘舵�佸搷搴旂被鍨�
+type PlayerRegistrationResponse {
+  id: ID
+  status: Int
+  registrationTime: String
+  reviewStatus: Int
+  reviewComment: String
+}
+
+# 姣旇禌鏅嬬骇鐩稿叧绫诲瀷瀹氫箟
+
+# 姣旇禌鏅嬬骇鍒楄〃鍝嶅簲绫诲瀷
+type PromotionCompetitionResponse {
+  id: ID!
+  competitionName: String!
+  stageName: String!
+  maxParticipants: Int
+  currentCount: Int!
+  status: Int!
+  startTime: String
+  endTime: String
+  sortOrder: Int
+  state: Int
+}
+
+# 姣旇禌鍙傝禌鑰呭搷搴旂被鍨�
+type CompetitionParticipantResponse {
+  id: ID!
+  playerName: String!
+  projectName: String
+  phone: String
+  averageScore: Float
+  ratingCount: Int!
+  applyTime: String!
+  state: Int!
+}
+
+# 鏅嬬骇鎿嶄綔杈撳叆绫诲瀷
+input PromotionInput {
+  competitionId: ID!
+  participantIds: [ID!]!
+  targetStageId: ID
+}
+
+# 鏅嬬骇鎿嶄綔缁撴灉绫诲瀷
+type PromotionResult {
+  success: Boolean!
+  message: String!
+  promotedCount: Int!
+}
+
+# 鍙檵绾у弬璧涜�呭搷搴旂被鍨�
+type PromotableParticipantResponse {
+  id: ID!
+  playerId: ID!
+  playerName: String!
+  projectName: String
+  phone: String
+  averageScore: Float
+  ratingCount: Int!
+  applyTime: String!
+  state: Int!
+}
+
+# 鍙檵绾у弬璧涜�呭垪琛ㄥ搷搴旂被鍨�
+type PromotableParticipantsResponse {
+  participants: [PromotableParticipantResponse!]!
+  selectableCount: Int!
+  totalCount: Int!
+  previousStageName: String!
+  currentStageName: String!
 }
\ No newline at end of file

--
Gitblit v1.8.0