Pārlūkot izejas kodu

场景编辑权限逻辑改造

dsx 2 gadi atpakaļ
vecāks
revīzija
6216578193

+ 13 - 20
src/main/java/com/fdkankan/scene/Interceptor/CheckPermitAspect.java

@@ -53,6 +53,8 @@ public class CheckPermitAspect {
 	private IUserService userService;
 	@Autowired
 	private ICameraDetailService cameraDetailService;
+	@Autowired
+	private ISysRoleService sysRoleService;
 
 
 	@Pointcut("@annotation(com.fdkankan.scene.annotation.CheckPermit)")
@@ -90,7 +92,12 @@ public class CheckPermitAspect {
 			throw new BusinessException(ErrorCode.FAILURE_CODE_5033);
 		}
 
-		//如果上面场景用户与当前用户不匹配,需要校验当前用户是否拥有某些角色,从而可以访问此场景
+		//判断场景的userid是否与当前登录用户id相等,如果相等,则有编辑权限
+		if(Objects.nonNull(scenePlus.getUserId()) && scenePlus.getUserId().equals(user.getId())){
+			return;
+		}
+
+		//如果上面场景用户与当前用户不匹配,需要校验当前用户是否拥有管理员角色,管理员角色可以访问任何场景
 		List<UserRole> list = userRoleService.list(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getId()));
 		Set<Long> roleIdSet = null;
 		if(CollUtil.isNotEmpty(list)){
@@ -99,30 +106,16 @@ public class CheckPermitAspect {
 		if(CollUtil.isEmpty(roleIdSet)){
 			throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
 		}
-		//平台管理员拥有最高权限
-		if(roleIdSet.contains(5L)){
-			return;
-		}
 
-		//判断是否有公司管理者权限,有则放开
-		if(roleIdSet.contains(6L)){
-			//当前登录用户user
-			User currentUser = userService.getById(user.getId());
-			CameraDetail cameraDetail = cameraDetailService.findByCameraId(scenePlus.getCameraId());
-			if(Objects.isNull(currentUser) || Objects.isNull(currentUser.getCompanyId())
-					|| Objects.isNull(cameraDetail) || Objects.isNull(cameraDetail.getCompanyId())
-					|| !currentUser.getCompanyId().equals(cameraDetail.getCompanyId())){
-				throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
-			}else{
-				return;
-			}
+		List<SysRole> validRoleList = sysRoleService.getValidRoleByRoleIds(roleIdSet);
+		if(CollUtil.isEmpty(validRoleList)){
+			throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
 		}
 
-		//校验场景用户是否与当前登录用户相同,相同则跳出
-		if(Objects.isNull(scenePlus.getUserId()) || !scenePlus.getUserId().equals(user.getId())){
+		boolean isAdmin = validRoleList.stream().anyMatch(sysRole -> sysRole.getRoleType().contains("admin"));
+		if(!isAdmin){
 			throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
 		}
-
 	}
 
 }

+ 21 - 0
src/main/java/com/fdkankan/scene/controller/SysRoleController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.scene.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-31
+ */
+@RestController
+@RequestMapping("/scene/sysRole")
+public class SysRoleController {
+
+}
+

+ 75 - 0
src/main/java/com/fdkankan/scene/entity/SysRole.java

@@ -0,0 +1,75 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-31
+ */
+@Getter
+@Setter
+@TableName("sys_role")
+public class SysRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 角色表
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 角色名称
+     */
+    @TableField("role_name")
+    private String roleName;
+
+    /**
+     * 角色类型
+     */
+    @TableField("role_type")
+    private String roleType;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+    /**
+     * 创建者id
+     */
+    @TableField("create_user_id")
+    private Integer createUserId;
+
+    /**
+     * 是否禁用 0禁用 1启用
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 角色说明
+     */
+    @TableField("description")
+    private String description;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 3 - 3
src/main/java/com/fdkankan/scene/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"scene", getTables(new String[]{
-                "t_user_role","t_role"
+                "sys_role"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -46,8 +46,8 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://120.77.76.141:13306/4dkankan_v4",
-            "root","JK20220120%JIK")
+        FastAutoGenerator.create("jdbc:mysql://192.168.0.211:13306/4dkankan_v4",
+            "root","JK20220120JIK")
                 .globalConfig(builder -> {
                     builder.author("")               //作者
                             .outputDir(path+"\\src\\main\\java")    //输出路径(写到java目录)

+ 18 - 0
src/main/java/com/fdkankan/scene/mapper/ISysRoleMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.SysRole;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-31
+ */
+@Mapper
+public interface ISysRoleMapper extends BaseMapper<SysRole> {
+
+}

+ 21 - 0
src/main/java/com/fdkankan/scene/service/ISysRoleService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.entity.SysRole;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-31
+ */
+public interface ISysRoleService extends IService<SysRole> {
+
+    List<SysRole> getValidRoleByRoleIds(Set<Long> roleIds);
+
+}

+ 29 - 0
src/main/java/com/fdkankan/scene/service/impl/SysRoleServiceImpl.java

@@ -0,0 +1,29 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.CommonStatus;
+import com.fdkankan.scene.entity.SysRole;
+import com.fdkankan.scene.mapper.ISysRoleMapper;
+import com.fdkankan.scene.service.ISysRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-31
+ */
+@Service
+public class SysRoleServiceImpl extends ServiceImpl<ISysRoleMapper, SysRole> implements ISysRoleService {
+
+    @Override
+    public List<SysRole> getValidRoleByRoleIds(Set<Long> roleIds) {
+        return this.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getStatus, CommonStatus.YES.code()).in(SysRole::getId, roleIds));
+    }
+}

+ 5 - 0
src/main/resources/mapper/scene/SysRoleMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.scene.mapper.ISysRoleMapper">
+
+</mapper>