From 35af2e26eae1c21f5801db3c448a37ff8440dbd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E8=8B=B1=E6=9D=B0?= <327782001@qq.com> Date: Sat, 29 Jul 2023 19:54:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/controller/OrderController.java | 11 +++- .../order/config/OrderStateMachineConfig.java | 17 ++++- .../study/design/service/OrderService.java | 64 ++++++++++++++----- 3 files changed, 73 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/study/design/controller/OrderController.java b/src/main/java/com/study/design/controller/OrderController.java index 1c0b3f7..dc5d835 100644 --- a/src/main/java/com/study/design/controller/OrderController.java +++ b/src/main/java/com/study/design/controller/OrderController.java @@ -10,8 +10,17 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; + +/** + * 订单入口 + * + * @author : qinyingjie + * @version : 2.2.0 + * @date : 2023/7/29 19:53 + */ @RestController public class OrderController { + @Autowired private OrderService orderService; @@ -21,7 +30,7 @@ public class OrderController { } @PostMapping("/pay") - public Order payOrder(@RequestBody PayBody payBody){ + public Order payOrder(@RequestBody PayBody payBody) { return orderService.pay(payBody); } diff --git a/src/main/java/com/study/design/order/config/OrderStateMachineConfig.java b/src/main/java/com/study/design/order/config/OrderStateMachineConfig.java index e80aa5c..eff149d 100644 --- a/src/main/java/com/study/design/order/config/OrderStateMachineConfig.java +++ b/src/main/java/com/study/design/order/config/OrderStateMachineConfig.java @@ -16,7 +16,6 @@ import org.springframework.statemachine.support.DefaultStateMachineContext; import java.util.EnumSet; - /** * 订单状态配置类 * @@ -27,12 +26,25 @@ import java.util.EnumSet; @Configuration @EnableStateMachine(name = "orderStateMachine") public class OrderStateMachineConfig extends StateMachineConfigurerAdapter { + + /** + * 配置状态的初始值 + * + * @param states + * @throws Exception + */ @Override public void configure(StateMachineStateConfigurer states) throws Exception { states.withStates().initial(OrderState.ORDER_WAIT_PAY) .states(EnumSet.allOf(OrderState.class)); } + /** + * 配置状态转化 + * + * @param transitions + * @throws Exception + */ @Override public void configure(StateMachineTransitionConfigurer transitions) throws Exception { transitions.withExternal().source(OrderState.ORDER_WAIT_PAY) @@ -56,7 +68,6 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter(new StateMachinePersist() { - @Override public void write(StateMachineContext stateMachineContext, Order order) throws Exception { //持久化操作。可以通过任何形式进行持久化。redis 、 mongodb、mysql,ecache @@ -69,4 +80,4 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter orderStateMachine; - - @Autowired - private StateMachinePersister stateMachinePersister; - @Autowired private PayLogProcessor payLogProcessor; - @Autowired private OrderLogProcessor orderLogProcessor; + @Autowired + private StateMachine orderStateMachine; + @Autowired + private StateMachinePersister stateMachinePersister; /** * 模拟一个存储 */ private final List orders = new ArrayList<>(); + + /** + * 创建订单 + * + * @param oid + * @return + */ public Order createOrder(Integer oid) { Order order = new Order(); order.setOrderState(OrderState.ORDER_WAIT_PAY); @@ -47,20 +51,27 @@ public class OrderService { return order; } - // 将来我们删除或者增加或者修改任何关于付款的模块,无需改动service。 - //不会对调用层产生任何代码的改动。 - // 调用层使用我们的pay 模块,无需关系实现的逻辑,只需要将入参传给我们的pay模块即可。 + + /** + * 支付订单 + * 将来我们删除或者增加或者修改任何关于付款的模块,无需改动service。 + * 不会对调用层产生任何代码的改动。 + * 调用层使用我们的pay 模块,无需关系实现的逻辑,只需要将入参传给我们的pay模块即可。 + * + * @param payBody + * @return + */ public Order pay(PayBody payBody) { // 书写我们的付款逻辑 boolean flag = false; flag = StrategyFacade.pay(payBody); - if(flag) { + if (flag) { Order order = (Order) orders.get(0); // 模拟查询db代码 payLogProcessor.processAuditLog(payBody.getAccount(), "pay", order.getOrderId().toString()); Message message = MessageBuilder .withPayload(OrderStateChangeAction.PAY_ORDER).setHeader("order", order).build(); //发送消息,发送给谁?和状态机有没有关系啊? 有 - if(changeStateAction(message,order)) { + if (changeStateAction(message, order)) { return order; } //如果是 true,我们要保存到db @@ -68,29 +79,52 @@ public class OrderService { } return null; } + private void saveToDb(PayBody payBody) { } + + /** + * 订单发货 + * + * @param oid + * @return + */ public Order send(Integer oid) { Order order = (Order) orders.get(0); // 模拟查询db代码 Message message = MessageBuilder .withPayload(OrderStateChangeAction.SEND_ORDER).setHeader("order", order).build(); - if(changeStateAction(message,order)) { + if (changeStateAction(message, order)) { return order; } return null; } + + /** + * 订单收货 + * + * @param oid + * @return + */ public Order receive(Integer oid) { Order order = (Order) orders.get(0); // 模拟查询db代码 Message message = MessageBuilder .withPayload(OrderStateChangeAction.RECEIVE_ORDER).setHeader("order", order).build(); - if(changeStateAction(message,order)) { + if (changeStateAction(message, order)) { return order; } return null; } + + /** + * 状态变更 + * + * @param message + * @param order + * @return + */ private boolean changeStateAction(Message message, Order order) { try { orderStateMachine.start(); @@ -105,4 +139,4 @@ public class OrderService { } return false; } -} +} \ No newline at end of file -- GitLab