Codex Assistant
1 天以前 ba94ceae1315174798ae1967ef62268c6d16cd5b
backend/src/main/resources/graphql/activity.graphqls
@@ -1,97 +1,225 @@
# 比赛管理 GraphQL Schema
# 比赛响应类型
type Activity {
    id: ID!
    pid: ID!
    path: String!
    name: String!
    description: String
    signupDeadline: String!
    matchTime: String
    address: String
    ratingSchemeId: ID!
    playerMax: Int
    state: Int!
    createTime: String!
    updateTime: String!
    # 关联数据
    ratingScheme: RatingScheme
    stages: [Activity!]
    parent: Activity
    # 统计数据
    playerCount: Int!
    stateName: String!
}
# 比赛分页响应
type ActivityPageResponse {
    content: [Activity!]!
    totalElements: Int!
    page: Int!
    size: Int!
}
# 比赛输入类型
input ActivityInput {
    id: ID
    pid: ID
    name: String!
    description: String
    signupDeadline: String!
    matchTime: String
    address: String
    ratingSchemeId: ID!
    playerMax: Int
    state: Int
    stages: [ActivityStageInput!]
    judges: [ActivityJudgeInput!]
}
# 比赛阶段输入类型
input ActivityStageInput {
    id: ID
    name: String!
    description: String
    matchTime: String
    address: String
    ratingSchemeId: ID
    playerMax: Int
    state: Int
}
# 比赛评委输入类型
input ActivityJudgeInput {
    judgeId: ID!
    judgeName: String!
    stageIds: [ID!]
}
# 扩展查询
extend type Query {
    # 分页查询比赛列表
    activities(page: Int!, size: Int!, name: String): ActivityPageResponse!
    # 获取比赛详情
    activity(id: ID!): Activity
    # 获取所有比赛(用于下拉选择)
    allActivities: [Activity!]!
    # 获取比赛的所有阶段
    activityStages(competitionId: ID!): [Activity!]!
    # 获取进行中的比赛
    ongoingActivities: [Activity!]!
    activities(page: Int!, size: Int!, name: String, state: Int): PageResponse
    allActivities: [Activity]
    allActivityStages: [Activity]
    activityStages(activityId: ID!): [Activity]
    ongoingActivities: [Activity]
    # 寰俊绔幏鍙栨椿鍔ㄥ垪琛?
    getActivities: [Activity]
    # 鑾峰彇涓诲姙鏂圭粺璁℃暟鎹?
    organizerStats: OrganizerStatsResponse
}
# 扩展变更
extend type Mutation {
    # 保存比赛(新增或编辑)
    saveActivity(input: ActivityInput!): Activity!
    # 删除比赛
    deleteActivity(id: ID!): Boolean!
}
    saveActivity(input: ActivityInput!): Activity
    deleteActivity(id: ID!): Boolean
    updateActivityState(id: ID!, state: Int!): Boolean
}
type Activity {
    id: ID
    pid: ID
    path: String
    name: String
    description: String
    signupDeadline: String
    matchTime: String
    address: String
    ratingSchemeId: ID
    ratingScheme: RatingSchemeResponse
    playerCount: Int
    playerMax: Int
    sortOrder: Int
    state: Int
    stateName: String
    createTime: String
    updateTime: String
    coverImage: MediaResponse
    images: [MediaResponse]
    videos: [MediaResponse]
    stages: [Activity]
    parent: Activity
    judges: [ActivityJudgeResponse]
}
type PageResponse {
    content: [Activity]
    page: Int
    size: Int
    total: Int
    totalPages: Int
    totalElements: Int
    number: Int
    first: Boolean
    last: Boolean
}
input ActivityInput {
    id: ID
    pid: ID
    name: String!
    description: String
    signupDeadline: String
    matchTime: String
    address: String
    ratingSchemeId: ID
    playerMax: Int
    sortOrder: Int
    state: Int
    stages: [ActivityStageInput]
    judges: [ActivityJudgeInput]
}
input ActivityStageInput {
    id: ID
    name: String!
    description: String
    matchTime: String
    address: String
    ratingSchemeId: ID
    playerMax: Int
    sortOrder: Int
    state: Int
}
input ActivityJudgeInput {
    judgeId: ID!
    judgeName: String
    stageIds: [ID]
}
type ActivityJudgeResponse {
    id: ID
    name: String
    phone: String
    description: String
    stageIds: [ID]
}
# 娲诲姩璇︽儏鍜岀姸鎬佸搷搴旂被鍨嬶紙寰俊绔娇鐢級
type ActivityDetailAndStatusResponse {
    activity: Activity
    registrationStatus: String
    canRegister: Boolean
    playerRegistration: ActivityPlayer
}
# 涓诲姙鏂圭粺璁″搷搴旂被鍨?
type OrganizerStatsResponse {
    activeActivities: Int!
    totalParticipants: Int!
    totalActivities: Int!
}