From 2b2cd2be708952ebe21d4fc035af298ecb1f13db Mon Sep 17 00:00:00 2001 From: Hanserwei <2628273921@qq.com> Date: Mon, 3 Nov 2025 16:00:22 +0800 Subject: [PATCH] =?UTF-8?q?refactor(search):=E9=87=8D=E6=9E=84=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=9C=8D=E5=8A=A1=E6=A8=A1=E5=9D=97=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 han-note-search 模块拆分为 han-note-search-api 和 han-note-search-biz - 调整包路径,统一添加 biz 子包以区分业务实现 - 更新相关类的导入路径以适配新的包结构 - 修改 Maven 模块配置,设置父模块打包方式为 pom- 添加新的 API 模块用于 RPC 接口定义 - 更新依赖配置,确保模块间正确引用 - 调整 IDEA 编译器配置以识别新模块 - 更新 HTTP 客户端测试数据和请求示例 - 添加 Feign 客户端支持以实现服务间通信 - 实现笔记文档重建功能并提供对外接口 - 增加数据对齐服务中远程调用搜索服务的能力 - 更新全局异常处理器和枚举类的包路径 - 调整应用启动类的 Mapper 扫描路径 - 更新 Elasticsearch 配置类和索引相关类路径 - 修改控制器和服务接口以支持新架构 - 更新测试类路径以匹配新的项目结构 --- .idea/compiler.xml | 3 +- .idea/encodings.xml | 4 + han-note-data-align/pom.xml | 5 + .../align/HannoteDataAlignApplication.java | 2 + .../align/job/FansCountShardingXxlJob.java | 5 + .../job/NoteCollectCountShardingXxlJob.java | 6 + .../job/NoteLikeCountShardingXxlJob.java | 7 ++ .../job/NotePublishCountShardingXxlJob.java | 5 + .../data/align/rpc/SearchRpcService.java | 41 +++++++ han-note-search/han-note-search-api/pom.xml | 38 ++++++ .../hannote/search/api/SearchFeignApi.java | 35 ++++++ .../hannote/search/constant/ApiConstants.java | 9 ++ .../search/dto/RebuildNoteDocumentReqDTO.java | 18 +++ .../search/dto/RebuildUserDocumentReqDTO.java | 18 +++ han-note-search/han-note-search-biz/pom.xml | 108 ++++++++++++++++++ .../search/biz}/HannoteSearchApplication.java | 4 +- .../search/biz}/canal/CanalClient.java | 2 +- .../search/biz}/canal/CanalProperties.java | 2 +- .../search/biz}/canal/CanalSchedule.java | 12 +- .../biz}/config/ElasticsearchConfig.java | 2 +- .../biz}/controller/ExtDictController.java | 4 +- .../biz}/controller/NoteController.java | 16 ++- .../biz}/controller/UserController.java | 17 ++- .../biz}/domain/mapper/SelectMapper.java | 2 +- .../biz}/enums/NotePublishTimeRangeEnum.java | 2 +- .../search/biz}/enums/NoteSortTypeEnum.java | 2 +- .../search/biz}/enums/NoteStatusEnum.java | 2 +- .../search/biz}/enums/NoteVisibleEnum.java | 2 +- .../search/biz}/enums/ResponseCodeEnum.java | 2 +- .../exception/GlobalExceptionHandler.java | 4 +- .../hannote/search/biz}/index/NoteIndex.java | 2 +- .../hannote/search/biz}/index/UserIndex.java | 2 +- .../search/biz}/model/vo/SearchNoteReqVO.java | 2 +- .../search/biz}/model/vo/SearchNoteRspVO.java | 2 +- .../search/biz}/model/vo/SearchUserReqVO.java | 2 +- .../search/biz}/model/vo/SearchUserRspVO.java | 2 +- .../search/biz}/service/ExtDictService.java | 2 +- .../search/biz/service/NoteService.java | 26 +++++ .../search/biz/service/UserService.java | 26 +++++ .../biz}/service/impl/ExtDictServiceImpl.java | 4 +- .../biz}/service/impl/NoteServiceImpl.java | 46 ++++++-- .../biz}/service/impl/UserServiceImpl.java | 42 ++++++- .../src/main/resources/application.yml | 0 .../src/main/resources/bootstrap.yml | 0 .../src/main/resources/logback-spring.xml | 0 .../main/resources/mapperxml/SelectMapper.xml | 8 +- .../search/ElasticsearchClientTest.java | 2 +- han-note-search/pom.xml | 99 ++-------------- .../hannote/search/service/NoteService.java | 16 --- .../hannote/search/service/UserService.java | 16 --- http-client/gateApi.http | 10 +- pom.xml | 5 + 52 files changed, 512 insertions(+), 181 deletions(-) create mode 100644 han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/rpc/SearchRpcService.java create mode 100644 han-note-search/han-note-search-api/pom.xml create mode 100644 han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/api/SearchFeignApi.java create mode 100644 han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/constant/ApiConstants.java create mode 100644 han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildNoteDocumentReqDTO.java create mode 100644 han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildUserDocumentReqDTO.java create mode 100644 han-note-search/han-note-search-biz/pom.xml rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/HannoteSearchApplication.java (80%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/canal/CanalClient.java (97%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/canal/CanalProperties.java (93%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/canal/CanalSchedule.java (97%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/config/ElasticsearchConfig.java (96%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/controller/ExtDictController.java (85%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/controller/NoteController.java (53%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/controller/UserController.java (53%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/domain/mapper/SelectMapper.java (92%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/enums/NotePublishTimeRangeEnum.java (94%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/enums/NoteSortTypeEnum.java (94%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/enums/NoteStatusEnum.java (85%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/enums/NoteVisibleEnum.java (82%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/enums/ResponseCodeEnum.java (92%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/exception/GlobalExceptionHandler.java (96%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/index/NoteIndex.java (96%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/index/UserIndex.java (93%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/model/vo/SearchNoteReqVO.java (94%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/model/vo/SearchNoteRspVO.java (95%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/model/vo/SearchUserReqVO.java (90%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/model/vo/SearchUserRspVO.java (95%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/service/ExtDictService.java (81%) create mode 100644 han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/NoteService.java create mode 100644 han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/UserService.java rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/service/impl/ExtDictServiceImpl.java (93%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/service/impl/NoteServiceImpl.java (87%) rename han-note-search/{src/main/java/com/hanserwei/hannote/search => han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz}/service/impl/UserServiceImpl.java (73%) rename han-note-search/{ => han-note-search-biz}/src/main/resources/application.yml (100%) rename han-note-search/{ => han-note-search-biz}/src/main/resources/bootstrap.yml (100%) rename han-note-search/{ => han-note-search-biz}/src/main/resources/logback-spring.xml (100%) rename han-note-search/{ => han-note-search-biz}/src/main/resources/mapperxml/SelectMapper.xml (84%) rename han-note-search/{ => han-note-search-biz}/src/test/java/com/hanserwei/hannote/search/ElasticsearchClientTest.java (95%) delete mode 100644 han-note-search/src/main/java/com/hanserwei/hannote/search/service/NoteService.java delete mode 100644 han-note-search/src/main/java/com/hanserwei/hannote/search/service/UserService.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 5090716..8765f68 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -27,7 +27,7 @@ - + @@ -35,6 +35,7 @@ + diff --git a/.idea/encodings.xml b/.idea/encodings.xml index becad6c..d74dd49 100755 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -37,6 +37,10 @@ + + + + diff --git a/han-note-data-align/pom.xml b/han-note-data-align/pom.xml index 920259c..bccec91 100644 --- a/han-note-data-align/pom.xml +++ b/han-note-data-align/pom.xml @@ -96,6 +96,11 @@ rocketmq-spring-boot-starter + + com.hanserwei + han-note-search-api + + diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/HannoteDataAlignApplication.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/HannoteDataAlignApplication.java index 95fc4cb..809448b 100644 --- a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/HannoteDataAlignApplication.java +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/HannoteDataAlignApplication.java @@ -3,9 +3,11 @@ package com.hanserwei.hannote.data.align; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @MapperScan("com.hanserwei.hannote.data.align.domain.mapper") +@EnableFeignClients(basePackages = "com.hanserwei.hannote") public class HannoteDataAlignApplication { public static void main(String[] args) { SpringApplication.run(HannoteDataAlignApplication.class, args); diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/FansCountShardingXxlJob.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/FansCountShardingXxlJob.java index abd3553..e8df9fa 100644 --- a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/FansCountShardingXxlJob.java +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/FansCountShardingXxlJob.java @@ -6,6 +6,7 @@ import com.hanserwei.hannote.data.align.constant.TableConstants; import com.hanserwei.hannote.data.align.domain.mapper.DeleteRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.SelectRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.UpdateRecordMapper; +import com.hanserwei.hannote.data.align.rpc.SearchRpcService; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import jakarta.annotation.Resource; @@ -29,6 +30,8 @@ public class FansCountShardingXxlJob { private DeleteRecordMapper deleteRecordMapper; @Resource private RedisTemplate redisTemplate; + @Resource + private SearchRpcService searchRpcService; /** * 分片广播任务 @@ -80,6 +83,8 @@ public class FansCountShardingXxlJob { redisTemplate.opsForHash().put(redisKey, RedisKeyConstants.FIELD_FANS_TOTAL, fansTotal); } } + // 远程 RPC, 调用搜索服务,重新构建索引 + searchRpcService.rebuildUserDocument(userId); }); // 删除t_data_align_fans_count_temp_日期_分片序号中的记录 diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteCollectCountShardingXxlJob.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteCollectCountShardingXxlJob.java index c42496e..86acea2 100644 --- a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteCollectCountShardingXxlJob.java +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteCollectCountShardingXxlJob.java @@ -6,6 +6,7 @@ import com.hanserwei.hannote.data.align.constant.TableConstants; import com.hanserwei.hannote.data.align.domain.mapper.DeleteRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.SelectRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.UpdateRecordMapper; +import com.hanserwei.hannote.data.align.rpc.SearchRpcService; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import jakarta.annotation.Resource; @@ -33,6 +34,9 @@ public class NoteCollectCountShardingXxlJob { @Resource private RedisTemplate redisTemplate; + @Resource + private SearchRpcService searchRpcService; + @XxlJob("noteCollectCountShardingJobHandler") public void noteCollectCountShardingJobHandler() throws Exception { // 获取分片参数 @@ -81,6 +85,8 @@ public class NoteCollectCountShardingXxlJob { redisTemplate.opsForHash().put(redisKey, RedisKeyConstants.FIELD_COLLECT_TOTAL, likeTotal); } } + // 远程 RPC, 调用搜索服务,重新构建文档 + searchRpcService.rebuildNoteDocument(noteId); }); // 4. 批量物理删除这一批次记录 diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteLikeCountShardingXxlJob.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteLikeCountShardingXxlJob.java index 1b96d9a..78909df 100644 --- a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteLikeCountShardingXxlJob.java +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NoteLikeCountShardingXxlJob.java @@ -6,6 +6,7 @@ import com.hanserwei.hannote.data.align.constant.TableConstants; import com.hanserwei.hannote.data.align.domain.mapper.DeleteRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.SelectRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.UpdateRecordMapper; +import com.hanserwei.hannote.data.align.rpc.SearchRpcService; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import jakarta.annotation.Resource; @@ -33,6 +34,9 @@ public class NoteLikeCountShardingXxlJob { @Resource private DeleteRecordMapper deleteRecordMapper; + @Resource + private SearchRpcService searchRpcService; + @XxlJob("noteLikeCountShardingJobHandler") public void noteLikeCountShardingJobHandler() throws Exception { // 获取分片参数 @@ -83,6 +87,9 @@ public class NoteLikeCountShardingXxlJob { redisTemplate.opsForHash().put(redisKey, RedisKeyConstants.FIELD_LIKE_TOTAL, likeTotal); } } + + // 远程 RPC, 调用搜索服务,重新构建文档 + searchRpcService.rebuildNoteDocument(noteId); }); // 4. 批量物理删除这一批次记录 deleteRecordMapper.batchDeleteDataAlignNoteLikeCountTempTable(tableNameSuffix, noteIds); diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NotePublishCountShardingXxlJob.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NotePublishCountShardingXxlJob.java index 0cd1699..dd855be 100644 --- a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NotePublishCountShardingXxlJob.java +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/NotePublishCountShardingXxlJob.java @@ -6,6 +6,7 @@ import com.hanserwei.hannote.data.align.constant.TableConstants; import com.hanserwei.hannote.data.align.domain.mapper.DeleteRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.SelectRecordMapper; import com.hanserwei.hannote.data.align.domain.mapper.UpdateRecordMapper; +import com.hanserwei.hannote.data.align.rpc.SearchRpcService; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import jakarta.annotation.Resource; @@ -29,6 +30,8 @@ public class NotePublishCountShardingXxlJob { private DeleteRecordMapper deleteRecordMapper; @Resource private RedisTemplate redisTemplate; + @Resource + private SearchRpcService searchRpcService; @XxlJob("notePublishCountShardingJobHandler") public void notePublishCountShardingJobHandler() throws Exception { @@ -72,6 +75,8 @@ public class NotePublishCountShardingXxlJob { redisTemplate.opsForHash().put(redisKey, RedisKeyConstants.FIELD_NOTE_TOTAL, notePublishTotal); } } + // 远程 RPC, 调用搜索服务,重新构建索引 + searchRpcService.rebuildUserDocument(userId); }); // 删除 t_data_align_note_publish_count_temp_日期_分片序号 diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/rpc/SearchRpcService.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/rpc/SearchRpcService.java new file mode 100644 index 0000000..8860a6a --- /dev/null +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/rpc/SearchRpcService.java @@ -0,0 +1,41 @@ +package com.hanserwei.hannote.data.align.rpc; + +import com.hanserwei.hannote.search.api.SearchFeignApi; +import com.hanserwei.hannote.search.dto.RebuildNoteDocumentReqDTO; +import com.hanserwei.hannote.search.dto.RebuildUserDocumentReqDTO; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +@Component +public class SearchRpcService { + + @Resource + private SearchFeignApi searchFeignApi; + + /** + * 调用重建笔记文档接口 + * + * @param noteId 笔记ID + */ + public void rebuildNoteDocument(Long noteId) { + RebuildNoteDocumentReqDTO rebuildNoteDocumentReqDTO = RebuildNoteDocumentReqDTO.builder() + .id(noteId) + .build(); + + searchFeignApi.rebuildNoteDocument(rebuildNoteDocumentReqDTO); + } + + /** + * 调用重建用户文档接口 + * + * @param userId 用户ID + */ + public void rebuildUserDocument(Long userId) { + RebuildUserDocumentReqDTO rebuildUserDocumentReqDTO = RebuildUserDocumentReqDTO.builder() + .id(userId) + .build(); + + searchFeignApi.rebuildUserDocument(rebuildUserDocumentReqDTO); + } + +} \ No newline at end of file diff --git a/han-note-search/han-note-search-api/pom.xml b/han-note-search/han-note-search-api/pom.xml new file mode 100644 index 0000000..3a402de --- /dev/null +++ b/han-note-search/han-note-search-api/pom.xml @@ -0,0 +1,38 @@ + + 4.0.0 + + com.hanserwei + han-note-search + ${revision} + + + + jar + + han-note-search-api + ${project.artifactId} + RPC层, 供其他服务调用 + + + UTF-8 + + + + + com.hanserwei + hanserwei-common + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + diff --git a/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/api/SearchFeignApi.java b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/api/SearchFeignApi.java new file mode 100644 index 0000000..6b68c2d --- /dev/null +++ b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/api/SearchFeignApi.java @@ -0,0 +1,35 @@ +package com.hanserwei.hannote.search.api; + +import com.hanserwei.framework.common.response.Response; +import com.hanserwei.hannote.search.constant.ApiConstants; +import com.hanserwei.hannote.search.dto.RebuildNoteDocumentReqDTO; +import com.hanserwei.hannote.search.dto.RebuildUserDocumentReqDTO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(name = ApiConstants.SERVICE_NAME) +public interface SearchFeignApi { + + String PREFIX = "/search"; + + /** + * 重建笔记文档 + * + * @param rebuildNoteDocumentReqDTO 重建笔记文档请求参数对象,包含重建所需的相关信息 + * @return 返回重建操作的结果响应对象 + */ + @PostMapping(value = PREFIX + "/note/document/rebuild") + Response rebuildNoteDocument(@RequestBody RebuildNoteDocumentReqDTO rebuildNoteDocumentReqDTO); + + + /** + * 重建用户文档 + * + * @param rebuildUserDocumentReqDTO 重建用户文档请求参数对象,包含重建所需的相关信息 + * @return 返回重建操作的结果响应对象 + */ + @PostMapping(value = PREFIX + "/user/document/rebuild") + Response rebuildUserDocument(@RequestBody RebuildUserDocumentReqDTO rebuildUserDocumentReqDTO); + +} \ No newline at end of file diff --git a/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/constant/ApiConstants.java b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/constant/ApiConstants.java new file mode 100644 index 0000000..cf5d07e --- /dev/null +++ b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/constant/ApiConstants.java @@ -0,0 +1,9 @@ +package com.hanserwei.hannote.search.constant; + +public interface ApiConstants { + + /** + * 服务名称 + */ + String SERVICE_NAME = "han-note-search"; +} \ No newline at end of file diff --git a/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildNoteDocumentReqDTO.java b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildNoteDocumentReqDTO.java new file mode 100644 index 0000000..ca8bfec --- /dev/null +++ b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildNoteDocumentReqDTO.java @@ -0,0 +1,18 @@ +package com.hanserwei.hannote.search.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class RebuildNoteDocumentReqDTO { + + @NotNull(message = "笔记 ID 不能为空") + private Long id; + +} \ No newline at end of file diff --git a/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildUserDocumentReqDTO.java b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildUserDocumentReqDTO.java new file mode 100644 index 0000000..721d478 --- /dev/null +++ b/han-note-search/han-note-search-api/src/main/java/com/hanserwei/hannote/search/dto/RebuildUserDocumentReqDTO.java @@ -0,0 +1,18 @@ +package com.hanserwei.hannote.search.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class RebuildUserDocumentReqDTO { + + @NotNull(message = "用户 ID 不能为空") + private Long id; + +} \ No newline at end of file diff --git a/han-note-search/han-note-search-biz/pom.xml b/han-note-search/han-note-search-biz/pom.xml new file mode 100644 index 0000000..98a29c9 --- /dev/null +++ b/han-note-search/han-note-search-biz/pom.xml @@ -0,0 +1,108 @@ + + 4.0.0 + + + com.hanserwei + han-note-search + ${revision} + + + + jar + han-note-search-biz + ${project.artifactId} + 搜索服务 + + + + com.hanserwei + hanserwei-common + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + com.hanserwei + hanserwei-spring-boot-starter-biz-operationlog + + + + + com.hanserwei + hanserwei-spring-boot-starter-jackson + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + co.elastic.clients + elasticsearch-java + + + org.elasticsearch.client + elasticsearch-rest-client + + + + com.alibaba.otter + canal.client + + + com.alibaba.otter + canal.common + + + com.alibaba.otter + canal.protocol + + + com.baomidou + mybatis-plus-spring-boot3-starter + + + com.mysql + mysql-connector-j + + + + com.alibaba + druid-spring-boot-3-starter + + + com.hanserwei + han-note-search-api + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/HannoteSearchApplication.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/HannoteSearchApplication.java similarity index 80% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/HannoteSearchApplication.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/HannoteSearchApplication.java index fa547fe..23d7ee0 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/HannoteSearchApplication.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/HannoteSearchApplication.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search; +package com.hanserwei.hannote.search.biz; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; @@ -7,7 +7,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling -@MapperScan("com.hanserwei.hannote.search.domain.mapper") +@MapperScan("com.hanserwei.hannote.search.biz.domain.mapper") public class HannoteSearchApplication { public static void main(String[] args) { SpringApplication.run(HannoteSearchApplication.class, args); diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalClient.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalClient.java similarity index 97% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalClient.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalClient.java index 360aa85..c82c1c3 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalClient.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalClient.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.canal; +package com.hanserwei.hannote.search.biz.canal; import com.alibaba.otter.canal.client.CanalConnector; import com.alibaba.otter.canal.client.CanalConnectors; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalProperties.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalProperties.java similarity index 93% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalProperties.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalProperties.java index 4d2b0bf..b8ed17f 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalProperties.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalProperties.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.canal; +package com.hanserwei.hannote.search.biz.canal; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalSchedule.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalSchedule.java similarity index 97% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalSchedule.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalSchedule.java index be75d25..c1424d1 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/canal/CanalSchedule.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/canal/CanalSchedule.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.canal; +package com.hanserwei.hannote.search.biz.canal; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch.core.BulkRequest; @@ -9,11 +9,11 @@ import com.alibaba.otter.canal.protocol.CanalEntry; import com.alibaba.otter.canal.protocol.Message; import com.google.common.collect.Maps; import com.hanserwei.framework.common.enums.StatusEnum; -import com.hanserwei.hannote.search.domain.mapper.SelectMapper; -import com.hanserwei.hannote.search.enums.NoteStatusEnum; -import com.hanserwei.hannote.search.enums.NoteVisibleEnum; -import com.hanserwei.hannote.search.index.NoteIndex; -import com.hanserwei.hannote.search.index.UserIndex; +import com.hanserwei.hannote.search.biz.domain.mapper.SelectMapper; +import com.hanserwei.hannote.search.biz.enums.NoteStatusEnum; +import com.hanserwei.hannote.search.biz.enums.NoteVisibleEnum; +import com.hanserwei.hannote.search.biz.index.NoteIndex; +import com.hanserwei.hannote.search.biz.index.UserIndex; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/config/ElasticsearchConfig.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/config/ElasticsearchConfig.java similarity index 96% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/config/ElasticsearchConfig.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/config/ElasticsearchConfig.java index 0e84779..704def5 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/config/ElasticsearchConfig.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/config/ElasticsearchConfig.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.config; +package com.hanserwei.hannote.search.biz.config; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.json.jackson.JacksonJsonpMapper; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/controller/ExtDictController.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/ExtDictController.java similarity index 85% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/controller/ExtDictController.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/ExtDictController.java index 9dfdc1e..0e705b0 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/controller/ExtDictController.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/ExtDictController.java @@ -1,7 +1,7 @@ -package com.hanserwei.hannote.search.controller; +package com.hanserwei.hannote.search.biz.controller; import com.hanserwei.framework.biz.operationlog.aspect.ApiOperationLog; -import com.hanserwei.hannote.search.service.ExtDictService; +import com.hanserwei.hannote.search.biz.service.ExtDictService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/controller/NoteController.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/NoteController.java similarity index 53% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/controller/NoteController.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/NoteController.java index d8e94bb..ae90603 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/controller/NoteController.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/NoteController.java @@ -1,10 +1,12 @@ -package com.hanserwei.hannote.search.controller; +package com.hanserwei.hannote.search.biz.controller; import com.hanserwei.framework.biz.operationlog.aspect.ApiOperationLog; import com.hanserwei.framework.common.response.PageResponse; -import com.hanserwei.hannote.search.model.vo.SearchNoteReqVO; -import com.hanserwei.hannote.search.model.vo.SearchNoteRspVO; -import com.hanserwei.hannote.search.service.NoteService; +import com.hanserwei.framework.common.response.Response; +import com.hanserwei.hannote.search.biz.model.vo.SearchNoteReqVO; +import com.hanserwei.hannote.search.biz.model.vo.SearchNoteRspVO; +import com.hanserwei.hannote.search.biz.service.NoteService; +import com.hanserwei.hannote.search.dto.RebuildNoteDocumentReqDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; @@ -27,4 +29,10 @@ public class NoteController { return noteService.searchNote(searchNoteReqVO); } + // ===================================== 对其他服务提供的接口 ===================================== + @PostMapping("/note/document/rebuild") + @ApiOperationLog(description = "用户文档重建") + public Response rebuildDocument(@Validated @RequestBody RebuildNoteDocumentReqDTO rebuildNoteDocumentReqDTO) { + return noteService.rebuildDocument(rebuildNoteDocumentReqDTO); + } } \ No newline at end of file diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/controller/UserController.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/UserController.java similarity index 53% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/controller/UserController.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/UserController.java index 7b9dfb0..dd3e36c 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/controller/UserController.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/controller/UserController.java @@ -1,10 +1,12 @@ -package com.hanserwei.hannote.search.controller; +package com.hanserwei.hannote.search.biz.controller; import com.hanserwei.framework.biz.operationlog.aspect.ApiOperationLog; import com.hanserwei.framework.common.response.PageResponse; -import com.hanserwei.hannote.search.model.vo.SearchUserReqVO; -import com.hanserwei.hannote.search.model.vo.SearchUserRspVO; -import com.hanserwei.hannote.search.service.UserService; +import com.hanserwei.framework.common.response.Response; +import com.hanserwei.hannote.search.biz.model.vo.SearchUserReqVO; +import com.hanserwei.hannote.search.biz.model.vo.SearchUserRspVO; +import com.hanserwei.hannote.search.biz.service.UserService; +import com.hanserwei.hannote.search.dto.RebuildUserDocumentReqDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; @@ -27,4 +29,11 @@ public class UserController { return userService.searchUser(searchUserReqVO); } + // ===================================== 对其他服务提供的接口 ===================================== + @PostMapping("/user/document/rebuild") + @ApiOperationLog(description = "用户文档重建") + public Response rebuildDocument(@Validated @RequestBody RebuildUserDocumentReqDTO rebuildUserDocumentReqDTO) { + return userService.rebuildDocument(rebuildUserDocumentReqDTO); + } + } diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/domain/mapper/SelectMapper.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/domain/mapper/SelectMapper.java similarity index 92% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/domain/mapper/SelectMapper.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/domain/mapper/SelectMapper.java index c9428b7..c9c46b4 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/domain/mapper/SelectMapper.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/domain/mapper/SelectMapper.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.domain.mapper; +package com.hanserwei.hannote.search.biz.domain.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NotePublishTimeRangeEnum.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NotePublishTimeRangeEnum.java similarity index 94% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NotePublishTimeRangeEnum.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NotePublishTimeRangeEnum.java index dc241e6..9a9ab9c 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NotePublishTimeRangeEnum.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NotePublishTimeRangeEnum.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.enums; +package com.hanserwei.hannote.search.biz.enums; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteSortTypeEnum.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteSortTypeEnum.java similarity index 94% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteSortTypeEnum.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteSortTypeEnum.java index a346459..0a40e23 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteSortTypeEnum.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteSortTypeEnum.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.enums; +package com.hanserwei.hannote.search.biz.enums; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteStatusEnum.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteStatusEnum.java similarity index 85% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteStatusEnum.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteStatusEnum.java index 76a0861..a98b0fb 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteStatusEnum.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteStatusEnum.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.enums; +package com.hanserwei.hannote.search.biz.enums; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteVisibleEnum.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteVisibleEnum.java similarity index 82% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteVisibleEnum.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteVisibleEnum.java index 2442370..94177ab 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/NoteVisibleEnum.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/NoteVisibleEnum.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.enums; +package com.hanserwei.hannote.search.biz.enums; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/ResponseCodeEnum.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/ResponseCodeEnum.java similarity index 92% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/enums/ResponseCodeEnum.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/ResponseCodeEnum.java index 2e1b65a..270e827 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/enums/ResponseCodeEnum.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/enums/ResponseCodeEnum.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.enums; +package com.hanserwei.hannote.search.biz.enums; import com.hanserwei.framework.common.exception.BaseExceptionInterface; import lombok.AllArgsConstructor; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/exception/GlobalExceptionHandler.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/exception/GlobalExceptionHandler.java similarity index 96% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/exception/GlobalExceptionHandler.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/exception/GlobalExceptionHandler.java index 2f2b83e..ff89f7b 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/exception/GlobalExceptionHandler.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/exception/GlobalExceptionHandler.java @@ -1,8 +1,8 @@ -package com.hanserwei.hannote.search.exception; +package com.hanserwei.hannote.search.biz.exception; import com.hanserwei.framework.common.exception.ApiException; import com.hanserwei.framework.common.response.Response; -import com.hanserwei.hannote.search.enums.ResponseCodeEnum; +import com.hanserwei.hannote.search.biz.enums.ResponseCodeEnum; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindingResult; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/index/NoteIndex.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/index/NoteIndex.java similarity index 96% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/index/NoteIndex.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/index/NoteIndex.java index 7f3d7b9..f8cac82 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/index/NoteIndex.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/index/NoteIndex.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.index; +package com.hanserwei.hannote.search.biz.index; public class NoteIndex { diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/index/UserIndex.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/index/UserIndex.java similarity index 93% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/index/UserIndex.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/index/UserIndex.java index e106dd1..2216a07 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/index/UserIndex.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/index/UserIndex.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.index; +package com.hanserwei.hannote.search.biz.index; public class UserIndex { diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchNoteReqVO.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchNoteReqVO.java similarity index 94% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchNoteReqVO.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchNoteReqVO.java index bc7d5bd..985e444 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchNoteReqVO.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchNoteReqVO.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.model.vo; +package com.hanserwei.hannote.search.biz.model.vo; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchNoteRspVO.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchNoteRspVO.java similarity index 95% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchNoteRspVO.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchNoteRspVO.java index ba9a640..d732b4a 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchNoteRspVO.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchNoteRspVO.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.model.vo; +package com.hanserwei.hannote.search.biz.model.vo; import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchUserReqVO.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchUserReqVO.java similarity index 90% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchUserReqVO.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchUserReqVO.java index e6ec4cd..198d890 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchUserReqVO.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchUserReqVO.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.model.vo; +package com.hanserwei.hannote.search.biz.model.vo; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchUserRspVO.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchUserRspVO.java similarity index 95% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchUserRspVO.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchUserRspVO.java index 841ad4e..f1c654c 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/model/vo/SearchUserRspVO.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/model/vo/SearchUserRspVO.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.model.vo; +package com.hanserwei.hannote.search.biz.model.vo; import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/ExtDictService.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/ExtDictService.java similarity index 81% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/service/ExtDictService.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/ExtDictService.java index 64255a8..820fd67 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/ExtDictService.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/ExtDictService.java @@ -1,4 +1,4 @@ -package com.hanserwei.hannote.search.service; +package com.hanserwei.hannote.search.biz.service; import org.springframework.http.ResponseEntity; diff --git a/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/NoteService.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/NoteService.java new file mode 100644 index 0000000..6250240 --- /dev/null +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/NoteService.java @@ -0,0 +1,26 @@ +package com.hanserwei.hannote.search.biz.service; + +import com.hanserwei.framework.common.response.PageResponse; +import com.hanserwei.framework.common.response.Response; +import com.hanserwei.hannote.search.biz.model.vo.SearchNoteReqVO; +import com.hanserwei.hannote.search.biz.model.vo.SearchNoteRspVO; +import com.hanserwei.hannote.search.dto.RebuildNoteDocumentReqDTO; + +public interface NoteService { + + /** + * 搜索笔记 + * + * @param searchNoteReqVO 搜索笔记请求 + * @return 搜索笔记响应 + */ + PageResponse searchNote(SearchNoteReqVO searchNoteReqVO); + + /** + * 重建笔记文档 + * + * @param rebuildNoteDocumentReqDTO 重建笔记文档请求 + * @return 响应 + */ + Response rebuildDocument(RebuildNoteDocumentReqDTO rebuildNoteDocumentReqDTO); +} diff --git a/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/UserService.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/UserService.java new file mode 100644 index 0000000..1267ee7 --- /dev/null +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/UserService.java @@ -0,0 +1,26 @@ +package com.hanserwei.hannote.search.biz.service; + +import com.hanserwei.framework.common.response.PageResponse; +import com.hanserwei.framework.common.response.Response; +import com.hanserwei.hannote.search.biz.model.vo.SearchUserReqVO; +import com.hanserwei.hannote.search.biz.model.vo.SearchUserRspVO; +import com.hanserwei.hannote.search.dto.RebuildUserDocumentReqDTO; + +public interface UserService { + + /** + * 搜索用户 + * + * @param searchUserReqVO 搜索用户请求 + * @return 搜索用户响应 + */ + PageResponse searchUser(SearchUserReqVO searchUserReqVO); + + /** + * 重建用户文档 + * + * @param rebuildUserDocumentReqDTO 重建用户文档请求 + * @return 响应 + */ + Response rebuildDocument(RebuildUserDocumentReqDTO rebuildUserDocumentReqDTO); +} diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/ExtDictServiceImpl.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/ExtDictServiceImpl.java similarity index 93% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/ExtDictServiceImpl.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/ExtDictServiceImpl.java index 041210b..8563c65 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/ExtDictServiceImpl.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/ExtDictServiceImpl.java @@ -1,6 +1,6 @@ -package com.hanserwei.hannote.search.service.impl; +package com.hanserwei.hannote.search.biz.service.impl; -import com.hanserwei.hannote.search.service.ExtDictService; +import com.hanserwei.hannote.search.biz.service.ExtDictService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/NoteServiceImpl.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/NoteServiceImpl.java similarity index 87% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/NoteServiceImpl.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/NoteServiceImpl.java index 62077ba..d0c5abe 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/NoteServiceImpl.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/NoteServiceImpl.java @@ -1,10 +1,11 @@ -package com.hanserwei.hannote.search.service.impl; +package com.hanserwei.hannote.search.biz.service.impl; import cn.hutool.core.collection.CollUtil; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.SortOptions; import co.elastic.clients.elasticsearch._types.SortOrder; import co.elastic.clients.elasticsearch._types.query_dsl.*; +import co.elastic.clients.elasticsearch.core.IndexRequest; import co.elastic.clients.elasticsearch.core.SearchRequest; import co.elastic.clients.elasticsearch.core.SearchResponse; import co.elastic.clients.elasticsearch.core.search.Highlight; @@ -13,14 +14,17 @@ import co.elastic.clients.elasticsearch.core.search.Hit; import co.elastic.clients.util.NamedValue; import com.hanserwei.framework.common.constant.DateConstants; import com.hanserwei.framework.common.response.PageResponse; +import com.hanserwei.framework.common.response.Response; import com.hanserwei.framework.common.utils.DateUtils; import com.hanserwei.framework.common.utils.NumberUtils; -import com.hanserwei.hannote.search.enums.NotePublishTimeRangeEnum; -import com.hanserwei.hannote.search.enums.NoteSortTypeEnum; -import com.hanserwei.hannote.search.index.NoteIndex; -import com.hanserwei.hannote.search.model.vo.SearchNoteReqVO; -import com.hanserwei.hannote.search.model.vo.SearchNoteRspVO; -import com.hanserwei.hannote.search.service.NoteService; +import com.hanserwei.hannote.search.biz.domain.mapper.SelectMapper; +import com.hanserwei.hannote.search.biz.enums.NotePublishTimeRangeEnum; +import com.hanserwei.hannote.search.biz.enums.NoteSortTypeEnum; +import com.hanserwei.hannote.search.biz.index.NoteIndex; +import com.hanserwei.hannote.search.biz.model.vo.SearchNoteReqVO; +import com.hanserwei.hannote.search.biz.model.vo.SearchNoteRspVO; +import com.hanserwei.hannote.search.biz.service.NoteService; +import com.hanserwei.hannote.search.dto.RebuildNoteDocumentReqDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -39,6 +43,8 @@ public class NoteServiceImpl implements NoteService { @Resource private ElasticsearchClient client; + @Resource + private SelectMapper selectMapper; @Override public PageResponse searchNote(SearchNoteReqVO searchNoteReqVO) { @@ -295,4 +301,30 @@ public class NoteServiceImpl implements NoteService { return PageResponse.success(searchNoteRspVOS, pageNo, total); } + @Override + public Response rebuildDocument(RebuildNoteDocumentReqDTO rebuildNoteDocumentReqDTO) { + Long noteId = rebuildNoteDocumentReqDTO.getId(); + + // 从数据库查询 Elasticsearch 索引数据 + List> result = selectMapper.selectEsNoteIndexData(noteId, null); + + // 遍历查询结果,将每条记录同步到 Elasticsearch + for (Map recordMap : result) { + IndexRequest request = IndexRequest.of(r -> r + // 创建索引请求对象,指定索引名称 + .index(NoteIndex.NAME) + // 设置文档的 ID,使用记录中的主键 “id” 字段值 + .id((String.valueOf(recordMap.get(NoteIndex.FIELD_NOTE_ID)))) + // 设置文档的内容,使用查询结果的记录数据 + .document(recordMap)); + try { + // 将数据写入 Elasticsearch 索引 + client.index(request); + } catch (IOException e) { + log.error("==> 同步笔记数据异常: {}", e.getMessage()); + } + } + return Response.success(); + } + } diff --git a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/UserServiceImpl.java b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/UserServiceImpl.java similarity index 73% rename from han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/UserServiceImpl.java rename to han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/UserServiceImpl.java index 6b19069..4a27eb0 100644 --- a/han-note-search/src/main/java/com/hanserwei/hannote/search/service/impl/UserServiceImpl.java +++ b/han-note-search/han-note-search-biz/src/main/java/com/hanserwei/hannote/search/biz/service/impl/UserServiceImpl.java @@ -1,10 +1,11 @@ -package com.hanserwei.hannote.search.service.impl; +package com.hanserwei.hannote.search.biz.service.impl; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.SortOptions; import co.elastic.clients.elasticsearch._types.SortOrder; import co.elastic.clients.elasticsearch._types.query_dsl.Query; import co.elastic.clients.elasticsearch._types.query_dsl.TextQueryType; +import co.elastic.clients.elasticsearch.core.IndexRequest; import co.elastic.clients.elasticsearch.core.SearchRequest; import co.elastic.clients.elasticsearch.core.SearchResponse; import co.elastic.clients.elasticsearch.core.search.Highlight; @@ -12,11 +13,14 @@ import co.elastic.clients.elasticsearch.core.search.HighlightField; import co.elastic.clients.elasticsearch.core.search.Hit; import co.elastic.clients.util.NamedValue; import com.hanserwei.framework.common.response.PageResponse; +import com.hanserwei.framework.common.response.Response; import com.hanserwei.framework.common.utils.NumberUtils; -import com.hanserwei.hannote.search.index.UserIndex; -import com.hanserwei.hannote.search.model.vo.SearchUserReqVO; -import com.hanserwei.hannote.search.model.vo.SearchUserRspVO; -import com.hanserwei.hannote.search.service.UserService; +import com.hanserwei.hannote.search.biz.domain.mapper.SelectMapper; +import com.hanserwei.hannote.search.biz.index.UserIndex; +import com.hanserwei.hannote.search.biz.model.vo.SearchUserReqVO; +import com.hanserwei.hannote.search.biz.model.vo.SearchUserRspVO; +import com.hanserwei.hannote.search.biz.service.UserService; +import com.hanserwei.hannote.search.dto.RebuildUserDocumentReqDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -32,6 +36,8 @@ public class UserServiceImpl implements UserService { @Resource private ElasticsearchClient client; + @Resource + private SelectMapper selectMapper; @Override public PageResponse searchUser(SearchUserReqVO searchUserReqVO) { @@ -114,4 +120,30 @@ public class UserServiceImpl implements UserService { } return PageResponse.success(searchUserRspVOS, pageNo, total); } + + @Override + public Response rebuildDocument(RebuildUserDocumentReqDTO rebuildUserDocumentReqDTO) { + Long userId = rebuildUserDocumentReqDTO.getId(); + + // 从数据库查询 Elasticsearch 索引数据 + List> result = selectMapper.selectEsUserIndexData(userId); + + // 遍历查询结果,将每条记录同步到 Elasticsearch + for (Map recordMap : result) { + IndexRequest request = IndexRequest.of(indexRequest -> indexRequest + // 创建索引请求对象,指定索引名称 + .index(UserIndex.NAME) + // 设置文档的 ID,使用记录中的主键 “id” 字段值 + .id((String.valueOf(recordMap.get(UserIndex.FIELD_USER_ID)))) + // 设置文档的内容,使用查询结果的记录数据 + .document(recordMap)); + // 将数据写入 Elasticsearch 索引 + try { + client.index(request); + } catch (IOException e) { + log.error("==> 同步用户数据到 Elasticsearch 索引中失败: " + e.getMessage()); + } + } + return Response.success(); + } } diff --git a/han-note-search/src/main/resources/application.yml b/han-note-search/han-note-search-biz/src/main/resources/application.yml similarity index 100% rename from han-note-search/src/main/resources/application.yml rename to han-note-search/han-note-search-biz/src/main/resources/application.yml diff --git a/han-note-search/src/main/resources/bootstrap.yml b/han-note-search/han-note-search-biz/src/main/resources/bootstrap.yml similarity index 100% rename from han-note-search/src/main/resources/bootstrap.yml rename to han-note-search/han-note-search-biz/src/main/resources/bootstrap.yml diff --git a/han-note-search/src/main/resources/logback-spring.xml b/han-note-search/han-note-search-biz/src/main/resources/logback-spring.xml similarity index 100% rename from han-note-search/src/main/resources/logback-spring.xml rename to han-note-search/han-note-search-biz/src/main/resources/logback-spring.xml diff --git a/han-note-search/src/main/resources/mapperxml/SelectMapper.xml b/han-note-search/han-note-search-biz/src/main/resources/mapperxml/SelectMapper.xml similarity index 84% rename from han-note-search/src/main/resources/mapperxml/SelectMapper.xml rename to han-note-search/han-note-search-biz/src/main/resources/mapperxml/SelectMapper.xml index 9b8c8c5..0f212f9 100644 --- a/han-note-search/src/main/resources/mapperxml/SelectMapper.xml +++ b/han-note-search/han-note-search-biz/src/main/resources/mapperxml/SelectMapper.xml @@ -1,17 +1,17 @@ - +