激活码管理系统
创建于 2025 年 1 月 13 日
项目介绍
激活码管理系统是一个基于若依 RuoYi-Vue 3.8.8(前后端分离版)扩展的健康服务激活码管理后台,运行在 ruoyi_jihuoma_admin(后端)与 ruoyi_admin_vue(前端)两套工程之上。系统围绕”发码 → 激活 → 核销”的业务链路设计:管理员在新增对话框中选择所属公司、所属产品、生效周期、有效期等属性并填写”生成条数”,后端一次生成一批由”序列号 + 激活码”组成的双码记录;用户激活权益后,管理员在列表中登记激活时间、激活人员与激活状态,最终由”专属权益次数管理”(usage_record)等模块记录每一次权益核销的使用明细。
从 SQL 与字典数据可以看出,该项目服务于医疗健康行业:所属公司字典为”北京海贝及元健康科技有限公司”,所属产品字典覆盖门诊绿通(001)、全程陪诊(002)、重疾绿通(003)、专家二诊(004)、住院安排(005)等健康服务产品,产权类型区分个人版与家庭版,激活状态使用 sys_yes_no(Y 已激活 / N 未激活)。Agricultural.sql 中已预置两千余条真实激活码数据(如 HB0012410001000001 / 53MA08),可见该系统已投入实际运营。
项目架构
项目沿用若依经典的多模块 Maven 结构,后端围绕 ActivationCodes 主表实现激活码核心业务:
| 模块 | 技术栈 | 说明 |
|---|---|---|
ruoyi-admin | Spring Boot 2.5.15、Spring Security | 启动模块与 Web 层,ActivationCodesController 暴露 /system/ActivationCodes REST 接口 |
ruoyi-system | MyBatis-Plus 3.5.4、PageHelper、Druid 1.2.23 | 业务模块,含 ActivationCodes 领域对象、Mapper 接口与 ActivationCodesServiceImpl 生成逻辑 |
ruoyi-common | Hutool、Apache POI、Redis | 公共组件:RandomUtil 随机码、StrUtil.padPre 序号补零、ExcelUtil 列表导出 |
ruoyi-admin-vue | Vue 2.6、Element UI 2.15.14、Vuex、Vue Router | 管理后台前端,src/views/system/ActivationCodes/index.vue 为激活码页面,src/api/system/ActivationCodes.js 封装接口 |
sql/ | MySQL 5.7(Agricultural 库) | Agricultural.sql 全量数据(含激活码表结构与两千余条记录)、ry_20240629.sql 框架基础脚本、quartz.sql 定时任务脚本 |
数据层核心是 ActivationCodes 表:activation_code(激活码)与 serial_number(序列号)均建有唯一索引,另含 generation_time(生成时间)、activation_time(激活时间)、activated_by(激活人员)、company(所属公司)、product(所属产品)、activation_period(申请等待期)、expiry_date(有效期)、status(激活状态)、number(产品类型/产权类型)等字段。Mapper 层除标准 CRUD 外还提供 batchInsert 批量插入与 selectActivationCodesByActivationCodes 按激活码精确查询两个扩展方法,业务生成逻辑集中在 ActivationCodesServiceImpl。
核心功能
激活码批量生成。 生成逻辑位于 ActivationCodesServiceImpl.insertActivationCodes:遍历用户填写的生成条数(numbers),每个循环内先用 BeanUtil.copyProperties 复制表单属性,再按 HB + 公司编码 + yyMM 年月 + 产品编码 拼接码前缀,配合 StrUtil.padPre 将递增序号补零为 5 位形成序列号(例如 HB0012410001000001),同时用 RandomUtil.randomStringUpper(6) 生成 6 位大写字母数字激活码(例如 53MA08)。为防止海量数据单条插入性能差,代码采用分批提交策略:每累计 1000 条调用一次 batchInsert 并清空缓冲区,末批余量单独提交,一次可稳定生成千级乃至万级激活码。
激活登记与核销校验。 激活码的”核销”入口在激活码列表的修改操作:管理员将 status 置为已激活(Y),并登记激活时间(activation_time)与激活人员(activated_by,通常为权益人的手机号),未激活记录保持 N 状态;SQL 演示数据中已激活记录均带有激活时间与激活人员手机号,直观反映核销留痕。接口层额外提供 selectActivationCodesByActivationCodes(按激活码精确查询)用于激活码有效性校验,ActivationCodes 表对激活码、序列号均建唯一索引,从数据库层面杜绝重复发码。
多条件检索与导出。 前端列表页提供激活码、序列号、生成时间、激活时间、激活人员、所属公司、所属产品、生效周期、申请等待期、有效期、激活状态、产品类型共 12 个筛选项,通过 ActivationCodesMapper.xml 的动态 <where> 条件拼装 SQL;查询结果分页展示(PageHelper 分页插件),操作区支持单条修改、批量删除与 Excel 导出(ExcelUtil + @Excel 注解自动映射列头,导出文件名形如 ActivationCodes_时间戳.xlsx),全部操作受 system:ActivationCodes:list/add/edit/remove/export 权限点控制。
权益核销记录与配套模块。 激活码被使用后,由”专属权益次数管理”(UsageRecord / usage_record 表)记录核销明细:权益人姓名、权益人手机号、激活码、专属权益名称、权益次数与备注,前端页面隐藏新增/删除按钮,仅保留查询、修改与导出,避免越权篡改使用记录;同仓库还包含按激活码发起权益预约的 Appointment 模块、受益人管理 Beneficiaries、专属权益 ExclusiveBenefits、产品 Products 与服务信息 ServiceInfo 等配套模块,共同构成”发码 → 激活 → 预约 → 核销”的完整业务闭环。
功能截图
暂无运行截图。
快速上手
-
准备数据库:在 MySQL 5.7 中新建
Agricultural库,按顺序执行sql/ry_20240629.sql(若依框架基础表)、sql/quartz.sql(定时任务表)、sql/Agricultural.sql(业务表与演示数据,含ActivationCodes表及两千余条激活码记录),并导入sys_dict_data中的公司、产品、周期等字典数据。 -
启动后端:
cd ruoyi_jihuoma_admin
# 修改 ruoyi-admin/src/main/resources/application-druid.yml 中的数据库地址、账号、密码
mvn clean package -DskipTests
java -jar ruoyi-admin/target/ruoyi-admin.jar
- 启动前端:
cd ruoyi_admin_vue
npm install
npm run dev # http://localhost:80,默认账号 admin / admin123
- 体验流程:进入”激活码”菜单 → 点击新增,选择所属公司、所属产品、生效周期、有效期、激活状态并填写生成条数(如 10)→ 确定后列表批量出现序列号与激活码 → 对某条记录点击修改,登记激活状态与激活人员完成核销 → 在”专属权益次数管理”中按激活码查询权益使用记录 → 使用导出按钮下载 Excel 清单。
总结
激活码管理系统是一个典型的”业务脚手架 + 行业定制”实战项目:在若依 RuoYi-Vue 3.8.8 的标准 CRUD 骨架上,用不到百行核心代码实现了具备生产价值的激活码批量生成能力——“HB + 公司 + 年月 + 产品 + 5 位序号”的序列号规则兼顾可读性与唯一性,6 位大写随机码配合唯一索引防重,1000 条一批的分批入库保证海量生成性能;前端通过”生成条数”输入框把批量能力变成一行操作。项目完整呈现了发码、激活登记、使用记录核销到权益预约的行业业务链路,字典驱动(公司、产品、周期、产权类型)与按钮级权限控制也符合真实后台系统的管理习惯。对于想在若依框架上快速搭建”码类/券类/卡类”管理系统的开发者,这份代码是很好的参考样板。