# 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面板能看到如下服务列表

按如下步骤启动:
1、启动 __*Eureka*__
2、启动 __*Config*__ 配置中心,并等待控制台打印日志:com.netflix.discovery.DiscoveryClient : The response status is 200,表示配置中心服务已经成功注册到Eureka中,此时执行第3步
3、可同时启动 __*Admin*__、__*Audit*__、__*Gateway*__、__*UAA*__ 服务
4、Services面板 可配置前端的启动,如下图,配好之后,可像后台那样启动

或者直接在cmd终端 以命令行启动
```bash
cd hauyne-front-end
npm run hmr
```
5、上述全部成功启动后,打开浏览器,访问 http://localhost:4200/
用户名:admin
密码: 123456

