From 78e371ab9f2283e03f17a2695d690918b2ce42be Mon Sep 17 00:00:00 2001 From: kezhijie Date: Tue, 26 Sep 2023 10:17:14 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96seata=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=EF=BC=8C=E4=BD=BF=E5=85=A8=E5=B1=80=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E5=8F=AF=E4=BB=A5=20=E5=9B=9E=E6=BB=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/service/impl/SeataAccountServiceImpl.java | 2 ++ .../order/service/impl/SeataOrderServiceImpl.java | 10 +++++++++- .../product/service/impl/SeataProductServiceImpl.java | 2 ++ .../jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml | 6 ++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/java/org/jeecg/modules/test/seata/account/service/impl/SeataAccountServiceImpl.java b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/java/org/jeecg/modules/test/seata/account/service/impl/SeataAccountServiceImpl.java index d9127fe2..dbc7f79c 100644 --- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/java/org/jeecg/modules/test/seata/account/service/impl/SeataAccountServiceImpl.java +++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/java/org/jeecg/modules/test/seata/account/service/impl/SeataAccountServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.test.seata.account.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; +import io.seata.core.context.RootContext; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.test.seata.account.entity.SeataAccount; @@ -34,6 +35,7 @@ public class SeataAccountServiceImpl implements SeataAccountService { @Override @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) public void reduceBalance(Long userId, BigDecimal amount) { + log.info("xid:"+ RootContext.getXID()); log.info("=============ACCOUNT START================="); SeataAccount account = accountMapper.selectById(userId); Assert.notNull(account, "用户不存在"); diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/java/org/jeecg/modules/test/seata/order/service/impl/SeataOrderServiceImpl.java b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/java/org/jeecg/modules/test/seata/order/service/impl/SeataOrderServiceImpl.java index 48676cd5..ee7bb02b 100644 --- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/java/org/jeecg/modules/test/seata/order/service/impl/SeataOrderServiceImpl.java +++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/java/org/jeecg/modules/test/seata/order/service/impl/SeataOrderServiceImpl.java @@ -1,6 +1,8 @@ package org.jeecg.modules.test.seata.order.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; +import io.seata.core.context.RootContext; import io.seata.spring.annotation.GlobalTransactional; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.test.seata.order.dto.PlaceOrderRequest; @@ -39,6 +41,7 @@ public class SeataOrderServiceImpl implements SeataOrderService { @Transactional(rollbackFor = Exception.class) @GlobalTransactional public void placeOrder(PlaceOrderRequest request) { + log.info("xid:"+RootContext.getXID()); log.info("=============ORDER START================="); Long userId = request.getUserId(); Long productId = request.getProductId(); @@ -58,7 +61,12 @@ public class SeataOrderServiceImpl implements SeataOrderService { // 扣减库存并计算总价 BigDecimal amount = productClient.reduceStock(productId, count); // 扣减余额 - accountClient.reduceBalance(userId, amount); + String str = accountClient.reduceBalance(userId, amount); + // feign响应被二次封装,判断使主事务回滚 + JSONObject jsonObject = JSONObject.parseObject(str); + if (jsonObject.getInteger("code") != 200) { + throw new RuntimeException(); + } order.setStatus(OrderStatus.SUCCESS); order.setTotalPrice(amount); diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/java/org/jeecg/modules/test/seata/product/service/impl/SeataProductServiceImpl.java b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/java/org/jeecg/modules/test/seata/product/service/impl/SeataProductServiceImpl.java index f7b91f75..448d8177 100644 --- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/java/org/jeecg/modules/test/seata/product/service/impl/SeataProductServiceImpl.java +++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/java/org/jeecg/modules/test/seata/product/service/impl/SeataProductServiceImpl.java @@ -1,6 +1,7 @@ package org.jeecg.modules.test.seata.product.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; +import io.seata.core.context.RootContext; import lombok.extern.slf4j.Slf4j; @@ -35,6 +36,7 @@ public class SeataProductServiceImpl implements SeataProductService { @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) @Override public BigDecimal reduceStock(Long productId, Integer count) { + log.info("xid:"+ RootContext.getXID()); log.info("=============PRODUCT START================="); // 检查库存 SeataProduct product = productMapper.selectById(productId); diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml index 13b4c291..84e3df10 100644 --- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml +++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml @@ -20,6 +20,12 @@ org.jeecgframework.boot jeecg-boot-starter-cloud ${jeecgboot.version} + + + io.seata + seata-all + + org.jeecgframework.boot From a364025bd2d375b3520e314f149d63f1ff9165ac Mon Sep 17 00:00:00 2001 From: kezhijie Date: Mon, 16 Oct 2023 18:24:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=8D=87=E7=BA=A7seata=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E8=87=B31.5.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml | 6 ------ pom.xml | 8 ++++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml index 84e3df10..13b4c291 100644 --- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml +++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/pom.xml @@ -20,12 +20,6 @@ org.jeecgframework.boot jeecg-boot-starter-cloud ${jeecgboot.version} - - - io.seata - seata-all - - org.jeecgframework.boot diff --git a/pom.xml b/pom.xml index cf8d396c..4f97155a 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,8 @@ 2.17.0 1.2.9 + + 1.5.2 @@ -159,6 +161,12 @@ import + + io.seata + seata-spring-boot-starter + ${seata.version} + + org.jeecgframework.boot