From 8d1a28ec6f83c17d330fee824811ea00a4c5bf86 Mon Sep 17 00:00:00 2001 From: 4670101279 Date: Fri, 16 Jun 2023 17:20:41 +0800 Subject: [PATCH] youhua --- .../com/ruoyi/api/app/DapingController.java | 18 +- .../com/ruoyi/api/mapper/DapingMapper.java | 10 +- .../com/ruoyi/api/service/DapingService.java | 9 +- .../api/service/impl/DapingServiceImpl.java | 31 ++-- .../resources/mapper/api/DapingMapper.xml | 22 ++- .../camera/controller/CameraController.java | 1 + .../service/impl/CameraServiceImpl.java | 5 +- .../impl/WaterPhotoInfoServiceImpl.java | 3 + .../controller/ScStationInfoController.java | 4 +- .../service/IScStationInfoService.java | 2 +- .../impl/ScStationInfoServiceImpl.java | 17 +- .../resources/mapper/camera/CameraMapper.xml | 7 +- .../mapper/camera/WaterPhotoInfoMapper.xml | 2 + .../scStationInfo/ScStationInfoMapper.xml | 3 +- .../common/annotation/DeptDataScope.java | 24 +++ .../aspectj/DeptDataScopeAspect.java | 166 ++++++++++++++++++ .../framework/config/SecurityConfig.java | 2 +- 17 files changed, 281 insertions(+), 45 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/DeptDataScope.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DeptDataScopeAspect.java diff --git a/ruoyi-api/src/main/java/com/ruoyi/api/app/DapingController.java b/ruoyi-api/src/main/java/com/ruoyi/api/app/DapingController.java index 73c707f..e2c8d29 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/api/app/DapingController.java +++ b/ruoyi-api/src/main/java/com/ruoyi/api/app/DapingController.java @@ -6,9 +6,11 @@ import com.ruoyi.common.core.page.R; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Map; /** * 大屏的接口 @@ -22,13 +24,13 @@ public class DapingController { private DapingService dapingService; @RequestMapping("/station/info") - public List getStationInfo(){ - return dapingService.getStationInfo(); + public R getStationInfo(@RequestParam Map params){ + return dapingService.getStationInfo(params); } @RequestMapping("/station/waterLevel") - public List getStationWaterLevel(){ - return dapingService.getStationWaterLevel(); + public R getStationWaterLevel(@RequestParam Map params){ + return dapingService.getStationWaterLevel(params); } @RequestMapping("/station/waterLevelTrend") @@ -37,13 +39,13 @@ public class DapingController { } @RequestMapping("/station/status") - public R getStationByStatus(){ - return dapingService.getStationByStatus(); + public R getStationByStatus(@RequestParam Map params){ + return dapingService.getStationByStatus(params); } @RequestMapping("/station/count") - public R getCount(){ - return dapingService.getCount(); + public R getCount(@RequestParam Map params){ + return dapingService.getCount(params); } } diff --git a/ruoyi-api/src/main/java/com/ruoyi/api/mapper/DapingMapper.java b/ruoyi-api/src/main/java/com/ruoyi/api/mapper/DapingMapper.java index 1a3b09b..68288fe 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/api/mapper/DapingMapper.java +++ b/ruoyi-api/src/main/java/com/ruoyi/api/mapper/DapingMapper.java @@ -17,13 +17,13 @@ public interface DapingMapper extends BaseMapper { * 大屏查询查询站点信息 * @return */ - List selectStationInfo(); + List selectStationInfo(@Param("params") Map params); /** * 实时水位 * @return */ - List selectWaterLevel(); + List selectWaterLevel(@Param("params") Map params); /** * 水位趋势 @@ -41,13 +41,13 @@ public interface DapingMapper extends BaseMapper { * 在线 * @return */ - Map selectStationByOnlineStatus(); + Map selectStationByOnlineStatus(@Param("params") Map params); /** * 不在线 * @return */ - Map selectStationByOfflineStatus(); + Map selectStationByOfflineStatus(@Param("params") Map params); /** * 查询所有的区域 @@ -63,5 +63,5 @@ public interface DapingMapper extends BaseMapper { * @param aleaId * @return */ - Integer selectZXAndLXCount(@Param("status") Integer status,@Param("aleaId") Integer aleaId); + Integer selectZXAndLXCount(@Param("params") Map params); } diff --git a/ruoyi-api/src/main/java/com/ruoyi/api/service/DapingService.java b/ruoyi-api/src/main/java/com/ruoyi/api/service/DapingService.java index c5ff551..51cbd76 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/api/service/DapingService.java +++ b/ruoyi-api/src/main/java/com/ruoyi/api/service/DapingService.java @@ -5,19 +5,20 @@ import com.ruoyi.code.camera.domain.WaterPhotoInfo; import com.ruoyi.common.core.page.R; import java.util.List; +import java.util.Map; public interface DapingService extends IService { /** * 大屏查询查询站点信息 * @return */ - List getStationInfo(); + R getStationInfo(Map params); /** * 实时水位 * @return */ - List getStationWaterLevel(); + R getStationWaterLevel(Map params); /** * 水位趋势 * @return @@ -28,10 +29,10 @@ public interface DapingService extends IService { * 查询状态 * @return */ - R getStationByStatus(); + R getStationByStatus(Map params); /** * 水位计分布 */ - R getCount(); + R getCount(Map params); } diff --git a/ruoyi-api/src/main/java/com/ruoyi/api/service/impl/DapingServiceImpl.java b/ruoyi-api/src/main/java/com/ruoyi/api/service/impl/DapingServiceImpl.java index 36c3296..c56d982 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/api/service/impl/DapingServiceImpl.java +++ b/ruoyi-api/src/main/java/com/ruoyi/api/service/impl/DapingServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.api.mapper.DapingMapper; import com.ruoyi.api.service.DapingService; import com.ruoyi.code.camera.domain.WaterPhotoInfo; +import com.ruoyi.common.annotation.DeptDataScope; import com.ruoyi.common.core.page.R; import com.ruoyi.common.utils.StringUtils; import org.springframework.stereotype.Service; @@ -21,8 +22,9 @@ public class DapingServiceImpl extends ServiceImpl * @return */ @Override - public List getStationInfo() { - return baseMapper.selectStationInfo().stream().filter(waterPhotoInfo -> { + @DeptDataScope(deptAlias="s") + public R getStationInfo(Map params) { + List list = baseMapper.selectStationInfo(params).stream().filter(waterPhotoInfo -> { String imgName = waterPhotoInfo.getImgName(); if(StringUtils.isNotBlank(imgName)) { String img = imgName.replace("\\", "/"); @@ -30,6 +32,8 @@ public class DapingServiceImpl extends ServiceImpl } return true; }).collect(Collectors.toList()); + + return R.ok().put("data",list); } /** @@ -37,8 +41,10 @@ public class DapingServiceImpl extends ServiceImpl * @return */ @Override - public List getStationWaterLevel() { - return baseMapper.selectWaterLevel(); + @DeptDataScope(deptAlias="s") + public R getStationWaterLevel(Map params) { + List list = baseMapper.selectWaterLevel(params); + return R.ok().put("data",list); } /** * 水位趋势 @@ -87,9 +93,10 @@ public class DapingServiceImpl extends ServiceImpl } @Override - public R getStationByStatus() { - Map map1 = baseMapper.selectStationByOnlineStatus(); - Map map2 = baseMapper.selectStationByOfflineStatus(); + @DeptDataScope(deptAlias="s") + public R getStationByStatus(Map params) { + Map map1 = baseMapper.selectStationByOnlineStatus(params); + Map map2 = baseMapper.selectStationByOfflineStatus(params); List> resultList = new ArrayList<>(); resultList.add(map1); resultList.add(map2); @@ -97,7 +104,8 @@ public class DapingServiceImpl extends ServiceImpl } @Override - public R getCount() { + @DeptDataScope(deptAlias="s") + public R getCount(Map params) { List> map = baseMapper.selectAllAlea(); Map result = new HashMap<>(); // 区域名称 @@ -109,9 +117,12 @@ public class DapingServiceImpl extends ServiceImpl for (Map m : map) { Integer aleaId = (Integer)m.get("alea_id"); // 查询各个区域在线的设备 - Integer zxCount = baseMapper.selectZXAndLXCount(1,aleaId); + params.put("aleaId",aleaId); + params.put("status",1); + Integer zxCount = baseMapper.selectZXAndLXCount(params); // 查询各个区域离线的设备 - Integer lxCount = baseMapper.selectZXAndLXCount(0,aleaId); + params.put("status",0); + Integer lxCount = baseMapper.selectZXAndLXCount(params); zx.add(zxCount); lx.add(lxCount); stnms.add((String) m.get("alea_name")); diff --git a/ruoyi-api/src/main/resources/mapper/api/DapingMapper.xml b/ruoyi-api/src/main/resources/mapper/api/DapingMapper.xml index f217657..ec52450 100644 --- a/ruoyi-api/src/main/resources/mapper/api/DapingMapper.xml +++ b/ruoyi-api/src/main/resources/mapper/api/DapingMapper.xml @@ -17,6 +17,7 @@ sc_station_info s inner join sc_water_current_data c on c.stnm_id = s.id where s.del_flag='0' + ${params.dataScope} diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraController.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraController.java index e016cff..5435f08 100644 --- a/ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraController.java +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraController.java @@ -6,6 +6,7 @@ import com.ruoyi.code.camera.domain.Camera; import com.ruoyi.code.camera.domain.CameraParams; import com.ruoyi.code.camera.domain.LogInfo; import com.ruoyi.code.camera.service.ICameraService; +import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.page.R; diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraServiceImpl.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraServiceImpl.java index cd9da7f..58f0ee9 100644 --- a/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraServiceImpl.java +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraServiceImpl.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.code.camera.domain.CameraBrand; import com.ruoyi.code.camera.service.ICameraBrandService; import com.ruoyi.code.sctaationinfo.domain.ScStationInfo; +import com.ruoyi.common.annotation.DataScope; +import com.ruoyi.common.annotation.DeptDataScope; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.page.R; import com.ruoyi.common.utils.Query; @@ -40,14 +42,15 @@ public class CameraServiceImpl extends ServiceImpl impleme @Autowired private ICameraBrandService iCameraBrandService; + @Override + @DeptDataScope(deptAlias="s") public R queryPage(Map params) { IPage page = baseMapper.queryPage( new Query().getPage(params), params ); - return R.ok().put("count", page.getTotal()).put("data", page.getRecords()); } diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/WaterPhotoInfoServiceImpl.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/WaterPhotoInfoServiceImpl.java index 40b6c6b..9df444f 100644 --- a/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/WaterPhotoInfoServiceImpl.java +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/WaterPhotoInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.code.camera.mapper.WaterPhotoInfoMapper; import com.ruoyi.code.camera.service.IWaterPhotoInfoService; import com.ruoyi.code.sctaationinfo.domain.ScStationInfo; import com.ruoyi.code.sctaationinfo.service.IScStationInfoService; +import com.ruoyi.common.annotation.DeptDataScope; import com.ruoyi.common.core.page.R; import com.ruoyi.common.exception.RYException; import com.ruoyi.common.utils.DateUtils; @@ -34,6 +35,7 @@ public class WaterPhotoInfoServiceImpl extends ServiceImpl params) { String startTime = (String) params.get("startTime"); String endTime = (String) params.get("endTime"); @@ -56,6 +58,7 @@ public class WaterPhotoInfoServiceImpl extends ServiceImpl params) { IPage page = baseMapper.selectWaterCurrentDataList( new Query().getPage(params), diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/controller/ScStationInfoController.java b/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/controller/ScStationInfoController.java index 7f37e00..a73eb9b 100644 --- a/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/controller/ScStationInfoController.java +++ b/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/controller/ScStationInfoController.java @@ -40,8 +40,8 @@ public class ScStationInfoController extends BaseController } @RequestMapping("/listAll") - public R listAll(){ - return scStationInfoService.listAll(); + public R listAll(@RequestParam Map params){ + return scStationInfoService.listAll(params); } /** diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/IScStationInfoService.java b/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/IScStationInfoService.java index 9c72308..da1cdf6 100644 --- a/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/IScStationInfoService.java +++ b/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/IScStationInfoService.java @@ -19,5 +19,5 @@ public interface IScStationInfoService extends IService */ R queryPage(Map params); - R listAll(); + R listAll(Map params); } diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/impl/ScStationInfoServiceImpl.java b/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/impl/ScStationInfoServiceImpl.java index f9c4745..a8a2c5b 100644 --- a/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/impl/ScStationInfoServiceImpl.java +++ b/ruoyi-code/src/main/java/com/ruoyi/code/sctaationinfo/service/impl/ScStationInfoServiceImpl.java @@ -1,15 +1,19 @@ package com.ruoyi.code.sctaationinfo.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.code.sctaationinfo.domain.ScStationInfo; import com.ruoyi.code.sctaationinfo.mapper.ScStationInfoMapper; import com.ruoyi.code.sctaationinfo.service.IScStationInfoService; +import com.ruoyi.common.annotation.DeptDataScope; import com.ruoyi.common.core.page.R; import com.ruoyi.common.utils.Query; +import com.ruoyi.common.utils.StringUtils; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; @@ -23,6 +27,7 @@ import java.util.Map; public class ScStationInfoServiceImpl extends ServiceImpl implements IScStationInfoService { @Override + @DeptDataScope(deptAlias="a") public R queryPage(Map params) { IPage page = baseMapper.queryPage( new Query().getPage(params), @@ -33,10 +38,14 @@ public class ScStationInfoServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.select(ScStationInfo::getStnm,ScStationInfo::getId); - return R.ok().put("data",baseMapper.selectList(wrapper)); + @DeptDataScope + public R listAll(Map params) { + String sql = (String)params.get("dataScope"); + List list = list( + new QueryWrapper() + .eq("del_flag","0") + .last(StringUtils.isNotBlank(sql),sql)); + return R.ok().put("data",list); } diff --git a/ruoyi-code/src/main/resources/mapper/camera/CameraMapper.xml b/ruoyi-code/src/main/resources/mapper/camera/CameraMapper.xml index 2c8d8e6..48c19e5 100644 --- a/ruoyi-code/src/main/resources/mapper/camera/CameraMapper.xml +++ b/ruoyi-code/src/main/resources/mapper/camera/CameraMapper.xml @@ -22,16 +22,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/ruoyi-code/src/main/resources/mapper/camera/WaterPhotoInfoMapper.xml b/ruoyi-code/src/main/resources/mapper/camera/WaterPhotoInfoMapper.xml index ce78bed..f81ce74 100644 --- a/ruoyi-code/src/main/resources/mapper/camera/WaterPhotoInfoMapper.xml +++ b/ruoyi-code/src/main/resources/mapper/camera/WaterPhotoInfoMapper.xml @@ -18,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and c.name like concat('%',#{params.stcd},'%') and w.tm >= #{params.startTime } and w.tm <= #{params.endTime} + ${params.dataScope} order by w.tm desc @@ -37,6 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" s.del_flag='0' and c.del_flag='0' and s.stnm like concat('%',#{params.stnm},'%') and c.name like concat('%',#{params.name},'%') + ${params.dataScope} select a.* , b.name camera_name from sc_station_info a left join camera b on a.camera_sn = b.devsn - where a.del_flag='0' + where a.del_flag='0' and b.del_flag='0' and a.stnm like concat('%',#{params.stnm},'%') and b.name like concat('%',#{params.cameraName},'%') + ${params.dataScope} order by a.id desc diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DeptDataScope.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DeptDataScope.java new file mode 100644 index 0000000..0e3bab7 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DeptDataScope.java @@ -0,0 +1,24 @@ +package com.ruoyi.common.annotation; + +import java.lang.annotation.*; + +/** + * 数据权限过滤注解 + * + * @author ruoyi + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface DeptDataScope +{ + /** + * 部门表的别名 + */ + public String deptAlias() default ""; + + /** + * 用户表的别名 + */ + public String userAlias() default ""; +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DeptDataScopeAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DeptDataScopeAspect.java new file mode 100644 index 0000000..ea3b80a --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DeptDataScopeAspect.java @@ -0,0 +1,166 @@ +package com.ruoyi.framework.aspectj; + +import com.ruoyi.common.annotation.DataScope; +import com.ruoyi.common.annotation.DeptDataScope; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.domain.entity.SysRole; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 数据过滤处理 + * + * @author ruoyi + */ +@Aspect +@Component +public class DeptDataScopeAspect +{ + /** + * 全部数据权限 + */ + public static final String DATA_SCOPE_ALL = "1"; + + /** + * 自定数据权限 + */ + public static final String DATA_SCOPE_CUSTOM = "2"; + + /** + * 部门数据权限 + */ + public static final String DATA_SCOPE_DEPT = "3"; + + /** + * 部门及以下数据权限 + */ + public static final String DATA_SCOPE_DEPT_AND_CHILD = "4"; + + /** + * 仅本人数据权限 + */ + public static final String DATA_SCOPE_SELF = "5"; + + /** + * 数据权限过滤关键字 + */ + public static final String DATA_SCOPE = "dataScope"; + + @Before("@annotation(controllerDataScope)") + public void doBefore(JoinPoint point, DeptDataScope controllerDataScope) throws Throwable + { + clearDataScope(point); + handleDataScope(point, controllerDataScope); + } + + protected void handleDataScope(final JoinPoint joinPoint, DeptDataScope controllerDataScope) + { + // 获取当前的用户 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (StringUtils.isNotNull(loginUser)) + { + SysUser currentUser = loginUser.getUser(); + // 如果是超级管理员,则不过滤数据 + if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) + { + dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), + controllerDataScope.userAlias()); + } + } + } + + /** + * 数据范围过滤 + * + * @param joinPoint 切点 + * @param user 用户 + * @param userAlias 别名 + */ + public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias) + { + StringBuilder sqlString = new StringBuilder(); + + + for (SysRole role : user.getRoles()) + { + String dataScope = role.getDataScope(); + if (DATA_SCOPE_ALL.equals(dataScope)) + { + sqlString = new StringBuilder(); + break; + } + else if (DATA_SCOPE_CUSTOM.equals(dataScope)) + { + if(StringUtils.isNotBlank(deptAlias)){ + sqlString.append(StringUtils.format( + " OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, + role.getRoleId())); + }else{ + sqlString.append(StringUtils.format( + " OR dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", role.getRoleId())); + } + } + else if (DATA_SCOPE_DEPT.equals(dataScope)) + { + if(StringUtils.isNotBlank(deptAlias)){ + sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + }else{ + sqlString.append(StringUtils.format(" OR dept_id = {} ", user.getDeptId())); + } + } + else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) + { + if(StringUtils.isNotBlank(deptAlias)){ + sqlString.append(StringUtils.format( + " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", + deptAlias, user.getDeptId(), user.getDeptId())); + }else{ + sqlString.append(StringUtils.format( + " OR dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", + user.getDeptId(), user.getDeptId())); + } + } + else if (DATA_SCOPE_SELF.equals(dataScope)) + { + if (StringUtils.isNotBlank(userAlias)) + { + sqlString.append(StringUtils.format(" OR {}.user_id = {} ", userAlias, user.getUserId())); + } + else + { + // 数据权限为仅本人且没有userAlias别名不查询任何数据 + sqlString.append(" OR 1=0 "); + } + } + } + + if (StringUtils.isNotBlank(sqlString.toString())) + { + Map params = (Map) joinPoint.getArgs()[0]; + if (params != null) + { + params.put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); + } + } + } + + /** + * 拼接权限sql前先清空params.dataScope参数防止注入 + */ + private void clearDataScope(final JoinPoint joinPoint) + { + Map params = (Map) joinPoint.getArgs()[0]; + if (params != null) + { + params.put(DATA_SCOPE, ""); + } + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 0a60c11..5a31b13 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -112,7 +112,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter .antMatchers("/webjars/**").anonymous() .antMatchers("/*/api-docs").anonymous() .antMatchers("/druid/**").anonymous() - .antMatchers("/api/**").anonymous() +// .antMatchers("/api/**").anonymous() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated() .and()