| | |
| | | 数据来源与关联: |
| | | |
| | | * 主表:t\_activity\_player,关联学员表 t\_player(player\_id),关联比赛表 t\_activity(activity\_id) |
| | | * 注意:t\_activity\_player.activity\_id 始终关联“比赛”;t\_activity\_player.stage\_id 必须关联该比赛的“阶段”ID。若该比赛未定义阶段(t\_activity 无子记录 pid=activity\_id),则将 stage\_id 设为 activity\_id(指向比赛自身)。 |
| | | * 注意:t\_activity\_player.activity\_id 始终关联"比赛";t\_activity\_player.stage\_id 必须关联该比赛的"阶段"ID。若该比赛未定义阶段(t\_activity 无子记录 pid=activity\_id),则将 stage\_id 设为 activity\_id(指向比赛自身)。 |
| | | |
| | | GraphQL 规范: |
| | | |
| | |
| | | * 0(报名未审核):显示按钮【审核通过】 |
| | | * 1(进行中,已通过):显示按钮【取消资格】 |
| | | * 2(审核未通过):显示【审核未通过】,无操作按钮 |
| | | |
| | | 3.12 多评委评分系统 |
| | | |
| | | 3.12.1 系统概述 |
| | | |
| | | 多评委评分系统支持多个评委对同一选手进行独立评分,系统自动计算平均分,确保评分的公正性和透明度。 |
| | | |
| | | 3.12.2 核心功能 |
| | | |
| | | 评分页面增强: |
| | | |
| | | * 显示当前评委信息(姓名) |
| | | * 展示所有评委的评分状态(已评分/未评分) |
| | | * 显示选手的平均分 |
| | | * 支持评委查看和修改自己的评分 |
| | | |
| | | 评分状态管理: |
| | | |
| | | * 实时显示各评委的评分进度 |
| | | * 区分当前评委和其他评委 |
| | | * 显示每个评委的总分(已评分的情况下) |
| | | |
| | | 数据计算: |
| | | |
| | | * 自动计算选手的平均分 |
| | | * 支持评委修改评分后重新计算 |
| | | * 保持评分历史记录 |
| | | |
| | | 3.12.3 技术实现 |
| | | |
| | | 前端实现(Vue.js): |
| | | |
| | | * 组件:RatingForm.vue - 增强评分表单组件 |
| | | * 页面:rating.vue - 评分页面 |
| | | * API:activityPlayer.js - 新增多评委相关接口 |
| | | |
| | | 后端实现(Spring Boot + GraphQL): |
| | | |
| | | * API:PlayerGraphqlApi.java - 新增GraphQL查询方法 |
| | | * 服务:ActivityPlayerRatingService.java - 评分业务逻辑 |
| | | * DTO:新增响应类型支持多评委数据 |
| | | |
| | | 新增GraphQL查询: |
| | | |
| | | * judgeRatingsForPlayer - 获取选手的所有评委评分状态 |
| | | * currentJudgeRating - 获取当前评委的评分详情 |
| | | * averageScoreForPlayer - 获取选手平均分 |
| | | * currentJudgeInfo - 获取当前评委信息 |
| | | |
| | | 3.12.4 数据结构 |
| | | |
| | | 评委评分状态响应(JudgeRatingStatusResponse): |
| | | |
| | | * judgeId - 评委ID |
| | | * judgeName - 评委姓名 |
| | | * totalScore - 总分 |
| | | * status - 评分状态(0-未评分,1-已评分) |
| | | * isCurrentJudge - 是否为当前评委 |
| | | |
| | | 当前评委评分响应(CurrentJudgeRatingResponse): |
| | | |
| | | * id - 评分记录ID |
| | | * totalScore - 总分 |
| | | * status - 评分状态 |
| | | * remark - 评分备注 |
| | | * items - 评分项目详情列表 |
| | | |
| | | 当前评委信息响应(CurrentJudgeInfoResponse): |
| | | |
| | | * id - 评委ID |
| | | * name - 评委姓名 |
| | | * phone - 联系电话 |
| | | * description - 评委描述 |
| | | |
| | | 3.12.5 业务规则 |
| | | |
| | | 评分权限: |
| | | |
| | | * 评委只能查看和修改自己的评分 |
| | | * 评委可以查看其他评委的评分状态(已评分/未评分) |
| | | * 评委可以查看选手的平均分 |
| | | |
| | | 评分流程: |
| | | |
| | | * 评委进入评分页面,系统显示当前评委信息 |
| | | * 显示所有评委的评分状态 |
| | | * 如果当前评委已评分,加载其历史评分数据 |
| | | * 评委提交评分后,系统重新计算平均分 |
| | | * 实时更新评分状态显示 |
| | | |
| | | 数据一致性: |
| | | |
| | | * 评分提交后立即更新数据库 |
| | | * 重新加载页面数据确保状态同步 |
| | | * 支持评委多次修改评分 |
| | | * 3(结束):显示【已结束】,无操作按钮 |
| | | |
| | | 四、微信端需求 |
| | | |
| | | 暂时留空 |
| | | 聚焦“学员报名”“评委评审”“平台用户查询比赛进程和报名人数等等信息”核心场景,简化交互,避免冗余操作。 |
| | | |
| | | |
| | | |
| | | \#### 登录 |
| | | |
| | | 小程序登录,使用微信标准小程序登录流程, |
| | | |
| | | 后台对应 wxLogin 方法。(不是webLogin) |
| | | |
| | | 登录逻辑: |
| | | |
| | | 1. 如果t\_user 里面 没有对应的 openid ,那么新增一个user 记录 |
| | | |
| | | 2. 如果存在user 记录, 则分别关联 t\_player ,t\_judge ,t\_employee 表里面的 user\_id, 返回前端的userDto 应该包含 player, judge, employee 的信息(如果有的话) |
| | | |
| | | 3. 电话号码关联(非常重要) |
| | | |
| | | 后台有个 saveUserPhone 的方法,小程序端或者web端更新电话后都必须调用这个方法,他的核心逻辑是: |
| | | |
| | | 1,查询当前t\_user 里面的是否存在相同的电话号码,如果没有,就更新到当前user里面 |
| | | |
| | | 2. 如果存在相同的电话号码,并且对应user的openid 是null ,那么 清空原来user 的phone 设置为null, 把新的电话号码更新到 当前用户的phone字段,(因为电话号码不可重复), 同时更新t\_player, t\_judge, t\_employee 关联的user\_id 到 新的user\_id |
| | | |
| | | |
| | | |
| | | \#### 2.3.1 首页 |
| | | |
| | | \- 顶部:展示“启用”状态的轮播图(按排序号播放)。 |
| | | |
| | | \- 赛事列表:显示“封面图+比赛名称+已报名人数+截止倒计时”,已截止标红;未截止赛事带“详情”按钮,跳转详情页面。 |
| | | |
| | | \- toolbar显示首页,消息,我的。三个模块。 |
| | | |
| | | 第一次打开小程序, 弹出手机号码授权,但是要有明显的【取消】按钮,用户可以不授权,如果用户取消授权,把 rejectPhone 记录到wx.setstorage 里面。 下次登录不在提醒授权手机号码。 |
| | | |
| | | |
| | | |
| | | \#### 2.3.2 详情页面 |
| | | |
| | | 顶部是比赛的图片和视频 |
| | | |
| | | 下面是比赛名称 |
| | | |
| | | 比赛开始时间 |
| | | |
| | | 报名截至时间。 |
| | | |
| | | 比赛简介 |
| | | |
| | | 最下面是报名按钮 |
| | | |
| | | 如果当前用户已经在这个比赛报过名,未审核, 那么显示【已报名-待审核】 |
| | | |
| | | 如果当前用户已经在这个比赛报过名,已经审核, 那么显示【已报名-进行中】 |
| | | |
| | | 如果当前用户已经在这个比赛报过名,已经审核, 那么显示【已结束】 |
| | | |
| | | “当前时间大于截至时间” 灰色显示“报名已结束”, 不可报名 |
| | | |
| | | “当前时间大于比赛时间+24 小时, 那么显示【已结束】 |
| | | |
| | | 当前未报名状态,并且时间状态符合要求,那么显示 按钮【我要报名】 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | \### 报名页面 |
| | | |
| | | 头像 |
| | | |
| | | 姓名 |
| | | |
| | | 电话:必填,并且不可录不可编辑(防止有人恶意注册他人电话号码),如果当前user(t\_user 有电话号码,就带出) 只能在旁边有个按钮【获取电话】,调用微信小程序授权获取电话。 |
| | | |
| | | 以上信息如果t\_user 里面有就自动带过来,没有是必填项。 |
| | | |
| | | 区域选择:来至于t\_region ,必填 |
| | | |
| | | 比赛名称:来自于上个比赛详情页面, 编辑时后台dto需要后台带出包含这个字段的activity. |
| | | |
| | | 个人简介:必填 |
| | | |
| | | 项目名称:必填 |
| | | |
| | | 项目介绍:必填 |
| | | |
| | | 文档资料:必填(最少一个),最多5个,支持视频,图片,word,pdf 文件。 |
| | | |
| | | |
| | | |
| | | 提交按钮 |
| | | |
| | | |
| | | |
| | | \#### 2.3.3 我的 |
| | | |
| | | \- 顶部是头像,下面是姓名,旁边是设置按钮。点击进入设置。 |
| | | |
| | | \- 如果用户关联学员,就显示【我的比赛】。 |
| | | |
| | | \- 如果用户关联评委,就显示【我的评审】。 |
| | | |
| | | \- 如果用户关联员工,就显示【我的工作】。 |
| | | |
| | | \- 列表展示:每个比赛显示“封面图+名称+进度条(待审核→审核通过→评审中→已出结果)+最终得分(评审后显示)”。 |
| | | |
| | | \- 详情查看:点击“详情”可看提交资料、审核结果(拒绝显原因)、评审评语(评审后显)。 |
| | | |
| | | |
| | | |
| | | \#### 2.3.4 消息 |
| | | |
| | | \- 仅展示系统推送(审核结果、评审完成提示),按时间倒序,不支持回复。 |
| | | |
| | | |
| | | |
| | | \#### 2.3.5 评委身份功能 |
| | | |
| | | \- \*\*我的评审\*\*: |
| | | |
| | | - 分类展示:分“未评审”“已评审”tab页,显示“比赛名称+学员姓名+评审状态”。 |
| | | |
| | | - 筛选支持:按比赛名称筛选任务。 |
| | | |
| | | \- \*\*评审操作\*\*: |
| | | |
| | | - 资料查看:点击“未评审”学员,查看其报名资料。 |
| | | |
| | | - 评分提交:展示评分模板(评分项+满分值),必填得分(校验不超满分),可选填评语;提交后不可修改。 |
| | | |
| | | \- \*\*消息\*\*:仅展示系统通知(新评审任务、评审完成确认),按时间倒序,不支持回复。 |
| | | |
| | | |
| | | |
| | | 五、设计要点 |
| | | |
| | |
| | | 说明:以后端 application.yml 为准,避免环境不一致。 |
| | | |
| | | 当前配置(摘自 backend/src/main/resources/application.yml): |
| | | - URL:jdbc:mysql://139.155.104.10:3306/ryc?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai |
| | | - 用户名:ryc |
| | | - 密码:KiYap3E8X8RLcM6T |
| | | |
| | | * URL:jdbc:mysql://139.155.104.10:3306/ryc?useUnicode=true\&characterEncoding=utf8\&useSSL=false\&serverTimezone=Asia/Shanghai |
| | | * 用户名:ryc |
| | | * 密码:KiYap3E8X8RLcM6T |
| | | |
| | | 超时建议: |
| | | - 在测试或批量操作场景下,追加 connectTimeout=60000、socketTimeout=60000 以提高稳定性。 |
| | | |
| | | * 在测试或批量操作场景下,追加 connectTimeout=60000、socketTimeout=60000 以提高稳定性。 |
| | | |
| | | 8.2 RabbitMQ 连接 |
| | | |
| | |
| | | |
| | | Region:ap-chengdu |
| | | |
| | | |
| | | |
| | | Git 服务: |
| | | |
| | | IP: http://42.193.1.25:9521/ |
| | | |
| | | 用户名:ai |
| | | |
| | | 密码:ai@ycl2025 |
| | | |
| | | 库: |
| | | |
| | | |
| | | |
| | | 微信小程序开发者工具 |
| | | |
| | | 路径:C:\\Program Files (x86)\\Tencent\\微信web开发者工具 |
| | | |