add
This commit is contained in:
@ -1,10 +1,9 @@
|
||||
package com.qiaoba.api.system.entity.param;
|
||||
|
||||
import com.qiaoba.common.base.entity.DataScopeParam;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 用户查询参数
|
||||
*
|
||||
@ -14,9 +13,7 @@ import java.io.Serializable;
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class SysUserParam implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
public class SysUserParam extends DataScopeParam {
|
||||
|
||||
private String username;
|
||||
|
||||
@ -33,4 +30,5 @@ public class SysUserParam implements Serializable {
|
||||
private String beginTime;
|
||||
|
||||
private String endTime;
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.qiaoba.auth.annotation.DataScope;
|
||||
import com.qiaoba.auth.entity.LoginUser;
|
||||
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 org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
@ -13,6 +15,7 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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 = "dataScope";
|
||||
|
||||
@Before("@annotation(controllerDataScope)")
|
||||
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 deptAlias 部门别名
|
||||
* @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();
|
||||
List<String> conditions = new ArrayList<String>();
|
||||
|
||||
@ -104,6 +114,10 @@ public class DataScopeAspect {
|
||||
if (CollUtil.isEmpty(conditions)) {
|
||||
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.filters.JwtAuthenticationTokenFilter,\
|
||||
com.qiaoba.auth.advice.SecurityExceptionAdvice,\
|
||||
com.qiaoba.auth.aspectj.DataScopeAspect,\
|
||||
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.param.SysUserParam;
|
||||
import com.qiaoba.api.system.entity.vo.SysUserVo;
|
||||
import com.qiaoba.auth.annotation.DataScope;
|
||||
import com.qiaoba.auth.utils.SecurityUtil;
|
||||
import com.qiaoba.common.base.exceptions.ServiceException;
|
||||
import com.qiaoba.common.database.entity.PageQuery;
|
||||
@ -102,6 +103,7 @@ public class SysUserServiceImpl implements SysUserService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@DataScope(userAlias = "u",deptAlias = "t2")
|
||||
public TableDataInfo<SysUserVo> selectVoPageList(SysUserParam param, PageQuery pageQuery) {
|
||||
Page<SysUserVo> page = sysUserMapper.selectVoPageList(pageQuery.build(), param);
|
||||
return TableDataInfo.build(page);
|
||||
|
@ -65,6 +65,7 @@
|
||||
<if test="param.endTime != null and param.endTime != ''">
|
||||
AND u.create_time <= #{param.endTime}
|
||||
</if>
|
||||
${param.dataScope}
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
|
Reference in New Issue
Block a user