package cn.superdesk.uniorder.common.enums.common;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description: 定义: 用于标记 业务操作后产生数据的来源(最原始的), 也可以想象为"谁"最原始产生的, 用于标志这个"谁"
 * 例子:
 * 1. 订单流源于 企业福利_侨城汇(serviceNo=FLSC_QCH) 同步,但是在结算中心-积分结算模块 操作产生对账单，故(sourceFrom=superdesk-uniorder)
 * 2. 订单流源于 企业商城_侨城汇(serviceNo=QYSC_QCH) 同步,但是在结算中心-积分结算模块 操作产生对账单，故(sourceFrom=superdesk-uniorder)
 * 3. 对账单源于 企业商城_侨城汇(serviceNo=QYSC_QCH) 同步,经中间处理程序处理转换 产生对账单，故(sourceFrom=qyscjc-mall-qch)
 * @Author: linjinyu
 * @CreateDate: 8/31/20 4:42 PM
 * @UpdateUser: linjinyu
 * @UpdateDate: 8/31/20 4:42 PM
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public enum CommonSourceFromEnum {

    UNKNOW(-1, "unknow", "未知来源"), // -- 在用

    结算中心(1, "superdesk-uniorder", "结算中心"), // -- 在用

    服务之窗(2, "superdesk-app", "服务之窗"), // -- 在用
    楼内闪送(21, "superdesk-app-services-flashdeliver", "楼内闪送"), // -- 预留

    企业福利(3, "superdesk-mall-flsc", "企业福利"), // -- 预留
    企业福利_侨城汇(31, "superdesk-mall-flsc-qch", "企业福利_侨城汇"), // -- 预留
    企业商城_侨城汇(32, "qyscjc-mall-qch", "企业商城"), // -- 在用 v2.3
    企业采购(4, "superdesk-mall-qycg", "企业采购"), // -- 预留
    代客下单(5, "superdesk-mall-dkxd", "代客下单"), // -- 预留

    ;

    private Integer key;
    private String  sourceFromCode;
    private String  sourceFromName;

    CommonSourceFromEnum(Integer key, String sourceFromCode, String sourceFromName) {
        this.key = key;
        this.sourceFromCode = sourceFromCode;
        this.sourceFromName = sourceFromName;
    }

    public Integer getKey() {
        return key;
    }

    public String getSourceFromCode() {
        return sourceFromCode;
    }

    public String getSourceFromName() {
        return sourceFromName;
    }

//	public static String getSourceFromCode(Integer key) {
//		for (SysRoleExtDataSampleSourceFromEnum c : SysRoleExtDataSampleSourceFromEnum.values()) {
//			if (c.key.equals(key)) {
//				return c.getSourceFromCode();
//			}
//		}
//		return "UNKNOW";
//	}

//	public static String getSourceFromName(Integer key) {
//		for (SysRoleExtDataSampleSourceFromEnum c : SysRoleExtDataSampleSourceFromEnum.values()) {
//			if (c.key.equals(key)) {
//				return c.getSourceFromName();
//			}
//		}
//		return "未知类型";
//	}


    public static CommonSourceFromEnum getBySourceFromCode(String sourceFromCode) {
        for (CommonSourceFromEnum c : CommonSourceFromEnum.values()) {
            if (c.sourceFromCode.equals(sourceFromCode)) {
                return c;
            }
        }
        return CommonSourceFromEnum.UNKNOW;
    }

    public static CommonSourceFromEnum get(Integer key) {
        return LOOKUP.get(key);
    }

    private static final Map<Integer, CommonSourceFromEnum> LOOKUP = new HashMap<>();

    static {
        for (CommonSourceFromEnum s : EnumSet.allOf(CommonSourceFromEnum.class)) {
            LOOKUP.put(s.getKey(), s);
        }
    }
}
