diff --git a/timeline-component-common/src/main/java/com/timeline/common/constants/CommonConstants.java b/timeline-component-common/src/main/java/com/timeline/common/constants/CommonConstants.java index 874884a..553970c 100644 --- a/timeline-component-common/src/main/java/com/timeline/common/constants/CommonConstants.java +++ b/timeline-component-common/src/main/java/com/timeline/common/constants/CommonConstants.java @@ -64,4 +64,24 @@ public class CommonConstants { * 默认sortKey */ public static final Integer DEFAULT_SORT_KEY = 999; + + /** + * action type + */ + public static final String ACTION_TYPE_STORY_CREATE = "story_create"; + public static final String ACTION_TYPE_STORY_UPDATE = "story_update"; + public static final String ACTION_TYPE_STORY_DELETE = "story_delete"; + public static final String ACTION_TYPE_STORY_ITEM_CREATE = "story_item_create"; + public static final String ACTION_TYPE_STORY_ITEM_UPDATE = "story_item_update"; + public static final String ACTION_TYPE_STORY_ITEM_DELETE = "story_item_delete"; + + /** + * action remark + */ + public static final String ACTION_REMARK_STORY_CREATE = "创建故事"; + public static final String ACTION_REMARK_STORY_UPDATE = "更新故事"; + public static final String ACTION_REMARK_STORY_DELETE = "删除故事"; + public static final String ACTION_REMARK_STORY_ITEM_CREATE = "创建故事子项"; + public static final String ACTION_REMARK_STORY_ITEM_UPDATE = "更新故事子项"; + public static final String ACTION_REMARK_STORY_ITEM_DELETE = "删除故事子项"; } diff --git a/timeline-file-service/src/main/java/com/timeline/file/dao/CommonRelationMapper.java b/timeline-file-service/src/main/java/com/timeline/file/dao/CommonRelationMapper.java index f905f23..7368d95 100644 --- a/timeline-file-service/src/main/java/com/timeline/file/dao/CommonRelationMapper.java +++ b/timeline-file-service/src/main/java/com/timeline/file/dao/CommonRelationMapper.java @@ -14,4 +14,5 @@ public interface CommonRelationMapper { List getStoryItemsByImageInstanceId(String imageInstanceId); void deleteImageStoryItemRelation(String imageInstanceId, String storyItemId); + void deleteRelationByRelaId(String instanceId); } diff --git a/timeline-file-service/src/main/java/com/timeline/file/service/impl/FileServiceImpl.java b/timeline-file-service/src/main/java/com/timeline/file/service/impl/FileServiceImpl.java index 56fec7b..17c35a7 100644 --- a/timeline-file-service/src/main/java/com/timeline/file/service/impl/FileServiceImpl.java +++ b/timeline-file-service/src/main/java/com/timeline/file/service/impl/FileServiceImpl.java @@ -166,6 +166,9 @@ public class FileServiceImpl implements FileService { imageInfo.setIsDeleted(CommonConstants.DELETED); imageInfo.setUpdateTime(LocalDateTime.now()); imageInfoMapper.update(imageInfo); + + // 删除关联关系 + commonRelationMapper.deleteRelationByRelaId(instanceId); } catch (Exception e) { log.error("删除图片失败", e); throw new CustomException(500, "删除图片失败"); diff --git a/timeline-file-service/src/main/resources/com/timeline/file/dao/CommonRelationMapper.xml b/timeline-file-service/src/main/resources/com/timeline/file/dao/CommonRelationMapper.xml index 0fa26eb..9ca70d9 100644 --- a/timeline-file-service/src/main/resources/com/timeline/file/dao/CommonRelationMapper.xml +++ b/timeline-file-service/src/main/resources/com/timeline/file/dao/CommonRelationMapper.xml @@ -30,4 +30,12 @@ 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, + update_time = NOW() + WHERE rela_id = #{imageInstanceId} + + diff --git a/timeline-story-service/src/main/java/com/timeline/story/entity/Story.java b/timeline-story-service/src/main/java/com/timeline/story/entity/Story.java index 9d5efac..5de9c68 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/entity/Story.java +++ b/timeline-story-service/src/main/java/com/timeline/story/entity/Story.java @@ -12,6 +12,8 @@ public class Story { private String description; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDateTime storyTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; private String updateId; 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 10e2791..06fbe82 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 @@ -13,11 +13,11 @@ public class StoryItem { private String description; private String location; private String createId; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime storyItemTime; private Integer isDelete; private String coverInstanceId; diff --git a/timeline-story-service/src/main/java/com/timeline/story/service/StoryActivityService.java b/timeline-story-service/src/main/java/com/timeline/story/service/StoryActivityService.java index bfc8ac0..e177315 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/service/StoryActivityService.java +++ b/timeline-story-service/src/main/java/com/timeline/story/service/StoryActivityService.java @@ -8,6 +8,11 @@ import java.util.List; public interface StoryActivityService { void logActivity(StoryActivity activity); + /** + * record activity log + * @return + */ + List listMyAndFriendsActivities(); /** 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 560d585..e2d80c4 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 @@ -224,11 +224,12 @@ public class StoryItemServiceImpl implements StoryItemService { } private void buildStoryItemImageRelation(String storyItemId, String imageIds) { + String currentId = currentUserId(); CommonRelationDTO relationDTO = new CommonRelationDTO(); relationDTO.setRelaId(storyItemId); relationDTO.setSubRelaId(imageIds); relationDTO.setRelationType(CommonConstants.RELATION_STORY_ITEM_AND_IMAGE); - relationDTO.setUserId("9999"); + relationDTO.setUserId(currentId); relationDTO.setCreateTime(LocalDateTime.now()); relationDTO.setUpdateTime(LocalDateTime.now()); commonRelationMapper.insertRelation(relationDTO); 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 f9240a7..96a08d6 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 @@ -33,6 +33,14 @@ public class StoryServiceImpl implements StoryService { @Autowired private StoryActivityService storyActivityService; + + private String getCurrentUserId() { + String currentUserId = UserContextUtils.getCurrentUserId(); + if (currentUserId == null || currentUserId.isEmpty()) { + throw new CustomException(ResponseEnum.UNAUTHORIZED, "未获取到用户身份"); + } + return currentUserId; + } @Override public void createStory(StoryVo storyVo) { try { @@ -47,6 +55,7 @@ public class StoryServiceImpl implements StoryService { story.setInstanceId(IdUtils.randomUuidUpper()); story.setDescription(storyVo.getDescription()); story.setStatus(storyVo.getStatus()); + story.setStoryTime(storyVo.getStoryTime()); story.setCreateTime(LocalDateTime.now()); story.setUpdateTime(LocalDateTime.now()); story.setLogo(storyVo.getLogo()); @@ -56,14 +65,15 @@ public class StoryServiceImpl implements StoryService { StoryPermissionVo permissionVo = new StoryPermissionVo(); permissionVo.setStoryInstanceId(story.getInstanceId()); permissionVo.setUserId(currentUserId); - permissionVo.setPermissionType(CommonConstants.STORY_PERMISSION_TYPE_OWNER); // 创建者权限 + // 创建者权限 + permissionVo.setPermissionType(CommonConstants.STORY_PERMISSION_TYPE_OWNER); storyPermissionService.createPermission(permissionVo); StoryActivity activity = new StoryActivity(); activity.setActorId(currentUserId); - activity.setAction("create_story"); + activity.setAction(CommonConstants.ACTION_TYPE_STORY_CREATE); activity.setStoryInstanceId(story.getInstanceId()); - activity.setRemark("创建故事"); + activity.setRemark(CommonConstants.ACTION_REMARK_STORY_CREATE); storyActivityService.logActivity(activity); } catch (Exception e) { log.error("创建故事失败", e); @@ -73,40 +83,48 @@ public class StoryServiceImpl implements StoryService { @Override public void updateStory(StoryVo storyVo, String storyId) { + String currentUserId = getCurrentUserId(); Story story = storyMapper.selectByInstanceId(storyId); if (story == null) { throw new CustomException(ResponseEnum.NOT_FOUND); } - story.setTitle(storyVo.getTitle()); story.setDescription(storyVo.getDescription()); story.setStatus(storyVo.getStatus()); + story.setStoryTime(storyVo.getStoryTime()); story.setUpdateTime(LocalDateTime.now()); story.setLogo(storyVo.getLogo()); - String currentUserId = UserContextUtils.getCurrentUserId(); - if (currentUserId != null && !currentUserId.isEmpty()) { - story.setUpdateId(currentUserId); - } storyMapper.update(story); StoryActivity activity = new StoryActivity(); activity.setActorId(currentUserId); - activity.setAction("update_story"); + activity.setAction(CommonConstants.ACTION_TYPE_STORY_UPDATE); activity.setStoryInstanceId(storyId); - activity.setRemark("更新故事"); + activity.setRemark(CommonConstants.ACTION_REMARK_STORY_UPDATE); storyActivityService.logActivity(activity); } @Override public void deleteStory(String storyId) { + String currentUserId = getCurrentUserId(); Story story = storyMapper.selectByInstanceId(storyId); if (story == null) { throw new CustomException(ResponseEnum.NOT_FOUND); } + // delete story storyMapper.deleteByInstanceId(storyId); + // delete permission + storyPermissionService.deletePermission(storyId); + // delete activity + StoryActivity activity = new StoryActivity(); + activity.setActorId(currentUserId); + activity.setAction(CommonConstants.ACTION_TYPE_STORY_DELETE); + activity.setStoryInstanceId(storyId); + activity.setRemark(CommonConstants.ACTION_REMARK_STORY_DELETE); + storyActivityService.logActivity(activity); } @Override @@ -131,10 +149,7 @@ public class StoryServiceImpl implements StoryService { @Override public List getStories(StoryVo storyVo) { try { - String currentUserId = UserContextUtils.getCurrentUserId(); - if (currentUserId == null || currentUserId.isEmpty()) { - throw new CustomException(ResponseEnum.UNAUTHORIZED, "未获取到用户身份"); - } + String currentUserId = getCurrentUserId(); return storyMapper.selectByOwnerId(currentUserId); } catch (Exception e) { log.error("查询用户故事列表失败", e); diff --git a/timeline-story-service/src/main/java/com/timeline/story/vo/StoryVo.java b/timeline-story-service/src/main/java/com/timeline/story/vo/StoryVo.java index 59cda76..e75c77e 100644 --- a/timeline-story-service/src/main/java/com/timeline/story/vo/StoryVo.java +++ b/timeline-story-service/src/main/java/com/timeline/story/vo/StoryVo.java @@ -1,7 +1,10 @@ package com.timeline.story.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import java.time.LocalDateTime; + @Data public class StoryVo { private String id; @@ -11,4 +14,6 @@ public class StoryVo { private String description; private String status; private String logo; + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDateTime storyTime; } 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 7ad0019..d059b56 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 @@ -5,8 +5,8 @@ - INSERT INTO story (instance_id, title, description, owner_id, status, logo) - VALUES (#{instanceId}, #{title}, #{description}, #{ownerId}, #{status}, #{logo}) + INSERT INTO story (instance_id, title, description, owner_id, status, logo, story_time) + VALUES (#{instanceId}, #{title}, #{description}, #{ownerId}, #{status}, #{logo}, #{storyTime}) @@ -16,12 +16,13 @@ update_id = #{updateId}, status = #{status}, update_time = NOW(), + story_time = #{storyTime}, logo = #{logo} WHERE instance_id = #{instanceId} - UPDATE story SET story.is_delete = 1 WHERE instance_id = #{instanceId} + UPDATE story SET story.is_delete = 1, update_time = NOW() WHERE instance_id = #{instanceId}