Codex Assistant
1 天以前 915d80766dd8e0157e9b9510b3634ed758eb5c5a
backend/src/main/resources/graphql/player.graphqls
@@ -17,8 +17,16 @@
    # 获取当前评委对选手的评分
    currentJudgeRating(activityPlayerId: ID!): CurrentJudgeRatingResponse
    activityPlayerDetail(id: ID!): ActivityPlayerDetailResponse
    # 获取参赛项目阶段时间轴及评分概况
    projectStageTimeline(activityPlayerId: ID!): ProjectStageTimelineResponse
    # 获取指定阶段的评委评分详情
    stageJudgeRatings(activityPlayerId: ID!): StageJudgeRatingDetailResponse
    # 微信端获取选手报名状态
    getPlayerRegistrationState(activityId: ID!): PlayerRegistrationResponse
    # 获取比赛晋级列表
    promotionCompetitions(name: String, page: Int, size: Int): [PromotionCompetitionResponse!]!
    # 获取可晋级参赛者列表
    promotableParticipants(currentStageId: ID!): PromotableParticipantsResponse
}
extend type Mutation {
@@ -29,6 +37,8 @@
    submitActivityRegistration(input: ActivityRegistrationInput!): ActivityRegistrationResponse
    # 保存评委评分
    saveActivityPlayerRating(input: ActivityPlayerRatingInput!): Boolean
    # 执行学员晋级操作
    promoteParticipants(input: PromotionInput!): PromotionResult
}
type ActivityPlayer {
@@ -97,6 +107,43 @@
    weightedScore: Float
}
type ProjectStageTimelineResponse {
    activityId: ID!
    activityName: String
    stages: [ProjectStageTimelineItemResponse!]!
}
type ProjectStageTimelineItemResponse {
    stageId: ID!
    stageName: String!
    matchTime: String
    sortOrder: Int
    participated: Boolean!
    activityPlayerId: ID
    averageScore: Float
    ratingCount: Int!
    hasRating: Boolean!
    latestRatingTime: String
}
type StageJudgeRatingDetailResponse {
    activityPlayerId: ID!
    stageId: ID
    stageName: String
    matchTime: String
    ratingCount: Int!
    averageScore: Float
    judgeRatings: [StageJudgeRatingItemResponse!]!
}
type StageJudgeRatingItemResponse {
    judgeId: ID!
    judgeName: String!
    totalScore: Float
    feedback: String
    ratingTime: String
}
type ActivityPlayerApplicationResponse {
    id: ID
    playerName: String
@@ -134,6 +181,15 @@
    description: String
    avatarUrl: String
    avatar: MediaResponse
    userInfo: PlayerUserInfoResponse
}
type PlayerUserInfoResponse {
    userId: ID
    name: String
    phone: String
    avatarUrl: String
    avatar: MediaResponse
}
type RegionInfoResponse {
@@ -145,7 +201,10 @@
type SubmissionMediaResponse {
    id: ID
    name: String
    path: String
    url: String
    fullUrl: String
    fullThumbUrl: String
    fileExt: String
    fileSize: Int
    mediaType: Int
@@ -232,4 +291,55 @@
input ActivityPlayerRatingItemInput {
    itemId: ID!
    score: Float!
}
}
# 比赛晋级列表响应类型
type PromotionCompetitionResponse {
    id: ID!
    competitionId: ID!
    competitionName: String!
    stageName: String!
    maxParticipants: Int
    currentCount: Int!
    status: Int
    startTime: String
    endTime: String
    sortOrder: Int
    state: Int
}
# 可晋级参赛者列表响应类型
type PromotableParticipantsResponse {
    participants: [PromotableParticipantResponse!]!
    selectableCount: Int
    totalCount: Int
    previousStageName: String
    currentStageName: String
}
# 可晋级参赛者响应类型
type PromotableParticipantResponse {
    id: ID!
    playerName: String
    projectName: String
    phone: String
    averageScore: Float
    ratingCount: Int
    applyTime: String
    state: Int
    playerId: ID
}
# 晋级操作输入类型
input PromotionInput {
    competitionId: ID!
    participantIds: [ID!]!
    targetStageId: ID!
}
# 晋级操作结果类型
type PromotionResult {
    success: Boolean!
    message: String
    promotedCount: Int
}