个人开发学习2

核心需求:管理员手动派发工单,需支持权限控制、工单状态跟踪、消息通知等功能。
技术栈:
后端:Spring Boot + Spring Security(权限控制) + MyBatis(数据持久化)
前端:Vue3 + Element Plus(表单组件) + WebSocket(实时通知)
数据库:MySQL(工单数据存储)
权限控制实现
基于Spring Security的RBAC模型,限制工单派发仅对管理员角色开放
前端通过Vue Router的导航守卫拦截非管理员访问路径
工单派发逻辑
工单生成:从前端表单获取任务内容、接收人、截止时间等字段,生成带唯一ID的工单记录存入drill_task表。
状态流转:初始状态为“待接收”,接收人确认后转为“进行中”
消息通知集成
邮件通知:使用JavaMail API发送工单派发提醒,支持HTML模板(含工单详情链接)。
站内信:基于WebSocket实现实时通知,前端展示未读消息角标
前端交互优化
使用Element Plus的动态表单组件实现工单字段动态渲染(如演练项目类型下拉框)。
通过Axios拦截器处理401权限异常,自动跳转登录页
权限控制漏洞
问题:测试发现普通用户可通过API直接调用派发接口。
解决:增加后端方法级注解@PreAuthorize,并启用Spring Security的CSRF防护
消息通知丢失
问题:高并发下邮件通知偶发延迟或丢失。
优化:引入RabbitMQ消息队列异步处理通知任务,增加重试机制(最大3次)
工单状态同步延迟
问题:前端工单列表状态更新不及时。
方案:采用Vuex管理工单状态,配合WebSocket实现实时推送
批量派发性能瓶颈
数据库改用批量插入(INSERT INTO ... VALUES (),(),())
启用MyBatis的ExecutorType.BATCH模式
接收人匹配
难点:需根据“配合单位”字段自动关联外部部门用户。
实现:通过Feign调用组织架构微服务API获取用户ID列表
功能测试用例
管理员成功派发工单并触发通知(邮件+站内信)。
非管理员尝试派发返回403错误码。
接收人超期未处理触发预警(状态转为“已超期”)
性能压测结果
单机部署下,工单派发接口TPS达到1200+(4核8G环境)。
消息通知成功率从92%提升至99.8%(引入消息队列后)
四、遗留问题与改进方向
工单优先级策略:当前仅支持手动设置优先级,计划引入智能派发算法(基于任务紧急度、执行人负载)
移动端适配:现有前端未优化移动端表单操作,需开发H5专用界面
审计日志缺失:增加工单操作日志记录(如派发人、派发时间、修改历史)

posted @ 2025-04-18 23:11  我嘞牛牛  阅读(39)  评论(0)    收藏  举报