JMI-OPENATOMJMI-OPENATOM
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
  • 数据库

    • 数据库表结构

数据库表结构

概述

系统使用 MySQL 8.0 数据库,表名使用 tb_ 前缀(业务表)和 sys_ 前缀(系统表)。所有表使用 utf8mb4 字符集和 utf8mb4_general_ci 排序规则。

数据库迁移由 Flyway 管理,初始化脚本为 V1__init_schema.sql,后续通过 V2 ~ V29 持续演进。

核心表清单

用户与权限

tb_user(用户表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
user_nameVARCHAR(50)用户名(唯一)
passwordVARCHAR(255)密码(BCrypt 哈希)
real_nameVARCHAR(50)真实姓名
genderVARCHAR(10)性别
phoneVARCHAR(20)手机号
emailVARCHAR(100)邮箱
student_idVARCHAR(30)学号/工号(唯一)
collegeVARCHAR(100)学院
majorVARCHAR(100)专业
gradeVARCHAR(20)年级
class_nameVARCHAR(100)班级
avatarVARCHAR(255)头像 URL
miniapp_openidVARCHAR(80)微信小程序 openid(唯一)
wechat_unionidVARCHAR(80)微信 unionid
qq_openidVARCHAR(80)QQ openid(V2 新增)
user_statusTINYINT用户状态:1=active, 0=disabled, 2=locked
create_timeTIMESTAMP创建时间
last_login_atTIMESTAMP最后登录时间

sys_role(角色表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
role_nameVARCHAR(50)角色名称
role_codeVARCHAR(50)角色编码
descriptionVARCHAR(255)描述
is_systemTINYINT是否系统内置
statusTINYINT状态
create_timeTIMESTAMP创建时间

sys_permission(权限表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
permission_nameVARCHAR(50)权限名称
permission_codeVARCHAR(100)权限编码
permission_typeVARCHAR(20)权限类型
api_pathVARCHAR(255)API 路径
http_methodVARCHAR(10)HTTP 方法
descriptionVARCHAR(255)描述

sys_user_role(用户-角色关联表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
user_idINT用户 ID
role_idINT角色 ID

sys_role_permission(角色-权限关联表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
role_idINT角色 ID
permission_idINT权限 ID

社团与组织

tb_club(社团表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_nameVARCHAR(100)社团名称
descriptionTEXT社团描述
logoVARCHAR(255)Logo URL
statusTINYINT状态
recruitment_statusTINYINT招新状态

tb_club_department(部门表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
department_nameVARCHAR(100)部门名称
descriptionVARCHAR(255)描述

tb_club_position(岗位表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
position_nameVARCHAR(100)岗位名称
levelINT层级

tb_club_membership(成员关系表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
user_idINT用户 ID
department_idINT部门 ID
position_idINT岗位 ID
statusTINYINT成员状态
joined_atTIMESTAMP加入时间
left_atTIMESTAMP离开时间(往届成员查询需不为空)

招新系统

tb_membership_application(入会申请表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
user_idINT用户 ID
campaign_idINT招新计划 ID
form_dataJSON自定义表单数据
statusVARCHAR(20)申请状态
submitted_atTIMESTAMP提交时间

tb_recruitment_campaign(招新计划表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
nameVARCHAR(100)计划名称
form_schemaJSON表单结构
statusVARCHAR(20)状态
start_atTIMESTAMP开始时间
end_atTIMESTAMP结束时间

tb_approval_record(审批记录表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
application_idINT申请 ID
approver_idINT审批人 ID
actionVARCHAR(20)审批动作
commentTEXT审批意见
created_atTIMESTAMP审批时间

tb_interview(面试表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
application_idINT申请 ID
scheduled_atTIMESTAMP面试时间
locationVARCHAR(255)面试地点
statusVARCHAR(20)面试状态

活动与签到

tb_club_activity(社团活动表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
titleVARCHAR(200)活动标题
contentTEXT活动内容
start_atTIMESTAMP开始时间
end_atTIMESTAMP结束时间
statusTINYINT状态

tb_check_in_session(签到会话表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
titleVARCHAR(200)签到标题
start_atTIMESTAMP开始时间
end_atTIMESTAMP结束时间
statusVARCHAR(20)状态

互动功能

tb_blog_article(博客文章表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
author_idINT作者 ID
titleVARCHAR(200)标题
contentLONGTEXT内容
statusVARCHAR(20)审核状态
view_countINT浏览数
like_countINT点赞数

tb_vote_campaign(投票活动表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
titleVARCHAR(200)投票标题
result_visibilityVARCHAR(20)结果可见性

tb_lottery_campaign(抽奖活动表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
club_idINT社团 ID
titleVARCHAR(200)抽奖标题
statusVARCHAR(20)状态

积分系统

tb_point_account(积分账户表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
user_idINT用户 ID
balanceBIGINT积分余额(V19 扩展为 BIGINT)
total_earnedBIGINT累计获得
total_spentBIGINT累计消费

tb_point_transaction(积分流水表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
account_idINT账户 ID
amountBIGINT变动金额
typeVARCHAR(20)变动类型
descriptionVARCHAR(255)描述

办公自动化

tb_leave_application(请假申请表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
user_idINT用户 ID
leave_typeVARCHAR(20)请假类型
start_atTIMESTAMP开始时间
end_atTIMESTAMP结束时间
reasonTEXT请假原因
statusVARCHAR(20)审批状态
bot_notifiedTINYINT是否已通知机器人(V3 新增)

tb_office_document(文书表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
titleVARCHAR(200)文书标题
contentTEXT文书内容
template_idINT模板 ID

tb_notification(通知表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
titleVARCHAR(200)通知标题
contentTEXT通知内容
typeVARCHAR(20)通知类型
sender_idINT发送人 ID

系统管理

tb_operation_log(操作日志表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
user_idINT操作人 ID
moduleVARCHAR(50)模块
actionVARCHAR(50)操作
paramsTEXT请求参数
resultTEXT响应结果
ipVARCHAR(50)IP 地址
duration_msINT耗时(毫秒)
created_atTIMESTAMP操作时间

tb_login_log(登录日志表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
user_idINT用户 ID
login_typeVARCHAR(20)登录类型
ipVARCHAR(50)IP 地址
statusTINYINT登录状态
created_atTIMESTAMP登录时间

OAuth 认证

tb_oauth_client(OAuth 客户端表)

字段类型说明
idINT, AUTO_INCREMENT主键 ID
client_idVARCHAR(100)客户端 ID(唯一)
client_secretVARCHAR(255)客户端密钥
redirect_uriVARCHAR(500)回调地址
scopesVARCHAR(255)授权范围
enabledTINYINT是否启用

Flyway 迁移历史

版本说明
V1初始化全部基础表结构
V2用户表添加 QQ openid
V3请假机器人通知字段
V4机器人群管理
V5-V7机器人公告、消息、群消息任务
V8-V9博客表结构与互动
V10图床资源表
V11抽奖表
V12-V13积分系统与规则
V14数据开放申请
V15OIDC 认证中心
V16投票表
V17-V18应用展示
V19积分金额扩展为 BIGINT
V20OAuth 客户端修复
V21-V23晚自习签到
V24LMS OAuth 客户端
V25AI 活动自动化
V26运营负责人角色
V27社团规章制度
V28投票结果可见性
V29校友分组功能