RuoYi-DKD 技术亮点
🔗 GitHub: chuoer47/RuoYi-DKD
项目概述
RuoYi-DKD 是基于 RuoYi 框架的自动售货机管理系统,采用 SpringBoot + Vue 前后端分离架构。项目包含后端管理端、售货机屏幕端、工单 App 端等多个子系统。
RuoYi 框架的二次开发
RuoYi 是一个流行的 Java 快速开发框架,提供了很多开箱即用的功能:
代码生成器
RuoYi 最大的亮点之一是零代码开发能力。通过代码生成器,可以自动根据数据库表结构生成完整的 CRUD 代码:
- Controller 层:RESTful API 接口
- Service 层:业务逻辑
- Mapper 层:MyBatis 数据访问
- 前端 Vue 页面:列表、表单、搜索
java
// 生成的 Controller 通常长这样
@RestController
@RequestMapping("/dkd/vendingMachine")
public class VendingMachineController {
@Autowired
private IVendingMachineService vendingMachineService;
@GetMapping("/list")
public TableDataInfo list(VendingMachine vendingMachine) {
startPage(); // RuoYi 封装的分页
List<VendingMachine> list = vendingMachineService.selectVendingMachineList(list);
return getDataTable(list);
}
}权限管理
RuoYi 内置了完整的权限管理体系:
- RBAC 模型:用户 → 角色 → 权限
- Shiro 安全框架:细粒度的接口权限控制
- 数据权限:不同角色看到不同范围的数据
java
// 注解式权限控制
@RequiresPermissions("dkd:vendingMachine:list")
@GetMapping("/list")
public TableDataInfo list(...) { ... }
// 数据权限
@DataScope(deptAlias = "d", userAlias = "u")
public List<VendingMachine> selectVendingMachineList(VendingMachine vendingMachine) { ... }自动售货机业务逻辑
项目的核心业务围绕售货机的运营管理:
设备管理
- 售货机注册、绑定、状态监控
- 货道管理(商品库存)
- 远程控制(补货、故障报修)
订单流程
用户扫码 → 选择商品 → 支付 → 出货 → 完成
↓
售货机上报 → 后台记录 → 库存更新工单系统
工单 App 端用于运维人员处理售货机的各类问题:
- 补货工单:库存不足时自动触发
- 维修工单:设备故障时创建
- 巡检工单:定期维护计划
前后端分离实践
后端 (dkd_backend)
dkd-admin → 主模块,启动入口
dkd-system → 系统管理(用户、角色、菜单)
dkd-common → 公共工具类
dkd-framework → 框架核心配置
dkd-quartz → 定时任务
dkd-generator → 代码生成前端 (dkd_frontend)
基于 Vue + Element UI,RuoYi 提供了完整的前端脚手架:
- 路由管理
- 权限指令(v-hasPermi)
- 请求封装(axios 拦截器)
- 组件复用
多端适配
项目不只有管理后台,还有:
- 售货机屏幕端:用户交互界面
- 工单 App 端:运维人员使用
学习收获
通过这个项目可以学到:
- RuoYi 框架的使用:快速搭建企业级应用的能力
- 前后端分离开发:Vue + SpringBoot 的完整实践
- IoT 业务理解:设备管理、状态同步、远程控制
- 多端开发经验:同一后端服务多个前端消费者
不足与改进
- 项目基于 RuoYi 脚手架,很多代码是生成的,需要理解生成逻辑
- 售货机通信协议(MQTT 等)可能未完整实现
- 可以考虑引入微服务架构应对更大规模部署