Bläddra i källkod

新增 删除单个分镜(补充权限)

tsurumure 1 månad sedan
förälder
incheckning
b52a8cb219

+ 14 - 2
src/main/java/com/backendsys/modules/crt/service/impl/CrtDramaProjectStoryboardServiceImpl.java

@@ -247,8 +247,20 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
 
         LambdaQueryWrapper<CrtDramaProjectStoryboard> wrapperStoryboard = new LambdaQueryWrapper<>();
         wrapperStoryboard.eq(CrtDramaProjectStoryboard::getDrama_project_storyboard_id, drama_project_storyboard_id);
-        Boolean is_exist = crtDramaProjectStoryboardDao.exists(wrapperStoryboard);
-        if (!is_exist) throw new CustException("分镜不存在");
+        CrtDramaProjectStoryboard storyboardDetail = crtDramaProjectStoryboardDao.selectOne(wrapperStoryboard);
+        if (storyboardDetail == null) throw new CustException("分镜不存在");
+
+        // 是否 [分镜] 拥有者,权限:
+        // - 编辑自己的 (需 36.2.6.1 权限)
+        // - 编辑自己及他人的 (需要 36.2.6 权限或超级管理员)
+        Boolean isOwner = storyboardDetail.getUser_id() == SecurityUtil.getUserId();
+        if (isOwner && !securityUtil.hasPermissions(Arrays.asList("36.2.6", "36.2.6.1"), MatchType.OR)) {
+            throw new CustException(SecurityEnum.NOAUTH);
+        }
+        if (!isOwner && !securityUtil.hasPermission("36.2.6")) {
+            throw new CustException(SecurityEnum.NOAUTH);
+        }
+        // ---------------------------------------------------------------------------
 
         // [DB] 删除分镜
         crtDramaProjectStoryboardDao.deleteById(drama_project_storyboard_id);