From 75e61a1bf4ffc9e46985e7b7d01ae07f9be3592d Mon Sep 17 00:00:00 2001 From: jiangh277 Date: Tue, 5 Aug 2025 19:01:41 +0800 Subject: [PATCH] init3 --- .../story/controller/StoryController.java | 2 +- .../story/controller/StoryItemController.java | 12 +++- .../story/dao/CommonRelationMapper.java | 2 + .../timeline/story/dao/StoryItemMapper.java | 6 +- .../com/timeline/story/dao/StoryMapper.java | 2 +- .../com/timeline/story/entity/StoryItem.java | 6 +- .../story/service/StoryItemService.java | 2 + .../timeline/story/service/StoryService.java | 2 +- .../service/impl/StoryItemServiceImpl.java | 33 +++++---- .../story/service/impl/StoryServiceImpl.java | 8 +-- .../com/timeline/story/vo/StoryItemVo.java | 2 +- .../story/dao/CommonRelationMapper.xml | 12 ++++ .../timeline/story/dao/StoryItemMapper.xml | 72 ++++--------------- .../com/timeline/story/dao/StoryMapper.xml | 2 +- 14 files changed, 71 insertions(+), 92 deletions(-) diff --git a/timeline-story-service/src/main/java/com/timeline/story/controller/StoryController.java b/timeline-story-service/src/main/java/com/timeline/story/controller/StoryController.java index 7553a18..9136f86 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/controller/StoryController.java +++ b/timeline-story-service/src/main/java/com/timeline/story/controller/StoryController.java @@ -49,7 +49,7 @@ public class StoryController { @GetMapping("/{storyId}") public ResponseEntity getStoryById(@PathVariable String storyId) { log.info("获取故事详情, ID: {}", storyId); - Story story = storyService.getStoryById(storyId); + Story story = storyService.getStoryByInstanceId(storyId); return ResponseEntity.success(story); } diff --git a/timeline-story-service/src/main/java/com/timeline/story/controller/StoryItemController.java b/timeline-story-service/src/main/java/com/timeline/story/controller/StoryItemController.java index de98e71..9fb7d94 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/controller/StoryItemController.java +++ b/timeline-story-service/src/main/java/com/timeline/story/controller/StoryItemController.java @@ -52,9 +52,9 @@ public class StoryItemController { } @GetMapping("/list") - public ResponseEntity> getItemsByMasterItem(@RequestParam String masterItemId) { - log.info("查询 StoryItem 列表,masterItemId: {}", masterItemId); - List items = storyItemService.getItemsByMasterItem(masterItemId); + public ResponseEntity> getItemsByMasterItem(@RequestParam String storyInstanceId) { + log.info("查询 StoryItem 列表,storyInstanceId: {}", storyInstanceId); + List items = storyItemService.getItemsByMasterItem(storyInstanceId); return ResponseEntity.success(items); } @GetMapping("/images/{itemId}") @@ -63,4 +63,10 @@ public class StoryItemController { List images = storyItemService.getStoryItemImages(itemId); return ResponseEntity.success(images); } + @GetMapping("/count/{storyInstanceId}") + public ResponseEntity getStoryItemCount(@PathVariable String storyInstanceId) { + log.info("获取 StoryItem 子项数量,storyInstanceId: {}", storyInstanceId); + Integer count = storyItemService.getStoryItemCount(storyInstanceId); + return ResponseEntity.success(count); + } } diff --git a/timeline-story-service/src/main/java/com/timeline/story/dao/CommonRelationMapper.java b/timeline-story-service/src/main/java/com/timeline/story/dao/CommonRelationMapper.java index cfeae5f..334677a 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/dao/CommonRelationMapper.java +++ b/timeline-story-service/src/main/java/com/timeline/story/dao/CommonRelationMapper.java @@ -14,4 +14,6 @@ public interface CommonRelationMapper { List getStoryItemsByImageInstanceId(String imageInstanceId); void deleteImageStoryItemRelation(String imageInstanceId, String storyItemId); + void deleteRelationByRelaId(String relaId); + void deleteRelationBySubRelaId(String subRelaId); } diff --git a/timeline-story-service/src/main/java/com/timeline/story/dao/StoryItemMapper.java b/timeline-story-service/src/main/java/com/timeline/story/dao/StoryItemMapper.java index 7483531..aa39770 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/dao/StoryItemMapper.java +++ b/timeline-story-service/src/main/java/com/timeline/story/dao/StoryItemMapper.java @@ -9,10 +9,10 @@ import java.util.List; public interface StoryItemMapper { void insert(StoryItem storyItem); void update(StoryItem storyItem); - void deleteById(String itemId); + void deleteByItemId(String itemId); StoryItem selectById(String itemId); List selectByMasterItem(String masterItemId); List selectImagesByItemId(String itemId); - List selectByMasterItemWithSubItems(String masterItemId); - + List selectStoryItemByStoryInstanceId(String storyInstanceId); + int countByStoryId(String storyInstanceId); } diff --git a/timeline-story-service/src/main/java/com/timeline/story/dao/StoryMapper.java b/timeline-story-service/src/main/java/com/timeline/story/dao/StoryMapper.java index 432de49..1e83879 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/dao/StoryMapper.java +++ b/timeline-story-service/src/main/java/com/timeline/story/dao/StoryMapper.java @@ -10,7 +10,7 @@ public interface StoryMapper { void insert(Story story); void update(Story story); void deleteByInstanceId(String instanceId); - Story selectById(String instanceId); + Story selectByInstanceId(String instanceId); List selectByOwnerId(String ownerId); } diff --git a/timeline-story-service/src/main/java/com/timeline/story/entity/StoryItem.java b/timeline-story-service/src/main/java/com/timeline/story/entity/StoryItem.java index 22c862d..1229ca2 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/entity/StoryItem.java +++ b/timeline-story-service/src/main/java/com/timeline/story/entity/StoryItem.java @@ -6,8 +6,9 @@ import java.time.LocalDateTime; @Data public class StoryItem { - private String itemId; - private String masterItem; + private String instanceId; + private String storyInstanceId; + private String masterItemId; private String title; private String description; private String location; @@ -18,7 +19,6 @@ public class StoryItem { private LocalDateTime updateTime; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime storyItemTime; - private Integer isRoot; private Integer isDelete; private String coverInstanceId; private StoryItem[] subItems; diff --git a/timeline-story-service/src/main/java/com/timeline/story/service/StoryItemService.java b/timeline-story-service/src/main/java/com/timeline/story/service/StoryItemService.java index d542b16..b7085ed 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/service/StoryItemService.java +++ b/timeline-story-service/src/main/java/com/timeline/story/service/StoryItemService.java @@ -16,4 +16,6 @@ public interface StoryItemService { StoryItem getItemById(String itemId); List getItemsByMasterItem(String masterItemId); List getStoryItemImages(String storyItemId); + + Integer getStoryItemCount(String instanceId); } diff --git a/timeline-story-service/src/main/java/com/timeline/story/service/StoryService.java b/timeline-story-service/src/main/java/com/timeline/story/service/StoryService.java index 94e2765..23ceb2a 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/service/StoryService.java +++ b/timeline-story-service/src/main/java/com/timeline/story/service/StoryService.java @@ -9,7 +9,7 @@ public interface StoryService { void createStory(StoryVo storyVo); void updateStory(StoryVo storyVo, String storyId); void deleteStory(String storyId); - Story getStoryById(String storyId); + Story getStoryByInstanceId(String storyId); List getStoriesByOwnerId(String ownerId); } diff --git a/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryItemServiceImpl.java b/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryItemServiceImpl.java index 22ab38f..4342bf3 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryItemServiceImpl.java +++ b/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryItemServiceImpl.java @@ -37,13 +37,12 @@ public class StoryItemServiceImpl implements StoryItemService { public void createItem(StoryItemVo storyItemVo) { try { StoryItem item = new StoryItem(); - item.setItemId(IdUtils.randomUuidUpper()); - item.setMasterItem(storyItemVo.getMasterItemId()); + item.setInstanceId(IdUtils.randomUuidUpper()); + item.setMasterItemId(storyItemVo.getMasterItemId()); item.setDescription(storyItemVo.getDescription()); item.setTitle(storyItemVo.getTitle()); item.setLocation(storyItemVo.getLocation()); item.setCreateId("createId"); - item.setIsRoot(storyItemVo.getIsRoot()); item.setIsDelete(0); item.setCreateTime(LocalDateTime.now()); item.setUpdateTime(LocalDateTime.now()); @@ -65,22 +64,16 @@ public class StoryItemServiceImpl implements StoryItemService { // 2. 创建 StoryItem 实体 StoryItem item = new StoryItem(); - item.setItemId(IdUtils.randomUuidUpper()); - item.setMasterItem(storyItemVo.getMasterItemId()); + item.setInstanceId(IdUtils.randomUuidUpper()); + item.setStoryInstanceId(storyItemVo.getStoryInstanceId()); + item.setMasterItemId(storyItemVo.getMasterItemId()); item.setTitle(storyItemVo.getTitle()); item.setDescription(storyItemVo.getDescription()); item.setLocation(storyItemVo.getLocation()); item.setCreateId("createId"); item.setStoryItemTime(storyItemVo.getStoryItemTime()); - item.setIsRoot(storyItemVo.getIsRoot()); item.setIsDelete(0); item.setCoverInstanceId(coverKey); - if (storyItemVo.getIsRoot() == CommonConstants.STORY_ITEM_IS_ROOT){ - item.setIsRoot(CommonConstants.STORY_ITEM_IS_ROOT); - } else { - item.setIsRoot(CommonConstants.STORY_ITEM_IS_NOT_ROOT); - } - // 3. 上传所有图片并建立关联 for (MultipartFile image : images) { @@ -88,10 +81,10 @@ public class StoryItemServiceImpl implements StoryItemService { String key = response.getData(); log.info("上传成功,文件instanceId:{}", key); // 4. 保存封面与 StoryItem 的关联关系 - buildStoryItemImageRelation(item.getItemId(), key); + buildStoryItemImageRelation(item.getInstanceId(), key); } // 4. 记录封面与 StoryItem 的关联关系 - buildStoryItemImageRelation(item.getItemId(), coverKey); + buildStoryItemImageRelation(item.getInstanceId(), coverKey); // 3. 插入到 story_item 表 storyItemMapper.insert(item); } catch (Exception e) { @@ -139,7 +132,8 @@ public class StoryItemServiceImpl implements StoryItemService { if (item == null) { throw new RuntimeException("StoryItem 不存在"); } - storyItemMapper.deleteById(itemId); + storyItemMapper.deleteByItemId(itemId); + commonRelationMapper.deleteRelationByRelaId(itemId); } catch (Exception e) { log.error("删除 StoryItem 失败", e); throw new RuntimeException("删除 StoryItem 失败"); @@ -152,8 +146,8 @@ public class StoryItemServiceImpl implements StoryItemService { } @Override - public List getItemsByMasterItem(String masterItemId) { - return storyItemMapper.selectByMasterItemWithSubItems(masterItemId); + public List getItemsByMasterItem(String storyInstanceId) { + return storyItemMapper.selectStoryItemByStoryInstanceId(storyInstanceId); } @Override @@ -161,6 +155,11 @@ public class StoryItemServiceImpl implements StoryItemService { return storyItemMapper.selectImagesByItemId(storyItemId); } + @Override + public Integer getStoryItemCount(String instanceId) { + return storyItemMapper.countByStoryId(instanceId); + } + private void buildStoryItemImageRelation(String storyItemId, String imageIds) { CommonRelationDTO relationDTO = new CommonRelationDTO(); relationDTO.setRelaId(storyItemId); diff --git a/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryServiceImpl.java b/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryServiceImpl.java index edb9d05..abbc3e3 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryServiceImpl.java +++ b/timeline-story-service/src/main/java/com/timeline/story/service/impl/StoryServiceImpl.java @@ -44,7 +44,7 @@ public class StoryServiceImpl implements StoryService { @Override public void updateStory(StoryVo storyVo, String storyId) { - Story story = storyMapper.selectById(storyId); + Story story = storyMapper.selectByInstanceId(storyId); if (story == null) { throw new CustomException(ResponseEnum.NOT_FOUND); } @@ -60,7 +60,7 @@ public class StoryServiceImpl implements StoryService { @Override public void deleteStory(String storyId) { - Story story = storyMapper.selectById(storyId); + Story story = storyMapper.selectByInstanceId(storyId); if (story == null) { throw new CustomException(ResponseEnum.NOT_FOUND); } @@ -68,8 +68,8 @@ public class StoryServiceImpl implements StoryService { } @Override - public Story getStoryById(String storyId) { - Story story = storyMapper.selectById(storyId); + public Story getStoryByInstanceId(String storyId) { + Story story = storyMapper.selectByInstanceId(storyId); if (story == null) { throw new CustomException(ResponseEnum.NOT_FOUND); } diff --git a/timeline-story-service/src/main/java/com/timeline/story/vo/StoryItemVo.java b/timeline-story-service/src/main/java/com/timeline/story/vo/StoryItemVo.java index 3b0ce05..31ccad4 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/vo/StoryItemVo.java +++ b/timeline-story-service/src/main/java/com/timeline/story/vo/StoryItemVo.java @@ -13,6 +13,6 @@ public class StoryItemVo { private String description; private String location; private LocalDateTime storyItemTime; - private Integer isRoot; + private String storyInstanceId; } diff --git a/timeline-story-service/src/main/resources/com/timeline/story/dao/CommonRelationMapper.xml b/timeline-story-service/src/main/resources/com/timeline/story/dao/CommonRelationMapper.xml index 2afb3b1..f624972 100644 --- a/timeline-story-service/src/main/resources/com/timeline/story/dao/CommonRelationMapper.xml +++ b/timeline-story-service/src/main/resources/com/timeline/story/dao/CommonRelationMapper.xml @@ -30,4 +30,16 @@ INSERT INTO common_relation (rela_id, sub_rela_id, rela_type, user_id) VALUES (#{relaId}, #{subRelaId}, #{relationType}, #{userId}) + + + UPDATE common_relation + SET is_delete = 1 + WHERE rela_id = #{relaId} + + + UPDATE common_relation + SET is_delete = 1 + WHERE sub_rela_id = #{subRelaId} + + diff --git a/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryItemMapper.xml b/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryItemMapper.xml index fb37c97..30697f5 100644 --- a/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryItemMapper.xml +++ b/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryItemMapper.xml @@ -5,8 +5,8 @@ - INSERT INTO story_item (item_id, master_item, description, location, title, create_id, is_root, is_delete, story_item_time, cover_instance_id) - VALUES (#{itemId}, #{masterItem}, #{description}, #{location}, #{title},#{createId}, #{isRoot}, #{isDelete}, #{storyItemTime}, #{coverInstanceId}) + INSERT INTO story_item (instance_id, master_item_id, description, location, title, create_id, story_instance_id, is_delete, story_item_time, cover_instance_id) + VALUES (#{instanceId}, #{masterItemId}, #{description}, #{location}, #{title},#{createId}, #{storyInstanceId}, #{isDelete}, #{storyItemTime}, #{coverInstanceId}) @@ -15,74 +15,32 @@ location = #{location}, create_id = #{createId}, update_time = NOW() - WHERE item_id = #{itemId} + WHERE instance_id = #{instanceId} - - DELETE FROM story_item WHERE item_id = #{itemId} + + UPDATE story_item + SET is_delete = 1 + WHERE instance_id = #{instanceId} - + SELECT * FROM story_item WHERE story_instance_id = #{storyInstanceId} AND is_delete = 0 ORDER BY story_item_time ASC; - + diff --git a/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryMapper.xml b/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryMapper.xml index 14b0680..1e759e9 100644 --- a/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryMapper.xml +++ b/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryMapper.xml @@ -24,7 +24,7 @@ UPDATE story SET story.is_delete = 1 WHERE instance_id = #{instanceId} - SELECT * FROM story WHERE instance_id = #{instanceId}