2022年
5.08 开始学习 Gin 框架
5.11 打开项目,开始用 Golang 重构项目,思考如何从xls课表中提取出想要的信息
5.12 下午五点 xls 分析功能实现完毕,实现 OT(Occupation Table) 提取功能
晚上十一点 数据库结构设计完毕 SQL语句初步书写完毕
5.13 晚上九点半 完成使用 Gorm 框架 实现 OT 表导入数据库
5.14 下午五点半 实现使用Gin框架 从前端POST表单到后台,收集需要排的班次信息,可以开始写排班功能
5.16 上午九点半 完成输入日期,生成排班表功能
下午六点半 完成输入日期,查询指定日期排班表功能
5.18 晚上十点半 完成 OT 表正确初始化并根据课表更新、根据 shift 表 生成 值班时长 duty 表
实现根据当前有空的网管,左连接值班时长表,take 值班时长最少的人排上去
5.19 凌晨三点 完成简单排班功能,班次排得平均得雅痞
6.1 凌晨一点,前端注册表单验证基本实现完毕,使用全局数据库连接
6.8 中午十二点,注册和登录功能实现完毕
6.14 凌晨2点40,现在我们用 cookie 保存用户登录状态 并从后端获取用户信息,在前端显示
6.23 可以选择登录方式
6.28 开始写后台页面,可以查看用户列表
7.3 实现前端组件复用,完善路由传参
TODO:
- 编写测试用例
- 前端判断选择的两个排班日期大小,结束日期晚于起始日期
- 前端输入需要排班日期的时候,输入开始和结束日期之后,要更新下方单选列表,选择每一天的值班类型 单纯用js实现比较麻烦,不如用 Vue
- 思考到底在哪里连接数据库好
- 数据库默认值可以用 default 赋
- 根据课表更新 OT 表 这一步可以使用携程,快速操作,但考虑一学期更新不到几次,这个可以考虑延缓改进
- initOccupation 可以一次Save 一个网管的
- 前端开始排班之前,应该还要选择排哪些网管的班次
- 连续登录五次失败之后需要输入验证码
- 在 localStorage 中存储用户的选择配置
- 数据库多一个表,存储学期开始日期,对应周数
需要外置的环境变量参数
钉钉 Appkey
钉钉 AppSecret
/model/database.go dsn
MySQL 数据库地址 用户名 密码
/jwt/generateToken secret Token过期事件
需要用到的网站:
笔记:
前端渲染周日程表的时候,应该的按行渲染的,即一周,一个时间段一个时间段一行过去渲染
获取当前周 -> 获取当前周排班表 ->(option) 选择某一周或者+-周
每个学期要分库分表吗?没必要,一学期的OT表也不超过2MiB,20个人的规模
在给ref对象赋值的时候,要用.value,才能更新到值
毕业设计的题目为《基于Gin、Gorm、Vue的排班OA系统的设计与实现》,提供多人在线实时挑选班次、个人空闲时间管理、调休假、自动排班、考勤统计等功能。
系统后端使用 Golang 语言编写,使用 Gin 作为 http框架、 Gorm 作为对象关系映射框架,系统前端使用 Vue 和 Element UI 组件库,使用 WebSocket 来实现多端实时通讯。
本项目的主要功能之一自动排班已经实现完毕,前端用户 JWT token 路由鉴权也已经测试完毕,在完善前端用户体验的同时,继续学习后端开发技巧,同时该项目借鉴大公司开发中的微服务思想,该项目落地部署以及升级都十分便利。
该需求来自学校网络中心,需要给值班的网管干事排班,以往都是人力去先根据课表知道大家的空闲时间来排班,每周都需要花几个小时排班,费时费力还经常出错,调休也需要人工干预,有了这个系统之后,办公自动化带来的效率是可观的持久的。
系统使用流程:
配置好数据库,创建好表
在每个学期开始时手动初始化该学期的 shift configuration 表,同时更新所有用户的 occupation_init_status 为 0
在要排班之前根据 shift configuration 生成班次,选择开启自由选班几小时或者自动排班
2023/2/13
重新思考项目主要功能框架
- 解析课程表可以把每一个 cell 解析为事件 类型 起始时间段 结束时间段
2023/2/16
https://github.com/swaggo/gin-swagger
之后swagger 可以用 oAuth,超帅和安全
https://goswagger.io/
TODO:
2023/2/21
https://zhuanlan.zhihu.com/p/383848749
https://github.com/rs/zerolog
2023/3/2
Golang func() init
2023/3/7
需要确认 个人的当前学期的空闲表是否有被创建
Current_OccupationTable_Status 0->未创建 1->已创建
在旧学期过去两周后(手动),重置所有的user.Current_OccupationTable_Status = 0
管理员功能:
班次管理
生成班次
开启班次自选功能 指定日期的班次 + 截止选班次时间
获取某一周的shiftConfig
发给前端的时间统一用 Unix
前端也要有一套时间转换的工具
ENV 配置项该用起来了
2023/3/9
在管理员审批通过注册的账号的时候,给该账号生成空闲表
2023/3/16
数据库user表 id 要从 1开始,id = 0 会被go视为零值
注册页添加步骤条 注册-》审核》登陆
可以设置不显示页尾 -> 只有首页显示页尾 Footer
https://code-farmer-i.github.io/vue-markdown-editor/zh/
优化需求:通用用户查询接口
https://docs.gitlab.com/runner/configuration/advanced-configuration.html
https://blog.csdn.net/geekqian/article/details/125942407
https://www.jb51.net/article/264471.htm
gin框架参数零值json绑定的问题 https://blog.csdn.net/weixin_42279809/article/details/107800081
https://blog.csdn.net/qq_39618369/article/details/125991257
https://devpress.csdn.net/vue/62f8fd487e6682346618b3e8.html