Browse Source

权限管理模块-新增数据权限获取、修改对应功能

songxinlu 3 years ago
parent
commit
d366f9f83c

+ 1 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/DataAuthMapper.java

@@ -23,5 +23,6 @@ public interface DataAuthMapper extends BaseMapper<DataAuth> {
      * @MethodName getDataAuthById
      */
     List<ServiceRoleDataAuthDetailDTO> getDataAuthById(@Param("serviceDataAuthVO") ServiceDataAuthVO serviceDataAuthVO);
+    List<ServiceRoleDataAuthDetailDTO> getOneServiceRoleDataAuthDetail(@Param("serviceID") Long serviceID,@Param("dataDetailID") Long dataDetailID);
 }
 

+ 37 - 7
dblayer-mbg/src/main/resources/mapper/DataAuthMapper.xml

@@ -11,18 +11,14 @@
             r.`name` roleName,
             sd.data_auth_id dataAuthId,
             d.auth_name dataAuthName,
-            d.`status`,
-            detail.data_type dataType,
-            detail.detail_type detailType,
-            detail.detail_id detailId
-        FROM
+            d.`status`
+            FROM
             sys_role r,
             sys_service s,
             sys_role_service_data_auth rsd,
             sys_data_auth d,
             sys_service_data_auth sd
-        LEFT JOIN sys_data_auth_detail detail ON sd.id = detail.service_data_auth_id
-        WHERE
+            WHERE
             r.id = rsd.role_id
             AND r.`status` = '1'
             AND d.`status` = '1'
@@ -44,4 +40,38 @@
             AND d.id = #{serviceDataAuthVO.dataAuthVO.id}
         </if>
     </select>
+
+
+    <select id="getOneServiceRoleDataAuthDetail"  resultType="com.lantone.common.dto.ServiceRoleDataAuthDetailDTO">
+        SELECT DISTINCT
+            detail.id detail,
+            detail.data_type dataType,
+            detail.detail_type detailType,
+            detail.detail_id detailId
+            FROM
+            sys_role r,
+            sys_service s,
+            sys_role_service_data_auth rsd,
+            sys_data_auth d,
+            sys_service_data_auth sd
+            LEFT JOIN sys_data_auth_detail detail ON sd.id = detail.service_data_auth_id
+            WHERE
+            r.id = rsd.role_id
+            AND r.`status` = '1'
+            AND d.`status` = '1'
+            AND s.id = sd.service_id
+            AND rsd.service_data_auth_id = sd.id
+            AND sd.data_auth_id = d.id
+            AND r.is_deleted = 'N'
+            AND s.is_deleted = 'N'
+            AND rsd.is_deleted = 'N'
+            AND d.is_deleted = 'N'
+            AND sd.is_deleted = 'N'
+        <if test="serviceID != null ">
+            AND d.id = #{dataDetailID}
+        </if>
+        <if test="dataDetailID != null ">
+            AND s.id = #{serviceID}
+        </if>
+    </select>
 </mapper>

+ 14 - 1
gateway-service/src/main/resources/bootstrap.yml

@@ -84,4 +84,17 @@ secure:
       - "/actuator/**"
       - "/user-auth/oauth/token"
       - "/user-auth/rsa/publicKey"
-      - "/security-center/userAdmin/login"
+      - "/security-center/userAdmin/login"
+      - "/sys/user/getJwt"
+      - "/sys/user/getJwtNoPass"
+      - "/sys/user/refreshJwt"
+      - "/sys/user/checkToken"
+      - "/sys/dictionaryInfo/getDictionary"
+      - "/oauth/token"
+      - "/oauth/check_token"
+      - "/cache/clear"
+      - "/data/auth/getDataAuthById"
+      - "/data/auth/addAuth"
+      - "/data/auth/updateAuth"
+      - "/data/auth/disableAuth"
+      - "/data/auth/deleteAuth"

+ 3 - 2
security-center/src/main/java/com/lantone/security/enums/CRUDEnum.java

@@ -5,7 +5,7 @@ import lombok.Setter;
 
 /**
  * @ClassName: CRUDEnum
- * @Description: 增删改查注解
+ * @Description: 增删改查禁用注解
  * @Author songxl
  * @Date 2021/7/21
  * @Version 1.0
@@ -14,7 +14,8 @@ public enum CRUDEnum implements KeyedNamed {
     ADD(1, "添加"),
     UPDATE(2, "修改"),
     DELETE(3, "删除"),
-    SELECT(4, "查询");
+    SELECT(4, "查询"),
+    DISBALE(5, "禁用");
 
     @Setter
     private int key;

+ 88 - 39
security-center/src/main/java/com/lantone/security/facade/DataAuthHandleFacade.java

@@ -42,7 +42,9 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -79,26 +81,43 @@ public class DataAuthHandleFacade extends DataAuthServiceImpl {
      */
     @Transactional
     public boolean CRUDOperation(ServiceDataAuthVO serviceDataAuthVO) {
-        //1.入参校验
-        inputParamCheck(serviceDataAuthVO);
-        //2.执行操作
-        if (CRUDEnum.ADD.getKey() == serviceDataAuthVO.getType()) {
-            try {
+        try {
+            //1.入参校验
+            inputParamCheck(serviceDataAuthVO);
+            //2.执行操作
+            if (CRUDEnum.ADD.getKey() == serviceDataAuthVO.getType()) {                 //添加
                 return addDataAuth(serviceDataAuthVO);
-            } catch (Exception e) {
-                e.printStackTrace();
-                Asserts.fail(e.toString());
+            } else if (CRUDEnum.UPDATE.getKey() == serviceDataAuthVO.getType()) {       //修改
+                return updateDataAuth(serviceDataAuthVO);
+            } else if (CRUDEnum.DELETE.getKey() == serviceDataAuthVO.getType()) {       //删除
+                return deleteDataAuth(serviceDataAuthVO);
+            } else if (CRUDEnum.DISBALE.getKey() == serviceDataAuthVO.getType()) {       //启用禁用
+                return disableDataAuth(serviceDataAuthVO);
+            } else {
+                Asserts.fail("操作码错误");
             }
-        } else if (CRUDEnum.UPDATE.getKey() == serviceDataAuthVO.getType()) {
-            return updateDataAuth(serviceDataAuthVO);
-        } else if (CRUDEnum.DELETE.getKey() == serviceDataAuthVO.getType()) {
-            return deleteDataAuth(serviceDataAuthVO);
-        } else {
-            Asserts.fail("操作码错误");
+        } catch (Exception e) {
+            e.printStackTrace();
+            Asserts.fail(e.toString());
         }
         return false;
     }
 
+    /**
+     * @Author songxl
+     * @Description禁用启用数据权限
+     * @Date 2021/7/23
+     * @Param [serviceDataAuthVO]
+     * @Return boolean
+     * @MethodName disableDataAuth
+     */
+    private boolean disableDataAuth(ServiceDataAuthVO serviceDataAuthVO) {
+        return dataAuthFacade.update(new UpdateWrapper<DataAuth>()
+                .set("status", serviceDataAuthVO.getDataAuthVO().getStatus())
+                .eq("id", serviceDataAuthVO.getDataAuthVO().getId())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+    }
+
     /**
      * @Author songxl
      * @Description修改数据权限
@@ -119,25 +138,14 @@ public class DataAuthHandleFacade extends DataAuthServiceImpl {
             List<Long> serviceDataAuthIDS = serviceDataAuthFacade.list(new QueryWrapper<ServiceDataAuth>()
                     .eq("data_auth_id", serviceDataAuthVO.getDataAuthVO().getId())
                     .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(ServiceDataAuth::getId).collect(Collectors.toList());
-
+            //3.通过serviceDataAuthIDS 删除sys_role_service_data_auth和sys_service_data_auth和sys_data_auth_detail 对应关系
             if (ListUtil.isNotEmpty(serviceDataAuthIDS)) {
-                //3.获取该权限关联的角色id
-                //                List<Long> roleIDS = roleServiceDataAuthFacade.list(new QueryWrapper<RoleServiceDataAuth>()
-                //                        .in("service_data_auth_id", serviceDataAuthIDS)
-                //                        .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(RoleServiceDataAuth::getRoleId).collect(Collectors.toList());
-
-                //4.通过serviceDataAuthIDS 删除sys_role_service_data_auth和sys_service_data_auth和sys_data_auth_detail 对应关系
-                if (deleteServiceDataAuth(serviceDataAuthIDS)) {
-                    //5.插入新建数据权限与系统的关系
-                    saveServiceDataAuth(serviceDataAuthVO, serviceDataAuthVO.getDataAuthVO().getId());
-                } else {
+                if (!deleteServiceDataAuth(serviceDataAuthIDS)) {
                     Asserts.fail("数据权限与系统关系删除失败");
                 }
-
-
             }
-
-
+            //4.插入新建数据权限与系统的关系
+            saveServiceDataAuth(serviceDataAuthVO, serviceDataAuthVO.getDataAuthVO().getId());
         } else {
             Asserts.fail("数据权限修改失败");
         }
@@ -180,8 +188,27 @@ public class DataAuthHandleFacade extends DataAuthServiceImpl {
      * @MethodName deleteDataAuth
      */
     private boolean deleteDataAuth(ServiceDataAuthVO serviceDataAuthVO) {
-
-        return false;
+        //1.删除数据权限
+        boolean dataAuthdelete = dataAuthFacade.remove(new UpdateWrapper<DataAuth>()
+                .eq("id", serviceDataAuthVO.getDataAuthVO().getId())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+        if (dataAuthdelete) {
+            //2.获取该权限 系统与数据权限信息关联表(sys_service_data_auth)的关联id
+            List<Long> serviceDataAuthIDS = serviceDataAuthFacade.list(new QueryWrapper<ServiceDataAuth>()
+                    .eq("data_auth_id", serviceDataAuthVO.getDataAuthVO().getId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(ServiceDataAuth::getId).collect(Collectors.toList());
+            //3.通过serviceDataAuthIDS 删除sys_role_service_data_auth和sys_service_data_auth和sys_data_auth_detail 对应关系
+            if (ListUtil.isNotEmpty(serviceDataAuthIDS)) {
+                if (deleteServiceDataAuth(serviceDataAuthIDS)) {
+                    return true;
+                } else {
+                    Asserts.fail("数据权限与系统关系删除失败");
+                }
+            }
+        } else {
+            Asserts.fail("数据权限删除失败");
+        }
+        return true;
     }
 
     /**
@@ -314,6 +341,19 @@ public class DataAuthHandleFacade extends DataAuthServiceImpl {
                 }
                 break;
             case 3:
+                if (serviceDataAuthVO.getDataAuthVO().getId() == null) {
+                    Asserts.fail("数据权限ID为空");
+                }
+                break;
+            case 4:
+                if (serviceDataAuthVO.getDataAuthVO().getId() == null) {
+                    Asserts.fail("数据权限ID为空");
+                }
+                break;
+            case 5:
+                if (serviceDataAuthVO.getDataAuthVO().getId() == null) {
+                    Asserts.fail("数据权限ID为空");
+                }
                 break;
             default:
 
@@ -331,6 +371,9 @@ public class DataAuthHandleFacade extends DataAuthServiceImpl {
      * @MethodName getDataAuthById
      */
     public DataAuthDTO getDataAuthById(ServiceDataAuthVO serviceDataAuthVO) {
+        if (serviceDataAuthVO.getDataAuthVO().getId() == null) {
+            Asserts.fail("数据权限ID为空");
+        }
         DataAuthDTO dataAuthDTO = new DataAuthDTO();
         List<ServiceRoleDataAuthDetailDTO> serviceRoleDataAuthDetailDTOS = this.baseMapper.getDataAuthById(serviceDataAuthVO);
         if (ListUtil.isNotEmpty(serviceRoleDataAuthDetailDTOS)) {
@@ -347,11 +390,12 @@ public class DataAuthHandleFacade extends DataAuthServiceImpl {
                 sysServiceDTO.setId(id);
                 sysServiceDTO.setName(ServiceEnum.getName(id.intValue()));
                 //4.1添加数据权限详情列表
-                List<ServiceRoleDataAuthDetailDTO> oneServiceRoleDataAuthDetailDTOS = serviceRoleDataAuthDetailDTOS.stream()
-                        .filter(serviceRoleDataAuthDetailDTO -> serviceRoleDataAuthDetailDTO.getServiceId() == id).collect(Collectors.toList());
+//                List<ServiceRoleDataAuthDetailDTO> oneServiceRoleDataAuthDetailDTOS = serviceRoleDataAuthDetailDTOS.stream()
+//                        .filter(serviceRoleDataAuthDetailDTO -> serviceRoleDataAuthDetailDTO.getServiceId() == id).collect(Collectors.toList());
+                List<ServiceRoleDataAuthDetailDTO> oneServiceRoleDataAuthDetailDTOS = this.baseMapper.getOneServiceRoleDataAuthDetail(id,serviceDataAuthVO.getDataAuthVO().getId());
 
                 List<DataAuthDetailDTO> dataAuthDetailDTOS = new ArrayList<>();
-                //4.2.1是否获取当前组织-科室信息
+                //4.2.1是否获取当前组织-科室信息 dataAuthDetailDTOS去重
                 oneServiceRoleDataAuthDetailDTOS.stream().forEach(serviceRoleDataAuthDetailDTO -> {
                     DataAuthDetailDTO dataAuthDetailDTO = new DataAuthDetailDTO();
                     dataAuthDetailDTO.setId(serviceRoleDataAuthDetailDTO.getDetail());
@@ -368,13 +412,18 @@ public class DataAuthHandleFacade extends DataAuthServiceImpl {
                 });
                 sysServiceDTO.setDataAuthDetailDTOS(dataAuthDetailDTOS);
 
-
                 //5.添加角色列表
                 List<RoleDTO> roleDTOS = new ArrayList<>();
-                RoleDTO role = new RoleDTO();
-                role.setId(serviceRoleDataAuthDetailDTOS.get(0).getRoleId());
-                role.setName(serviceRoleDataAuthDetailDTOS.get(0).getRoleName());
-                roleDTOS.add(role);
+                Map<Long,String> roleMap = new HashMap<>();
+                serviceRoleDataAuthDetailDTOS.stream().forEach(serviceRoleDataAuthDetailDTO -> {
+                    roleMap.put(serviceRoleDataAuthDetailDTO.getRoleId(),serviceRoleDataAuthDetailDTO.getRoleName());
+                });
+                for (Long roleID:roleMap.keySet()){
+                    RoleDTO role = new RoleDTO();
+                    role.setId(roleID);
+                    role.setName(roleMap.get(roleID));
+                    roleDTOS.add(role);
+                }
                 sysServiceDTO.setRoles(roleDTOS);
                 sysServiceDTOS.add(sysServiceDTO);
             });

+ 14 - 4
security-center/src/main/java/com/lantone/security/web/DataAuthController.java

@@ -31,7 +31,7 @@ public class DataAuthController {
     @ApiOperation(value = "新增数据权限[by:songxl]",
             notes = "dataAuthVO:数据权限对象,必填<br>" +
                     "roles:角色列表,必填<br>" +
-                    "type:操作码 1:新增;2:修改 ;3:删除")
+                    "type:操作码 1:新增;2:修改 ;3:删除;5:启用禁用")
     @PostMapping("/addAuth")
     @ApiIgnore
     @Transactional
@@ -42,18 +42,28 @@ public class DataAuthController {
     @ApiOperation(value = "修改数据权限[by:songxl]",
             notes = "dataAuthVO:数据权限对象,必填<br>" +
                     "roles:角色列表,必填<br>" +
-                    "type:操作码 1:新增;2:修改;3:删除")
+                    "type:操作码 1:新增;2:修改;3:删除;5:启用禁用")
     @PostMapping("/updateAuth")
     @ApiIgnore
     @Transactional
     public CommonResult<Boolean> updateAuth(@RequestBody ServiceDataAuthVO serviceDataAuthVO) {
         return CommonResult.success(dataAuthHandleFacade.CRUDOperation(serviceDataAuthVO));
     }
+    @ApiOperation(value = "启用禁用数据权限[by:songxl]",
+            notes = "dataAuthVO:数据权限对象,必填<br>" +
+                    "roles:角色列表,必填<br>" +
+                    "type:操作码 1:新增;2:修改;3:删除;5:启用禁用")
+    @PostMapping("/disableAuth")
+    @ApiIgnore
+    @Transactional
+    public CommonResult<Boolean> disableAuth(@RequestBody ServiceDataAuthVO serviceDataAuthVO) {
+        return CommonResult.success(dataAuthHandleFacade.CRUDOperation(serviceDataAuthVO));
+    }
 
     @ApiOperation(value = "删除数据权限[by:songxl]",
             notes = "dataAuthVO:数据权限对象,必填<br>" +
                     "roles:角色列表,必填<br>" +
-                    "type:操作码 1:新增;2:修改;3:删除")
+                    "type:操作码 1:新增;2:修改;3:删除;5:启用禁用")
     @PostMapping("/deleteAuth")
     @ApiIgnore
     @Transactional
@@ -64,7 +74,7 @@ public class DataAuthController {
     @ApiOperation(value = "通过数据权限id和角色id获取数据权限详情[by:songxl]",
             notes = "dataAuthVO:数据权限对象,必填<br>" +
                     "roles:角色列表,必填<br>" +
-                    "type:操作码 1:新增;2:修改;3:删除")
+                    "type:操作码 1:新增;2:修改;3:删除;5:启用禁用")
     @PostMapping("/getDataAuthById")
     @ApiIgnore
     public CommonResult<DataAuthDTO> getDataAuthById(@RequestBody ServiceDataAuthVO serviceDataAuthVO) {