Explorar el Código

更新对象访问权限

reghao hace 2 años
padre
commit
153fe94af9

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/AudioFileMapper.java

@@ -10,5 +10,5 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface AudioFileMapper extends BaseMapper<AudioFile> {
-    AudioFile findByFileId(String audioFileId);
+    AudioFile findByAudioFileId(String audioFileId);
 }

+ 1 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/FileMetaMapper.java

@@ -31,6 +31,7 @@ public interface FileMetaMapper extends BaseMapper<FileMeta> {
     List<ObjectMeta> findObjectMetaByPage(Page page);
 
     /******************************************************************************************************************/
+    void updateSetAcl(@Param("objectId") String objectId, @Param("acl") int acl);
     void updateFilename(@Param("objectId") String objectId, @Param("filename") String filename);
     void updateParent(@Param("objectId") String objectId, @Param("pid") String pid);
     void updateSetDelete(String objectId);

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/db/repository/MediaRepository.java

@@ -66,6 +66,6 @@ public class MediaRepository {
     }
 
     public AudioFile findAudioFile(String audioFileId) {
-        return audioFileMapper.findByFileId(audioFileId);
+        return audioFileMapper.findByAudioFileId(audioFileId);
     }
 }

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/model/po/FileMeta.java

@@ -25,9 +25,9 @@ public class FileMeta extends BaseObject<Integer> {
     private Long size;
     private Integer fileType;
     private String contentType;
+    private int acl;
     private Long uploadBy;
     private Boolean diskFile;
-    private int acl;
 
     // 目录对象
     public FileMeta(String objectName, String objectId, String filename, String pid, int acl) {

+ 57 - 3
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/PermissionServiceImpl.java

@@ -1,10 +1,19 @@
 package cn.reghao.dfs.store.rpc;
 
+import cn.reghao.dfs.store.db.mapper.AudioFileMapper;
+import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
+import cn.reghao.dfs.store.db.mapper.ImageFileMapper;
+import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
+import cn.reghao.dfs.store.model.po.AudioFile;
+import cn.reghao.dfs.store.model.po.ImageFile;
+import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.oss.api.constant.ObjectACL;
 import cn.reghao.oss.api.iface.PermissionService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author reghao
  * @date 2023-06-02 10:07:42
@@ -12,25 +21,70 @@ import org.springframework.stereotype.Service;
 @DubboService
 @Service
 public class PermissionServiceImpl implements PermissionService {
+    private final ImageFileMapper imageFileMapper;
+    private final AudioFileMapper audioFileMapper;
+    private final VideoUrlMapper videoUrlMapper;
+    private final FileMetaMapper fileMetaMapper;
+
+    public PermissionServiceImpl(ImageFileMapper imageFileMapper, AudioFileMapper audioFileMapper,
+                                 VideoUrlMapper videoUrlMapper, FileMetaMapper fileMetaMapper) {
+        this.imageFileMapper = imageFileMapper;
+        this.audioFileMapper = audioFileMapper;
+        this.videoUrlMapper = videoUrlMapper;
+        this.fileMetaMapper = fileMetaMapper;
+    }
+
     @Override
     public void setDirPermission(String prefix, int acl) {
-
     }
 
     @Override
     public void getDirPermission(String prefix) {
         for (ObjectACL acl : ObjectACL.values()) {
-
         }
     }
 
     @Override
     public void setObjectPermission(String objectName, int acl) {
+    }
+
+    public void setImagePermission(String imageFileId, int acl) {
+        fileMetaMapper.updateSetAcl(imageFileId, acl);
+
+        ImageFile imageFile = imageFileMapper.findByImageFileId(imageFileId);
+        String jpegObjectId = imageFile.getJpegObjectId();
+        fileMetaMapper.updateSetAcl(jpegObjectId, acl);
+
+        String webpObjectId = imageFile.getWebpObjectId();
+        if (webpObjectId != null) {
+            fileMetaMapper.updateSetAcl(webpObjectId, acl);
+        }
+
+        String thumbnailObjectId = imageFile.getThumbnailObjectId();
+        if (thumbnailObjectId != null) {
+            fileMetaMapper.updateSetAcl(thumbnailObjectId, acl);
+        }
+    }
+
+    public void setAudioPermission(String audioFileId, int acl) {
+        fileMetaMapper.updateSetAcl(audioFileId, acl);
 
+        AudioFile audioFile = audioFileMapper.findByAudioFileId(audioFileId);
+        String objectId = audioFile.getObjectId();
+        fileMetaMapper.updateSetAcl(objectId, acl);
+    }
+
+    public void setVideoPermission(String videoFileId, int acl) {
+        fileMetaMapper.updateSetAcl(videoFileId, acl);
+
+        List<VideoUrl> list = videoUrlMapper.findByVideoFileId(videoFileId);
+        for (VideoUrl videoUrl : list) {
+            String objectId = videoUrl.getObjectId();
+            fileMetaMapper.updateSetAcl(objectId, acl);
+        }
     }
 
     @Override
     public void getObjectPermission(String objectName) {
-
     }
 }

+ 1 - 1
dfs-store/src/main/resources/mapper/AudioFileMapper.xml

@@ -12,7 +12,7 @@
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.AudioFile">
         select * from audio_file
     </select>
-    <select id="findByFileId" resultType="cn.reghao.dfs.store.model.po.AudioFile">
+    <select id="findByAudioFileId" resultType="cn.reghao.dfs.store.model.po.AudioFile">
         select * from audio_file
         where audio_file_id=#{audioFileId}
     </select>

+ 7 - 2
dfs-store/src/main/resources/mapper/FileMetaMapper.xml

@@ -17,6 +17,11 @@
         </foreach>
     </insert>
 
+    <update id="updateSetAcl">
+        update file_meta
+        set update_time=now() and acl=#{acl}
+        where object_id=#{objectId}
+    </update>
     <update id="update">
         update file_meta
         set object_name=#{objectName}
@@ -108,12 +113,12 @@
     <!--*************************************************************************************************************-->
     <update id="updateFilename">
         update file_meta
-        set filename=#{filename}
+        set update_time=now() and filename=#{filename}
         where object_id=#{objectId}
     </update>
     <update id="updateParent">
         update file_meta
-        set pid=#{pid}
+        set update_time=now() and pid=#{pid}
         where object_id=#{objectId}
     </update>
     <update id="updateSetDelete">