# eal-pm **Repository Path**: apis-cerana/eal-pm ## Basic Information - **Project Name**: eal-pm - **Description**: 基于springboot3搭建的快速开发脚手架,目前已搭建Spring Authorization Server认证中心,搭建基础RBAC权限控制,统一日志,数据字典,springdoc接口文档 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2025-04-03 - **Last Updated**: 2025-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # eal-pm **eal-pm** 是一个基于 JDK 17、Spring Boot 3.2.0、Spring Cloud 2023.0.0 以及 Spring Cloud Alibaba 2023.0.0.0-RC1 构建的企业级微服务项目。 该项目旨在构建一套高效、稳定且易于扩展的微服务架构,适用于大规模分布式系统和企业级应用。 ## 目录 - [项目简介](#项目简介) - [技术选型](#技术选型) - [安装与构建](#安装与构建) - [使用说明](#使用说明) - [测试](#测试) - [部署](#部署) - [贡献指南](#贡献指南) - [许可协议](#许可协议) - [联系方式](#联系方式) ## 项目简介 **eal-pm** 旨在提供一个基于最新技术栈构建的微服务管理平台,支持服务注册与发现、负载均衡、熔断、分布式配置管理以及微服务链路追踪等功能。 项目采用 Spring Cloud 及其相关组件构建,同时整合 Spring Cloud Alibaba 的生态能力,为企业应用提供一站式微服务解决方案。 ## 技术选型 - **编程语言:** Java 17 - **后端框架:** Spring Boot 3.2.0 - **微服务治理:** Spring Cloud 2023.0.0 - **服务治理与分布式解决方案:** Spring Cloud Alibaba 2023.0.0.0-RC1 - **数据库:** MySQL 8.3.0 - **缓存中间件:** Redis 7.2.4 - **非关系型数据库:** MongoDB 7.0.16 - **服务治理&配置中心:** Nacos 2.3.2 - **构建工具:** Maven - **安全:** Spring Authorization Server - **日志:** Logback / SLF4J - **接口文档:** SpringDoc OpenAPI - **MQ:** kafka 3.6 ## 安装与构建 ### 前置条件 - 安装 JDK 17 - 安装 Maven 3.x - 配置并启动 MySQL 8.3.0 数据库 - 启动 Redis 7.2.4 作为缓存服务 - 配置并启动 MongoDB 7.0.16 作为 NoSQL 数据库 - 配置并启动 kafka 3.6 作为消息队列 - 配置并启动 Nacos 2.3.2 作为服务治理配置中心 注:上述服务组件的安装和启动,请参考官方文档进行。 ## 使用说明 ### 配置文件修改 我已经将配置文件直接放置在各服务的resources目录下了,配置文件都已经被注释掉,你需要将这些注释去掉,并修改成你自己的配置。 ### 服务治理中心nacos nacos启动需要注意额外配置支持iframe跨域内嵌界面(nacos.core.xframe.enable=true) 并且指定允许的跨域域名(nacos.core.xframe.allow.origin=http://127.0.0.1:5173) 简易样例: docker run -d --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=你的msql的ip地址 \ -e MYSQL_SERVICE_PORT=你的msql的端口 \ -e MYSQL_SERVICE_DB_NAME=你的msql的里的nacos使用的数据库名 \ -e MYSQL_SERVICE_USER==你的msql的里的nacos使用的数据库用户名 \ -e MYSQL_SERVICE_PASSWORD==你的msql的里的nacos使用的数据库密码 \ -e NACOS_AUTH_ENABLE=true \ -e NACOS_AUTH_TOKEN=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg \ -e NACOS_AUTH_IDENTITY_KEY=nacos_server_key \ -e NACOS_AUTH_IDENTITY_VALUE=nacos_server_value \ -e nacos.core.xframe.enable=true \ -e nacos.core.xframe.allow.origin=http://127.0.0.1:5173 \ --restart=always \ nacos/nacos-server:v2.3.2 ### 数据库sql 我提交了数据库sql,你可以直接导入到你的数据库中,或者使用docker-compose启动一个mysql容器,然后导入sql。目录在根目录下的doc中。 mysql的docker命令自己查吧,我就不贴了,没什么特殊的 ### 数据库mongodb 我提交了mongodb json,你可以直接导入到你的数据库中,或者使用docker启动一个mongodb容器,然后导入sql。目录在根目录下的doc中。 docker run -d \ --name mongo \ --restart=always \ --privileged=true \ -p 27017:27017 \ -v /home/mongo/data:/data/db \ -e MONGO_INITDB_ROOT_USERNAME=root \ -e MONGO_INITDB_ROOT_PASSWORD=123456 \ mongodb/mongodb-community-server:7.0.16-ubi9 ### kafka 简单的单例部署,不依赖zookeeper,如果要高可用请购买专业商用版本 docker run -d \ --name kafka \ --restart=always \ -p 9092:9092 \ -p 9093:9093 \ -e KAFKA_CFG_PROCESS_ROLES=broker,controller \ -e KAFKA_CFG_NODE_ID=1 \ -e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 \ -e KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 \ -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.30.129:9092 \ -e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT \ -e KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT \ -e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \ -e KAFKA_CFG_NUM_PARTITIONS=1 \ -e KAFKA_CFG_DEFAULT_REPLICATION_FACTOR=1 \ -e KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \ -e KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 \ -e KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=1 \ -e KAFKA_CFG_MIN_INSYNC_REPLICAS=1 \ -e ALLOW_PLAINTEXT_LISTENER=yes \ -v /home/kafka:/bitnami/kafka \ bitnami/kafka:3.6 ### 服务启动顺序 1. 首先启动中间件 mysql/redis/nacos/mongodb/kafka 2. 启动 authorization-server 认证中心服务 3. 启动 pm-gateway 网关服务 4. 启动 pm-log 综合日志服务 5. 启动 system-server 系统设置服务 ### 二次开发 1. 创建新的分支(例如:feature/xxx 或 bugfix/xxx) 2. 接口开发可以参照现有的接口开发,可以使用已经封装好的统一响应,统一异常 3. 如果新建模块,请引入pm-common和pm-doc-common模块,已集成了redis/mybaits-plus/swagger-doc/security鉴权相关配置以及工具类 ## 测试 ## 部署 ## 贡献指南 欢迎大家贡献代码!如果你想参与本项目的开发,请按照以下步骤操作: 1. Fork 本仓库 2. 创建新的分支(例如:feature/xxx 或 bugfix/xxx) 3. 提交代码并推送至你的分支 4. 创建 Pull Request 并详细描述你的修改和新增功能 5. 更多详细的贡献流程请参阅 CONTRIBUTING.md。 ## 许可协议 本项目采用 Apache-2.0 许可证 开源,欢迎在遵守许可协议的前提下自由使用和修改代码。 ## 联系方式 1. 项目维护者: 王保海 2. 邮箱: wangbaohai1993@gmail.com 3. 欢迎 Star、Fork 本项目。如果在使用过程中有任何问题或建议,请通过 Issues 与我们联系! 我目前没钱搭建演示环境,就先截图系统大家简单看一下,如果有需要深入了解,可以联系我。 登录页 ![img.png](img.png) ![img_1.png](img_1.png) 用户管理模块 ![img_2.png](img_2.png) ![img_3.png](img_3.png) ![img_4.png](img_4.png) ![img_5.png](img_5.png) ![img_6.png](img_6.png) 角色管理模块 ![img_7.png](img_7.png) ![img_8.png](img_8.png) ![img_9.png](img_9.png) ![img_10.png](img_10.png) 菜单管理模块 ![img_11.png](img_11.png) 日志管理模块 ![img_14.png](img_14.png) ![img_15.png](img_15.png) 开发工具 ![img_12.png](img_12.png) ![img_13.png](img_13.png) ![img_16.png](img_16.png) 数据字典管理模块 ![img_17.png](img_17.png) ![img_18.png](img_18.png) ![img_19.png](img_19.png) ![img_20.png](img_20.png) ![img_21.png](img_21.png) ![img_22.png](img_22.png) 前端工程链接: https://gitee.com/wang-baohai/eal-pm-web 参考文档: 1.官方文档:https://spring.io/projects/spring-authorization-server 参考项目: 1.https://gitee.com/vains-Sofia/authorization-example-new