package com.ruoyi.info.order.enums;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.ruoyi.common.enums.IIntegerEnum;

import java.util.Objects;

public enum OrderStatus implements IIntegerEnum<Integer> {

    wait_confirmed(1, "待确认"),
    wait_service(2, "待服务"),
    in_progress(3, "服务中"),
    wait_evaluated(4, "待评价"),
    done(5, "已完成"),
//    refunded(7, "已退款"),
    canceled(6, "已取消"),
    ;

    OrderStatus(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @EnumValue
    @JsonValue
    private Integer code;

    private String msg;

    @Override
    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    @JsonCreator
    public static OrderStatus getByCode(Integer code) {
        for (OrderStatus value : OrderStatus.values()) {
            if (Objects.equals(code, value.getCode())) {
                return value;
            }
        }
        return null;
    }

    //转成jsonarray
    public static JSONArray toJsonArray() {
        JSONArray jsonArray = new JSONArray();
        for (OrderStatus value : OrderStatus.values()) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("code", value.getCode());
            jsonObject.put("value", value.getMsg());
            jsonArray.add(jsonObject);
        }
        return jsonArray;
    }

}
