From 8b37cccb9384495b33ca7fa1439237e1193be469 Mon Sep 17 00:00:00 2001
From: JACKYMYPERSON <1627832236@qq.com>
Date: Tue, 3 Mar 2026 18:02:03 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9F=BA=E6=9C=AC=E4=B8=8B?=
=?UTF-8?q?=E5=8D=95=E7=9A=84=E5=AD=A6=E4=B9=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
broker.conf | 1 +
docker-compose.yml | 87 ++++++++++---------
javamemories-common/pom.xml | 11 +++
.../Common/Entity/StockDeductDTO.java | 14 +++
.../src/main/resources/application.yml | 16 ++++
order-service/pom.xml | 4 +
.../mayiming/Controller/OrderController.java | 54 +++++++++++-
.../cn/mayiming/Service/OrderService.java | 36 ++++++++
.../main/java/cn/mayiming/entity/Result.java | 69 +++++++++++++++
.../cn/mayiming/entity/StockDeductDTO.java | 17 ++++
.../cn/mayiming/feign/StockFeignClient.java | 14 +++
.../src/main/resources/application.yml | 18 +++-
pay-service/pom.xml | 67 +++++++++++++-
.../src/main/java/cn/mayiming/App.java | 6 +-
.../cn/mayiming/Consumer/payConsumer.java | 18 ++++
.../src/main/resources/application.yml | 52 +++++++++++
pom.xml | 12 +++
stock-service/pom.xml | 68 ++++++++++++++-
.../src/main/java/cn/mayiming/App.java | 10 ++-
.../mayiming/Controller/stockController.java | 23 +++++
.../cn/mayiming/Entity/StockDeductDTO.java | 17 ++++
.../java/cn/mayiming/Mapper/StockMapper.java | 16 ++++
.../cn/mayiming/Service/stockService.java | 18 ++++
.../src/main/resources/application.yml | 52 +++++++++++
24 files changed, 643 insertions(+), 57 deletions(-)
create mode 100644 broker.conf
create mode 100644 javamemories-common/src/main/java/cn/mayiming/Common/Entity/StockDeductDTO.java
create mode 100644 order-service/src/main/java/cn/mayiming/entity/Result.java
create mode 100644 order-service/src/main/java/cn/mayiming/entity/StockDeductDTO.java
create mode 100644 order-service/src/main/java/cn/mayiming/feign/StockFeignClient.java
create mode 100644 pay-service/src/main/java/cn/mayiming/Consumer/payConsumer.java
create mode 100644 pay-service/src/main/resources/application.yml
create mode 100644 stock-service/src/main/java/cn/mayiming/Controller/stockController.java
create mode 100644 stock-service/src/main/java/cn/mayiming/Entity/StockDeductDTO.java
create mode 100644 stock-service/src/main/java/cn/mayiming/Mapper/StockMapper.java
create mode 100644 stock-service/src/main/java/cn/mayiming/Service/stockService.java
create mode 100644 stock-service/src/main/resources/application.yml
diff --git a/broker.conf b/broker.conf
new file mode 100644
index 0000000..d1e694e
--- /dev/null
+++ b/broker.conf
@@ -0,0 +1 @@
+"brokerIP1=127.0.0.1"
diff --git a/docker-compose.yml b/docker-compose.yml
index 75e59d4..af0825e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,61 +1,62 @@
-version: '3.8'
-
services:
- # NameServer 服务
- rocketmq-namesrv:
- image: apache/rocketmq:5.2.0
- container_name: rocketmq-namesrv
+ rmqnamesrv:
+ image: apache/rocketmq:5.3.2 # 或换成 5.2.0,如果你必须用这个版本
+ container_name: rmqnamesrv
+ restart: unless-stopped
ports:
- "9876:9876"
- # 移除挂载配置
+ environment:
+ - TZ=Asia/Shanghai
+ - JAVA_OPT_EXT=-Xms512m -Xmx512m -Xmn256m
command: sh mqnamesrv
- restart: always
networks:
- - rocketmq-network
+ - rmq
+
+ rmqbroker:
+ image: apache/rocketmq:5.3.2
+ container_name: rmqbroker
+ restart: unless-stopped
+ ports:
+ - "10911:10911" # FastRemoting 端口(客户端主要连接这里)
+ - "10909:10909" # HA 端口(可选)
environment:
- TZ=Asia/Shanghai
- # 调整JVM内存,避免内存不足
- - ROCKETMQ_OPT="-Xms256m -Xmx256m -Xmn128m"
-
- # Broker 服务
- rocketmq-broker:
- image: apache/rocketmq:5.2.0
- container_name: rocketmq-broker
- ports:
- - "10911:10911"
- - "10909:10909"
- # 移除挂载配置,直接通过环境变量传递核心配置
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ - JAVA_OPT_EXT=-Xms1g -Xmx1g -Xmn512m
+ depends_on:
+ - rmqnamesrv
command: >
- sh mqbroker -n rocketmq-namesrv:9876
- -c /home/rocketmq/conf/broker.conf
- -Drocketmq.broker.ip1=你的服务器IP
- -Drocketmq.broker.autoCreateTopicEnable=true
- -Drocketmq.broker.autoCreateSubscriptionGroup=true
- depends_on:
- - rocketmq-namesrv
- environment:
- - TZ=Asia/Shanghai
- - NAMESRV_ADDR=rocketmq-namesrv:9876
- - ROCKETMQ_OPT="-Xms512m -Xmx512m -Xmn256m"
- restart: always
+ sh -c "
+ echo '
+ brokerClusterName = DefaultCluster
+ brokerName = broker-a
+ brokerId = 0
+ deleteWhen = 04
+ fileReservedTime = 48
+ brokerRole = ASYNC_MASTER
+ flushDiskType = ASYNC_FLUSH
+ autoCreateTopicEnable = true
+ autoCreateSubscriptionGroup = true
+ ' > /home/rocketmq/rocketmq-5.3.2/conf/broker.conf &&
+ mqbroker -n rmqnamesrv:9876 -c /home/rocketmq/rocketmq-5.3.2/conf/broker.conf
+ "
networks:
- - rocketmq-network
+ - rmq
- # RocketMQ 控制台(端口改为8083)
- rocketmq-dashboard:
- image: apacherocketmq/rocketmq-dashboard:2.0.0
- container_name: rocketmq-dashboard
+ rmqdashboard:
+ image: apacherocketmq/rocketmq-dashboard:latest
+ container_name: rmqdashboard
+ restart: unless-stopped
ports:
- - "8083:8080" # 宿主机8083端口映射到容器8080
+ - "18080:8080" # 主机端口改成 18080,避免与你其他服务冲突
environment:
- - NAMESRV_ADDR=rocketmq-namesrv:9876
- TZ=Asia/Shanghai
+ - JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Xms512m -Xmx512m
depends_on:
- - rocketmq-namesrv
- restart: always
+ - rmqnamesrv
networks:
- - rocketmq-network
+ - rmq
networks:
- rocketmq-network:
+ rmq:
driver: bridge
\ No newline at end of file
diff --git a/javamemories-common/pom.xml b/javamemories-common/pom.xml
index b5f6199..1352696 100644
--- a/javamemories-common/pom.xml
+++ b/javamemories-common/pom.xml
@@ -24,5 +24,16 @@
3.8.1
test
+
+ org.projectlombok
+ lombok
+ provided
+
+
+ org.jetbrains
+ annotations
+ 13.0
+ compile
+
diff --git a/javamemories-common/src/main/java/cn/mayiming/Common/Entity/StockDeductDTO.java b/javamemories-common/src/main/java/cn/mayiming/Common/Entity/StockDeductDTO.java
new file mode 100644
index 0000000..20537e8
--- /dev/null
+++ b/javamemories-common/src/main/java/cn/mayiming/Common/Entity/StockDeductDTO.java
@@ -0,0 +1,14 @@
+package cn.mayiming.Common.Entity;
+
+
+import lombok.Data;
+import org.jetbrains.annotations.NotNull;
+
+@Data
+public class StockDeductDTO {
+ @NotNull
+ private Long id;
+
+ @NotNull
+ private Integer deductNum;
+}
diff --git a/javamemories-gateway/src/main/resources/application.yml b/javamemories-gateway/src/main/resources/application.yml
index 19ffbfa..28a9165 100644
--- a/javamemories-gateway/src/main/resources/application.yml
+++ b/javamemories-gateway/src/main/resources/application.yml
@@ -44,6 +44,22 @@ spring:
# 按 IP 限流(默认)
key-resolver: "#{@ipKeyResolver}"
+ - id: stock-service
+ uri: lb://stock-service
+ predicates:
+ - Path=/stock/**
+ filters:
+ - RewritePath=/stock/(?.*), /${segment}
+ # 全局限流配置
+ - name: RequestRateLimiter
+ args:
+ # 令牌桶填充速率:每秒生成 1 个令牌(即 10 秒 10 个)
+ redis-rate-limiter.replenishRate: 1
+ # 令牌桶最大容量:最多存 10 个令牌(允许突发 10 次请求)
+ redis-rate-limiter.burstCapacity: 10
+ # 按 IP 限流(默认)
+ key-resolver: "#{@ipKeyResolver}"
+
sentinel:
# Sentinel 控制台地址(如果启动了控制台,用于可视化配置)
transport:
diff --git a/order-service/pom.xml b/order-service/pom.xml
index b2fecf4..a570083 100644
--- a/order-service/pom.xml
+++ b/order-service/pom.xml
@@ -78,5 +78,9 @@
mysql-connector-j
runtime
+
+ org.apache.rocketmq
+ rocketmq-spring-boot-starter
+
diff --git a/order-service/src/main/java/cn/mayiming/Controller/OrderController.java b/order-service/src/main/java/cn/mayiming/Controller/OrderController.java
index efbab80..97d5b1f 100644
--- a/order-service/src/main/java/cn/mayiming/Controller/OrderController.java
+++ b/order-service/src/main/java/cn/mayiming/Controller/OrderController.java
@@ -3,27 +3,77 @@ package cn.mayiming.Controller;
import cn.mayiming.Service.OrderService;
import cn.mayiming.entity.Order;
+import cn.mayiming.entity.Result;
+import cn.mayiming.entity.StockDeductDTO;
import cn.mayiming.entity.User;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
+import java.util.Map;
@RestController
+@RequestMapping("/order")
public class OrderController {
@Autowired
private OrderService orderService;
- @PostMapping("/order")
+ @PostMapping("/search")
public User getUserOrder(@RequestBody User user){
//throw new RuntimeException("Cuowu ");
return orderService.SearchUserbyname(user);
}
- @GetMapping("/order")
+ @GetMapping("/list")
public List getUserOrder(@RequestParam Integer id){
return orderService.OrderListById(id);
}
+
+ @PostMapping("/create")
+ public Result