XcySouquan - 授权管理系统
📋 项目简介
XcySouquan(小彩云授权)是一个基于 Spring Boot 2.7.18 开发的软件授权管理和销售系统。该系统提供了完整的软件产品授权管理、用户管理、订单管理、角色权限管理等功能,适用于软件开发商进行产品授权的销售和管理。
作者: 韩先生
联系QQ: 1772891600
技术栈: Spring Boot + MyBatis Plus + MySQL + Redis + JWT
⚡ 核心特性
1. 授权管理
- 多产品支持: 支持管理多个软件产品的授权
- 授权类型: 支持普通版和高级版两种授权类型
- RSA加密: 采用RSA公钥/私钥加密机制保障授权安全
- 授权状态追踪: 完整的授权状态管理和历史记录
- 授权日志: 详细记录每次授权操作的时间、IP、操作人等信息
2. 用户系统
- 用户认证: 基于 JWT Token 的用户身份认证
- 角色权限: 灵活的角色权限管理体系
- 账户余额: 内置用户余额管理,单位:分
- 代理机制: 支持多级代理体系,记录上下级关系
- 用户状态: 用户状态管理(正常/异常)
3. 产品管理
- 产品信息: 产品名称、图标、介绍、版本号管理
- 产品分级: 支持产品分等级销售
- 价格管理: 灵活的产品价格配置
- 版本控制: 产品版本更新管理
- 下载管理: 产品下载链接管理
4. 订单系统
- 订单管理: 完整的订单创建、查询、状态管理
- 订单日志: 订单操作历史记录
- 支付集成: 集成支付功能(PAYKEY配置)
5. 消息通知
- 实时通信: 基于 WebSocket 的实时消息推送
- 邮件通知: Spring Mail 邮件发送功能
- 消息历史: 消息记录和历史查询
- 消息限流: 内置消息发送频率限制
6. 内容管理
- 公告管理: 系统公告的发布和管理
- 文章系统: 支持 Markdown 格式的文章发布
- 广告管理: 广告位配置和管理
- 反馈系统: 用户反馈收集和分类管理
7. 安全特性
- JWT认证: 基于 JWT 的无状态认证机制
- Spring Security: 集成 Spring Security 安全框架
- Token缓存: Caffeine 本地缓存提升 Token 验证性能
- 验证码: EasyCaptcha 图形验证码防机器人
- 请求过滤: 自定义过滤器和跨域处理
🏗️ 技术架构
后端技术栈
| 技术 | 版本 | 说明 |
|---|---|---|
| Spring Boot | 2.7.18 | 核心框架 |
| JDK | 1.8 | Java运行环境 |
| MyBatis Plus | 3.3.1 | ORM框架 |
| MySQL | 8.0.28 | 关系型数据库 |
| Redis | - | 缓存数据库 |
| Jedis | 3.8.0 | Redis客户端 |
| Spring Security | - | 安全框架 |
| JWT | 0.9.1 | Token认证 |
| Caffeine | 2.6.2 | 本地缓存 |
| Lombok | 1.18.16 | 代码简化工具 |
| FastJson | 1.2.83 | JSON处理 |
| Jackson | - | JSON处理 |
| OkHttp | 4.9.3 | HTTP客户端 |
| ZXing | 3.4.1 | 二维码/条形码生成 |
| Flexmark | 0.62.2 | Markdown解析 |
| EasyCaptcha | 1.6.2 | 验证码生成 |
| Commons Net | 3.9.0 | 网络工具库 |
系统架构
┌─────────────────────────────────────────────┐
│ 前端应用层 │
│ (API调用 / WebSocket连接) │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 控制层 (Controllers) │
│ 用户 / 授权 / 产品 / 订单 / 消息 / 内容管理 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 服务层 (Services) │
│ 业务逻辑处理 / 数据验证 / 安全控制 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 数据层 (Mappers) │
│ MyBatis Plus ORM映射 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 数据库层 │
│ MySQL + Redis │
└─────────────────────────────────────────────┘
📦 功能模块
用户模块
- 用户管理 (
UsersController): 用户注册、登录、信息管理 - 用户角色 (
UserRoleController): 用户角色绑定管理 - 用户产品 (
UserProductController): 用户已购产品管理 - 用户黑名单 (
UserHmdController): 用户黑名单管理 - 易核用户 (
YhUserController): 第三方用户集成
授权模块
- 授权管理 (
ShouquanController): 授权的创建、查询、更新 - 授权日志 (
ShouquanLogController): 授权操作日志 - 授权内容 (
SqContentController): 授权详细内容管理 - 授权Token (
SqTokenController): 授权Token管理
产品模块
- 产品管理 (
ProductController): 产品基本信息管理 - 产品Token (
ProductTokenController): 产品授权Token - 产品规格 (
SpecificationsController): 产品规格配置 - 产品更新 (
ProductupdatelistController): 产品更新列表 - 云产品列表 (
SkyProductListController): 云端产品管理
订单模块
- 订单管理 (
SqOrderController): 订单创建和查询 - 采集列表 (
CjListController): 订单采集记录 - 更新列表 (
UpdateListController): 订单更新记录
内容模块
- 文章管理 (
ArticlesController): 文章发布和管理 - 公告管理 (
GgController): 系统公告 - 广告管理 (
AdvertisementController): 广告位管理 - 通知管理 (
InformController): 通知消息 - 消息管理 (
SkyMessageController): 实时消息
权限模块
- 角色管理 (
RoleController): 角色定义和权限配置 - 角色价格 (
RolePriceController): 角色价格管理 - 角色产品 (
RoleProductController): 角色产品关联
反馈模块
- 反馈管理 (
SqFeedbackController): 用户反馈收集 - 反馈分类 (
SqFeedbackTitleController): 反馈类型管理
系统模块
- API管理 (
ApiController): API接口管理 - 日志管理 (
LogController): 系统操作日志 - 消息历史 (
MessageHistoryController): 消息记录
🔐 安全机制
1. JWT Token 认证
- 使用 JWT (JSON Web Token) 实现无状态认证
- Token 验证结果缓存(Caffeine),5分钟过期
- 自定义 JWT 过滤器 (
JwtAuthorizationTokenFilter) - Token 工具类 (
JwtTokenUtil) 提供 Token 生成和验证
2. RSA 加密
- 授权采用 RSA 非对称加密
- 每个授权生成独立的公钥和私钥对
- RSA 工具类 (
RSAUtil) 提供加解密功能
3. 请求过滤
- 自定义过滤器 (
Filters) 处理请求 - 跨域配置 (
Cross) 支持前后端分离 - WebSocket 握手拦截 (
CustomHandshakeHandler)
4. 访问控制
- Spring Security 安全配置 (
SecurityConfig) - 基于角色的权限控制
- 接口级别的权限验证
5. 数据安全
- 密码加密存储
- SQL 注入防护(MyBatis Plus)
- XSS 防护
💾 数据库设计
核心数据表
| 表名 | 说明 | 主要字段 |
|---|---|---|
| users | 用户表 | uid, username, password, money, rid |
| shouquan | 授权表 | sid, content, qq, pid, code, publicKey, privateKey |
| product | 产品表 | pid, name, icon, versions, price, type |
| sq_order | 订单表 | 订单ID, 用户ID, 产品ID, 金额, 状态 |
| role | 角色表 | rid, 角色名, 权限配置 |
| articles | 文章表 | 文章ID, 标题, 内容, 作者 |
| shouquan_log | 授权日志 | 操作ID, 授权ID, 操作类型, 时间 |
| log | 系统日志 | 日志ID, 用户ID, 操作, IP, 时间 |
| sq_feedback | 反馈表 | 反馈ID, 用户ID, 内容, 类型 |
| inform | 通知表 | 通知ID, 标题, 内容, 状态 |
| advertisement | 广告表 | 广告ID, 标题, 图片, 链接 |
| sky_message | 消息表 | 消息ID, 发送者, 接收者, 内容 |
⚙️ 配置说明
服务器配置
server:
port: 9005 # 服务端口
servlet:
session:
timeout: 7000000 # Session超时时间
数据库配置
- MySQL: 127.0.0.1:3306
- 数据库名: sq_qbqb_pro
- 连接池: HikariCP
- 最小空闲连接: 3
- 最大连接数: 15
- 连接超时: 10秒
Redis配置
- 地址: 127.0.0.1:6379
- 数据库: 0
- 连接池: Jedis Pool
- 最大活跃连接: 100
- 最大空闲连接: 50
缓存配置
- 类型: Caffeine 本地缓存
- 策略: 最大1000条,5分钟过期
- 缓存项:
- userDetails: 用户详情缓存
- tokenValidation: Token验证缓存
性能优化配置
- 懒加载: 启用 Bean 懒加载
- JVM参数优化:
- 内存: Xms128m / Xmx512m
- 垃圾回收器: Serial GC
- 字符串去重优化
- 压缩指针优化
📁 项目结构
xcysq/
├── src/
│ ├── main/
│ │ ├── java/com/
│ │ │ ├── HzbApplication.java # 主启动类
│ │ │ ├── config/ # 配置类
│ │ │ │ ├── CacheConfig.java # 缓存配置
│ │ │ │ ├── RedisConfig.java # Redis配置
│ │ │ │ ├── SecurityConfig.java # 安全配置
│ │ │ │ └── WebSocketConfig.java # WebSocket配置
│ │ │ ├── controller/ # 控制器层
│ │ │ │ ├── UsersController.java # 用户控制器
│ │ │ │ ├── ShouquanController.java # 授权控制器
│ │ │ │ ├── ProductController.java # 产品控制器
│ │ │ │ ├── SqOrderController.java # 订单控制器
│ │ │ │ └── ... # 其他控制器
│ │ │ ├── entity/ # 实体类
│ │ │ │ ├── Users.java # 用户实体
│ │ │ │ ├── Shouquan.java # 授权实体
│ │ │ │ ├── Product.java # 产品实体
│ │ │ │ └── ... # 其他实体
│ │ │ ├── mapper/ # 数据访问层
│ │ │ ├── service/ # 业务逻辑层
│ │ │ ├── request/ # 请求对象
│ │ │ ├── response/ # 响应对象
│ │ │ ├── util/ # 工具类
│ │ │ │ ├── JwtTokenUtil.java # JWT工具
│ │ │ │ ├── RSAUtil.java # RSA加密工具
│ │ │ │ └── ... # 其他工具
│ │ │ ├── Cross.java # 跨域配置
│ │ │ ├── Filters.java # 过滤器
│ │ │ └── JwtAuthorizationTokenFilter.java # JWT过滤器
│ │ └── resources/
│ │ ├── application.yaml # 主配置文件
│ │ ├── application-server.yaml # 服务器配置
│ │ ├── application-lowmem.yaml # 低内存配置
│ │ ├── application-ultralowmem.yaml # 超低内存配置
│ │ ├── mapper/ # MyBatis XML映射
│ │ ├── notification_template.html # 通知模板
│ │ └── verification_code_template.html # 验证码模板
│ └── test/ # 测试代码
├── pom.xml # Maven配置
├── scripts/ # 脚本文件
└── target/ # 编译输出目录
🔧 工具类说明
安全相关
JwtTokenUtil: JWT Token 生成、解析、验证RSAUtil: RSA 加密解密工具
业务工具
MessageRateLimiter: 消息发送频率限制- 二维码/条形码生成工具(ZXing)
- Markdown 解析工具(Flexmark)
示例代码
MiYao.java: 密钥示例RSAClientExample.java: RSA 客户端示例
🚀 快速开始
环境要求
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
- Redis 3.0+
构建项目
mvn clean package -DskipTests
运行应用
java -jar target/XcySouquan-1.0-SNAPSHOT.jar
应用将在 http://localhost:9005 启动
📊 性能特点
启动优化
- Bean 懒加载机制
- 关闭不必要的功能(Banner、JMX)
- Spring Context Indexer 加速组件扫描
- DevTools 热重载(仅开发环境)
运行时优化
- HikariCP 高性能连接池
- 预创建数据库连接避免冷启动
- Caffeine 本地缓存减少数据库访问
- Redis 缓存热点数据
- 批量语句重写优化(rewriteBatchedStatements)
- PreparedStatement 缓存
内存优化
- 提供三种内存配置方案
- 标准配置
- 低内存配置(lowmem)
- 超低内存配置(ultralowmem)
- JVM 参数优化
- Xms128m / Xmx512m
- SerialGC 垃圾回收
- 字符串去重
- 压缩指针
📝 API接口
系统提供完整的 RESTful API 接口,主要接口分类:
用户接口
POST /users/register- 用户注册POST /users/login- 用户登录GET /users/info- 获取用户信息PUT /users/update- 更新用户信息
授权接口
POST /shouquan/create- 创建授权GET /shouquan/query- 查询授权PUT /shouquan/update- 更新授权DELETE /shouquan/delete- 删除授权
产品接口
GET /product/list- 产品列表GET /product/detail- 产品详情POST /product/create- 创建产品PUT /product/update- 更新产品
订单接口
POST /sq-order/create- 创建订单GET /sq-order/list- 订单列表GET /sq-order/detail- 订单详情
(更多接口请参考各个 Controller 源码)
🛡️ 注意事项
-
安全性
- 首次运行前请修改数据库密码
- 修改 JWT Secret Key
- 配置 Redis 密码
- 修改 PAYKEY
-
性能
- 根据服务器配置选择合适的内存配置文件
- 生产环境建议关闭 DevTools
- 合理配置数据库连接池大小
-
兼容性
- 仅支持 MySQL 8.0+
- 需要 Redis 支持
-
数据库
- 首次启动前请创建数据库
- 导入数据库表结构
📄 许可证
本项目版权归作者所有,未经授权不得用于商业用途。
📞 联系方式
作者: 韩先生
QQ: 1772891600
如有问题或建议,欢迎联系作者。