1、数据范围根据用户角色筛选;2、界面功能按钮根据权限是否显示;3、文件上传后,文件访问链接改为服务接口返回的参数内容

This commit is contained in:
zhangwei
2018-05-21 17:21:21 +08:00
parent 46f43c6f5d
commit b46e302824
5 changed files with 93 additions and 26 deletions

View File

@@ -56,7 +56,7 @@ public abstract class BaseService {
for (String oa : StringUtils.split(officeAlias, ",")){
if (!dataScope.contains(r.getDataScope()) && StringUtils.isNotBlank(oa)){
sqlString.append(createScopeSql(r.getDataScope(),oa,user));
sqlString.append(createScopeSql(r.getDataScope(),oa,user,null));
dataScope.add(r.getDataScope());
}
}
@@ -84,7 +84,48 @@ public abstract class BaseService {
return "";
}
/**
* 数据范围过滤
* @param user 当前用户对象通过“entity.getCurrentUser()”获取
* @param configAlias 配置表别名,多个用","逗号隔开,传递空,忽略此参数
* @return 标准连接条件对象
*/
public static String configScopeFilter(SysUser user, String configAlias) {
StringBuilder sqlString = new StringBuilder();
// 进行权限过滤,多个角色权限范围之间为或者关系。
List<Integer> dataScope = Lists.newArrayList();
if (StringUtils.isBlank(user.getLoginId())){
return "";
}
// 超级管理员,跳过权限过滤
if (!user.isAdmin()){
boolean isDataScopeAll = isContainsDataScopeAll(user.getUserRoleList());
// 如果没有全部数据权限
if (!isDataScopeAll){
for (SysRole r : user.getUserRoleList()) {
for (String c : StringUtils.split(configAlias, ",")){
if (!dataScope.contains(r.getDataScope()) && StringUtils.isNotBlank(c)){
sqlString.append(createScopeSql(r.getDataScope(),"",user,c));
dataScope.add(r.getDataScope());
}
}
}
}else{
// 如果包含全部权限,则去掉之前添加的所有条件,并跳出循环。
sqlString = new StringBuilder();
}
}
if (StringUtils.isNotBlank(sqlString.toString())){
return " AND (" + sqlString.substring(4) + ")";
}
return "";
}
/**
@@ -108,10 +149,12 @@ public abstract class BaseService {
/**
* 过滤机构信息
* @param dataScope 数据范围1所有数据2所在公司及以下数据3所在公司数据4所在部门及以下数据5所在部门数据6所在单位及以下数据7所在单位数据
* @param dataScope 数据范围1所有数据2所在公司及以下数据3所在公司数据
* 4所在部门及以下数据5所在部门数据6所在单位及以下数据7所在单位数据;
* 8:操作员数据9审核员数据10审计员数据
* @return
*/
private static String createScopeSql(int dataScope,String officeAlias,SysUser user) {
private static String createScopeSql(int dataScope,String officeAlias,SysUser user,String configAlias) {
StringBuilder scopeSql = new StringBuilder(1024);
if (SysRole.DATA_SCOPE_COMPANY_AND_CHILD.equals(dataScope)){
@@ -139,6 +182,14 @@ public abstract class BaseService {
// 包括本公司下的部门 type=1:公司type=2单位 3.部门)
scopeSql.append(" OR (" + officeAlias + ".parent_id = '" + user.getEntity().getId() + "' AND " + officeAlias + ".type>1)");
}else if (SysRole.DATA_SCOPE_CREATOR.equals(dataScope)){
scopeSql.append(" OR " + configAlias + ".is_audit !=3");
}
else if (SysRole.DATA_SCOPE_AUDITOR.equals(dataScope)){
scopeSql.append(" OR " + configAlias + ".is_audit = 0 and " + configAlias + ".is_valid = 0");
}
else if (SysRole.DATA_SCOPE_SHOWER.equals(dataScope)){
scopeSql.append(" OR " + configAlias + ".is_audit = 1");
}
return scopeSql.toString();