zhaowenxuan
7 天以前 0892d843cd394f383ff50f480f7f22f2ec3829bc
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
package com.ltkj.mall.mallOrderUtils;
 
 
import com.ltkj.mall.domain.MallOrder;
 
import java.util.ArrayList;
import java.util.List;
 
/*
 * 订单流程:下单成功-》支付订单-》发货-》收货
 * 订单状态:
 * 101 订单生成,未支付;
 * 102,下单未支付用户取消;
 * 103,下单未支付超期系统自动取消
 * 201 支付完成,商家未发货;
 * 202,订单生产,已付款未发货,用户申请退款;
 * 203,管理员执行退款操作,确认退款成功;
 * 301 商家发货,用户未确认;
 * 401 用户确认收货,订单结束;
 * 402 用户没有确认收货,但是快递反馈已收货后,超过一定时间,系统自动确认收货,订单结束。
 *
 * 当101用户未付款时,此时用户可以进行的操作是取消或者付款
 * 当201支付完成而商家未发货时,此时用户可以退款
 * 当301商家已发货时,此时用户可以有确认收货
 * 当401用户确认收货以后,此时用户可以进行的操作是退货、删除、去评价或者再次购买
 * 当402系统自动确认收货以后,此时用户可以删除、去评价、或者再次购买
 */
public class OrderConstants {
 
    //未付款
    public static final Short STATUS_CREATE = 101;
    //已取消
    public static final Short STATUS_CANCEL = 102;
    //已取消(系统自动)
    public static final Short STATUS_AUTO_CANCEL = 103;
    //已取消(管理员操作)
    public static final Short STATUS_ADMIN_CANCEL = 104;
 
 
    //已付款
    public static final Short STATUS_PAY = 201;
    //订单取消,退款中
    public static final Short STATUS_REFUND = 202;
 
//    售后审核通过,已核销,退款中
    public static final Short STATUS_REFUND_VERIFY = 207;
    //已退款
    public static final Short STATUS_REFUND_CONFIRM = 203;
    //已核销,订单完成
    public static final Short STATUS_SHIP = 301;
 
    public static String orderStatusText(MallOrder order) {
        int status = order.getOrderStatus().intValue();
 
        if (status == 101) {
            return "未付款";
        }
 
        if (status == 102) {
            return "已取消";
        }
 
        if (status == 103) {
            return "已取消(系统)";
        }
 
        if (status == 201) {
            return "已付款";
        }
 
        if (status == 202) {
            return "订单取消,退款中";
        }
 
        if (status == 203) {
            return "已退款";
        }
 
        if (status == 301) {
            return "已核销";
        }
 
        throw new IllegalStateException("orderStatus不支持");
    }
 
 
    public static OrderHandleOption build(MallOrder order) {
        int status = order.getOrderStatus().intValue();
        OrderHandleOption handleOption = new OrderHandleOption();
 
        if (status == 101) {
            // 如果订单没有被取消,且没有支付,则可支付,可取消
            handleOption.setCancel(true);
            handleOption.setPay(true);
        } else if (status == 102 || status == 103) {
            // 如果订单已经取消或是已完成,则可删除
            handleOption.setDelete(true);
        } else if (status == 201) {
            // 如果订单已付款,没有发货,则可退款,可发货
            handleOption.setCanship(true);
            handleOption.setRefund(true);
        } else if (status == 202 || status == 204) {
            // 如果订单申请退款中,没有相关操作
        } else if (status == 203) {
            // 如果订单已经退款,则可删除
            handleOption.setDelete(true);
        } else if (status == 301) {
            // 如果订单已经核销则可删除和再次购买
            // 此时不能取消订单
            handleOption.setConfirm(true);
        } else if (status == 207) {
            // 如果订单已核销,则可删除和再次购买
            handleOption.setDelete(true);
            handleOption.setRebuy(true);
            handleOption.setAftersale(true);
        } else {
            throw new IllegalStateException("status不支持");
        }
 
        return handleOption;
    }
 
    public static List<Short> orderStatus(Integer showType) {
        // 全部订单
        if (showType == 0) {
            return null;
        }
 
        List<Short> status = new ArrayList<Short>(2);
 
        if (showType.equals(1)) {
            // 待付款订单
            status.add((short) 101);
        } else if (showType.equals(2)) {
            // 待发货订单
            status.add((short) 201);
        } else if (showType.equals(3)) {
            // 待收货订单
            status.add((short) 301);
        }  else {
            return null;
        }
 
        return status;
    }
 
 
    public static boolean isCreateStatus(MallOrder MallOrder) {
        return OrderConstants.STATUS_CREATE == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean hasPayed(MallOrder order) {
        return OrderConstants.STATUS_CREATE != order.getOrderStatus().shortValue()
                && OrderConstants.STATUS_CANCEL != order.getOrderStatus().shortValue()
                && OrderConstants.STATUS_AUTO_CANCEL != order.getOrderStatus().shortValue();
    }
 
    public static boolean isPayStatus(MallOrder MallOrder) {
        return OrderConstants.STATUS_PAY == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean isShipStatus(MallOrder MallOrder) {
        return OrderConstants.STATUS_SHIP == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean isCancelStatus(MallOrder MallOrder) {
        return OrderConstants.STATUS_CANCEL == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean isAutoCancelStatus(MallOrder MallOrder) {
        return OrderConstants.STATUS_AUTO_CANCEL == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean isRefundStatus(MallOrder MallOrder) {
        return OrderConstants.STATUS_REFUND == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean isRefundVerify(MallOrder MallOrder) {
        return OrderConstants.STATUS_REFUND_VERIFY == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean isRefundConfirmStatus(MallOrder MallOrder) {
        return OrderConstants.STATUS_REFUND_CONFIRM == MallOrder.getOrderStatus().shortValue();
    }
 
    public static boolean isAdminCancel(MallOrder mallOrder) {
        return OrderUtil.STATUS_ADMIN_CANCEL == mallOrder.getOrderStatus().shortValue();
    }
 
}