提交 35af2e26 编写于 作者: 檀越@新空间's avatar 檀越@新空间 🐭

fix:添加注释

上级 3da76d29
...@@ -10,8 +10,17 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -10,8 +10,17 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/**
* 订单入口
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/29 19:53
*/
@RestController @RestController
public class OrderController { public class OrderController {
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;
...@@ -21,7 +30,7 @@ public class OrderController { ...@@ -21,7 +30,7 @@ public class OrderController {
} }
@PostMapping("/pay") @PostMapping("/pay")
public Order payOrder(@RequestBody PayBody payBody){ public Order payOrder(@RequestBody PayBody payBody) {
return orderService.pay(payBody); return orderService.pay(payBody);
} }
......
...@@ -16,7 +16,6 @@ import org.springframework.statemachine.support.DefaultStateMachineContext; ...@@ -16,7 +16,6 @@ import org.springframework.statemachine.support.DefaultStateMachineContext;
import java.util.EnumSet; import java.util.EnumSet;
/** /**
* 订单状态配置类 * 订单状态配置类
* *
...@@ -27,12 +26,25 @@ import java.util.EnumSet; ...@@ -27,12 +26,25 @@ import java.util.EnumSet;
@Configuration @Configuration
@EnableStateMachine(name = "orderStateMachine") @EnableStateMachine(name = "orderStateMachine")
public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<OrderState, OrderStateChangeAction> { public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<OrderState, OrderStateChangeAction> {
/**
* 配置状态的初始值
*
* @param states
* @throws Exception
*/
@Override @Override
public void configure(StateMachineStateConfigurer<OrderState, OrderStateChangeAction> states) throws Exception { public void configure(StateMachineStateConfigurer<OrderState, OrderStateChangeAction> states) throws Exception {
states.withStates().initial(OrderState.ORDER_WAIT_PAY) states.withStates().initial(OrderState.ORDER_WAIT_PAY)
.states(EnumSet.allOf(OrderState.class)); .states(EnumSet.allOf(OrderState.class));
} }
/**
* 配置状态转化
*
* @param transitions
* @throws Exception
*/
@Override @Override
public void configure(StateMachineTransitionConfigurer<OrderState, OrderStateChangeAction> transitions) throws Exception { public void configure(StateMachineTransitionConfigurer<OrderState, OrderStateChangeAction> transitions) throws Exception {
transitions.withExternal().source(OrderState.ORDER_WAIT_PAY) transitions.withExternal().source(OrderState.ORDER_WAIT_PAY)
...@@ -56,7 +68,6 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order ...@@ -56,7 +68,6 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order
@Bean @Bean
public DefaultStateMachinePersister machinePersister() { public DefaultStateMachinePersister machinePersister() {
return new DefaultStateMachinePersister<>(new StateMachinePersist<Object, Object, Order>() { return new DefaultStateMachinePersister<>(new StateMachinePersist<Object, Object, Order>() {
@Override @Override
public void write(StateMachineContext<Object, Object> stateMachineContext, Order order) throws Exception { public void write(StateMachineContext<Object, Object> stateMachineContext, Order order) throws Exception {
//持久化操作。可以通过任何形式进行持久化。redis 、 mongodb、mysql,ecache //持久化操作。可以通过任何形式进行持久化。redis 、 mongodb、mysql,ecache
......
...@@ -20,23 +20,27 @@ import java.util.List; ...@@ -20,23 +20,27 @@ import java.util.List;
@Service @Service
public class OrderService { public class OrderService {
@Autowired
private StateMachine<OrderState, OrderStateChangeAction> orderStateMachine;
@Autowired
private StateMachinePersister<OrderState, OrderStateChangeAction, Order> stateMachinePersister;
@Autowired @Autowired
private PayLogProcessor payLogProcessor; private PayLogProcessor payLogProcessor;
@Autowired @Autowired
private OrderLogProcessor orderLogProcessor; private OrderLogProcessor orderLogProcessor;
@Autowired
private StateMachine<OrderState, OrderStateChangeAction> orderStateMachine;
@Autowired
private StateMachinePersister<OrderState, OrderStateChangeAction, Order> stateMachinePersister;
/** /**
* 模拟一个存储 * 模拟一个存储
*/ */
private final List<Object> orders = new ArrayList<>(); private final List<Object> orders = new ArrayList<>();
/**
* 创建订单
*
* @param oid
* @return
*/
public Order createOrder(Integer oid) { public Order createOrder(Integer oid) {
Order order = new Order(); Order order = new Order();
order.setOrderState(OrderState.ORDER_WAIT_PAY); order.setOrderState(OrderState.ORDER_WAIT_PAY);
...@@ -47,20 +51,27 @@ public class OrderService { ...@@ -47,20 +51,27 @@ public class OrderService {
return order; return order;
} }
// 将来我们删除或者增加或者修改任何关于付款的模块,无需改动service。
//不会对调用层产生任何代码的改动。 /**
// 调用层使用我们的pay 模块,无需关系实现的逻辑,只需要将入参传给我们的pay模块即可。 * 支付订单
* 将来我们删除或者增加或者修改任何关于付款的模块,无需改动service。
* 不会对调用层产生任何代码的改动。
* 调用层使用我们的pay 模块,无需关系实现的逻辑,只需要将入参传给我们的pay模块即可。
*
* @param payBody
* @return
*/
public Order pay(PayBody payBody) { public Order pay(PayBody payBody) {
// 书写我们的付款逻辑 // 书写我们的付款逻辑
boolean flag = false; boolean flag = false;
flag = StrategyFacade.pay(payBody); flag = StrategyFacade.pay(payBody);
if(flag) { if (flag) {
Order order = (Order) orders.get(0); // 模拟查询db代码 Order order = (Order) orders.get(0); // 模拟查询db代码
payLogProcessor.processAuditLog(payBody.getAccount(), "pay", order.getOrderId().toString()); payLogProcessor.processAuditLog(payBody.getAccount(), "pay", order.getOrderId().toString());
Message message = MessageBuilder Message message = MessageBuilder
.withPayload(OrderStateChangeAction.PAY_ORDER).setHeader("order", order).build(); .withPayload(OrderStateChangeAction.PAY_ORDER).setHeader("order", order).build();
//发送消息,发送给谁?和状态机有没有关系啊? 有 //发送消息,发送给谁?和状态机有没有关系啊? 有
if(changeStateAction(message,order)) { if (changeStateAction(message, order)) {
return order; return order;
} }
//如果是 true,我们要保存到db //如果是 true,我们要保存到db
...@@ -68,29 +79,52 @@ public class OrderService { ...@@ -68,29 +79,52 @@ public class OrderService {
} }
return null; return null;
} }
private void saveToDb(PayBody payBody) { private void saveToDb(PayBody payBody) {
} }
/**
* 订单发货
*
* @param oid
* @return
*/
public Order send(Integer oid) { public Order send(Integer oid) {
Order order = (Order) orders.get(0); // 模拟查询db代码 Order order = (Order) orders.get(0); // 模拟查询db代码
Message message = MessageBuilder Message message = MessageBuilder
.withPayload(OrderStateChangeAction.SEND_ORDER).setHeader("order", order).build(); .withPayload(OrderStateChangeAction.SEND_ORDER).setHeader("order", order).build();
if(changeStateAction(message,order)) { if (changeStateAction(message, order)) {
return order; return order;
} }
return null; return null;
} }
/**
* 订单收货
*
* @param oid
* @return
*/
public Order receive(Integer oid) { public Order receive(Integer oid) {
Order order = (Order) orders.get(0); // 模拟查询db代码 Order order = (Order) orders.get(0); // 模拟查询db代码
Message message = MessageBuilder Message message = MessageBuilder
.withPayload(OrderStateChangeAction.RECEIVE_ORDER).setHeader("order", order).build(); .withPayload(OrderStateChangeAction.RECEIVE_ORDER).setHeader("order", order).build();
if(changeStateAction(message,order)) { if (changeStateAction(message, order)) {
return order; return order;
} }
return null; return null;
} }
/**
* 状态变更
*
* @param message
* @param order
* @return
*/
private boolean changeStateAction(Message<OrderStateChangeAction> message, Order order) { private boolean changeStateAction(Message<OrderStateChangeAction> message, Order order) {
try { try {
orderStateMachine.start(); orderStateMachine.start();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册