瀏覽代碼

修改素材详情权限

tsurumure 2 周之前
父節點
當前提交
3ca21b7ea8
共有 1 個文件被更改,包括 20 次插入10 次删除
  1. 20 10
      src/main/java/com/backendsys/modules/material/service/impl/MaterialServiceImpl.java

+ 20 - 10
src/main/java/com/backendsys/modules/material/service/impl/MaterialServiceImpl.java

@@ -11,6 +11,8 @@ import com.backendsys.modules.material.entity.Material;
 import com.backendsys.modules.material.entity.MaterialCategory;
 import com.backendsys.modules.material.entity.MaterialTag;
 import com.backendsys.modules.material.service.MaterialService;
+import com.backendsys.modules.system.dao.SysUserRolePermissionRelationDao;
+import com.backendsys.modules.system.dao.SysUserRoleRelationDao;
 import com.backendsys.modules.system.entity.SysUserRole;
 import com.backendsys.modules.system.service.SysUserRoleService;
 import com.backendsys.modules.upload.service.SysFileService;
@@ -25,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -48,6 +51,10 @@ public class MaterialServiceImpl implements MaterialService {
     private SysFileService sysFileService;
     @Autowired
     private SysUserRoleService sysUserRoleService;
+    @Autowired
+    private SysUserRoleRelationDao sysUserRoleRelationDao;
+    @Autowired
+    private SysUserRolePermissionRelationDao sysUserRolePermissionRelationDao;
 
     private List<MaterialTag> getMaterialTagByIds(String tag_ids) {
         if (StrUtil.isEmpty(tag_ids)) return null;
@@ -100,17 +107,20 @@ public class MaterialServiceImpl implements MaterialService {
         List<MaterialTag> materialTagList = getMaterialTagByIds(detail.getTag_ids());
         detail.setTag_list(materialTagList);
 
-        // [DB] 查询当前用户角色,如果是素材游客,则不显示图片
-        List<SysUserRole> role_list = sysUserRoleService.selectUserRoleByUserId(SecurityUtil.getUserId());
-        AtomicReference<Boolean> hasPermission = new AtomicReference<>(false);
-        role_list.stream().forEach(role -> {
-            if ("MATERIAL_USER".equals(role.getRole_sign()) || "MATERIAL_ADMIN".equals(role.getRole_sign())) {
-                hasPermission.set(true);
-            }
-        });
+        // 权限控制:
+
+        // [DB] 获得当前用户的角色关系(集合)
+        List<Long> userRoleIds = sysUserRoleRelationDao.selectUserRoleIds(SecurityUtil.getUserId());
 
-        // 如果当前用户没有权限,则不显示图片
-        if (!hasPermission.get()) {
+        // - ('20.1.5', '20.1', '下载素材', null)
+        List<String> rolePermissionIds = new ArrayList<>();
+        if (userRoleIds.size() > 0) {
+            // [DB] 获得当前用户角色的权限 (集合)
+            rolePermissionIds = sysUserRolePermissionRelationDao.selectUserRolePermissionIdsByRoleIds(userRoleIds);
+            rolePermissionIds = rolePermissionIds.stream().distinct().collect(Collectors.toList());
+        }
+        // 判断是否具备权限
+        if (!rolePermissionIds.contains("20.1.5")) {
             detail.setFile_url("Unauthorized");
             detail.setPan_baidu_url("Unauthorized");
         }