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

fix:添加注释

上级 3da76d29
......@@ -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);
}
......
......@@ -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<OrderState, OrderStateChangeAction> {
/**
* 配置状态的初始值
*
* @param states
* @throws Exception
*/
@Override
public void configure(StateMachineStateConfigurer<OrderState, OrderStateChangeAction> states) throws Exception {
states.withStates().initial(OrderState.ORDER_WAIT_PAY)
.states(EnumSet.allOf(OrderState.class));
}
/**
* 配置状态转化
*
* @param transitions
* @throws Exception
*/
@Override
public void configure(StateMachineTransitionConfigurer<OrderState, OrderStateChangeAction> transitions) throws Exception {
transitions.withExternal().source(OrderState.ORDER_WAIT_PAY)
......@@ -56,7 +68,6 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order
@Bean
public DefaultStateMachinePersister machinePersister() {
return new DefaultStateMachinePersister<>(new StateMachinePersist<Object, Object, Order>() {
@Override
public void write(StateMachineContext<Object, Object> stateMachineContext, Order order) throws Exception {
//持久化操作。可以通过任何形式进行持久化。redis 、 mongodb、mysql,ecache
......
......@@ -20,23 +20,27 @@ import java.util.List;
@Service
public class OrderService {
@Autowired
private StateMachine<OrderState, OrderStateChangeAction> orderStateMachine;
@Autowired
private StateMachinePersister<OrderState, OrderStateChangeAction, Order> stateMachinePersister;
@Autowired
private PayLogProcessor payLogProcessor;
@Autowired
private OrderLogProcessor orderLogProcessor;
@Autowired
private StateMachine<OrderState, OrderStateChangeAction> orderStateMachine;
@Autowired
private StateMachinePersister<OrderState, OrderStateChangeAction, Order> stateMachinePersister;
/**
* 模拟一个存储
*/
private final List<Object> 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<OrderStateChangeAction> message, Order order) {
try {
orderStateMachine.start();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册