| 123456789101112131415161718192021222324252627282930 |
- package com.ruoyi.app.flashdelivery.service;
- import static com.ruoyi.system.domain.flash.FlashDeliveryStatus.*;
- /**
- * 闪送履约状态机。
- * 正常路径固定为待接单、已接单、已取件、已送达、已完成;已完成和已取消均为终态。
- */
- public final class FlashDeliveryStateMachine {
- private FlashDeliveryStateMachine() { }
- /** 正常链路逐级推进;取消仅允许取件前,站点事实由业务入口再次校验。 */
- public static boolean canTransition(String from, String to) {
- return WAITING_ACCEPTANCE.equals(from) && ACCEPTED.equals(to)
- || ACCEPTED.equals(from) && PICKED_UP.equals(to)
- || PICKED_UP.equals(from) && DELIVERED.equals(to)
- || DELIVERED.equals(from) && COMPLETED.equals(to)
- || canAdminCancel(from) && CANCELLED.equals(to);
- }
- public static boolean canUserCancel(String status) {
- // 用户只能在实际取件前取消;取件后的异常由平台介入处理。
- return WAITING_ACCEPTANCE.equals(status) || ACCEPTED.equals(status);
- }
- public static boolean canAdminCancel(String status) {
- // 取件后的异常只能由客服处理,不能通过取消接口关闭配送或自动退款。
- return WAITING_ACCEPTANCE.equals(status) || ACCEPTED.equals(status);
- }
- }
|