golang-yitisheng-server/project_doing.md

3.5 KiB
Raw Blame History

项目过程记录

2025-12-17

[任务执行] 初始化模块 yitisheng/yx_user_score

  • 操作目标: 创建新的业务模块目录,并准备实现用户分数和志愿管理功能。
  • 影响范围: server/modules/yitisheng/yx_user_score/
  • 修改前记录: 项目中暂无此模块。

[任务执行] 修正模块路径并实现 CRUD

  • 操作目标: 根据 Task3.md 要求,将 yx_user_score, yx_volunteer, yx_volunteer_record 实现于 modules/yx/ 下。
  • 影响范围: server/modules/yx/
  • 修改结果:
    • 删除了错误的 modules/yitisheng 目录(尝试删除)。
    • modules/yx 下实现了 Entity, Mapper, Service, Controller。
    • 更新了 main.go 注册路由。

[任务执行] 增加 Swagger 文档访问密码验证

  • 操作目标: 为 Swagger 文档接口添加 Basic Auth 验证,防止未授权访问。
  • 影响范围: server/config/config.go, server/main.go
  • 修改前记录: Swagger 接口公开,无验证。
  • 修改结果:
    • server/config/config.go: 新增 SwaggerConfig 配置项 (默认 admin/password)。
    • server/main.go: 为 /swagger 路由组添加了 gin.BasicAuth 中间件。

[任务执行] 解决本地调试 CORS 问题

  • 操作目标: 允许前端 Vue3 项目跨域调用后端接口。
  • 影响范围: server/middleware/cors.go, server/main.go
  • 修改前记录: 后端未配置 CORS前端跨域请求被拦截。
  • 修改结果:
    • server/middleware/cors.go: 创建了 CORS 中间件,允许 Origin 头部指定的来源,并放行 OPTIONS 请求。
    • server/main.go: 全局注册了 CORS 中间件。

[任务执行] 实现用户成绩保存接口

  • 操作目标: 根据 Task4.md 要求,实现用户成绩信息的保存接口,并包含特定的业务校验逻辑。
  • 影响范围: server/modules/yx/controller/yx_user_score_controller.go
  • 修改前记录: YxUserScoreController 仅有基本的 CRUD 接口。
  • 修改结果:
    • 定义了 SaveScoreRequest 结构体,包含严格的字段校验逻辑(文理分科、科目限制、成绩范围等)。
    • 实现了 SaveUserScore 方法,处理 DTO 到 Entity 的转换(包括科目列表拼接、子专业成绩映射)。
    • 注册了 POST /yx-user-scores/save-score 路由。

[任务执行] 重构 DTO 代码结构

  • 操作目标: 将 SaveScoreRequest 结构体从 Controller 中分离到独立的 DTO 包中。
  • 影响范围: server/modules/yx/dto/yx_user_score_dto.go, server/modules/yx/controller/yx_user_score_controller.go
  • 修改前记录: DTO 结构体直接定义在 Controller 文件中。
  • 修改结果:
    • 创建了 server/modules/yx/dto/ 目录。
    • SaveScoreRequest 及其校验逻辑移动到 yx_user_score_dto.go
    • Controller 改为引用 dto 包。

[任务执行] 处理 UserScoreVO 信息转换

  • 操作目标: 在 UserScoreService 中实现 Entity 到 VO 的转换,并完善 UserScoreVO 定义。
  • 影响范围: server/modules/user/vo/user_score_vo.go, server/modules/user/service/user_score_service.go
  • 修改前记录: UserScoreVO 为空,GetActiveByID 返回原始 Entity。
  • 修改结果:
    • 定义了 UserScoreVO 结构体,其字段设计参考了 SaveScoreRequest
    • UserScoreService 中实现了 convertEntityToVo 私有方法,处理了逗号分隔字符串到切片的转换,以及具体分数字段到 Map 的映射。
    • 更新 GetActiveByID 返回 UserScoreVO 对象。