92 lines
2.2 KiB
Java
92 lines
2.2 KiB
Java
package com.cm.common.utils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import java.math.BigInteger;
|
|
|
|
/**
|
|
* 权限计算帮助类
|
|
*
|
|
* @author WenG
|
|
*/
|
|
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 (StringUtils.isEmpty(sum)) {
|
|
return false;
|
|
}
|
|
return testRights(new BigInteger(sum), targetRights);
|
|
}
|
|
|
|
/**
|
|
* 测试是否具有指定编码的权限
|
|
*
|
|
* @param sum
|
|
* @param targetRights
|
|
* @return
|
|
*/
|
|
public static boolean testRights(String sum, String targetRights) {
|
|
if (StringUtils.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));
|
|
}
|
|
|
|
}
|