add
This commit is contained in:
@ -1,10 +1,9 @@
|
|||||||
package com.qiaoba.api.system.entity.param;
|
package com.qiaoba.api.system.entity.param;
|
||||||
|
|
||||||
|
import com.qiaoba.common.base.entity.DataScopeParam;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户查询参数
|
* 用户查询参数
|
||||||
*
|
*
|
||||||
@ -14,9 +13,7 @@ import java.io.Serializable;
|
|||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class SysUserParam implements Serializable {
|
public class SysUserParam extends DataScopeParam {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
@ -33,4 +30,5 @@ public class SysUserParam implements Serializable {
|
|||||||
private String beginTime;
|
private String beginTime;
|
||||||
|
|
||||||
private String endTime;
|
private String endTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.qiaoba.auth.annotation.DataScope;
|
import com.qiaoba.auth.annotation.DataScope;
|
||||||
import com.qiaoba.auth.entity.LoginUser;
|
import com.qiaoba.auth.entity.LoginUser;
|
||||||
import com.qiaoba.auth.entity.dto.RoleDto;
|
import com.qiaoba.auth.entity.dto.RoleDto;
|
||||||
|
import com.qiaoba.auth.utils.SecurityUtil;
|
||||||
|
import com.qiaoba.common.base.entity.DataScopeParam;
|
||||||
import com.qiaoba.common.base.utils.DatabaseUtil;
|
import com.qiaoba.common.base.utils.DatabaseUtil;
|
||||||
import org.aspectj.lang.JoinPoint;
|
import org.aspectj.lang.JoinPoint;
|
||||||
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
@ -13,6 +15,7 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据过滤处理
|
* 数据过滤处理
|
||||||
@ -47,25 +50,32 @@ public class DataScopeAspect {
|
|||||||
*/
|
*/
|
||||||
public static final String DATA_SCOPE_SELF = "5";
|
public static final String DATA_SCOPE_SELF = "5";
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据权限过滤关键字
|
|
||||||
*/
|
|
||||||
public static final String DATA_SCOPE = "dataScope";
|
|
||||||
|
|
||||||
@Before("@annotation(controllerDataScope)")
|
@Before("@annotation(controllerDataScope)")
|
||||||
public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable {
|
public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable {
|
||||||
|
LoginUser loginUser = SecurityUtil.getLoginUser();
|
||||||
|
if (Objects.isNull(loginUser)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Object[] args = point.getArgs();
|
||||||
|
for (Object arg : args) {
|
||||||
|
if (Objects.nonNull(arg) && arg instanceof DataScopeParam) {
|
||||||
|
dataScopeFilter((DataScopeParam) arg, loginUser, controllerDataScope.deptAlias(), controllerDataScope.userAlias());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据范围过滤
|
* 数据范围过滤
|
||||||
*
|
*
|
||||||
* @param joinPoint 切点
|
* @param param 入参
|
||||||
* @param user 用户
|
* @param user 用户
|
||||||
* @param deptAlias 部门别名
|
* @param deptAlias 部门别名
|
||||||
* @param userAlias 用户别名
|
* @param userAlias 用户别名
|
||||||
*/
|
*/
|
||||||
public static void dataScopeFilter(JoinPoint joinPoint, LoginUser user, String deptAlias, String userAlias) {
|
public static void dataScopeFilter(DataScopeParam param, LoginUser user, String deptAlias, String userAlias) {
|
||||||
StringBuilder sqlString = new StringBuilder();
|
StringBuilder sqlString = new StringBuilder();
|
||||||
List<String> conditions = new ArrayList<String>();
|
List<String> conditions = new ArrayList<String>();
|
||||||
|
|
||||||
@ -104,6 +114,10 @@ public class DataScopeAspect {
|
|||||||
if (CollUtil.isEmpty(conditions)) {
|
if (CollUtil.isEmpty(conditions)) {
|
||||||
sqlString.append(StrUtil.format(" OR {}.dept_id = 0 ", deptAlias));
|
sqlString.append(StrUtil.format(" OR {}.dept_id = 0 ", deptAlias));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(sqlString)) {
|
||||||
|
param.setDataScope(" AND (" + sqlString.substring(4) + ")");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,4 +4,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
|||||||
com.qiaoba.auth.handler.LogoutHandler,\
|
com.qiaoba.auth.handler.LogoutHandler,\
|
||||||
com.qiaoba.auth.filters.JwtAuthenticationTokenFilter,\
|
com.qiaoba.auth.filters.JwtAuthenticationTokenFilter,\
|
||||||
com.qiaoba.auth.advice.SecurityExceptionAdvice,\
|
com.qiaoba.auth.advice.SecurityExceptionAdvice,\
|
||||||
|
com.qiaoba.auth.aspectj.DataScopeAspect,\
|
||||||
com.qiaoba.auth.config.SpringSecurityConfig
|
com.qiaoba.auth.config.SpringSecurityConfig
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.qiaoba.common.base.entity;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据权限
|
||||||
|
*
|
||||||
|
* @author ailanyin
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2023/5/23 9:36
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class DataScopeParam implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private String dataScope;
|
||||||
|
|
||||||
|
}
|
@ -12,6 +12,7 @@ import com.qiaoba.api.system.entity.SysUserRole;
|
|||||||
import com.qiaoba.api.system.entity.dto.SysUserDto;
|
import com.qiaoba.api.system.entity.dto.SysUserDto;
|
||||||
import com.qiaoba.api.system.entity.param.SysUserParam;
|
import com.qiaoba.api.system.entity.param.SysUserParam;
|
||||||
import com.qiaoba.api.system.entity.vo.SysUserVo;
|
import com.qiaoba.api.system.entity.vo.SysUserVo;
|
||||||
|
import com.qiaoba.auth.annotation.DataScope;
|
||||||
import com.qiaoba.auth.utils.SecurityUtil;
|
import com.qiaoba.auth.utils.SecurityUtil;
|
||||||
import com.qiaoba.common.base.exceptions.ServiceException;
|
import com.qiaoba.common.base.exceptions.ServiceException;
|
||||||
import com.qiaoba.common.database.entity.PageQuery;
|
import com.qiaoba.common.database.entity.PageQuery;
|
||||||
@ -102,6 +103,7 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@DataScope(userAlias = "u",deptAlias = "t2")
|
||||||
public TableDataInfo<SysUserVo> selectVoPageList(SysUserParam param, PageQuery pageQuery) {
|
public TableDataInfo<SysUserVo> selectVoPageList(SysUserParam param, PageQuery pageQuery) {
|
||||||
Page<SysUserVo> page = sysUserMapper.selectVoPageList(pageQuery.build(), param);
|
Page<SysUserVo> page = sysUserMapper.selectVoPageList(pageQuery.build(), param);
|
||||||
return TableDataInfo.build(page);
|
return TableDataInfo.build(page);
|
||||||
|
@ -65,6 +65,7 @@
|
|||||||
<if test="param.endTime != null and param.endTime != ''">
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
AND u.create_time <= #{param.endTime}
|
AND u.create_time <= #{param.endTime}
|
||||||
</if>
|
</if>
|
||||||
|
${param.dataScope}
|
||||||
</where>
|
</where>
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user