diff --git a/kernel-d-seata/pom.xml b/kernel-d-seata/pom.xml
index 952f0866e..10fdd1b04 100644
--- a/kernel-d-seata/pom.xml
+++ b/kernel-d-seata/pom.xml
@@ -2,17 +2,19 @@
+ 4.0.0
+
cn.stylefeng.roses
roses-kernel
7.0.3
../pom.xml
- 4.0.0
kernel-d-seata
pom
+
seata-demo-wallet-api
seata-demo-storage-api
diff --git a/kernel-d-seata/seata-demo-order/pom.xml b/kernel-d-seata/seata-demo-order/pom.xml
index d0f816841..bdb76195e 100644
--- a/kernel-d-seata/seata-demo-order/pom.xml
+++ b/kernel-d-seata/seata-demo-order/pom.xml
@@ -14,28 +14,41 @@
jar
+
+
org.springframework.cloud
spring-cloud-openfeign-core
2.2.6.RELEASE
+
+
cn.stylefeng.roses
seata-demo-storage-api
7.0.3
- compile
cn.stylefeng.roses
seata-demo-wallet-api
7.0.3
- compile
+
+
io.seata
seata-all
1.3.0
+
+
+
+
+ cn.stylefeng.roses
+ scanner-api
+ 7.0.3
+
+
diff --git a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/controller/OrderController.java b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/controller/OrderController.java
index 90ac2e467..0510fd10b 100644
--- a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/controller/OrderController.java
+++ b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/controller/OrderController.java
@@ -1,8 +1,9 @@
package cn.stylefeng.roses.kernel.seata.order.controller;
+import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
+import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.seata.order.entity.Order;
import cn.stylefeng.roses.kernel.seata.order.service.OrderService;
-import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
@@ -13,6 +14,7 @@ import javax.annotation.Resource;
* @author wangyl
* @date 2021/04/10 16:42
*/
+@ApiResource(name = "订单接口(测试seata)")
public class OrderController {
@Resource
@@ -24,9 +26,9 @@ public class OrderController {
* @author wangyl
* @date 2021/4/20 20:11
*/
- @GetMapping("/create")
- public Order create(@RequestParam("userId") String userId, @RequestParam("commodityCode") String commodityCode, @RequestParam("orderCount") Integer orderCount){
- return orderService.create(userId,commodityCode,orderCount);
+ @GetResource(name = "创建订单", path = "/order/create", requiredPermission = false, requiredLogin = false)
+ public Order create(@RequestParam("userId") String userId, @RequestParam("commodityCode") String commodityCode, @RequestParam("orderCount") Integer orderCount) {
+ return orderService.create(userId, commodityCode, orderCount);
}
}
diff --git a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/OrderMapper.java b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/OrderMapper.java
index 32403d505..be2c64bed 100644
--- a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/OrderMapper.java
+++ b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/OrderMapper.java
@@ -12,14 +12,19 @@ public interface OrderMapper {
/**
* 新增订单
+ *
* @param order 订单
+ * @author wangyl
+ * @date 2021/4/21 9:43
*/
void insertOrder(Order order);
/**
* 根据ID查询订单
- * @param orderId 订单ID
- * @return
+ *
+ * @param orderId 订单id
+ * @author wangyl
+ * @date 2021/4/21 9:43
*/
Order selectById(Long orderId);
diff --git a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/mapping/OrderMapper.xml b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/mapping/OrderMapper.xml
index facf0f35e..a0d2b0f00 100644
--- a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/mapping/OrderMapper.xml
+++ b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/mapping/OrderMapper.xml
@@ -2,10 +2,10 @@
-
-
- insert into order(
- product_id,
+
+
+ insert into order(
+ product_id,
user_id,
prod_price,
prod_number,
@@ -16,7 +16,7 @@
update_user,
update_time,
remark,
- )values(
+ )values(
#{productId},
#{userId},
#{prodPrice},
@@ -28,13 +28,14 @@
#{updateUser},
#{updateTime},
#{remark},
- )
-
+ )
+
-
-
+
+
diff --git a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/OrderService.java b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/OrderService.java
index 9c114029b..6c66b211a 100644
--- a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/OrderService.java
+++ b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/OrderService.java
@@ -12,10 +12,12 @@ public interface OrderService {
/**
* 创建订单
- * @param userId 用户ID
+ *
+ * @param userId 用户ID
* @param commodityCode 商品编码
- * @param orderCount 购买数量
- * @return
+ * @param orderCount 购买数量
+ * @author wangyl
+ * @date 2021/4/21 9:43
*/
Order create(String userId, String commodityCode, int orderCount);
diff --git a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/impl/OrderServiceImpl.java b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/impl/OrderServiceImpl.java
index c91720195..9fa439cf9 100644
--- a/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/impl/OrderServiceImpl.java
+++ b/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/impl/OrderServiceImpl.java
@@ -21,29 +21,28 @@ public class OrderServiceImpl implements OrderService {
@Resource
private StorageConsumer storageConsumer;
+
@Resource
private WalletConsumer walletConsumer;
+
@Resource
private OrderMapper orderMapper;
- /**
- * 分布式事务跨库操作
- * @param userId 用户ID
- * @param commodityCode 商品编码
- * @param orderCount 购买数量
- * @GlobalTransactional 修饰分布式事务起始方法
- * @return
- */
@GlobalTransactional(rollbackFor = Exception.class)
@Override
public Order create(String userId, String commodityCode, int orderCount) {
Order order = new Order();
+
//保存订单
orderMapper.insertOrder(order);
+
//扣减商品库存
- storageConsumer.deduct(commodityCode,orderCount);
+ storageConsumer.deduct(commodityCode, orderCount);
+
//扣用户钱
- walletConsumer.debit(userId,order.getTotalAmount());
+ walletConsumer.debit(userId, order.getTotalAmount());
+
return order;
}
+
}
diff --git a/kernel-d-seata/seata-demo-storage-api/src/main/java/cn/stylefeng/roses/kernel/seata/api/StorageApi.java b/kernel-d-seata/seata-demo-storage-api/src/main/java/cn/stylefeng/roses/kernel/seata/api/StorageApi.java
index 637e56f62..28940ba85 100644
--- a/kernel-d-seata/seata-demo-storage-api/src/main/java/cn/stylefeng/roses/kernel/seata/api/StorageApi.java
+++ b/kernel-d-seata/seata-demo-storage-api/src/main/java/cn/stylefeng/roses/kernel/seata/api/StorageApi.java
@@ -10,8 +10,11 @@ public interface StorageApi {
/**
* 扣除存储数量
+ *
* @param commodityCode 商品编码
- * @param count 购买数量
+ * @param count 购买数量
+ * @author wangyl
+ * @date 2021/4/21 9:44
*/
void deduct(String commodityCode, Integer count);
diff --git a/kernel-d-seata/seata-demo-wallet-api/src/main/java/cn/stylefeng/roses/kernel/seata/wallet/api/WalletApi.java b/kernel-d-seata/seata-demo-wallet-api/src/main/java/cn/stylefeng/roses/kernel/seata/wallet/api/WalletApi.java
index a5abff565..10e94f4ca 100644
--- a/kernel-d-seata/seata-demo-wallet-api/src/main/java/cn/stylefeng/roses/kernel/seata/wallet/api/WalletApi.java
+++ b/kernel-d-seata/seata-demo-wallet-api/src/main/java/cn/stylefeng/roses/kernel/seata/wallet/api/WalletApi.java
@@ -10,8 +10,11 @@ public interface WalletApi {
/**
* 从用户账户中扣除余额
+ *
* @param userId 用户ID
- * @param money 消费金额
+ * @param money 消费金额
+ * @author wangyl
+ * @date 2021/4/21 9:44
*/
void debit(String userId, Integer money);