美文网首页Java
BigInteger学习使用

BigInteger学习使用

作者: 清远_03d9 | 来源:发表于2020-08-07 16:16 被阅读0次

    1.RightsHelper定义

    
    import java.math.BigInteger;
    
    /**
     * 权限计算帮助类
     */
    public class RightsHelper {
        /**
         * 利用BigInteger对权限进行2的权的和计算
         * @param rights int型权限编码数组
         * @return 2的权的和
         */
        public static BigInteger sumRights(int[] rights){
            BigInteger num = new BigInteger("0");
            for(int i=0; i<rights.length; i++){
                num = num.setBit(rights[i]);
            }
            return num;
        }
        /**
         * 利用BigInteger对权限进行2的权的和计算
         * @param rights String型权限编码数组
         * @return 2的权的和
         */
        public static BigInteger sumRights(String[] rights){
            BigInteger num = new BigInteger("0");
            for(int i=0; i<rights.length; i++){
                num = num.setBit(Integer.parseInt(rights[i]));
            }
            return num;
        }
        
        /**
         * 测试是否具有指定编码的权限
         * @param sum
         * @param targetRights
         * @return
         */
        public static boolean testRights(BigInteger sum,int targetRights){
            return sum.testBit(targetRights);
        }
        
        /**
         * 测试是否具有指定编码的权限
         * @param sum
         * @param targetRights
         * @return
         */
        public static boolean testRights(String sum,int targetRights){
            if(Tools.isEmpty(sum))
                return false;
            return testRights(new BigInteger(sum),targetRights);
        }
        
        /**
         * 测试是否具有指定编码的权限
         * @param sum
         * @param targetRights
         * @return
         */
        public static boolean testRights(String sum,String targetRights){
            if(Tools.isEmpty(sum))
                return false;
            return testRights(new BigInteger(sum),targetRights);
        }
        
        /**
         * 测试是否具有指定编码的权限
         * @param sum
         * @param targetRights
         * @return
         */
        public static boolean testRights(BigInteger sum,String targetRights){
            return testRights(sum,Integer.parseInt(targetRights));
        }
    }
    

    2.BigInteger的使用

    String menuIds ="1,2,36,37,39,38,43,20,3,235,6,50";
    BigInteger rights = RightsHelper.sumRights(Tools.str2StrArray(menuIds));
    
    
         /**根据角色权限处理权限状态(递归处理)
         * @param menuList:传入的总菜单
         * @param roleRights:加密的权限字符串
         * @return
         */
        public List<Menu> readMenu(List<Menu> menuList,String roleRights){
            for(int i=0;i<menuList.size();i++){
                menuList.get(i).setHasMenu(RightsHelper.testRights(roleRights, menuList.get(i).getMENU_ID()));
                this.readMenu(menuList.get(i).getSubMenu(), roleRights);                    //是:继续排查其子菜单
            }
            return menuList;
        }
    

    相关文章

      网友评论

        本文标题:BigInteger学习使用

        本文链接:https://www.haomeiwen.com/subject/rmrnyhtx.html