Skip to content

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 端:运维人员使用

学习收获 ​

通过这个项目可以学到:

  1. RuoYi 框架的使用:快速搭建企业级应用的能力
  2. 前后端分离开发:Vue + SpringBoot 的完整实践
  3. IoT 业务理解:设备管理、状态同步、远程控制
  4. 多端开发经验:同一后端服务多个前端消费者

不足与改进 ​

  • 项目基于 RuoYi 脚手架,很多代码是生成的,需要理解生成逻辑
  • 售货机通信协议(MQTT 等)可能未完整实现
  • 可以考虑引入微服务架构应对更大规模部署