liujie
2026-09-11 4f6f15b818704079ff2e4e4719b798f48d68a335
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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;
    }
}