# 打卡结算 ui设计工具:即时设计 小程序框架:uniapp 后端框架:spring boot + mybatis + mybatis mapper + spring mvc 数据库:mysql ## 系统设计 ### 功能设计 * 用户 1. 微信用户登录 说明:简单记录下头像、微信id、昵称,然后用于区分即可 2. 用户注销?-这个不要应该也可以 * 打卡任务 1. 新建任务 2. 编辑任务 3. 删除任务 4. 用户完成任务 * 系统 1. 每晚自动结算 说明:每日凌晨把昨天完成的任务获得的奖励进行自动统计 2. 每天自动推送结算通知 说明:把每日结算结果推送到微信 ### 表设计 #### 用户表 表名:user | 字段 | 类型 | 描述 | | ---------------- | ------------- | ---------------------------------- | | id | bigint | 主键 | | open_id | varchar(128) | 微信id | | nickname | varchar(100) | 微信昵称 | | avator | varchar(1000) | 微信头像url | | created_by | bigint | 创建人 | | creation_time | timestamp | 创建时间 | | last_updated_by | bigint | 最后更新人 | | last_update_time | timestamp | 最后更新时间 | | version | bigint | 版本号 | | delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | #### 打卡任务表 表名:punch_in | 字段 | 类型 | 描述 | | -------------------- | ------------ | ---------------------------------- | | id | bigint | 主键 | | task_name | varchar(128) | 任务名称 | | reward_num | int | 奖励倍数 | | weekend_double_flag | tinyint | 是否启用周末双倍标志(0-不是,1-是) | | full_attendance_flag | tinyint | 是否启用全勤奖励标志(0-不是,1-是) | | archive_flag | tinyint | 是否归档标志(0-不是,1-是) | | created_by | bigint | 创建人 | | creation_time | timestamp | 创建时间 | | last_updated_by | bigint | 最后更信人 | | last_update_time | timestamp | 最后更新时间 | | version | bigint | 版本号 | | delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | #### 打卡任务记录表 表名:punch_in_record | 字段 | 类型 | 描述 | | ---------------- | --------- | ---------------------------------- | | id | bigint | 主键 | | punch_in_id | bigint | 打卡任务表主键 | | punch_in_time | timestamp | 打卡时间 | | created_by | bigint | 创建人 | | creation_time | timestamp | 创建时间 | | last_updated_by | bigint | 最后更信人 | | last_update_time | timestamp | 最后更新时间 | | version | bigint | 版本号 | | delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | #### 打卡任务结算表 表名:punch_in_settlement | 字段 | 类型 | 描述 | | ------------------ | ----------- | ------------------------------------------------------------ | | id | bigint | 主键 | | user_id | bigint | 用户表主键 | | reward_num | int | 结算奖励数 | | claim_reward_flag | tinyint | 是否已领取奖励(0-未领取,1-已领取) | | claim_reward_time | timestamp | 领取奖励时间 | | settlement_task_id | bigint | 结算任务表id | | settlement_time | timestamp | 结算时间 | | notify_id | bigint | 通知表ID | | notify_status | varchar(20) | 结算通知状态(fail-通知失败,success-成功通知,pending-待通知) | | notify_time | timestamp | 结算通知时间 | | created_by | bigint | 创建人 | | creation_time | timestamp | 创建时间 | | last_updated_by | bigint | 最后更信人 | | last_update_time | timestamp | 最后更新时间 | | version | bigint | 版本号 | | delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | #### 打卡任务记录与结算关联表 表名:punch_in_record_settlement_rela | 字段 | 类型 | 描述 | | ---------------- | --------- | ---------------------------------- | | id | bigint | 主键 | | record_id | bigint | 打卡任务记录表ID | | settlement_id | bigint | 打卡任务结算表ID | | created_by | bigint | 创建人 | | creation_time | timestamp | 创建时间 | | last_updated_by | bigint | 最后更信人 | | last_update_time | timestamp | 最后更新时间 | | version | bigint | 版本号 | | delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | #### 奖励结算定时任务执行记录表 表名:settlement_task | 字段 | 类型 | 描述 | | --------------------- | ----------- | ---------------------------------------------------- | | id | bigint | 主键 | | start_time | timestamp | 任务开始时间 | | end_time | timestamp | 任务结束时间 | | task_status | varchar(20) | 任务状态(success-成功,fail-失败,processing-处理中) | | processed_num | int | 处理数量 | | processed_success_num | int | 处理成功数量 | | processed_fail_num | int | 处理失败数量 | | error_message | text | 失败异常信息 | | created_by | bigint | 创建人 | | creation_time | timestamp | 创建时间 | | last_updated_by | bigint | 最后更信人 | | last_update_time | timestamp | 最后更新时间 | | version | bigint | 版本号 | | delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | #### 通知定时任务执行记录表 表名:settlement_notify_task | 字段 | 类型 | 描述 | | ------------------ | ----------- | ---------------------------------------------------- | | id | bigint | 主键 | | start_time | timestamp | 任务开始时间 | | end_time | timestamp | 任务结束时间 | | task_status | varchar(20) | 任务状态(success-成功,fail-失败,processing-处理中) | | notify_num | int | 通知数量 | | notify_success_num | int | 通知成功数量 | | notify_fail_num | int | 通知失败数量 | | error_message | text | 失败异常信息 | | created_by | bigint | 创建人 | | creation_time | timestamp | 创建时间 | | last_updated_by | bigint | 最后更信人 | | last_update_time | timestamp | 最后更新时间 | | version | bigint | 版本号 | | delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | ## 常用命令 ### Git命令 ```shell # 创建一个仓库目录,进入目录后执行命令 mkdir my-repo cd my-repo # 初始化一个本地仓库,但该仓库是作为远程仓库使用。 git init --bare ``` ### MySQL命令 ```shell # 初始化后才能使用,如果失败则要进行配置 mysqld --initialize-insecure # 注册mysql服务(需要管理员权限) mysqld -install # 注册mysql服务并指定配置文件(需要管理员权限) mysqld --install MySQL --defaults-file="配置文件路径\mysql-lts\current\my.ini" # 启动mysql服务(需要管理员权限) # 如果启动报错:"服务没有响应控制功能。请键入 NET HELPMSG 2186 以获得更多的帮助。",则看下面的参考文章看是否缺少组件 net start mysql # 关闭mysql服务(需要管理员权限) net stop mysql # 如果mysql服务无法启动,则可以手动启动mysql mysqld --standalone ``` 参考: * [MySQL中的basedir和datadir的作用](https://blog.csdn.net/wolfalcon/article/details/80528678) * [MYSQL8.0安装、配置、启动、登入与卸载详细步骤总结](https://blog.csdn.net/qq_51688022/article/details/137105751) * [mysql服务没有响应控制功能](https://blog.csdn.net/m0_72160374/article/details/143462612)