package com.tourguide.modules.order.domain;
|
|
import java.util.EnumSet;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Set;
|
|
/** 订单主状态,不包含评价状态和支付渠道流水状态。 */
|
public enum OrderStatus {
|
PENDING_PAYMENT,
|
PENDING_ACCEPT,
|
PENDING_MEETING,
|
IN_SERVICE,
|
COMPLETED,
|
CANCELLED,
|
REFUNDED;
|
|
private static final Set<OrderStatus> REFUNDABLE_STATUSES = EnumSet.of(
|
PENDING_ACCEPT, PENDING_MEETING, IN_SERVICE, COMPLETED);
|
private static final List<String> UNFINISHED_STATUS_CODES = Arrays.asList(
|
PENDING_PAYMENT.getCode(), PENDING_ACCEPT.getCode(),
|
PENDING_MEETING.getCode(), IN_SERVICE.getCode());
|
|
public String getCode() {
|
return name();
|
}
|
|
public boolean matches(String code) {
|
return name().equals(code);
|
}
|
|
public static boolean isRefundable(String code) {
|
for (OrderStatus status : REFUNDABLE_STATUSES) {
|
if (status.matches(code)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
public static List<String> unfinishedStatusCodes() {
|
return UNFINISHED_STATUS_CODES;
|
}
|
}
|