lrj
昨天 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
extend type Query {
  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
}
 
# 比赛报名详情响应(用于评分页面)
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!
  fullPath: String
}
 
# 提交资料响应
type SubmissionMediaResponse {
  id: ID!
  name: String!
  url: String!
  fileExt: String
  fileSize: Int
  mediaType: Int
  thumbUrl: String
}
 
# 评分表单响应
type RatingFormResponse {
  schemeId: ID!
  schemeName: String!
  items: [RatingItemResponse!]!
  totalMaxScore: Int!
}
 
# 评分提交输入类型
input ActivityPlayerRatingInput {
  activityPlayerId: ID!
  ratings: [ActivityPlayerRatingItemInput!]!
  comment: String
}
 
# 评分项目输入类型
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!
}