# prysm-admin **Repository Path**: yimeng99/prysm-admin ## Basic Information - **Project Name**: prysm-admin - **Description**: prysm-admin - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-26 - **Last Updated**: 2026-06-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, SpringBoot, 后台管理系统 ## README # Prysm Admin > **企业级后台管理系统 / Enterprise Admin Management System** > 一套基于 Spring Boot 2 + MyBatis Plus 构建的可插拔后台管理脚手架,覆盖用户/权限/菜单/文件/通知/AI 模型/字典等企业级核心能力。 [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.5.14-6DB33F?logo=springboot)](https://spring.io/projects/spring-boot) [![MyBatis Plus](https://img.shields.io/badge/MyBatis%20Plus-3.4.3-1693E4)](https://baomidou.com/) [![JDK](https://img.shields.io/badge/JDK-17%2F21-ED8B00?logo=openjdk)](https://openjdk.org/) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) --- ## 目录 - [一、项目简介](#一项目简介) - [二、技术栈](#二技术栈) - [三、模块结构](#三模块结构) - [四、功能矩阵](#四功能矩阵) - [五、快速开始](#五快速开始) - [六、配置说明](#六配置说明) - [七、核心 API](#七核心-api) - [八、项目目录](#八项目目录) - [九、安全与部署](#九安全与部署) - [十、扩展开发](#十扩展开发) - [十一、常见问题](#十一常见问题) - [十二、版本与规划](#十二版本与规划) - [十三、命名由来](#十三命名由来) - [十四、许可证](#十四许可证) --- ## 一、项目简介 ### 1.1 定位 **Prysm Admin** 是一套面向企业业务场景的后台管理脚手架,覆盖「基础平台 + 认证授权 + 文件服务 + 业务能力 + 横切能力」五层需求。系统采用「**主应用 + 通用模块 + 业务模块**」拆分方式,每个模块职责单一、依赖单向流动,可按需引入到其他 Spring Boot 项目中复用。 ### 1.2 设计理念 - **约定优于配置** — 遵循 Spring Boot / MyBatis Plus 默认约定,减少样板代码 - **模块化解耦** — 通用能力下沉到 `prysm-common`,配置/安全下沉到 `prysm-config`,业务能力各自独立 - **可插拔** — 通过 Spring Boot 自动装配 + 自定义注解实现能力即插即用 - **多存储后端** — 文件存储通过策略模式支持 local / OSS / 七牛 / MinIO 热切换 - **前后端分离** — 后端只暴露 RESTful JSON 接口,前端(Vue + Element UI)独立部署 ### 1.3 适用场景 - 中小型企业内部管理系统(OA、CRM、ERP、WMS)后端基座 - 内部运维平台、运营后台、数据可视化平台 - 新项目快速搭建带登录、权限、文件存储能力的 Spring Boot 服务 --- ## 二、技术栈 ### 2.1 后端核心 | 类别 | 选型 | 版本 | |------|------|------| | 核心框架 | Spring Boot | 2.5.14 | | 持久层 | MyBatis Plus | 3.4.3 | | 数据库 | MySQL | 5.7+ / 8.0 | | 连接池 | Alibaba Druid | 1.2.16 | | 缓存 | Redis / Caffeine 本地缓存 | 6.x | | 安全认证 | JWT(jjwt) | 0.9.1 | | API 文档 | Swagger 3(springfox) | 3.0.0 | | 验证码 | kaptcha | 2.3.3 | | 工具库 | Hutool / Lombok / Apache Commons | 5.8.28 / 1.18.32 / - | | 本地缓存 | Caffeine(默认;可选 Redis) | 3.1.8 | | 模板引擎 | Apache Velocity | 2.3 | | Excel | Apache POI | 4.1.2 | | AI 集成 | langchain4j | 1.0.0-beta1 | | 密码加密 | jBCrypt | 0.4 | | 跨域 | Servlet Filter | - | ### 2.2 前端(独立项目) - **基础框架**:Vue 2 / Vue 3 - **UI 组件库**:Element UI / Element Plus - **HTTP**:Axios - **状态管理**:Vuex / Pinia - **前端仓库**:[https://gitee.com/yimeng99/prysm-front](https://gitee.com/yimeng99/prysm-front) ### 2.3 部署与运维 - **构建**:Maven 3.6+ - **JDK**:**JDK 17 或 21**(详见 §11 常见问题 — langchain4j 是 17 字节码) - **Web 容器**:内嵌 Tomcat 9 - **反向代理**:Nginx(推荐) - **进程管理**:Systemd / Supervisor / Docker --- ## 三、模块结构 ### 3.1 模块清单 ``` prysm-parent(父 POM / 聚合) ├── prysm-admin 主应用(Spring Boot 启动入口) ├── prysm-common 通用层:工具类、常量、域对象、AI、通知 ├── prysm-config 配置层:安全、数据源、异常、过滤器 ├── prysm-system 业务层:用户、角色、菜单、字典、虚拟菜单 ├── prysm-file 文件服务:上传、下载、分片、多存储 └── prysm-generator 代码生成器(基于 Velocity 模板) ``` ### 3.2 模块职责 | 模块 | 角色 | 主要能力 | |------|------|----------| | `prysm-admin` | 主应用 | 启动类、Controller 入口、配置文件、`banner.txt` | | `prysm-common` | 通用层 | 工具类(String/Json/Password/Servlet/Date/UUID/IP/MD5/Spring/Threads/...)、缓存抽象(`CacheServer` + Caffeine/Redis 双实现)、响应对象(`AjaxResult`、`R`、`TableDataInfo`)、常量枚举、注解(`@Log` `@RateLimiter` `@RepeatSubmit` `@DataSource`)、AI 模型与 API Key 抽象、通知公告 | | `prysm-config` | 配置层 | MyBatis Plus 配置、动态数据源、业务异常体系、JWT 上下文、系统配置 Holder、`@MethodPermission` 权限注解 | | `prysm-system` | 业务层 | 用户/角色/菜单/字典/虚拟菜单/AI 模型/系统参数/通知公告的 CRUD、`SysLoginService` 登录服务、`SysConfigInitRunner` 启动加载 | | `prysm-file` | 文件服务 | 文件元数据管理、分片上传/合并、4 种存储后端(local/OSS/七牛/MinIO)策略切换 | | `prysm-generator` | 代码生成器 | 数据库表结构导入、Velocity 模板生成 Controller/Service/Mapper/Entity | ### 3.3 依赖关系 ``` prysm-admin ──→ prysm-system ──→ prysm-config ──→ prysm-common ──→ prysm-file ──────────────────────→ prysm-common ──→ prysm-generator (独立运行,不参与主应用运行时) ``` **依赖原则**:依赖单向流动;子模块不感知主应用;通用能力只向下依赖,不反向引用业务模块。 ### 3.4 包命名规范 | 模块 | Java 根包 | |------|-----------| | prysm-* | `pr`(`pr.system / pr.common / pr.config / pr.file / pr.web / pr.generator`) | | yunchu-*(历史遗留,不建议新功能接入) | `com.yunchu.*` | --- ## 四、功能矩阵 ### 4.1 用户与权限 | 功能 | 状态 | 入口 | |------|------|------| | 用户 CRUD + 角色分配 | ✅ | `SysUserController` | | 角色 CRUD + 菜单权限 | ✅ | `SysRoleController` | | 菜单树 + 虚拟菜单配置 | ✅ | `SysMenuController` / `SysVirtualMenuConfigController` | | 方法级权限注解 | ✅ | `pr.config.security.annotation.MethodPermission` | | JWT 登录 / Token 校验 | ✅ | `pr.config.holder.JwtHolder` + `pr.config.service.TokenService` | | 登录后初始化系统配置 | ✅ | `pr.system.runner.SysConfigInitRunner` | ### 4.2 系统基础 | 功能 | 状态 | 入口 | |------|------|------| | 字典类型 + 字典项 | ✅ | `SysDictController` / `SysDictItemController` | | 系统参数配置(动态加载) | ✅ | `SysConfigController` + `SysConfigHolder` | | 用户个性化配置 | ✅ | `SysUserConfigController` | | 通知公告 | ✅ | `SysNoticeController`(`pr.common.notice`) | ### 4.3 文件服务 | 功能 | 状态 | 入口 | |------|------|------| | 普通上传 | ✅ | `FileUploadController.upload()` | | 分片上传(start / upload / complete) | ✅ | `FileUploadController.chunk*` | | 文件下载 | ✅ | `FileDownloadController` | | 4 种存储后端热切换 | ✅ | `pr.file.storage.platform.{Local,AliyunOss,Qiniu,Minio}Storage` | ### 4.4 AI 能力 | 功能 | 状态 | 入口 | |------|------|------| | AI 模型管理 | ✅ | `SysAiModelController` + `pr.common.ai.service` | | API Key 多 Key 轮询 | ✅ | `SysAiApiKeyController` + `pr.common.ai.config.AiModelFactory` | ### 4.5 横切能力 | 功能 | 状态 | 实现位置 | |------|------|----------| | 全局业务异常体系 | ✅ | `pr.config.exception.{Business,Global,Sys}Exception` | | 动态数据源切换 | ✅ | `pr.config.database.{DynamicDataSource,DynamicDataSourceConfig}` | | MyBatis Plus 配置 | ✅ | `pr.config.config.MyBatisPlusConfig` | | **缓存抽象**(可选 Redis) | ✅ | `pr.common.cache.CacheServer` + `CaffeineCache` / `RedisCache`(`prysm.cache.type=caffeine\|redis` 切换) | | **本地限流** | ✅ | `@RateLimiter` 注解(基于 `CacheServer`) | | **操作日志** | ✅ | `@Log` 注解(封装日志切面) | | **防重提交** | ✅ | `@RepeatSubmit` 注解 | | **动态数据源注解** | ✅ | `@DataSource` 注解 | --- ## 五、快速开始 ### 5.1 环境要求 - **JDK**:17 或 21(langchain4j 1.0.0-beta1 字节码要求;详见 §11) - **Maven**:3.6+ - **MySQL**:5.7+ 或 8.0 - **Redis**:3.0+(可选;不启用需 `prysm.redisEnabled=false`) - **Node.js**:14+(前端项目独立) ### 5.2 一键启动流程 ```bash # 1. 克隆 git clone prysm-admin cd prysm-admin # 2. 设置编译环境(仅本会话) export JAVA_HOME=/d/JavaJDK/jdk-21 # 或 jdk-17 export PATH=$JAVA_HOME/bin:/path/to/maven/bin:$PATH # 3. 编译打包(首次会下载依赖,请耐心等待) mvn -pl prysm-common,prysm-config,prysm-system,prysm-file,prysm-admin -am package -DskipTests ``` ### 5.3 初始化数据库 ```bash # 系统表结构(用户、角色、菜单、字典、通知、AI 等) mysql -u root -p < sql/system.sql # 文件管理表(如使用 prysm-file) mysql -u root -p < sql/file.sql # 博客相关(可选,旧功能) mysql -u root -p < sql/blog.sql ``` > 默认数据库名 `yc-vue3`(在 `application.yml` 中),建库时名称保持一致;如需改名先 `CREATE DATABASE ` 再导入。 初始化后默认账号: | 用户名 | 密码 | 说明 | |--------|------|------| | `admin` | `admin123` | 超级管理员,拥有所有权限 | ### 5.4 启动应用 ```bash # 方式一:Maven 启动(开发环境) mvn -pl prysm-admin -am spring-boot:run # 方式二:JAR 启动(生产环境) java -jar prysm-admin/target/prysm-admin.jar ``` **启动成功标志**: ``` 「Prysm Admin」启动成功! 企业级后台管理系统 当前端口: 8888 | 环境: dev 2026-XX-XX ... INFO Started PrysmAdminApplication in 7.316 seconds ``` ### 5.5 访问入口 | 入口 | 地址 | 说明 | |------|------|------| | 首页 | http://localhost:8888/ | 健康检查 | | Swagger 文档 | http://localhost:8888/swagger-ui/ | 接口调试 | | Druid 监控 | http://localhost:8888/druid/ | 数据源监控 | | 前端页面 | 由独立前端项目提供 | - | --- ## 六、配置说明 主配置文件:`prysm-admin/src/main/resources/application.yml` ```yaml server: port: 8888 spring: application: name: prysm-admin datasource: url: jdbc:mysql://localhost:3306/yc-vue3?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: 1234 redis: host: localhost port: 6379 # 项目元信息(被 pr.common.config.PrysmConfig 读取) prysm: name: PrysmAdmin version: 1.0.0 copyrightYear: 2026 demoEnabled: true profile: D:/prysm/uploadPath captchaType: math # math / char redisEnabled: false # 缓存实现:caffeine(默认,零外部依赖) | redis(需 spring.redis.host 配置) cache: type: caffeine caffeine: maximum-size: 10000 # 最大条目数 expire-after-write-seconds: 1800 # 默认过期时间(秒) # JWT token: header: Authorization secret: Prysm expireTime: 30 # 过期时间(分钟) # MyBatis Plus mybatis-plus: mapper-locations: classpath*:mapper/**/*.xml # 仅注册 entity/po 包路径下的类作为别名, # 避免扫到 pr.config.exception.BusinessException # 与 pr.file.exception.BusinessException 同名冲突 type-aliases-package: pr.system.domain.entity,pr.common.ai.entity,pr.common.notice.entity,pr.file.domain.po configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 文件存储 fs: files-server: type: local # local / aliyunOss / qiniu / minio local: directory: E:/data/free-fs/upload endPoint: http://127.0.0.1:8081 # ... 其他后端 AK/SK preview: endpoint: http://127.0.0.1:8012/onlinePreview ``` > 📌 完整的 `application.yml` 模板与所有可调参数,参见仓库内 `prysm-admin/src/main/resources/application.yml`。 --- ## 七、核心 API ### 7.1 登录流程 ```http # Step 1: 获取图形验证码 GET /captchaImage → { "img": "data:image/png;base64,...", "uuid": "xxx" } # Step 2: 登录 POST /login Content-Type: application/json { "username": "admin", "password": "admin123", "code": "8+2=10", "uuid": "" } → { "code": 200, "data": { "token": "eyJ..." } } # Step 3: 携带 Token 调用业务接口 GET /get-info Authorization: Bearer ``` ### 7.2 业务接口 | 模块 | Controller | 主要接口 | |------|------------|----------| | 用户 | `SysUserController` | `/system/user` CRUD | | 角色 | `SysRoleController` | `/system/role` CRUD + 权限分配 | | 菜单 | `SysMenuController` | `/system/menu` 树形查询 | | 字典 | `SysDictController` / `SysDictItemController` | `/system/dict` `/system/dict/item` | | 系统配置 | `SysConfigController` | `/system/config` | | 用户配置 | `SysUserConfigController` | `/system/userConfig` | | 虚拟菜单 | `SysVirtualMenuConfigController` | `/system/virtualMenu` | | 通知公告 | `SysNoticeController` | `/system/notice` | | AI 模型 | `SysAiModelController` | `/system/ai/model` | | API Key | `SysAiApiKeyController` | `/system/ai/apiKey` | | 文件上传 | `FileUploadController` | `/upload/file` `/upload/chunk/*` | | 文件下载 | `FileDownloadController` | `/download/*` | ### 7.3 文件分片上传 ```http # 1. 初始化分片 POST /upload/chunk/start { "fileName": "...", "fileSize": ..., "chunkSize": ..., "chunkCount": ..., "fileHash": "..." } → { "uploadId": "uuid-xxx" } # 2. 上传分片 POST /upload/chunk/upload Headers: uploadId= Form: chunkIndex=0, chunkData= # 3. 合并分片 POST /upload/chunk/complete { "uploadId": "uuid-xxx", "fileHash": "..." } → { "url": "http://.../file" } ``` ### 7.4 缓存使用 ```java @Service public class DemoService { @Autowired private CacheServer cache; // 注入统一接口;运行时由 prysm.cache.type 决定 Caffeine / Redis public void demo() { cache.setCacheObject("user:1", userObj, 30, TimeUnit.MINUTES); SysUserDo user = cache.getCacheObject("user:1"); cache.deleteObject("user:1"); } } ``` 详见 §六 配置说明 — `prysm.cache.*`。 --- ## 八、项目目录 ``` prysm-admin/ ├── pom.xml # 父 POM(聚合 + 版本管理) ├── README.md ├── sql/ # 数据库脚本 │ ├── system.sql # 系统表结构 + 初始数据 │ ├── file.sql # 文件管理表 │ └── blog.sql # 博客相关(旧) │ ├── prysm-admin/ # 主应用 │ ├── pom.xml │ └── src/main/ │ ├── java/pr/ │ │ ├── PrysmAdminApplication.java │ │ └── web/controller/ # 入口 Controller │ └── resources/ │ ├── application.yml │ └── banner.txt │ ├── prysm-common/ # 通用层 │ └── src/main/java/pr/common/ │ ├── ai/ # AI 模型与 API Key │ │ ├── config/ # AiModelFactory │ │ ├── entity/ # SysAiModelDo / SysAiApiKeyDo │ │ ├── mapper/ │ │ └── service/ │ ├── config/ # PrysmConfig │ ├── constant/ # 常量(Cache/HttpStatus/User/...) │ ├── core/ # 核心域对象 │ │ ├── domain/ # AjaxResult, R, TableDataInfo, LoginUser │ │ └── text/ # 文本工具 │ ├── domain/ │ ├── notice/ # 通知公告 │ ├── service/ # 通用 Service │ └── utils/ # 工具类(String/Json/Password/Servlet/...) │ ├── prysm-config/ # 配置层 │ └── src/main/java/pr/config/ │ ├── config/ # MyBatisPlusConfig │ ├── core/ # BaseController │ ├── database/ # DynamicDataSource + Config + Properties │ ├── exception/ # Business / Global / Sys Exception │ ├── holder/ # JwtHolder / SysConfigHolder │ ├── properties/ # DataSourceProperties │ ├── security/ # @MethodPermission + filter │ └── service/ # TokenService │ ├── prysm-file/ # 文件服务 │ └── src/main/java/pr/file/ │ ├── controller/ # Upload / Download │ ├── domain/ # po / vo │ ├── enums/ # StorageType │ ├── exception/ # 文件异常 │ ├── mapper/ │ ├── service/ # 上传/下载/分片 │ ├── storage/ # 存储抽象 │ │ ├── IFileStorage / IStorageFactory / IFileStorageProvider / StorageType │ │ └── platform/ # Local / AliyunOss / Qiniu / Minio │ └── utils/ │ ├── prysm-system/ # 业务层 │ └── src/main/java/pr/system/ │ ├── controller/ # 11 个 Controller │ ├── dispatch/ │ ├── domain/ # dto / entity / vo │ ├── mapper/ # 数据访问 │ ├── runner/ # SysConfigInitRunner │ ├── service/ # 业务 Service │ └── utils/ │ ├── prysm-generator/ # 代码生成器 │ └── src/main/ │ ├── java/pr/generator/ │ └── resources/ │ ├── mapper/ │ └── vm/ # Velocity 模板 │ └── yunchu-*/ # 旧 Yunchu 模块(保留,不再演进) ├── yunchu-admin/ ├── yunchu-common/ ├── yunchu-framework/ └── yunchu-system/ ``` --- ## 九、安全与部署 ### 9.1 内置安全特性 - **密码加密**:BCrypt(强度 10) - **JWT 签名**:HS256,默认密钥 `Prysm`(**生产环境务必修改**) - **SQL 注入防护**:MyBatis 参数化查询 - **权限拦截**:`@MethodPermission` 注解 + AOP - **动态数据源隔离**:读写分离 / 多租户切换 ### 9.2 生产前必须修改的默认配置 | 配置项 | 默认值 | 位置 | |--------|--------|------| | `token.secret` | `Prysm` | application.yml | | 数据库密码 | `1234` | application.yml | | 七牛云 / OSS / MinIO AK/SK | 占位字符串 | application.yml | ### 9.3 部署建议 1. **必须 HTTPS**:Nginx 反向代理 + Let's Encrypt 证书 2. **数据库账号隔离**:应用账号只授 `SELECT/INSERT/UPDATE/DELETE` 3. **定期备份** `sql/system.sql` 中的 `sys_user` 表,并审计登录日志 4. **关闭 demo**:`prysm.demoEnabled=false` 5. **外部依赖**:Druid 监控、Swagger 文档 生产环境应限制访问 IP 或加 Basic Auth --- ## 十、扩展开发 ### 10.1 添加新的业务模块 ```bash # 1. 创建模块目录 mkdir prysm- ``` `prysm-/pom.xml`: ```xml com.prysm prysm-parent 1.0.0 prysm- com.prysm prysm-common ``` 根 `pom.xml` 的 `` 节点加入: ```xml prysm- ``` 主应用 `prysm-admin` 的 pom 引入新模块,代码放 `pr..*` 包下(默认组件扫描覆盖)。 ### 10.2 添加新的文件存储后端 1. 在 `pr.file.storage.platform` 下新建类,实现 `IFileStorage` 接口 2. 在 `StorageType` 枚举中添加新类型 3. 在 `IStorageFactory` 中通过 `@Component` 注册 4. `application.yml` 的 `fs.files-server` 下添加对应配置节点 ### 10.3 自定义注解开发 参考已有的 `pr.config.security.annotation.MethodPermission`: 1. 定义 `@interface` 注解 2. 在 `pr.config` 下创建对应切面 3. 在 `PrysmConfig` 中添加配置开关(如需要) 4. 编写单元测试 ### 10.4 集成第三方登录 / 短信 参考 `prysm-system` 的 `SysLoginService`,添加 `loginByOAuth2()` / `loginBySms()` 方法,并在 `LoginController` 中暴露接口。 --- ## 十一、常见问题 ### Q1: 启动报「类文件具有错误的版本 61.0, 应为 52.0」 **原因**:`prysm-common` 引入的 `langchain4j 1.0.0-beta1` 是 JDK 17 字节码(61.0),但项目 `pom.xml` 声明 `1.8`(52.0)。 **解决**:使用 **JDK 17 或 21** 编译: ```bash export JAVA_HOME=/d/JavaJDK/jdk-21 # 或 jdk-17 mvn clean package -DskipTests ``` > 项目编译目标仍为 1.8 字节码,JDK 17/21 只是运行 javac 用;产物 JAR 在 JDK 8+ 都能跑。 ### Q2: 启动报 `TypeException: alias 'BusinessException' is already mapped` **原因**:`pr.config.exception.BusinessException` 与 `pr.file.exception.BusinessException` 同名类被 MyBatis 重复注册。 **解决**:`application.yml` 中 `type-aliases-package` 必须只指向 entity/po 包,不要写根包 `pr`: ```yaml mybatis-plus: type-aliases-package: pr.system.domain.entity,pr.common.ai.entity,pr.common.notice.entity,pr.file.domain.po ``` ### Q3: 数据库连不上 - 检查 MySQL 是否启动 - 确认 `application.yml` 的 `url / username / password` 正确 - 确认数据库已建:`CREATE DATABASE yc-vue3 DEFAULT CHARSET utf8mb4;` ### Q4: Redis 启动报错 将 `application.yml` 中 `prysm.redisEnabled` 设为 `false`,系统自动降级为本地缓存。 ### Q5: 找不到 `swagger-ui` 页面 确认 `application.yml` 中 `spring.mvc.pathmatch.matching-strategy=ant_path_matcher`,并检查 `prysm-config` 模块的 Swagger 配置类已加载。 ### Q6: 中文乱码 - 数据库字符集:`utf8mb4` - MySQL 连接参数:`characterEncoding=UTF-8` - 前端 Axios 响应拦截器:`responseType: 'json'` ### Q7: 想要 Redis 集群支持怎么办? 默认 `CaffeineCache`(本地内存,零外部依赖)足够开发与单机部署。 需要分布式缓存时: ```yaml prysm: cache: type: redis spring: redis: host: 127.0.0.1 port: 6379 password: your_password ``` 启动后日志:`[prysm.cache] 已启用 RedisCache 实现(分布式)`。 未配 `spring.redis.*` 但 `type=redis` 时,会自动降级为 Caffeine 并 WARN 提示——不会启动失败。 --- ## 十二、版本与规划 ### 当前版本:`1.0.0` - ✅ RBAC 权限体系 - ✅ 通知公告 / AI 模型 / 文件分片 等业务能力 - ✅ Swagger 文档与 Druid 监控 ### 后续规划 - [ ] 升级到 Spring Boot 3 / JDK 17 标准化 - [ ] 引入 Sa-Token 替换手写 JWT 鉴权 - [ ] 引入 Nacos 配置中心 - [ ] 引入 Flowable 工作流引擎 - [ ] 引入 WebSocket 实现实时通知 - [ ] 引入 Redis Stream 做日志采集 - [ ] 前端升级到 Vue 3 + Vite + TypeScript + Element Plus --- ## 十三、命名由来 **Prysm** 取自英文单词 *Prism*(棱镜),寓意「**将复杂的企业级能力折射成清晰、易用的模块**」。 系统将 Spring Boot 生态、MyBatis Plus、文件存储、权限体系等复杂技术细节封装在内,对外暴露的是「**清晰的、约定优于配置的**」业务接口。开发者面对的是棱镜折射后的光谱——按需取用、按需扩展。 --- ## 十四、许可证 本项目基于 **MIT License** 开源,您可以自由使用、修改、分发。 ``` MIT License Copyright (c) 2025-2026 Prysm Admin Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. ``` 详见 [LICENSE](LICENSE) 文件。 --- ## 贡献与反馈 - **问题反馈**:GitHub Issues - **PR 规范**:单 PR 只解决一个问题;commit message 遵循 `feat/fix/docs/refactor/test/chore` - **代码风格**:[阿里巴巴 Java 开发手册](https://github.com/alibaba/p3c) - **联系维护者**:见 GitHub 个人主页 ---

—— 感谢使用 Prysm Admin ——
愿这套系统成为您业务腾飞的棱镜,将复杂折射为简单。