优化
This commit is contained in:
+37
@@ -0,0 +1,37 @@
|
||||
package com.baiyue.lastleg.delivery.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public final class DeliveryStatusPolicy {
|
||||
private static final Set<String> EDITABLE_TARGETS = Set.of(
|
||||
"WAIT_DELIVERY", "DELIVERING", "DELIVERED", "REJECTED", "CANCELLED");
|
||||
private static final Map<String, Set<String>> TRANSITIONS = Map.of(
|
||||
"WAIT_DELIVERY", Set.of("DELIVERING", "DELIVERED", "REJECTED", "CANCELLED"),
|
||||
"DELIVERING", Set.of("DELIVERED", "REJECTED"),
|
||||
"DELIVERED", Set.of(),
|
||||
"REJECTED", Set.of(),
|
||||
"RETURN_PENDING", Set.of(),
|
||||
"CANCELLED", Set.of());
|
||||
|
||||
private DeliveryStatusPolicy() { }
|
||||
|
||||
public static boolean isEditableTarget(String status) {
|
||||
return EDITABLE_TARGETS.contains(status);
|
||||
}
|
||||
|
||||
public static boolean canTransition(String from, String target) {
|
||||
return TRANSITIONS.getOrDefault(from, Set.of()).contains(target);
|
||||
}
|
||||
|
||||
public static List<String> allowedActions(String status) {
|
||||
return switch (status == null ? "" : status) {
|
||||
case "WAIT_DELIVERY" -> List.of(
|
||||
"START_DELIVERY", "COMPLETE_DELIVERY", "REJECT_DELIVERY", "CANCEL_DELIVERY", "MARK_RETURN");
|
||||
case "DELIVERING" -> List.of("COMPLETE_DELIVERY", "REJECT_DELIVERY", "MARK_RETURN");
|
||||
case "DELIVERED", "REJECTED" -> List.of("MARK_RETURN");
|
||||
default -> List.of();
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user