Ver Fonte

完善角色功能

赵冬冬 há 4 anos atrás
pai
commit
64b1fbd926

+ 2 - 0
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/dao/UmsRoleDao.java

@@ -23,4 +23,6 @@ public interface UmsRoleDao {
      * 根据角色ID获取资源
      */
     List<UmsResource> getResourceListByRoleId(@Param("roleId") Long roleId);
+
+    Long deleteCheck(@Param("ids") List<Long> ids);
 }

+ 7 - 2
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/service/impl/UmsAdminServiceImpl.java

@@ -229,12 +229,17 @@ public class UmsAdminServiceImpl implements UmsAdminService {
         adminCacheService.delAdmin(id);
         return count;
     }
-
+    @Autowired
+    private UmsAdminRoleRelationMapper umsAdminRoleRelationMapper;
     @Override
     public int delete(Long id) {
         adminCacheService.delAdmin(id);
-        int count = adminMapper.deleteByPrimaryKey(id);
         adminCacheService.delResourceList(id);
+        int count = adminMapper.deleteByPrimaryKey(id);
+        UmsAdminRoleRelationExample umsAdmin=new UmsAdminRoleRelationExample();
+        UmsAdminRoleRelationExample.Criteria criteria = umsAdmin.createCriteria();
+        criteria.andAdminIdEqualTo(id);
+        umsAdminRoleRelationMapper.deleteByExample(umsAdmin);
         return count;
     }
 

+ 28 - 0
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/service/impl/UmsRoleServiceImpl.java

@@ -11,6 +11,7 @@ import com.hwrj.cloud.admin.model.*;
 import com.hwrj.cloud.admin.service.UmsAdminCacheService;
 import com.hwrj.cloud.admin.service.UmsRoleService;
 import com.hwrj.cloud.admin.util.CurrUserUtil;
+import com.hwrj.cloud.common.exception.GlobalException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -52,16 +53,43 @@ public class UmsRoleServiceImpl implements UmsRoleService {
         role.setId(id);
         return roleMapper.updateByPrimaryKeySelective(role);
     }
+    @Autowired
+    private UmsRoleMenuRelationMapper umsRoleMenuRelationMapper;
+    @Autowired
+    private UmsRoleResourceRelationMapper umsRoleResourceRelationMapper;
 
     @Override
     public int delete(List<Long> ids) {
+        Long i = roleDao.deleteCheck(ids);
+        if(i>0){
+            throw new GlobalException("该角色被使用,无法删除!");
+        }
         UmsRoleExample example = new UmsRoleExample();
         example.createCriteria().andIdIn(ids);
         int count = roleMapper.deleteByExample(example);
         adminCacheService.delResourceListByRoleIds(ids);
+        //删除菜单
+        deleteMenu(ids);
+        //删除资源
+        deleteResource(ids);
+
         return count;
     }
 
+    private void deleteResource(List<Long> ids) {
+        UmsRoleResourceRelationExample example=new UmsRoleResourceRelationExample();
+        UmsRoleResourceRelationExample.Criteria criteria = example.createCriteria();
+        criteria.andRoleIdIn(ids);
+        umsRoleResourceRelationMapper.deleteByExample(example);
+    }
+
+    private void deleteMenu(List<Long> ids) {
+        UmsRoleMenuRelationExample newExample=new UmsRoleMenuRelationExample();
+        UmsRoleMenuRelationExample.Criteria criteria = newExample.createCriteria();
+        criteria.andRoleIdIn(ids);
+        umsRoleMenuRelationMapper.deleteByExample(newExample);
+    }
+
     @Override
     public List<UmsPermission> getPermissionList(Long roleId) {
         return rolePermissionRelationDao.getPermissionList(roleId);

+ 15 - 0
forest-admin/admin-server/src/main/resources/dao/UmsRoleDao.xml

@@ -2,6 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hwrj.cloud.admin.dao.UmsRoleDao">
 
+
     <select id="getMenuList" resultType="com.hwrj.cloud.admin.model.UmsMenu">
         SELECT
             m.id id,
@@ -64,4 +65,18 @@
         GROUP BY
             r.id
     </select>
+
+    <select id="deleteCheck" resultType="java.lang.Long">
+        SELECT
+            COUNT(0)
+        FROM
+            ums_admin_role_relation a
+        WHERE
+         1 = 1
+         AND a.role_id in
+         <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+         </foreach>
+    </select>
+
 </mapper>