Ver código fonte

DiskShareController 添加 delete 接口

reghao 6 meses atrás
pai
commit
67eca2a1f5

+ 8 - 0
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/controller/DiskShareController.java

@@ -1,6 +1,7 @@
 package cn.reghao.tnb.content.app.disk.controller;
 
 import cn.reghao.jutil.jdk.db.PageList;
+import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.web.WebResult;
 import cn.reghao.tnb.account.api.dto.AccountAvatar;
 import cn.reghao.tnb.common.auth.AuthUser;
@@ -36,6 +37,13 @@ public class DiskShareController {
         return WebResult.success();
     }
 
+    @Operation(summary = "删除分享", description = "N")
+    @PostMapping("/delete/{shareId}")
+    public String deleteShare(@PathVariable("shareId") long shareId) {
+        Result result = diskShareService.deleteShare(shareId);
+        return WebResult.result(result);
+    }
+
     @Operation(summary = "获取分享列表", description = "N")
     @GetMapping("/list")
     public String getShareList(@RequestParam("pn") int pageNumber) {

+ 3 - 0
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/db/mapper/DiskShareMapper.java

@@ -16,9 +16,12 @@ import java.util.List;
 @Mapper
 public interface DiskShareMapper extends BaseMapper<DiskShare> {
     void saveDiskShareTo(List<DiskShareTo> list);
+    void updateSetDelete(long shareId);
+    void deleteShareToList(long shareId);
 
     int countDiskShare(long createBy);
     List<DiskShare> findDiskShareByPage(@Param("page") Page page, @Param("createBy") long createBy);
+    DiskShare findDiskShare(long shareId);
 
     int countDiskShareTo(long shareId);
     List<Long> findDiskShareToList(@Param("shareId") long shareId);

+ 26 - 0
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/db/repository/DiskShareRepository.java

@@ -0,0 +1,26 @@
+package cn.reghao.tnb.content.app.disk.db.repository;
+
+import cn.reghao.tnb.content.app.disk.db.mapper.DiskAlbumMapper;
+import cn.reghao.tnb.content.app.disk.db.mapper.DiskShareMapper;
+import cn.reghao.tnb.content.app.util.IdService;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author reghao
+ * @date 2025-09-06 15:52:24
+ */
+@Repository
+public class DiskShareRepository {
+    private final DiskShareMapper diskShareMapper;
+
+    public DiskShareRepository(DiskShareMapper diskShareMapper) {
+        this.diskShareMapper = diskShareMapper;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteShare(long shareId) {
+        diskShareMapper.updateSetDelete(shareId);
+        diskShareMapper.deleteShareToList(shareId);
+    }
+}

+ 16 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/service/DiskShareService.java

@@ -2,11 +2,13 @@ package cn.reghao.tnb.content.app.disk.service;
 
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.PageList;
+import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.tnb.account.api.dto.AccountAvatar;
 import cn.reghao.tnb.account.api.iface.AccountQuery;
 import cn.reghao.tnb.common.auth.UserContext;
 import cn.reghao.tnb.content.app.disk.db.mapper.DiskAlbumMapper;
 import cn.reghao.tnb.content.app.disk.db.mapper.DiskShareMapper;
+import cn.reghao.tnb.content.app.disk.db.repository.DiskShareRepository;
 import cn.reghao.tnb.content.app.disk.model.dto.ShareCreate;
 import cn.reghao.tnb.content.app.disk.model.po.DiskShare;
 import cn.reghao.tnb.content.app.disk.model.po.DiskShareTo;
@@ -35,11 +37,14 @@ public class DiskShareService {
     private final IdService idService;
     private final DiskShareMapper diskShareMapper;
     private final DiskAlbumMapper diskAlbumMapper;
+    private DiskShareRepository diskShareRepository;
 
-    public DiskShareService(IdService idService, DiskShareMapper diskShareMapper, DiskAlbumMapper diskAlbumMapper) {
+    public DiskShareService(IdService idService, DiskShareMapper diskShareMapper,
+                            DiskAlbumMapper diskAlbumMapper, DiskShareRepository diskShareRepository) {
         this.idService = idService;
         this.diskShareMapper = diskShareMapper;
         this.diskAlbumMapper = diskAlbumMapper;
+        this.diskShareRepository = diskShareRepository;
     }
 
     public void createShare(ShareCreate shareCreate) {
@@ -58,6 +63,16 @@ public class DiskShareService {
         }
     }
 
+    public Result deleteShare(long shareId) {
+        DiskShare diskShare = diskShareMapper.findDiskShare(shareId);
+        if (diskShare == null || diskShare.getCreateBy() != UserContext.getUserId()) {
+            return Result.fail("not owner");
+        }
+
+        diskShareRepository.deleteShare(shareId);
+        return Result.success();
+    }
+
     public PageList<DiskShareInfo> getShareList(int pageNumber) {
         long loginUser = UserContext.getUserId();
         Page page = new Page(pageNumber, pageSize);

+ 16 - 0
content/content-service/src/main/resources/mapper/disk/DiskShareMapper.xml

@@ -17,6 +17,16 @@
         </foreach>
     </insert>
 
+    <update id="updateSetDelete">
+        update my_disk_share
+        set update_time=now(),deleted=1
+        where share_id=#{shareId}
+    </update>
+    <delete id="deleteShareToList">
+        delete from my_disk_share_to
+        where share_id=#{shareId}
+    </delete>
+
     <select id="countDiskShare" resultType="java.lang.Integer">
         select count(*)
         from my_disk_share
@@ -27,6 +37,12 @@
         from my_disk_share
         where deleted=0 and create_by=#{createBy}
     </select>
+    <select id="findDiskShare" resultType="cn.reghao.tnb.content.app.disk.model.po.DiskShare">
+        select *
+        from my_disk_share
+        where deleted=0 and share_id=#{shareId}
+    </select>
+
     <select id="findDiskShareList" resultType="cn.reghao.tnb.content.app.disk.model.po.DiskShare">
         select my_disk_share.*
         from my_disk_share_to