mapper.xml里的使用
and go.state = '${@com.cmiinv.shp.model.order.GroupOrderState@JOINABLE.code}'
<if test="targetState == @com.cmiinv.shp.model.order.OrderState@CONFIRMED.code">
confirm_time = now()
</if>
程序里的使用
groupOrder.setState(GroupOrderState.OPENED.getCode());
package com.cmiinv.shp.model.order;
import com.cmiinv.shp.model.Code;
import com.fasterxml.jackson.annotation.JsonCreator;
import lombok.Getter;
import java.util.Arrays;
/**
* @author LiuQi
*/
public enum OrderState implements Code {
/**
* 01: 待支付
*/
APPENDING,
/**
* 02: 预支付中
*/
PRE_PAYING,
/**
* 03: 支付中
*/
PAYING,
/**
* 04: 已支付
*/
PAYED,
/**
* 05: 已消费/已收货
*/
CONFIRMED,
/**
* 06: 已评价/已完成
*/
FINISHED,
/**
* 07: 已超时未支付
*/
EXPIRED,
/**
* 08: 已申请退款
*/
REFUND_APPLIED,
/**
* 09: 退款中
*/
REFUNDING,
/**
* 10: 已退款
*/
REFUND,
/**
* 11: 团订单已失效
*/
GROUP_EXPIRED,
/**
* 99: 已关闭
*/
CLOSED("99");
@Getter
private String code;
OrderState() {
this.code = String.format("%02d", this.ordinal() + 1);
}
OrderState(String code) {
this.code = code;
}
@JsonCreator
public static OrderState fromCode(String code) {
return Arrays.stream(OrderState.values())
.filter(state -> state.code.equalsIgnoreCase(code))
.findFirst()
.orElse(null);
}
}
package com.cmiinv.shp.model;
import com.fasterxml.jackson.annotation.JsonValue;
/**
* @author LiuQi
*/
@FunctionalInterface
public interface Code {
@JsonValue
String getCode();
}