OA系统概述
前后端分离架构
JDK/Node.js/Maven/Git
创建项目骨架
Spring Boot搭建
MySQL配置
表结构设计
JPA逆向生成
JWT原理与集成
登录接口
BCrypt加密
Token生成校验
Spring Security配置
自定义过滤器
权限上下文
登录拦截/异常处理
CRUD接口设计
RESTful API
统一返回封装
全局异常处理
树形结构设计
部门CRUD
递归查询子部门
部门-用户关联
RBAC模型详解
角色CRUD
权限数据初始化
角色-权限关联
为用户分配角色
批量操作
@PreAuthorize
自定义权限校验
文件服务器选型
上传接口
下载与预览
类型/大小限制
公告CRUD
发布与撤回
置顶功能
已读/未读状态
考勤规则设计
上班/下班打卡
时间校验
迟到早退判定
Flowable/Camunda
流程定义与部署
发起审批实例
同意/驳回/转办
任务列表查询
审批历史记录
流程图高亮
站内信设计
WebSocket推送
已读/未读
系统/个人消息
操作日志(AOP)
登录日志
日志查询与清理
按月分表
Vue3+Vite搭建
Element Plus
路由配置(动态)
布局组件
登录页面开发
Token存储/携带
路由守卫
动态路由生成
用户列表页
搜索/分页组件
新增/编辑对话框
状态切换/批量删除
部门树 el-tree
CRUD对话框
拖拽排序
部门选择器封装
角色列表页
分配权限树
分配角色对话框
权限标识展示
公告列表页
富文本编辑器
发布公告表单
已读状态展示
打卡页面(定位)
考勤日历
统计图表(ECharts)
补卡申请表单
发起审批(动态表单)
待办/已办任务
审批对话框
流程图查看
消息列表页
WebSocket连接
消息详情
标记已读/全部已读
个人信息修改
修改密码
头像上传
主题切换(暗黑)
Linux环境准备
Docker部署后端
Nginx部署前端
Jenkins流水线
数据库索引优化
Redis缓存
防SQL注入/XSS
接口限流
项目亮点梳理
面试题解析
简历写法指导
扩展功能展望