利用占位符方式记录状态demo

2019-01-07  本文已影响0人  fufufufuli
 * 用户状态类,记录用户在平台使用系统中所有的状态。
 */
public class BitStateUtil {
    public final static Integer OP_BIND_PHONE = 1 << 0; // 用户绑定手机状态码
    public final static Integer OP_BIND_EMAIL = 1 << 1; // 用户绑定邮箱
    public final static Integer OP_BASIC_INFO = 1 << 2;// 用户是否填写基本资料
    public final static Integer OP_REAL_AUTH = 1 << 3;// 用户是否实名认证
    public final static Integer OP_VIDEO_AUTH = 1 << 4;// 用户是否视频认证
    public final static Integer OP_HAS_BIDREQUEST_PROCESS = 1 << 5;// 用户是否有一个借款正在处理流程当中
    public final static Integer OP_BIND_BANKINFO = 1 << 6;// 用户是否绑定银行卡
    public final static Integer OP_HAS_MONEYWITHDRAW_PROCESS = 1 << 7;// 用户是否有一个提现申请在处理中

    /**
     * @param states 所有状态值
     * @param value  需要判断状态值
     * @return 是否存在
     */
    public static boolean hasState(Integer states, Integer value) {
        
        return (states & value) != 0;
    }

    /**
     * @param states 已有状态值
     * @param value  需要添加状态值
     * @return 新的状态值
     */
    public static Integer addState(Integer states, Integer value) {
        if (hasState(states, value)) {
            return states;
        }
        return (states | value);
    }

    /**
     * @param states 已有状态值
     * @param value  需要删除状态值
     * @return 新的状态值
     */
    public static Integer removeState(Integer states, Integer value) {
        if (!hasState(states, value)) {
            return states;
        }
        return states ^ value;
    }
}
上一篇下一篇

猜你喜欢

热点阅读