From 40412f6f67401551bd9542d8756be11dc84e258a Mon Sep 17 00:00:00 2001 From: jianghao <332515344@qq.com> Date: Tue, 24 Feb 2026 10:32:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=8D=8F=E4=BD=9C?= =?UTF-8?q?=E9=82=80=E8=AF=B7=E5=8A=9F=E8=83=BD=E4=B8=8E=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增故事协作邀请功能,包括邀请状态字段和相关接口 添加标签管理功能,支持时间线节点的标签分类 实现智能填充服务,从图片EXIF提取时间和地点信息 优化Docker镜像使用Alpine基础镜像减少体积 新增批量操作功能,包括排序、删除和时间修改 扩展通知系统支持协作邀请相关消息 添加评论和提醒功能相关实体和服务接口 --- Jenkinsfile | 2 +- deploy/update_story_permission_invite.sql | 2 + .../common/response/ResponseEntity.java | 4 + timeline-file-service/Dockerfile | 2 +- timeline-file-service/pom.xml | 7 + .../file/controller/FileController.java | 27 ++ .../file/service/ExifParserService.java | 75 +++++ .../file/service/SmartFillService.java | 117 ++++++++ .../service/impl/ExifParserServiceImpl.java | 222 ++++++++++++++ .../service/impl/SmartFillServiceImpl.java | 284 ++++++++++++++++++ .../java/com/timeline/file/vo/ExifInfoVo.java | 116 +++++++ .../com/timeline/file/vo/ImageInfoVo.java | 2 + .../timeline/file/vo/SmartFillResultVo.java | 92 ++++++ timeline-gateway-service/Dockerfile | 2 +- timeline-story-service/Dockerfile | 2 +- .../story/controller/AnalyticsController.java | 195 ++++++++++++ .../story/controller/CommentController.java | 207 +++++++++++++ .../controller/NotificationController.java | 171 +++++++++++ .../story/controller/ReminderController.java | 207 +++++++++++++ .../story/controller/StoryItemController.java | 71 +++++ .../controller/StoryPermissionController.java | 26 +- .../timeline/story/dao/StoryItemMapper.java | 14 + .../story/dao/StoryPermissionMapper.java | 9 + .../timeline/story/entity/Notification.java | 101 +++++++ .../com/timeline/story/entity/Reminder.java | 106 +++++++ .../timeline/story/entity/StoryComment.java | 84 ++++++ .../com/timeline/story/entity/StoryItem.java | 5 + .../timeline/story/entity/StoryItemTag.java | 44 +++ .../story/entity/StoryPermission.java | 1 + .../java/com/timeline/story/entity/Tag.java | 66 ++++ .../story/service/AnalyticsService.java | 107 +++++++ .../story/service/CommentService.java | 123 ++++++++ .../story/service/NotificationService.java | 156 ++++++++++ .../story/service/ReminderService.java | 124 ++++++++ .../story/service/StoryItemService.java | 33 ++ .../story/service/StoryPermissionService.java | 14 + .../timeline/story/service/TagService.java | 135 +++++++++ .../service/impl/StoryItemServiceImpl.java | 96 ++++++ .../impl/StoryPermissionServiceImpl.java | 105 ++++++- .../java/com/timeline/story/vo/CommentVo.java | 95 ++++++ .../com/timeline/story/vo/NotificationVo.java | 88 ++++++ .../com/timeline/story/vo/ReminderVo.java | 95 ++++++ .../com/timeline/story/vo/SearchResultVo.java | 120 ++++++++ .../timeline/story/vo/StoryPermissionVo.java | 1 + .../java/com/timeline/story/vo/TagVo.java | 53 ++++ .../story/vo/TimelineAnalyticsVo.java | 168 +++++++++++ .../timeline/story/dao/StoryItemMapper.xml | 42 +++ .../story/dao/StoryPermissionMapper.xml | 11 +- timeline-user-service/Dockerfile | 2 +- 49 files changed, 3816 insertions(+), 15 deletions(-) create mode 100644 deploy/update_story_permission_invite.sql create mode 100644 timeline-file-service/src/main/java/com/timeline/file/service/ExifParserService.java create mode 100644 timeline-file-service/src/main/java/com/timeline/file/service/SmartFillService.java create mode 100644 timeline-file-service/src/main/java/com/timeline/file/service/impl/ExifParserServiceImpl.java create mode 100644 timeline-file-service/src/main/java/com/timeline/file/service/impl/SmartFillServiceImpl.java create mode 100644 timeline-file-service/src/main/java/com/timeline/file/vo/ExifInfoVo.java create mode 100644 timeline-file-service/src/main/java/com/timeline/file/vo/SmartFillResultVo.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/controller/AnalyticsController.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/controller/CommentController.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/controller/NotificationController.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/controller/ReminderController.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/entity/Notification.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/entity/Reminder.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/entity/StoryComment.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/entity/StoryItemTag.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/entity/Tag.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/service/AnalyticsService.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/service/CommentService.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/service/NotificationService.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/service/ReminderService.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/service/TagService.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/vo/CommentVo.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/vo/NotificationVo.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/vo/ReminderVo.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/vo/SearchResultVo.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/vo/TagVo.java create mode 100644 timeline-story-service/src/main/java/com/timeline/story/vo/TimelineAnalyticsVo.java diff --git a/Jenkinsfile b/Jenkinsfile index 9944ccf..042e929 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -171,7 +171,7 @@ pipeline { // 生成Dockerfile内容的函数 def getDockerfileContent(serviceDir) { - return """FROM eclipse-temurin:21-jdk + return """FROM eclipse-temurin:21.0.2_13-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar EXPOSE 8080 diff --git a/deploy/update_story_permission_invite.sql b/deploy/update_story_permission_invite.sql new file mode 100644 index 0000000..172f25c --- /dev/null +++ b/deploy/update_story_permission_invite.sql @@ -0,0 +1,2 @@ +ALTER TABLE `story_permission` +ADD COLUMN `invite_status` int DEFAULT 0 COMMENT '邀请状态: 0-待处理, 1-已接受, 2-已拒绝'; \ No newline at end of file diff --git a/timeline-component-common/src/main/java/com/timeline/common/response/ResponseEntity.java b/timeline-component-common/src/main/java/com/timeline/common/response/ResponseEntity.java index 321517b..f6d11e9 100644 --- a/timeline-component-common/src/main/java/com/timeline/common/response/ResponseEntity.java +++ b/timeline-component-common/src/main/java/com/timeline/common/response/ResponseEntity.java @@ -25,4 +25,8 @@ public class ResponseEntity { public static ResponseEntity error(ResponseEnum responseEnum, String detailMessage) { return new ResponseEntity<>(responseEnum.getCode(), responseEnum.getMessage() + ": " + detailMessage, null); } + + public static ResponseEntity error(String message) { + return new ResponseEntity<>(ResponseEnum.BAD_REQUEST.getCode(), message, null); + } } diff --git a/timeline-file-service/Dockerfile b/timeline-file-service/Dockerfile index daa8b1d..28ebbc5 100644 --- a/timeline-file-service/Dockerfile +++ b/timeline-file-service/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:21-jdk +FROM eclipse-temurin:21.0.2_13-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar EXPOSE 30002 diff --git a/timeline-file-service/pom.xml b/timeline-file-service/pom.xml index 7ef3967..33b8747 100644 --- a/timeline-file-service/pom.xml +++ b/timeline-file-service/pom.xml @@ -50,6 +50,13 @@ thumbnailator 0.4.17 + + + + com.drewnoakes + metadata-extractor + 2.19.0 + + + UPDATE story_item + SET sort_order = #{sortOrder}, + update_id = #{updateId}, + update_time = #{updateTime} + WHERE instance_id = #{instanceId} + + + + + UPDATE story_item + SET story_item_time = #{storyItemTime}, + update_id = #{updateId}, + update_time = #{updateTime} + WHERE instance_id = #{instanceId} + diff --git a/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryPermissionMapper.xml b/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryPermissionMapper.xml index 124a2e0..540a976 100644 --- a/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryPermissionMapper.xml +++ b/timeline-story-service/src/main/resources/com/timeline/story/dao/StoryPermissionMapper.xml @@ -5,8 +5,8 @@ - INSERT INTO story_permission (permission_id, story_instance_id, user_id, permission_type) - VALUES (#{permissionId}, #{storyInstanceId}, #{userId}, #{permissionType}) + INSERT INTO story_permission (permission_id, story_instance_id, user_id, permission_type, invite_status) + VALUES (#{permissionId}, #{storyInstanceId}, #{userId}, #{permissionType}, #{inviteStatus}) UPDATE story_permission @@ -15,6 +15,13 @@ WHERE permission_id = #{permissionId} AND is_deleted = 0 + + UPDATE story_permission + SET invite_status = #{inviteStatus}, + update_time = NOW() + WHERE permission_id = #{permissionId} AND is_deleted = 0 + + UPDATE story_permission SET is_deleted = 1 diff --git a/timeline-user-service/Dockerfile b/timeline-user-service/Dockerfile index d856fc1..f6e83d8 100644 --- a/timeline-user-service/Dockerfile +++ b/timeline-user-service/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:21-jdk +FROM eclipse-temurin:21.0.2_13-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar EXPOSE 30003