reghao 2 лет назад
Родитель
Сommit
2e4c426fc5

+ 2 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/ImageFileMapper.java

@@ -10,5 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface ImageFileMapper extends BaseMapper<ImageFile> {
+    void deleteByImageFileId(String imageFileId);
+
     ImageFile findByImageFileId(String imageFileId);
 }

+ 2 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/ImageUrlMapper.java

@@ -12,5 +12,7 @@ import java.util.List;
  */
 @Mapper
 public interface ImageUrlMapper extends BaseMapper<ImageUrl> {
+    void deleteByImageFileId(String imageFileId);
+
     List<ImageUrl> findByImageFileId(String imageFileId);
 }

+ 27 - 12
dfs-store/src/main/java/cn/reghao/dfs/store/db/repository/ImageRepository.java

@@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -23,10 +24,6 @@ public class ImageRepository {
         this.imageUrlMapper = imageUrlMapper;
     }
 
-    public void saveImageFile(ImageFile imageFile) {
-        imageFileMapper.save(imageFile);
-    }
-
     @Transactional(rollbackFor = Exception.class)
     public void saveImageFile(ImageFile imageFile, List<ImageUrl> imageUrls) {
         imageFileMapper.save(imageFile);
@@ -35,6 +32,28 @@ public class ImageRepository {
         }
     }
 
+    public List<String> deleteImageFile(String imageFileId) {
+        List<String> objectIds = imageUrlMapper.findByImageFileId(imageFileId).stream()
+                .map(ImageUrl::getObjectId)
+                .collect(Collectors.toList());
+        deleteImageFile0(imageFileId);
+        return objectIds;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteImageFile0(String imageFileId) {
+        imageUrlMapper.deleteByImageFileId(imageFileId);
+        imageFileMapper.deleteByImageFileId(imageFileId);
+    }
+
+    public ImageFile getImageFile(String imageFileId) {
+        return imageFileMapper.findByImageFileId(imageFileId);
+    }
+
+    public List<ImageUrl> getImageUrls(String imageFileId) {
+        return imageUrlMapper.findByImageFileId(imageFileId);
+    }
+
     public List<ImageUrlDto> getImageUrls(List<String> imageFileIds) {
         List<ImageUrlDto> list = new ArrayList<>();
         for (String imageFileId : imageFileIds) {
@@ -45,12 +64,12 @@ public class ImageRepository {
         return list;
     }
 
-    public List<ImageUrl> getImageUrls(String imageFileId) {
-        return imageUrlMapper.findByImageFileId(imageFileId);
-    }
-
     public ImageUrlDto getImageUrl(String imageFileId) {
         List<ImageUrl> list = imageUrlMapper.findByImageFileId(imageFileId);
+        if (list.isEmpty()) {
+            return null;
+        }
+
         ImageUrlDto imageUrlDto = new ImageUrlDto(imageFileId);
         for (ImageUrl imageUrl : list) {
             String format = imageUrl.getFormat();
@@ -64,8 +83,4 @@ public class ImageRepository {
 
         return imageUrlDto;
     }
-
-    public ImageFile getImageFile(String imageFileId) {
-        return imageFileMapper.findByImageFileId(imageFileId);
-    }
 }

+ 21 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/media/ImageFileServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.reghao.dfs.store.rpc.media;
 
 import cn.reghao.dfs.store.db.repository.ImageRepository;
+import cn.reghao.dfs.store.db.repository.ObjectRepository;
 import cn.reghao.oss.api.dto.media.ImageUrlDto;
 import cn.reghao.oss.api.iface.media.ImageFileService;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -16,9 +17,28 @@ import java.util.List;
 @Service
 public class ImageFileServiceImpl implements ImageFileService {
     private final ImageRepository imageRepository;
+    private final ObjectRepository objectRepository;
 
-    public ImageFileServiceImpl(ImageRepository imageRepository) {
+    public ImageFileServiceImpl(ImageRepository imageRepository, ObjectRepository objectRepository) {
         this.imageRepository = imageRepository;
+        this.objectRepository = objectRepository;
+    }
+
+    @Override
+    public void deleteImageFile(String objectId) {
+        List<String> objectIds = imageRepository.deleteImageFile(objectId);
+        objectRepository.deleteByObjectIds(objectIds);
+    }
+
+    @Override
+    public void deleteByObjectName(String objectName) {
+        String objectId = objectRepository.getByObjectName(objectName).getObjectId();
+        deleteImageFile(objectId);
+    }
+
+    @Override
+    public ImageUrlDto getImageUrl(String imageFileId) {
+        return imageRepository.getImageUrl(imageFileId);
     }
 
     @Override

+ 5 - 0
dfs-store/src/main/resources/mapper/ImageFileMapper.xml

@@ -23,6 +23,11 @@
         where id=#{id}
     </update>
 
+    <delete id="deleteByImageFileId">
+        delete from image_file
+        where image_file_id=#{imageFileId}
+    </delete>
+
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.ImageFile">
         select * from image_file
     </select>

+ 5 - 0
dfs-store/src/main/resources/mapper/ImageUrlMapper.xml

@@ -17,6 +17,11 @@
         </foreach>
     </insert>
 
+    <delete id="deleteByImageFileId">
+        delete from image_url
+        where image_file_id=#{imageFileId}
+    </delete>
+
     <select id="findByImageFileId" resultType="cn.reghao.dfs.store.model.po.ImageUrl">
         select *
         from image_url

+ 3 - 0
oss-api/src/main/java/cn/reghao/oss/api/iface/media/ImageFileService.java

@@ -9,5 +9,8 @@ import java.util.List;
  * @date 2023-08-28 15:47:43
  */
 public interface ImageFileService {
+    void deleteImageFile(String objectId);
+    void deleteByObjectName(String objectName);
+    ImageUrlDto getImageUrl(String imageFileId);
     List<ImageUrlDto> getImageUrls(List<String> imageFileIds);
 }