Selaa lähdekoodia

Signed-off-by: ljx <809268652@qq.com>

ljx 2 kuukautta sitten
vanhempi
commit
c463044bf9
49 muutettua tiedostoa jossa 620 lisäystä ja 0 poistoa
  1. 17 0
      common/pom.xml
  2. 13 0
      common/src/main/java/com/springcloud/market/user/CommonApplication.java
  3. 5 0
      common/src/main/java/com/springcloud/market/user/service/UserService.java
  4. 13 0
      common/src/test/java/com/springcloud/market/user/common/CommonApplicationTests.java
  5. BIN
      common/target/classes/com/springcloud/market/user/CommonApplication.class
  6. BIN
      common/target/classes/com/springcloud/market/user/service/UserService.class
  7. BIN
      common/target/common-0.0.1-SNAPSHOT.jar
  8. 5 0
      common/target/maven-archiver/pom.properties
  9. 2 0
      common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  10. 2 0
      common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  11. 1 0
      common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
  12. 1 0
      common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
  13. BIN
      common/target/test-classes/com/springcloud/market/user/common/CommonApplicationTests.class
  14. 42 0
      gateway/pom.xml
  15. 15 0
      gateway/src/main/java/com/springcloud/market/gateway/GatewayApplication.java
  16. 14 0
      gateway/src/main/resources/application.yml
  17. 10 0
      gateway/src/main/resources/bootstrap.yml
  18. 13 0
      gateway/src/test/java/com/springcloud/market/gateway/GatewayApplicationTests.java
  19. 14 0
      gateway/target/classes/application.yml
  20. 10 0
      gateway/target/classes/bootstrap.yml
  21. BIN
      gateway/target/classes/com/springcloud/market/gateway/GatewayApplication.class
  22. 37 0
      pay/pom.xml
  23. 13 0
      pay/src/main/java/com/springcloud/market/pay/PayApplication.java
  24. 21 0
      pay/src/main/java/com/springcloud/market/pay/service/OrderTimeoutHandler.java
  25. 30 0
      pay/src/main/java/com/springcloud/market/pay/service/UserRegisterMessageHandler.java
  26. 21 0
      pay/src/main/resources/application.yml
  27. 13 0
      pay/src/test/java/com/springcloud/market/pay/PayApplicationTests.java
  28. 21 0
      pay/target/classes/application.yml
  29. BIN
      pay/target/classes/com/springcloud/market/pay/PayApplication.class
  30. BIN
      pay/target/classes/com/springcloud/market/pay/service/OrderTimeoutHandler.class
  31. BIN
      pay/target/classes/com/springcloud/market/pay/service/UserRegisterMessageHandler.class
  32. 54 0
      user/pom.xml
  33. 15 0
      user/src/main/java/com/springcloud/market/user/UserApplication.java
  34. 30 0
      user/src/main/java/com/springcloud/market/user/controller/UserController.java
  35. 15 0
      user/src/main/java/com/springcloud/market/user/dto/UserDTO.java
  36. 13 0
      user/src/main/java/com/springcloud/market/user/pojo/User.java
  37. 28 0
      user/src/main/java/com/springcloud/market/user/service/UserRegisterMessageSender.java
  38. 12 0
      user/src/main/java/com/springcloud/market/user/service/UserService.java
  39. 41 0
      user/src/main/java/com/springcloud/market/user/service/impl/UserServiceImpl.java
  40. 33 0
      user/src/main/resources/application.yml
  41. 13 0
      user/src/test/java/com/springcloud/market/user/UserApplicationTests.java
  42. 33 0
      user/target/classes/application.yml
  43. BIN
      user/target/classes/com/springcloud/market/user/UserApplication.class
  44. BIN
      user/target/classes/com/springcloud/market/user/controller/UserController.class
  45. BIN
      user/target/classes/com/springcloud/market/user/dto/UserDTO.class
  46. BIN
      user/target/classes/com/springcloud/market/user/pojo/User.class
  47. BIN
      user/target/classes/com/springcloud/market/user/service/UserRegisterMessageSender.class
  48. BIN
      user/target/classes/com/springcloud/market/user/service/UserService.class
  49. BIN
      user/target/classes/com/springcloud/market/user/service/impl/UserServiceImpl.class

+ 17 - 0
common/pom.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.springcloud</groupId>
+        <artifactId>xuexi</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+    <groupId>org.springcloud</groupId>
+    <artifactId>common</artifactId>
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>

+ 13 - 0
common/src/main/java/com/springcloud/market/user/CommonApplication.java

@@ -0,0 +1,13 @@
+package com.springcloud.market.user;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class CommonApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(CommonApplication.class, args);
+    }
+
+}

+ 5 - 0
common/src/main/java/com/springcloud/market/user/service/UserService.java

@@ -0,0 +1,5 @@
+package com.springcloud.market.user.service;
+
+public interface UserService {
+    String getUserInfo();
+}

+ 13 - 0
common/src/test/java/com/springcloud/market/user/common/CommonApplicationTests.java

@@ -0,0 +1,13 @@
+package com.springcloud.market.user.common;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class CommonApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}

BIN
common/target/classes/com/springcloud/market/user/CommonApplication.class


BIN
common/target/classes/com/springcloud/market/user/service/UserService.class


BIN
common/target/common-0.0.1-SNAPSHOT.jar


+ 5 - 0
common/target/maven-archiver/pom.properties

@@ -0,0 +1,5 @@
+#Generated by Maven
+#Thu Aug 28 11:19:52 CST 2025
+groupId=org.springcloud
+artifactId=common
+version=0.0.1-SNAPSHOT

+ 2 - 0
common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,2 @@
+com\springcloud\market\user\CommonApplication.class
+com\springcloud\market\user\service\UserService.class

+ 2 - 0
common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1,2 @@
+D:\ziyuangl\xuexi\common\src\main\java\com\springcloud\market\user\CommonApplication.java
+D:\ziyuangl\xuexi\common\src\main\java\com\springcloud\market\user\service\UserService.java

+ 1 - 0
common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst

@@ -0,0 +1 @@
+com\springcloud\market\user\common\CommonApplicationTests.class

+ 1 - 0
common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

@@ -0,0 +1 @@
+D:\ziyuangl\xuexi\common\src\test\java\com\springcloud\market\user\common\CommonApplicationTests.java

BIN
common/target/test-classes/com/springcloud/market/user/common/CommonApplicationTests.class


+ 42 - 0
gateway/pom.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.springcloud</groupId>
+        <artifactId>xuexi</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.springcloud</groupId>
+    <artifactId>gateway</artifactId>
+
+    <dependencies>
+        <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>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>

+ 15 - 0
gateway/src/main/java/com/springcloud/market/gateway/GatewayApplication.java

@@ -0,0 +1,15 @@
+package com.springcloud.market.gateway;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+public class GatewayApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(GatewayApplication.class, args);
+    }
+
+}

+ 14 - 0
gateway/src/main/resources/application.yml

@@ -0,0 +1,14 @@
+server:
+  port: 18099
+
+spring:
+  application:
+    name: gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: localhost:8848
+      config:
+        import-check:
+          enabled: false
+

+ 10 - 0
gateway/src/main/resources/bootstrap.yml

@@ -0,0 +1,10 @@
+spring:
+  application:
+    name: gateway
+  profiles:
+    active: public
+  cloud:
+    nacos:
+      config:
+        file-extension: yaml
+        server-addr: localhost:8848

+ 13 - 0
gateway/src/test/java/com/springcloud/market/gateway/GatewayApplicationTests.java

@@ -0,0 +1,13 @@
+package com.springcloud.market.gateway;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class GatewayApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}

+ 14 - 0
gateway/target/classes/application.yml

@@ -0,0 +1,14 @@
+server:
+  port: 18099
+
+spring:
+  application:
+    name: gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: localhost:8848
+      config:
+        import-check:
+          enabled: false
+

+ 10 - 0
gateway/target/classes/bootstrap.yml

@@ -0,0 +1,10 @@
+spring:
+  application:
+    name: gateway
+  profiles:
+    active: public
+  cloud:
+    nacos:
+      config:
+        file-extension: yaml
+        server-addr: localhost:8848

BIN
gateway/target/classes/com/springcloud/market/gateway/GatewayApplication.class


+ 37 - 0
pay/pom.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.springcloud</groupId>
+        <artifactId>xuexi</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.springcloud</groupId>
+    <artifactId>pay</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 13 - 0
pay/src/main/java/com/springcloud/market/pay/PayApplication.java

@@ -0,0 +1,13 @@
+package com.springcloud.market.pay;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class PayApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(PayApplication.class, args);
+    }
+
+}

+ 21 - 0
pay/src/main/java/com/springcloud/market/pay/service/OrderTimeoutHandler.java

@@ -0,0 +1,21 @@
+package com.springcloud.market.pay.service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Service;
+import java.util.function.Consumer;
+
+@Service
+public class OrderTimeoutHandler {
+    private static final Logger logger = LoggerFactory.getLogger(OrderTimeoutHandler.class);
+
+    @Bean
+    public Consumer<String> orderCancelConsumer() {
+        return orderId -> {
+            logger.info("[消费者] 收到订单超时消息,订单ID: {}", orderId);
+            // 这里调用订单取消逻辑,例如:
+            System.out.println(orderId+"订单取消了");
+            logger.warn("执行订单取消逻辑,订单ID: {}", orderId);
+        };
+    }
+}

+ 30 - 0
pay/src/main/java/com/springcloud/market/pay/service/UserRegisterMessageHandler.java

@@ -0,0 +1,30 @@
+package com.springcloud.market.pay.service;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Service;
+import lombok.extern.slf4j.Slf4j;
+import java.util.function.Consumer;
+
+@Slf4j
+@Service
+public class UserRegisterMessageHandler {
+    /**
+     * 处理用户注册事件-赠送积分
+     * @return
+     */
+    @Bean
+    public Consumer<java.util.Map<String, Object>> userRegisterConsumer() {
+        return message -> {
+            String userId = (String) message.get("userId");
+            String username = (String) message.get("username");
+            log.info("收到用户注册消息,开始处理积分赠送,用户ID: {}, 用户名: {}", userId, username);
+            // 这里实现你的积分赠送业务逻辑
+            try {
+                // pointsService.addWelcomePoints(userId);
+                log.info("已为用户 {} 赠送注册积分", userId);
+            } catch (Exception e) {
+                log.error("赠送积分失败,用户ID: {}", userId, e);
+            }
+        };
+    }
+}

+ 21 - 0
pay/src/main/resources/application.yml

@@ -0,0 +1,21 @@
+spring:
+  application:
+    name: pay
+  cloud:
+    function:
+      definition: orderCancelConsumer;userRegisterConsumer
+    stream:
+      rocketmq:
+        binder:
+          name-server: 127.0.0.1:9876
+      bindings:
+        orderCancelConsumer-in-0: # 消费者输入通道
+          destination: order-timeout-topic
+          content-type: application/json
+          group: pay-service-group # 消费者组
+        userRegisterConsumer-in-0:
+          destination: user-register-topic # 与生产者Topic名称一致
+          content-type: application/json
+          group: pay-service-group # 消费者组,用于集群消费和负载均衡
+server:
+  port: 18075

+ 13 - 0
pay/src/test/java/com/springcloud/market/pay/PayApplicationTests.java

@@ -0,0 +1,13 @@
+package com.springcloud.market.pay;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class PayApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}

+ 21 - 0
pay/target/classes/application.yml

@@ -0,0 +1,21 @@
+spring:
+  application:
+    name: pay
+  cloud:
+    function:
+      definition: orderCancelConsumer;userRegisterConsumer
+    stream:
+      rocketmq:
+        binder:
+          name-server: 127.0.0.1:9876
+      bindings:
+        orderCancelConsumer-in-0: # 消费者输入通道
+          destination: order-timeout-topic
+          content-type: application/json
+          group: pay-service-group # 消费者组
+        userRegisterConsumer-in-0:
+          destination: user-register-topic # 与生产者Topic名称一致
+          content-type: application/json
+          group: pay-service-group # 消费者组,用于集群消费和负载均衡
+server:
+  port: 18075

BIN
pay/target/classes/com/springcloud/market/pay/PayApplication.class


BIN
pay/target/classes/com/springcloud/market/pay/service/OrderTimeoutHandler.class


BIN
pay/target/classes/com/springcloud/market/pay/service/UserRegisterMessageHandler.class


+ 54 - 0
user/pom.xml

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.springcloud</groupId>
+        <artifactId>xuexi</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.springcloud</groupId>
+    <artifactId>user</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <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.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springcloud</groupId>
+            <artifactId>common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
+        </dependency>
+
+    </dependencies>
+</project>

+ 15 - 0
user/src/main/java/com/springcloud/market/user/UserApplication.java

@@ -0,0 +1,15 @@
+package com.springcloud.market.user;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@EnableDubbo
+public class UserApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(UserApplication.class, args);
+    }
+
+}

+ 30 - 0
user/src/main/java/com/springcloud/market/user/controller/UserController.java

@@ -0,0 +1,30 @@
+package com.springcloud.market.user.controller;
+
+import com.springcloud.market.user.dto.UserDTO;
+import com.springcloud.market.user.pojo.User;
+import com.springcloud.market.user.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/user")
+public class UserController {
+    @Autowired
+    private UserService userService;
+
+    @RequestMapping("/getUserInfo")
+    public String getUserInfo()
+    {
+        return userService.getUserInfo();
+    }
+
+    @PostMapping("/registerUser")
+    public User registerUser(@RequestBody UserDTO userDTO)
+    {
+        return userService.registerUser(userDTO);
+    }
+
+}

+ 15 - 0
user/src/main/java/com/springcloud/market/user/dto/UserDTO.java

@@ -0,0 +1,15 @@
+package com.springcloud.market.user.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserDTO {
+    private String username;
+    private String userId;
+    private String phoneNumber;
+    private String eventTime;
+}

+ 13 - 0
user/src/main/java/com/springcloud/market/user/pojo/User.java

@@ -0,0 +1,13 @@
+package com.springcloud.market.user.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class User {
+    private String userId;
+    private String username;
+}

+ 28 - 0
user/src/main/java/com/springcloud/market/user/service/UserRegisterMessageSender.java

@@ -0,0 +1,28 @@
+package com.springcloud.market.user.service;
+
+import com.springcloud.market.user.dto.UserDTO;
+import org.springframework.cloud.stream.function.StreamBridge;
+import org.springframework.messaging.support.MessageBuilder;
+import org.springframework.stereotype.Service;
+import lombok.extern.slf4j.Slf4j;
+import java.time.Instant;
+
+@Slf4j
+@Service
+public class UserRegisterMessageSender {
+    private final StreamBridge streamBridge;
+    public UserRegisterMessageSender(StreamBridge streamBridge) {
+        this.streamBridge = streamBridge;
+    }
+    public void sendUserRegisterMessage(String userId, String username, String phoneNumber) {
+        // 构造消息内容
+        UserDTO userDTO = new UserDTO(userId, username, phoneNumber, Instant.now().toString());
+        // 使用StreamBridge发送消息
+        boolean sent = streamBridge.send("userRegister-out-0", MessageBuilder.withPayload(userDTO).build());
+        if (sent) {
+            log.info("用户注册成功消息已发送,用户ID: {}", userId);
+        } else {
+            log.error("用户注册成功消息发送失败,用户ID: {}", userId);
+        }
+    }
+}

+ 12 - 0
user/src/main/java/com/springcloud/market/user/service/UserService.java

@@ -0,0 +1,12 @@
+package com.springcloud.market.user.service;
+
+
+import com.springcloud.market.user.dto.UserDTO;
+import com.springcloud.market.user.pojo.User;
+
+// user-service-api模块
+public interface UserService {
+    String getUserInfo();
+
+    User registerUser(UserDTO userDTO);
+}

+ 41 - 0
user/src/main/java/com/springcloud/market/user/service/impl/UserServiceImpl.java

@@ -0,0 +1,41 @@
+package com.springcloud.market.user.service.impl;
+
+import com.alibaba.csp.sentinel.annotation.SentinelResource;
+import com.springcloud.market.user.dto.UserDTO;
+import com.springcloud.market.user.pojo.User;
+import com.springcloud.market.user.service.UserRegisterMessageSender;
+import com.springcloud.market.user.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Slf4j
+@DubboService
+public class UserServiceImpl implements UserService {
+    @Autowired
+    private UserRegisterMessageSender userRegisterMessageSender;
+    @Override
+    public String getUserInfo() {
+        return "user接口已调取";
+    }
+
+    @Override
+    public User registerUser(UserDTO userDTO) {
+        // 模拟注册成功,自动生成ID
+        String userId = "1001";
+        log.info("用户注册成功,用户ID: {}", userId);
+        // 2. 【新增】异步发送注册成功事件消息
+        try {
+            userRegisterMessageSender.sendUserRegisterMessage(
+                    userId,
+                    userDTO.getUsername(),
+                    userDTO.getPhoneNumber()
+            );
+        } catch (Exception e) {
+            // 发送消息失败处理,但用户注册核心流程已成功,不应回滚。记录日志并可能通过其他方式补偿。
+            log.error("用户注册成功,但发送通知消息失败,用户ID: {}", userId, e);
+        }
+        // return user;
+        return new User(userId, userDTO.getUsername());
+    }
+}

+ 33 - 0
user/src/main/resources/application.yml

@@ -0,0 +1,33 @@
+# application.yml
+dubbo:
+  application:
+    name: user-provider
+  scan:
+    base-packages: com/springcloud/market/user/service/impl
+  registry:
+    address: nacos://localhost:8848
+  protocol:
+    name: dubbo
+    port: 20888
+  consumer:
+    timeout: 3000
+
+spring:
+  application:
+    name: user
+  cloud:
+    nacos:
+      discovery:
+        server-addr: localhost:8848  # 服务注册
+    stream:
+      bindings:
+        # 注册成功消息的输出通道
+        userRegister-out-0:
+          destination: user-register-topic  # Topic名称
+          content-type: application/json
+          group: user-producer-group
+      rocketmq:
+        binder:
+          name-server: 127.0.0.1:9876 # NameServer地址
+server:
+  port: 18086

+ 13 - 0
user/src/test/java/com/springcloud/market/user/UserApplicationTests.java

@@ -0,0 +1,13 @@
+package com.springcloud.market.user;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class UserApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}

+ 33 - 0
user/target/classes/application.yml

@@ -0,0 +1,33 @@
+# application.yml
+dubbo:
+  application:
+    name: user-provider
+  scan:
+    base-packages: com/springcloud/market/user/service/impl
+  registry:
+    address: nacos://localhost:8848
+  protocol:
+    name: dubbo
+    port: 20888
+  consumer:
+    timeout: 3000
+
+spring:
+  application:
+    name: user
+  cloud:
+    nacos:
+      discovery:
+        server-addr: localhost:8848  # 服务注册
+    stream:
+      bindings:
+        # 注册成功消息的输出通道
+        userRegister-out-0:
+          destination: user-register-topic  # Topic名称
+          content-type: application/json
+          group: user-producer-group
+      rocketmq:
+        binder:
+          name-server: 127.0.0.1:9876 # NameServer地址
+server:
+  port: 18086

BIN
user/target/classes/com/springcloud/market/user/UserApplication.class


BIN
user/target/classes/com/springcloud/market/user/controller/UserController.class


BIN
user/target/classes/com/springcloud/market/user/dto/UserDTO.class


BIN
user/target/classes/com/springcloud/market/user/pojo/User.class


BIN
user/target/classes/com/springcloud/market/user/service/UserRegisterMessageSender.class


BIN
user/target/classes/com/springcloud/market/user/service/UserService.class


BIN
user/target/classes/com/springcloud/market/user/service/impl/UserServiceImpl.class