java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

 工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统
 项目背景
随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。企业通过数字化转型,不仅有利于优化业务流程、提升经营管理能力和风险控制能力,还可强有力地促进企业体制机制的全面创新。
以数据要素为核心,协同创新加快企业数字化转型、优化资源配置效率,是数字经济时代提升企业市场竞争力和价值创造能力的关键所在。在企业里建立一个管过程、提效率、降风险、控成本的工程项目管理环境,科学化、规范化是至关重要的。
一、系统管理
    1、数据字典:实现对数据字典标签的增删改查操作
    2、编码管理:实现对系统编码的增删改查操作
    3、用户管理:管理和查看用户角色
    4、菜单管理:实现对系统菜单的增删改查操作
    5、角色管理:管理和查看用户角色的权限
    6、系统消息:查看系统消息
二、系统设置
    1、项目前期模板设置:实现对项目前期模板文档的增删改查操作
    2、项目权限管理:管理各项目的成员名单
    3、资源管理:实现对资源清单的增删改查操作
    4、考核指标:实现对考核指标的增删改查操作
    5、预警指标:实现对预警指标的增删改查操作
    6、模板管理:实现对模板的增删改查操作
    7、提醒消息模板:实现对提醒消息模板的增删改查操作
三、项目管理
    1、项目列表:实现对项目列表的增删改查操作,包括查看各项目的立项人、创建时间、
                项目经理、计划开始时间、计划结束时间等信息,可以进行终止和导出操作
    2、项目计划管理:项目计划查看和管理模块,可执行增删改查操作,包括查看甘特图
    3、进度上报管理:项目进度上报模块,可上报任务或任务步骤进度
    4、形象进度:形象进度管理
    5、指引:项目指引详情
四、合同管理
    1、项目合同:项目合同详情查询和展示页面
    2、问题合同:问题合同详情查询和展示页面
    3、合同收付款:合同收付款详情查询和展示页面
    4、资金计划:实现各项目资金计划的详情查看及其增删改和导出操作
    5、项目考核:项目考核详情查看页面
    6、奖惩管理:奖惩查看管理页面
五、预警管理
    1、预警管理:预警管理和信息查看页面,可以执行设置预警指标操作
    2、预警记录:预警记录管理
六、竣工管理
    1、工程竣工移交:工程竣工移交管理
    2、工程竣工验收:工程竣工验收管理
七、质量管理
    1、中间验收:中间验收记录管理
    2、质量检查:质量检查记录管理
    3、隐患整改:隐患整改记录管理
八、统计报表
    1、项目汇总:项目汇总信息查看,包括进度、计划时间等信息
    2、进度报表:项目进度报表,包括计划时间和已用资源等信息
    3、收支报表:项目收支报表,包含总体收支、项目收支和收支统计模块
    4、资金计划报表:资金计划详情展示
    5、资金计划统计:资金计划统计模块,提供信息导出功能
    6、差异报表:项目差异报表,进入详情界面可执行基线对比
    7、每周报表:项目每周报表
九、工作台
    1、我的待办:我的待办和已办工作
    2、我的消息:我的消息清单,包含未读信息和已读信息

下面是一个完整的 **Spring Boot + Spring Cloud + MyBatis + MySQL + Nacos + Redis + Spring Security + Seata** 的微服务部署和调用示例。我们将构建一个包含多个服务的微服务系统,演示服务注册发现、配置中心、数据库访问、服务间调用、事务一致性、安全认证等核心功能。 --- ## 🧱 项目结构(多模块) ``` microservice-seata-demo/ ├── nacos-server/ # Nacos 服务(注册中心 + 配置中心) ├── user-service/ # 用户服务(MyBatis + MySQL + Redis) ├── order-service/ # 订单服务(Feign + Redis + Seata 分布式事务) ├── account-service/ # 账户服务(MySQL + Seata) ├── gateway-service/ # 网关服务(Spring Cloud Gateway) ├── auth-service/ # 认证服务(Spring Security + OAuth2) ``` --- ## ✅ 第一步:搭建 Nacos Server(注册中心 + 配置中心) ### 下载并启动 Nacos ```bash # 下载 Nacos wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz # 解压并启动 tar -zxvf nacos-server-2.2.3.tar.gz cd nacos/bin sh startup.sh -m standalone ``` 访问 Nacos 控制台: ``` http://localhost:8848/nacos 账号密码:nacos/nacos ``` --- ## ✅ 第二步:搭建 Seata Server(分布式事务) ### 下载并启动 Seata ```bash wget https://github.com/seata/seata/releases/download/v1.6.1/seata-server-1.6.1.zip unzip seata-server-1.6.1.zip cd seata/bin sh seata-server.sh -p 8091 -m db ``` ### 配置 Seata 数据库(MySQL) 创建 `seata` 数据库,并导入 SQL 脚本: ```sql -- 创建 seata 数据库 CREATE DATABASE seata; -- 导入建表脚本(来自 seata/conf/db_store.sql) ``` --- ## ✅ 第三步:搭建 user-service(用户服务) ### `pom.xml` ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-j</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>io.lettuce.core</groupId> <artifactId>lettuce-core</artifactId> </dependency> </dependencies> ``` ### `application.yml` ```yaml server: port: 8081 spring: application: name: user-service cloud: nacos: discovery: server-addr: localhost:8848 config: server-addr: localhost:8848 file-extension: yaml datasource: url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver redis: host: localhost port: 6379 ``` ### 数据库表 ```sql CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ); ``` ### `UserController.java` ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); } } ``` --- ## ✅ 第四步:搭建 order-service(订单服务) ### `pom.xml` ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> </dependencies> ``` ### `application.yml` ```yaml server: port: 8082 spring: application: name: order-service cloud: nacos: discovery: server-addr: localhost:8848 alibaba: seata: tx-service-group: my_tx_group seata: enabled: true registry: type: nacos nacos: server-addr: localhost:8848 application: seata-server service: vgroup-mapping: my_tx_group: default grouplist: default: 127.0.0.1:8091 ``` ### `OrderController.java` ```java @RestController @RequestMapping("/orders") public class OrderController { @Autowired private OrderService orderService; @GetMapping("/create") @GlobalTransactional public String createOrder() { orderService.createOrder(); return "Order created with transaction"; } } ``` --- ## ✅ 第五步:搭建 account-service(账户服务) 与 `order-service` 类似,用于模拟 Seata 的事务参与方。 --- ## ✅ 第六步:搭建 gateway-service(网关服务) ### `pom.xml` ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` ### `application.yml` ```yaml server: port: 8080 spring: application: name: gateway-service cloud: gateway: discovery: locator: enabled: true nacos: discovery: server-addr: localhost:8848 ``` --- ## ✅ 第七步:搭建 auth-service(认证服务) 使用 Spring Security + OAuth2 实现认证授权。 ### `pom.xml` ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-resource-server</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-client</artifactId> </dependency> ``` ### `SecurityConfig.java` ```java @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .oauth2Login(); return http.build(); } } ``` --- ## 🚀 启动顺序 1. 启动 `nacos-server` 2. 启动 `seata-server` 3. 启动 `user-service` 4. 启动 `account-service` 5. 启动 `order-service` 6. 启动 `gateway-service` 7. 启动 `auth-service` --- ## 📡 测试服务调用 - **访问用户服务**(通过网关): ``` GET http://localhost:8080/user-service/users/1 ``` - **创建订单(带分布式事务)**: ``` GET http://localhost:8080/order-service/orders/create ``` --- ## ✅ 示例 Dockerfile(适用于任意服务) ```Dockerfile FROM openjdk:17-jdk-slim COPY target/*.jar app.jar ENTRYPOINT ["java", "-jar", "app.jar"] ``` --- ## ✅ 示例 docker-compose.yml ```yaml version: '3.8' services: nacos: image: nacos/nacos-server:v2.2.3 container_name: nacos ports: - "8848:8848" environment: MODE: standalone seata: image: seataio/seata-server:1.6.1 container_name: seata ports: - "8091:8091" environment: SEATA_PORT: 8091 user-service: build: ./user-service ports: - "8081:8081" order-service: build: ./order-service ports: - "8082:8082" gateway-service: build: ./gateway-service ports: - "8080:8080" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值