Przeglądaj źródła

StoreService 添加一个 getByPrefix 方法

reghao 1 rok temu
rodzic
commit
33d2c27d00

+ 0 - 1
oss-api/src/main/java/cn/reghao/oss/api/dto/FileInfo.java

@@ -1,6 +1,5 @@
 package cn.reghao.oss.api.dto;
 
-import lombok.AllArgsConstructor;
 import lombok.Getter;
 
 import java.io.Serializable;

+ 2 - 1
oss-api/src/main/java/cn/reghao/oss/api/iface/StoreService.java

@@ -1,5 +1,6 @@
 package cn.reghao.oss.api.iface;
 
+import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.oss.api.dto.FileInfo;
 import cn.reghao.oss.api.dto.ObjectInfo;
 import cn.reghao.oss.api.dto.disk.DiskVolume;
@@ -34,5 +35,5 @@ public interface StoreService {
     ConvertedImageInfo getWebpInfo(String objectId);
     AudioInfo getAudioInfo(String objectId);
 
-    List<FileInfo> getFiles(String pid, int pageSize, String nextObjectId);
+    PageList<FileInfo> getByPrefix(String objectName, int pn, int ps);
 }

+ 4 - 0
oss-store/src/main/java/cn/reghao/oss/store/db/mapper/FileMetaMapper.java

@@ -1,5 +1,6 @@
 package cn.reghao.oss.store.db.mapper;
 
+import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.oss.api.dto.FileInfo;
 import cn.reghao.oss.store.model.po.FileMeta;
 import cn.reghao.oss.api.dto.ObjectMeta;
@@ -27,6 +28,9 @@ public interface FileMetaMapper extends BaseMapper<FileMeta> {
     ObjectMeta findObjectMetaById(String objectName);
     List<FileInfo> findByPid(@Param("pid") String pid, @Param("pageSize") int pageSize, @Param("nextId") String nextId);
 
+    int countByPid(String pid);
+    List<FileInfo> findPidByPage(Page page, @Param("pid") String pid);
+
     /******************************************************************************************************************/
     List<FileMeta> findAll0(@Param("objectId") String objectId, @Param("max") Integer max, @Param("regex") String regex);
     List<FileMeta> findAll2(@Param("objectId") String objectId, @Param("prefix") String prefix,

+ 16 - 0
oss-store/src/main/java/cn/reghao/oss/store/db/repository/ObjectRepository.java

@@ -1,5 +1,6 @@
 package cn.reghao.oss.store.db.repository;
 
+import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.oss.api.dto.FileInfo;
 import cn.reghao.oss.store.db.mapper.DataBlockMapper;
 import cn.reghao.oss.store.db.mapper.FileMetaMapper;
@@ -102,7 +103,22 @@ public class ObjectRepository {
         return fileMetaMapper.findObjectMetaById(objectId);
     }
 
+    public int countByPid(String pid) {
+        return fileMetaMapper.countByPid(pid);
+    }
+
+    public List<FileInfo> getObjectsByPage(String pid, int pn, int ps) {
+        Page page = new Page(pn, ps);
+        List<FileInfo> list = fileMetaMapper.findPidByPage(page, pid);
+        return list;
+    }
+
     public List<FileInfo> getFiles(String pid, int pageSize, String nextObjectId) {
+        List<FileInfo> list = fileMetaMapper.findByPid(pid, pageSize, nextObjectId);
+        if (!list.isEmpty()) {
+            list.get(list.size()-1);
+        }
+
         return fileMetaMapper.findByPid(pid, pageSize, nextObjectId);
     }
 

+ 18 - 2
oss-store/src/main/java/cn/reghao/oss/store/rpc/StoreServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.reghao.oss.store.rpc;
 
+import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.security.RandomString;
 import cn.reghao.oss.api.constant.ChannelAction;
 import cn.reghao.oss.api.constant.ObjectScope;
@@ -193,8 +194,7 @@ public class StoreServiceImpl implements StoreService {
         return null;
     }
 
-    @Override
-    public List<FileInfo> getFiles(String pid, int pageSize, String nextObjectId) {
+    List<FileInfo> getFiles(String pid, int pageSize, String nextObjectId) {
         String objectId = pid;
         if (!objectId.isBlank()) {
             FileMeta fileMeta = objectRepository.getByObjectName(pid);
@@ -207,6 +207,22 @@ public class StoreServiceImpl implements StoreService {
             objectId = "0";
         }
 
+        objectRepository.getObjectsByPage(pid, 1, 10);
         return objectRepository.getFiles(objectId, pageSize, nextObjectId);
     }
+
+    @Override
+    public PageList<FileInfo> getByPrefix(String objectName, int pn, int ps) {
+        String pid = "0";
+        if (!objectName.isBlank()) {
+            FileMeta fileMeta = objectRepository.getByObjectName(objectName);
+            if (fileMeta != null) {
+                pid = fileMeta.getObjectId();
+            }
+        }
+
+        int total = objectRepository.countByPid(pid);
+        List<FileInfo> list = objectRepository.getObjectsByPage(pid, pn, ps);
+        return PageList.pageList(pn, ps, total, list);
+    }
 }

+ 11 - 6
oss-store/src/main/resources/mapper/FileMetaMapper.xml

@@ -148,6 +148,17 @@
         limit #{pageSize}
     </select>
 
+    <select id="countByPid" resultType="java.lang.Integer">
+        select count(*)
+        from file_meta
+        where deleted=0 and pid=#{pid}
+    </select>
+    <select id="findPidByPage" resultType="cn.reghao.oss.api.dto.FileInfo">
+        select size,object_name,object_id,file_type,filename,update_time
+        from file_meta
+        where deleted=0 and pid=#{pid}
+    </select>
+
     <!--*************************************************************************************************************-->
     <update id="updateFilename">
         update file_meta
@@ -160,12 +171,6 @@
         where object_id=#{objectId}
     </update>
 
-    <select id="countByPid" resultType="java.lang.Integer">
-        select count(*)
-        from file_meta
-        where pid=#{pid}
-    </select>
-
     <select id="countDeletedFiles" resultType="java.lang.Integer">
         select count(*)
         from file_meta