# hauyne **Repository Path**: AlanLuo-dev/hauyne ## Basic Information - **Project Name**: hauyne - **Description**: hauyne是一个前后端分离的 RBAC 权限管理系统, 基于Spring Cloud(Hoxton.SR12版本)、Spring Boot 2.x,Mybatis-Plus、Spring Security OAuth2,RESTful API、Angular 20 & NG-ZORRO UI 库 实现 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 1 - **Created**: 2023-08-06 - **Last Updated**: 2025-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hauyne(蓝方石) #### 介绍 hauyne是一个前后端分离的 RBAC 权限管理系统, 基于Spring Cloud(Hoxton.SR12版本)、Spring Boot 2.x,Mybatis-Plus、Spring Security OAuth2,RESTful API、Angular 20 & NG-ZORRO UI 库 实现
__*请使用 master 分支!!!*__ 其他分支还不完善 #### 后端技术 |后端技术|版本|说明|官网| |---|---|---|---| |__*JDK*__|1.8| |__*Spring Boot*__|2.3.12.RELEASE|Web应用开发框架|https://spring.io/projects/spring-boot| |__*Spring Cloud*__|Hoxton.SR12|微服务开发框架|https://spring.io/projects/spring-cloud| |__*Mybatis-Plus*__|3.1.1|持久化框架|https://baomidou.com| |__*Spring Security OAuth2*__|2.3.4.RELEASE|OAuth2授权框架|https://spring.io/projects/spring-security-oauth| |__*Javers*__|6.14.0(这是最后一个支持Java 8 & Spring Boot 2.x的版本)|数据审计、数据差异对比框架|https://javers.org| |__*Knife4j*__|2.0.9|__*Knife4j*__ 是基于 Swagger 的增强型接口文档生成工具,提供更友好的 UI 界面和丰富的功能,简化 API 文档管理。|https://doc.xiaominfo.com| |__*Guava*__|20.0|__*Guava*__ 是由 Google 开发的 Java 核心库扩展,提供丰富的集合工具类、缓存机制、并发库、字符串处理、事件总线等实用工具,极大简化 Java 开发|https://github.com/google/guava| |__*MapStruct*__|1.5.3.Final|__*MapStruct*__ 是一款基于Java 注解处理器实现的库,用于简化Java Bean 之间的映射,通过生成代码来避免手动编写重复的映射代码,从而提高开发效率和代码质量|https://mapstruct.org| |__*Lombok*__|1.18.24|__*Lombok*__ 是一个通过注解自动生成 Java 代码(如getter/setter、构造器、equals/hashCode等),极大简化样板代码编写的编译时代码增强神器|https://projectlombok.org| |__*Spring Boot Admin*__|2.3.1|__*Spring Boot Admin*__ 是一个用于可视化管理和监控 Spring Boot 应用的开源工具,支持实时查看应用健康状态、日志、JVM 信息、指标等|https://docs.spring-boot-admin.com/3.5.1/docs/index| |__*MySQL*__|8|关系型数据库|https://www.mysql.com| |__*Redis*__|6.2.6|缓存中间件|https://redis.io| |__*RabbitMQ*__|4.0.5|消息队列中间件|https://www.rabbitmq.com| #### 前端技术 |前端技术|版本|说明|官网| |---|---|---|---| |__*Angular*__ 框架|^20.0.6|__*Angular*__ 是一个由 __*Google*__ 维护的现代 Web 应用开发框架,采用 __*TypeScript*__ 构建,支持构建高效、模块化和响应式的单页应用(SPA)。|官网:https://angular.dev
中文官网: https://angular.cn| |__*NG-ZORRO*__ UI库|^20.0.0|__*Ant Design of Angular*__
__*ng-zorro-antd*__ 是遵循 **Ant Design** 设计规范的 Angular UI 组件库,主要用于研发企业级中后台产品。全部代码开源并遵循 MIT 协议,任何企业、组织及个人均可免费使用。|https://ng.ant.design/docs/introduce/zh| |__*NgRx*__|^20.0.0-beta.0|__*NgRx*__ 是一个基于 __*Redux*__ 思想的 Angular 响应式状态管理框架。|https://ngrx.io| |__*TypeScript*__|^5.8.3|__*TypeScript*__ 是为大型项目打造的强类型 JavaScript 超集,提升代码可靠性与开发效率。|https://www.typescriptlang.org| |__*RxJS*__|~7.8.2|__*RxJS*__ 是一个 JavaScript 响应式扩展库,用于处理异步数据流和事件的响应式编程|官网:https://rxjs.dev
中文网:https://rx.nodejs.cn| #### 模块说明 ```lua hauyne-cloud-parent --(父工程) ├── hauyne-front-end --(前端工程,Angular 框架 + NG-ZORRO UI库) ├── hauyne-services --(业务微服务模块) │ ├── hauyne-api-admin --(系统管理服务 API) │ ├── hauyne-api-audit --(审计日志服务 API) │ ├── hauyne-api-uaa --(授权服务 API) │ ├── hauyne-cache --(本地缓存配置,暂未使用) │ ├── hauyne-commons --(公共模块) │ ├── hauyne-database-redis --(redis配置) │ ├── hauyne-framework-utils --(工具类) │ ├── hauyne-message-system --(消息系统,暂未使用) │ ├── hauyne-monitor-server --(监控服务,微服务健康检查,使用Spring Boot Admin实现) │ ├── hauyne-service-admin --(系统管理服务) │ ├── hauyne-service-audit --(审计日志服务) │ ├── hauyne-service-config --(Spring Cloud Config 配置中心) │ ├── hauyne-service-dependency -- (各个微服务都会用到的依赖,集中写到该工程的pom.xml) │ ├── hauyne-service-gateway -- (Spring Cloud Gateway 微服务应用网关) │ ├── hauyne-service-register --(Eureka服务注册中心) │ ├── hauyne-service-uaa --(授权服务器,使用Spring Security OAuth2实现) │ └── hauyne-toolbox-server --(工具服务,待续) ├── hauyne-starters --(自定义 spring boot starter包模块) │ ├── hauyne-api -- (错误响应对象类、业务错误码枚举类等等) │ ├── hauyne-audit-support --(自动审计支持,充当Spring Security 和 Mybatis-Plus 的中间层,从Spring Security的安全上下文获取当前用户id,用ThreadLocal传递给Mybatis-Plus记录创建人、修改人) │ ├── hauyne-feign --(openfeign 错误解析器) │ ├── hauyne-idempotent-spring-boot-starter -- (防抖 starter,待完善) │ ├── hauyne-jpa-spring-boot-starter --(jpa starter) │ ├── hauyne-knife4j-spring-boot-starter --(knife4j starter) │ ├── hauyne-mybatis-plus-spring-boot-starter -- (mybatis-plus starter, 增加了PageHelper和自定义的 墓碑表逻辑删除逻辑) │ ├── hauyne-openfeign-spring-boot-starter --(openfeign starter) │ ├── hauyne-security-spring-boot-starter --(Spring Security、OAuth2 配置 starter) │ ├── hauyne-validation-api --(自定义JSR 380校验 API定义) │ ├── hauyne-validator-spring-boot-starter --(自定义JSR 380校验 API实现类) │ └── hauyne-web-spring-boot-starter --(统一异常捕获) ``` #### 前端工程目录结构说明 ```lua hauyne-cloud-parent --(父工程) ├── hauyne-front-end --(前端工程,Angular 框架 + NG-ZORRO UI库) │ ├── src --(前端源码目录) │ │ ├── app --(源码目录) │ │ │ ├── common --(公共类目录) │ │ │ ├── directives --(自定义指令目录) │ │ │ ├── layout --(首页布局目录) │ │ │ ├── login --(登录页组件目录) │ │ │ ├── pages --(各个业务模块的组件目录,原则上每个针对每个微服务都建立一个前端组件目录) │ │ │ │ ├── admin --(系统管理模块的组件目录,RBAC、字典管理、登录历史等) │ │ │ │ ├── audit --(审计日志模块的组件目录) │ │ │ ├── shared --(共享组件目录,拦截器、路由守卫等) │ │ │ ├── store --(NgRx状态管理目录,管理前端的登录状态等) │ │ │ ├── app.component.html --(应用入口组件模板<空的>) │ │ │ ├── app.component.ts --(应用入口组件类) │ │ │ ├── app.config.ts --(应用全局配置类) │ │ │ ├── app.routes.ts --(最顶层的路由配置) │ │ ├── assets --(静态资源目录:图片等) │ │ ├── favicon.ico --(图标文件) │ │ ├── index.html --(首页文件) │ │ ├── main.ts --(应用入口文件) │ │ ├── styles.css --(全局样式文件) │ ├── .editorconfig --(编辑器配置文件) │ ├── .gitignore --(git忽略文件) │ ├── angular.json --(angular配置文件) │ ├── package.json --(npm包配置文件) │ ├── package-lock.json --(npm包锁文件) │ ├── proxy.conf.js --(代理服务器配置文件,代理了Spring Cloud Gateway网关服务) │ ├── tsconfig.app.json --(tsconfig配置文件) │ ├── tsconfig.json --(tsconfig配置文件) │ ├── tsconfig.spec.json --(tsconfig配置文件) ``` #### 🚀 本地快速启动指南 本文档将指导你快速完成本项目的本地部署。 ##### 📦 1、环境准备 请确保本地已安装以下软件: 1. 安装 JDK 1.8 2. 安装 Node.js v22及以上版本,👉 官方下载地址: https://nodejs.org/zh-cn/download ##### 🧩 2、后端依赖组件(可选) 项目默认使用了如下的国外免费服务
   MySQL:https://aiven.io/mysql
   Redis:https://upstash.com/docs/redis/overall/getstarted
RabbitMQ: https://www.cloudamqp.com/
__*如果你想快速演示项目,可不准备MySQL、Redis、RabbitMQ
⚠ 但由于访问国外的网络较慢(特别是 aiven 的 MySQL 服务,长时间不使用,平台会停服务,需要重新开启),建议安装好以下组件以获得更流畅的体验:
MySQL、Redis、RabbitMQ*__ 如不安装,可跳过第3 ~ 5步。 ##### 🛠️ 3、数据库初始化(MySQL) 新建数据库 请使用字符集 __*utf8mb4*__,排序规则 __*utf8mb4_general_ci*__
分别执行以下步骤创建数据库、导入 SQL目录的sql脚本,并配置jdbc连接: |微服务|数据库名|SQL文件路径|JDBC连接配置文件| |---|---|---|---| |系统管理服务|hauyne_admin_dev|/SQL/hauyne_admin_dev.sql|service-admin-dev.yml| |审计服务|hauyne_audit_dev|/SQL/hauyne_audit_dev.sql|service-audit-dev.yml| |认证授权服务|hauyne_uaa_dev|/SQL/hauyne_uaa_dev.sql|service-uaa-dev.yml| 📌 配置文件路径统一位于: hauyne-service-config/src/main/resources/dev/ 👉 请根据你本地 MySQL 环境修改上述配置文件中的连接信息。 ##### 🔧 4、Redis 配置(如已安装 Redis) 修改文件 __*redis-dev.yml*__ 中的连接配置,本地部署需关闭 SSL,将 __*spring.redis.ssl*__ 改成 __*false*__ ##### 🔧 5、RabbitMQ 配置(如已安装 RabbitMQ) 修改文件 __*rabbitmq-dev.yml*__ 消息队列连接配置,本地部署需关闭 SSL,将 __*spring.rabbitmq.ssl.enabled*__ 改成false ##### 🖥️ 6、安装前端依赖 进入hauyne-front-end目录,运行npm install命令安装前端依赖,如网络太慢可以切换 npm淘宝镜像软件源 ```bash cd hauyne-front-end npm install ``` ##### 7、启动步骤 在IDEA中,Service面板能看到如下服务列表 ![输入图片说明](doc/imgimage.png) 按如下步骤启动:
1、启动 __*Eureka*__
2、启动 __*Config*__ 配置中心,并等待控制台打印日志:com.netflix.discovery.DiscoveryClient : The response status is 200,表示配置中心服务已经成功注册到Eureka中,此时执行第3步
3、可同时启动 __*Admin*__、__*Audit*__、__*Gateway*__、__*UAA*__ 服务
4、Services面板 可配置前端的启动,如下图,配好之后,可像后台那样启动
![输入图片说明](doc/image.png) 或者直接在cmd终端 以命令行启动 ```bash cd hauyne-front-end npm run hmr ``` 5、上述全部成功启动后,打开浏览器,访问 http://localhost:4200/
用户名:admin 密码: 123456 ![输入图片说明](doc/loginpage.png) ![输入图片说明](doc/main.png)