多个常量中判断前端传过来的常量是否存在

业务判断条件:

          判断所有的常量中,是否包含这个常量

         解决

              枚举+map+containsKey() :把多个变量写成一个枚举,使用stream流把所有的枚举放在一个Map里,使用Map.contains.key()方法判断

枚举类

package com.wscar.xny.recommender.constants;

/**
 * 流水类型约束
 * 在这里维护流水类型 与 余额变动类型(扣减,新增,冻结等)的映射
 *
 * @author blue
 */
public enum FinanceFlowType {

    //流水类型 1订单佣金 2提现失败返还 3提现失败手续费返还 4提现 5提现手续费 6提现金额冻结 7提现手续费冻结
    //变更类型 INCOME增加 OUTLAY扣减 FREEZE冻结

    /**
     * 订单佣金
     */
    COMMISSION(1, "订单佣金", FinanceChangeType.INCOME, "com.wscar.xny.recommender.common.account.strategy.IncreaseStrategy"),
    /**
     * 提现失败返还
     */
    WITHDRAW_RETURN(2, "提现失败返还", FinanceChangeType.INCOME, "com.wscar.xny.recommender.common.account.strategy.UnfreezeStrategy"),
    /**
     * 提现失败手续费返还
     */
    WITHDRAW_FEE_RETURN(3, "提现失败手续费返还", FinanceChangeType.INCOME, "com.wscar.xny.recommender.common.account.strategy.UnfreezeStrategy"),
    /**
     * 提现
     */
    WITHDRAW(4, "提现", FinanceChangeType.OUTLAY, "com.wscar.xny.recommender.common.account.strategy.DeductionStrategy"),
    /**
     * 提现手续费
     */
    WITHDRAD_FEE(5, "提现手续费", FinanceChangeType.OUTLAY, "com.wscar.xny.recommender.common.account.strategy.DeductionStrategy"),

    /**
     * 提现金额冻结
     */
    WITHDRAD_FREEZE(6, "提现金额冻结", FinanceChangeType.FREEZE, "com.wscar.xny.recommender.common.account.strategy.FreezeStrategy"),

    /**
     * 提现手续费冻结
     */
    WITHDRAD_FEE_FREEZE(7, "提现手续费冻结", FinanceChangeType.FREEZE, "com.wscar.xny.recommender.common.account.strategy.FreezeStrategy");
    /**
     * 流水类型标识
     */
    private int flowType;

    /**
     * 流水类型描述
     */
    private String disc;

    /**
     * 流水变更类型 1增加 2扣减 3冻结 4解冻
     */
    private FinanceChangeType changeType;

    /**
     * 处理类
     */
    private String target;

    FinanceFlowType(int flowType, String disc, FinanceChangeType changeType, String target) {
        this.flowType = flowType;
        this.disc = disc;
        this.changeType = changeType;
        this.target = target;
    }

    public int getFlowType() {
        return flowType;
    }

    public String getDisc() {
        return disc;
    }

    public FinanceChangeType getChangeType() {
        return changeType;
    }

    public String getTarget() {
        return target;
    }
}

Service判断

形成的Map,Map直接写在Service层里

    /**
     * 变更类型及流水类型
     */
    private static final Map<Integer, FinanceChangeType> FINANCE_CHANGE_TYPE_MAPPING =
            Stream.of(FinanceChangeType.values()).collect(Collectors.toMap(FinanceChangeType::getIdentity, e -> e, (a, b) -> a));
    private static final Map<Integer, FinanceFlowType> FINANCE_FLOW_TYPE_MAPPING =
            Stream.of(FinanceFlowType.values()).collect(Collectors.toMap(FinanceFlowType::getFlowType, e -> e, (a, b) -> a));
 if (null != detailType && !FINANCE_FLOW_TYPE_MAPPING.containsKey(detailType)) {
            throw new BusinessException(AuthBusinessError.SYS_REQUEST_PARAMETER_ERROR, "未识别的流水类型");
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值