Просмотр исходного кода

添加一个文件需要调用方法激活后才可访问的方法

reghao 3 лет назад
Родитель
Сommit
72163581d6

+ 5 - 6
src/main/java/cn/reghao/dfs/store/config/WebConfig.java

@@ -1,8 +1,7 @@
 package cn.reghao.dfs.store.config;
 
-import cn.reghao.dfs.store.inerceptor.StaticFileInterceptor;
+import cn.reghao.dfs.store.inerceptor.FileAccessInterceptor;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@@ -13,10 +12,10 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp
  */
 @Configuration
 public class WebConfig extends WebMvcConfigurationSupport {
-    private final StaticFileInterceptor staticFileInterceptor;
+    private final FileAccessInterceptor fileAccessInterceptor;
 
-    public WebConfig(StaticFileInterceptor staticFileInterceptor) {
-        this.staticFileInterceptor = staticFileInterceptor;
+    public WebConfig(FileAccessInterceptor fileAccessInterceptor) {
+        this.fileAccessInterceptor = fileAccessInterceptor;
     }
 
     @Override
@@ -29,7 +28,7 @@ public class WebConfig extends WebMvcConfigurationSupport {
 
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(staticFileInterceptor);
+        registry.addInterceptor(fileAccessInterceptor);
     }
 
     // TODO gateway 中处理了跨域, 这里不再处理

+ 3 - 2
src/main/java/cn/reghao/dfs/store/db/mapper/FileUserMapper.java

@@ -12,9 +12,10 @@ import org.apache.ibatis.annotations.Param;
  */
 @Mapper
 public interface FileUserMapper extends BaseMapper<FileUser> {
+    void updateSetActivate(String uploadId);
+
+    boolean isActivate(String uploadId);
     FileUser findByFileAndUserId(@Param("fileId") String fileId, @Param("userId") String userId);
     FileUser findByUploadAndUserId(@Param("uploadId") String uploadId, @Param("userId") String userId);
     FileInfo findFileInfoByUploadId(String uploadId);
-    @Deprecated
-    String findUserIdByUsername(String userId);
 }

+ 3 - 1
src/main/java/cn/reghao/dfs/store/inerceptor/StaticFileInterceptor.java → src/main/java/cn/reghao/dfs/store/inerceptor/FileAccessInterceptor.java

@@ -10,12 +10,14 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 /**
+ * 拦截对文件的访问, 判断访问是否具有权限
+ *
  * @author reghao
  * @date 2021-12-30 12:19:07
  */
 @Slf4j
 @Component
-public class StaticFileInterceptor implements HandlerInterceptor {
+public class FileAccessInterceptor implements HandlerInterceptor {
     // TODO 添加防盗链处理
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

+ 8 - 2
src/main/java/cn/reghao/dfs/store/model/po/FileUser.java

@@ -1,7 +1,6 @@
 package cn.reghao.dfs.store.model.po;
 
 import cn.reghao.jutil.jdk.db.BaseObject;
-import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
@@ -10,10 +9,17 @@ import lombok.NoArgsConstructor;
  * @date 2022-04-26 20:04:50
  */
 @NoArgsConstructor
-@AllArgsConstructor
 @Getter
 public class FileUser extends BaseObject<Integer> {
     private String uploadId;
     private String fileId;
     private String uploadBy;
+    private Boolean activate;
+
+    public FileUser(String uploadId, String fileId, String uploadBy) {
+        this.uploadId = uploadId;
+        this.fileId = fileId;
+        this.uploadBy = uploadBy;
+        this.activate = false;
+    }
 }

+ 9 - 1
src/main/java/cn/reghao/dfs/store/rpc/MediaUrlServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.reghao.dfs.store.rpc;
 
 import cn.reghao.dfs.api.iface.MediaUrlService;
+import cn.reghao.dfs.store.db.mapper.FileUserMapper;
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
 import cn.reghao.dfs.api.dto.VideoUrlDto;
 import cn.reghao.jutil.jdk.security.DigestUtil;
@@ -21,9 +22,11 @@ import java.util.stream.Collectors;
 @Service
 public class MediaUrlServiceImpl implements MediaUrlService {
     private final VideoUrlMapper videoUrlMapper;
+    private final FileUserMapper fileUserMapper;
 
-    public MediaUrlServiceImpl(VideoUrlMapper videoUrlMapper) {
+    public MediaUrlServiceImpl(VideoUrlMapper videoUrlMapper, FileUserMapper fileUserMapper) {
         this.videoUrlMapper = videoUrlMapper;
+        this.fileUserMapper = fileUserMapper;
     }
 
     @Override
@@ -60,4 +63,9 @@ public class MediaUrlServiceImpl implements MediaUrlService {
         String encryptUrl = String.format("%s?t=%s&sign=%s", url, t, sign);
         return encryptUrl;
     }
+
+    @Override
+    public void activateFile(String uploadId) {
+        fileUserMapper.updateSetActivate(uploadId);
+    }
 }

+ 2 - 1
src/main/resources/mapper/FileInfoMapper.xml

@@ -10,7 +10,8 @@
     </insert>
 
     <update id="updateSetUploaded">
-        update file_info set update_time=now(),file_type=#{fileType},content_type=#{contentType},uploaded=1
+        update file_info
+        set update_time=now(),file_type=#{fileType},content_type=#{contentType},uploaded=1
         where file_id=#{fileId}
     </update>
 

+ 9 - 3
src/main/resources/mapper/FileUserMapper.xml

@@ -9,6 +9,15 @@
         (#{id},#{deleted},#{createTime},#{updateTime},#{uploadId},#{uploadBy},#{fileId})
     </insert>
 
+    <update id="updateSetActivate">
+        update file_user
+        set update_time=now(),activate=1
+        where upload_id=#{uploadId}
+    </update>
+
+    <select id="isActivate" resultType="java.lang.Boolean">
+        select activate from file_user where upload_id=#{uploadId}
+    </select>
     <select id="findByFileAndUserId" resultType="cn.reghao.dfs.store.model.po.FileUser">
         select * from file_user
         where file_id=#{fileId} and upload_by=#{userId}
@@ -22,7 +31,4 @@
         inner join file_user fileUser
         on fileUser.file_id=fileInfo.file_id and fileUser.upload_id=#{uploadId}
     </select>
-    <select id="findUserIdByUsername" resultType="java.lang.String">
-        select user_id from user_account where username=#{username}
-    </select>
 </mapper>