苍穹外卖 Day01:员工模块与分类管理、AutoFill
499 字
2 分钟
苍穹外卖 Day01:员工模块与分类管理、AutoFill
苍穹外卖(sky-take-out)是多模块 Maven 工程,分为 sky-common、sky-pojo、sky-server 三个模块,基于 Spring Boot 2.7.3。第一天的主线是员工模块、分类管理,以及公共字段自动填充(AutoFill)的注解 + 切面方案。
员工模块
- 登录:用户名 + MD5 密码比对,通过后签发 JWT。
- 退出:空实现,前端删除本地 token 即可。
- 新增员工:DTO 转 Entity,默认密码 123456,状态默认启用,公共字段手工 set。
- 分页查询:PageHelper。
- 根据 id 查询:密码脱敏为
****。 - 编辑员工:BeanUtils 拷贝属性,补充 updateTime/updateUser。
- 启停账号:更新 status 字段。
分类管理
- 新增分类:默认禁用状态。
- 分页查询。
- 删除分类:先查 dish/setmeal 关联,有关联抛
DeletionNotAllowedException。 - 修改分类。
- 启停。
- 按类型查询 list。
公共字段自动填充:自定义注解 + AOP
createTime/updateTime/createUser/updateUser 四处公共字段在多个业务里重复 set,代码复用和维护成本高。方案是三件套:注解标记 @AutoFill(OperationType) + 切面拦截 + 反射填充。
两种操作类型的填充范围不同:
- INSERT 填 4 个字段(createUser/createTime/updateUser/updateTime)
- UPDATE 只填 2 个字段(updateUser/updateTime)
三个关键实现点:
- 切入点写法:
execution(* com.sky.mapper.*.*(..)) && @annotation(...AutoFill) - 通过
MethodSignature调getAnnotation(AutoFill.class).value()得到操作类型;setter 方法名统一放在AutoFillConstant常量类中,用getDeclaredMethod().invoke()反射调用 - 填充人取
BaseContext.getCurrentId()(ThreadLocal 实现,值由 JWT 拦截器在校验时塞入)
当天的切面只搭好切入点与 @Before 日志骨架,填充逻辑次日补全。
基础设施
- JWT 拦截器:拦截
/admin/**,放行 login。 - BaseContext:基于 ThreadLocal 存当前登录员工 id。
- 统一返回结果 Result。
- 全局异常处理:BaseException 兜底;SQLIntegrityConstraintViolationException 单独处理重复用户名。
- WebMvc 配置:拦截器注册、docket 接口文档、静态资源、消息转换器。
- mapper XML 开启驼峰映射。
环境排障:Lombok 与 JDK21 不兼容
| 问题 | 根因 | 修复 |
|---|---|---|
mvn compile 失败:NoSuchFieldError: JCTree$JCImport ... qualid | JDK21 移除了 JCImport.qualid 字段,Lombok 1.18.20 不兼容 JDK21 | root pom <lombok>1.18.20</lombok> 升级为 1.18.34,编译 BUILD SUCCESS |
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
苍穹外卖 Day01:员工模块与分类管理、AutoFill
https://ryuki.icu/posts/sky-takeout-day01/相关文章智能推荐
1
苍穹外卖 Day02:菜品新增、文件上传与 AutoFill 补全
项目实战苍穹外卖第二天:菜品新增含口味、本地文件上传,补全 AutoFill 切面并修复三处隐患
2
苍穹外卖 Day06:操作日志、RBAC 权限与订单链路改造
项目实战课程主线收尾后的自驱改造:AOP 操作日志落库、注解式 RBAC 拦截器、订单状态机加乐观锁、Redisson 延迟队列精准关单、布隆过滤器防缓存穿透。
3
苍穹外卖 Day05:数据统计、定时任务与 JWT 拦截器
项目实战营业额/用户/订单统计报表与工作台、定时任务清理超时订单、用户端 JWT 拦截器落地。
4
苍穹外卖 Day03:菜品 CRUD、店铺状态与微信登录
项目实战苍穹外卖第三天:菜品模块完整增删改查、Redis 店铺营业状态、微信小程序登录
5
苍穹外卖 Day04:用户端订单与模拟支付
项目实战用户端下单、模拟支付、历史订单分页查询的实现,以及套餐 Mapper 起步。
随机文章随机推荐





















