From 014b42aad2491d503dbdab498c57e0d75e34b2d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=99=E9=A3=8E=E9=81=93=E9=AA=A8=E5=B0=8F=E5=8D=8A?= =?UTF-8?q?=E4=BB=99=E5=84=BF?= <414571696@qq.com> Date: Mon, 24 Mar 2025 15:23:07 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E9=AB=98=E5=BE=B7=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=95=B0=E6=8D=AE=E5=AF=B9=E5=BA=94=E7=9A=84POI?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 3 +- yudao-module-map/pom.xml | 24 ++ yudao-module-map/yudao-module-map-api/pom.xml | 26 ++ .../module/map/enums/ErrorCodeConstants.java | 8 + yudao-module-map/yudao-module-map-biz/pom.xml | 55 ++++ .../KeywordSearchController.java | 155 +++++++++++ .../vo/KeywordSearchPageReqVO.java | 55 ++++ .../keywordsearch/vo/KeywordSearchRespVO.java | 67 +++++ .../vo/KeywordSearchSaveReqVO.java | 73 +++++ .../keywordsearch/KeywordSearchDO.java | 75 +++++ .../keywordsearch/PoisBusinessDO.java | 77 ++++++ .../dal/dataobject/keywordsearch/PoisDO.java | 79 ++++++ .../keywordsearch/PoisIndoorDO.java | 51 ++++ .../dataobject/keywordsearch/PoisNaviDO.java | 51 ++++ .../keywordsearch/PoisPhotosDO.java | 43 +++ .../keywordsearch/KeywordSearchMapper.java | 37 +++ .../keywordsearch/PoisBusinessMapper.java | 28 ++ .../mysql/keywordsearch/PoisIndoorMapper.java | 28 ++ .../dal/mysql/keywordsearch/PoisMapper.java | 28 ++ .../mysql/keywordsearch/PoisNaviMapper.java | 28 ++ .../mysql/keywordsearch/PoisPhotosMapper.java | 28 ++ .../keywordsearch/KeywordSearchService.java | 110 ++++++++ .../KeywordSearchServiceImpl.java | 258 ++++++++++++++++++ .../keywordsearch/KeywordSearchMapper.xml | 12 + yudao-server/pom.xml | 7 + .../server/controller/DefaultController.java | 5 + .../src/main/resources/application-local.yaml | 1 + 27 files changed, 1411 insertions(+), 1 deletion(-) create mode 100644 yudao-module-map/pom.xml create mode 100644 yudao-module-map/yudao-module-map-api/pom.xml create mode 100644 yudao-module-map/yudao-module-map-api/src/main/java/cn/iocoder/yudao/module/map/enums/ErrorCodeConstants.java create mode 100644 yudao-module-map/yudao-module-map-biz/pom.xml create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/KeywordSearchController.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchPageReqVO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchRespVO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchSaveReqVO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/KeywordSearchDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisBusinessDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisIndoorDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisNaviDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisPhotosDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/KeywordSearchMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisBusinessMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisIndoorMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisNaviMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisPhotosMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchService.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchServiceImpl.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/keywordsearch/KeywordSearchMapper.xml diff --git a/pom.xml b/pom.xml index 8659a524d2..6f00e557af 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,8 @@ yudao-module-crm - + yudao-module-map + diff --git a/yudao-module-map/pom.xml b/yudao-module-map/pom.xml new file mode 100644 index 0000000000..bedc8b78fe --- /dev/null +++ b/yudao-module-map/pom.xml @@ -0,0 +1,24 @@ + + + + yudao + cn.iocoder.boot + ${revision} + + + yudao-module-map-api + yudao-module-map-biz + + 4.0.0 + + yudao-module-map + pom + + ${project.artifactId} + + map 模块,主要实现 高德接口查询,获取poi类型数据,高德接口请求 等功能。 + + + diff --git a/yudao-module-map/yudao-module-map-api/pom.xml b/yudao-module-map/yudao-module-map-api/pom.xml new file mode 100644 index 0000000000..a3b548a6b6 --- /dev/null +++ b/yudao-module-map/yudao-module-map-api/pom.xml @@ -0,0 +1,26 @@ + + + + yudao-module-map + cn.iocoder.boot + ${revision} + + 4.0.0 + yudao-module-map-api + jar + + ${project.artifactId} + + map 模块 API,暴露给其它模块调用 + + + + + cn.iocoder.boot + yudao-common + + + + diff --git a/yudao-module-map/yudao-module-map-api/src/main/java/cn/iocoder/yudao/module/map/enums/ErrorCodeConstants.java b/yudao-module-map/yudao-module-map-api/src/main/java/cn/iocoder/yudao/module/map/enums/ErrorCodeConstants.java new file mode 100644 index 0000000000..bce6b2fe0e --- /dev/null +++ b/yudao-module-map/yudao-module-map-api/src/main/java/cn/iocoder/yudao/module/map/enums/ErrorCodeConstants.java @@ -0,0 +1,8 @@ +package cn.iocoder.yudao.module.map.enums; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +public interface ErrorCodeConstants { + + // ========== 高德关键字搜索记录 1-050-000-000 ========== + // ========== 高德关键字搜索记录 TODO 补充编号 ========== + ErrorCode KEYWORD_SEARCH_NOT_EXISTS = new ErrorCode(1_050_000_000, "高德关键字搜索记录不存在"); +} diff --git a/yudao-module-map/yudao-module-map-biz/pom.xml b/yudao-module-map/yudao-module-map-biz/pom.xml new file mode 100644 index 0000000000..13832615e4 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/pom.xml @@ -0,0 +1,55 @@ + + + + yudao-module-map + cn.iocoder.boot + ${revision} + + 4.0.0 + jar + + yudao-module-map-biz + + ${project.artifactId} + + map 模块,主要实现 XXX、YYY、ZZZ 等功能。 + + + + + cn.iocoder.boot + yudao-module-map-api + ${revision} + + + + + cn.iocoder.boot + yudao-spring-boot-starter-web + + + + cn.iocoder.boot + yudao-spring-boot-starter-security + + + + + cn.iocoder.boot + yudao-spring-boot-starter-mybatis + + + + + cn.iocoder.boot + yudao-spring-boot-starter-test + + + cn.iocoder.boot + yudao-spring-boot-starter-excel + + + + diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/KeywordSearchController.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/KeywordSearchController.java new file mode 100644 index 0000000000..810721830c --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/KeywordSearchController.java @@ -0,0 +1,155 @@ +package cn.iocoder.yudao.module.map.controller.admin.keywordsearch; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo.*; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.KeywordSearchDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisBusinessDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisIndoorDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisNaviDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisPhotosDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisDO; +import cn.iocoder.yudao.module.map.service.keywordsearch.KeywordSearchService; + +@Tag(name = "管理后台 - 高德关键字搜索记录") +@RestController +@RequestMapping("/map/keyword-search") +@Validated +public class KeywordSearchController { + + @Resource + private KeywordSearchService keywordSearchService; + + @PostMapping("/create") + @Operation(summary = "创建高德关键字搜索记录") + @PreAuthorize("@ss.hasPermission('map:keyword-search:create')") + public CommonResult createKeywordSearch(@Valid @RequestBody KeywordSearchSaveReqVO createReqVO) { + return success(keywordSearchService.createKeywordSearch(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新高德关键字搜索记录") + @PreAuthorize("@ss.hasPermission('map:keyword-search:update')") + public CommonResult updateKeywordSearch(@Valid @RequestBody KeywordSearchSaveReqVO updateReqVO) { + keywordSearchService.updateKeywordSearch(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除高德关键字搜索记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('map:keyword-search:delete')") + public CommonResult deleteKeywordSearch(@RequestParam("id") Long id) { + keywordSearchService.deleteKeywordSearch(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得高德关键字搜索记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('map:keyword-search:query')") + public CommonResult getKeywordSearch(@RequestParam("id") Long id) { + KeywordSearchDO keywordSearch = keywordSearchService.getKeywordSearch(id); + return success(BeanUtils.toBean(keywordSearch, KeywordSearchRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得高德关键字搜索记录分页") + @PreAuthorize("@ss.hasPermission('map:keyword-search:query')") + public CommonResult> getKeywordSearchPage(@Valid KeywordSearchPageReqVO pageReqVO) { + pageReqVO.setPageSize(25); + PageResult pageResult = keywordSearchService.getKeywordSearchPage(pageReqVO); + if (CollUtil.isEmpty(pageResult.getList())) { + return success(PageResult.empty(pageResult.getTotal())); + } + return success(BeanUtils.toBean(pageResult, KeywordSearchRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出高德关键字搜索记录 Excel") + @PreAuthorize("@ss.hasPermission('map:keyword-search:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportKeywordSearchExcel(@Valid KeywordSearchPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = keywordSearchService.getKeywordSearchPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "高德关键字搜索记录.xls", "数据", KeywordSearchRespVO.class, + BeanUtils.toBean(list, KeywordSearchRespVO.class)); + } + + // ==================== 子表(商业信息) ==================== + + @GetMapping("/pois-business/get-by-key-search-id") + @Operation(summary = "获得商业信息") + @Parameter(name = "keySearchId", description = "搜索记录ID") + @PreAuthorize("@ss.hasPermission('map:keyword-search:query')") + public CommonResult getPoisBusinessByKeySearchId(@RequestParam("keySearchId") Long keySearchId) { + return success(keywordSearchService.getPoisBusinessByKeySearchId(keySearchId)); + } + + // ==================== 子表(室内信息) ==================== + + @GetMapping("/pois-indoor/get-by-key-search-id") + @Operation(summary = "获得室内信息") + @Parameter(name = "keySearchId", description = "搜索记录ID") + @PreAuthorize("@ss.hasPermission('map:keyword-search:query')") + public CommonResult getPoisIndoorByKeySearchId(@RequestParam("keySearchId") Long keySearchId) { + return success(keywordSearchService.getPoisIndoorByKeySearchId(keySearchId)); + } + + // ==================== 子表(导航信息) ==================== + + @GetMapping("/pois-navi/get-by-key-search-id") + @Operation(summary = "获得导航信息") + @Parameter(name = "keySearchId", description = "搜索记录ID") + @PreAuthorize("@ss.hasPermission('map:keyword-search:query')") + public CommonResult getPoisNaviByKeySearchId(@RequestParam("keySearchId") Long keySearchId) { + return success(keywordSearchService.getPoisNaviByKeySearchId(keySearchId)); + } + + // ==================== 子表(图片信息) ==================== + + @GetMapping("/pois-photos/get-by-key-search-id") + @Operation(summary = "获得图片信息") + @Parameter(name = "keySearchId", description = "搜索记录ID") + @PreAuthorize("@ss.hasPermission('map:keyword-search:query')") + public CommonResult getPoisPhotosByKeySearchId(@RequestParam("keySearchId") Long keySearchId) { + return success(keywordSearchService.getPoisPhotosByKeySearchId(keySearchId)); + } + + // ==================== 子表(基础信息) ==================== + + @GetMapping("/pois/get-by-key-search-id") + @Operation(summary = "获得基础信息") + @Parameter(name = "keySearchId", description = "搜索记录ID") + @PreAuthorize("@ss.hasPermission('map:keyword-search:query')") + public CommonResult getPoisByKeySearchId(@RequestParam("keySearchId") Long keySearchId) { + return success(keywordSearchService.getPoisByKeySearchId(keySearchId)); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchPageReqVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchPageReqVO.java new file mode 100644 index 0000000000..dbc92a8e4c --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchPageReqVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 高德关键字搜索记录分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class KeywordSearchPageReqVO extends PageParam { + + @Schema(description = "描述", example = "你说的对") + private String description; + + @Schema(description = "状态(1成功,0失败)", example = "2") + private String status; + + @Schema(description = "状态描述") + private String info; + + @Schema(description = "错误码") + private String infocode; + + @Schema(description = "返回POI数量", example = "6432") + private Integer count; + + @Schema(description = "搜索关键字") + private String keywords; + + @Schema(description = "地点类型") + private String types; + + @Schema(description = "搜索区域") + private String region; + + @Schema(description = "城市限制(0否,1是)") + private Boolean cityLimit; + + @Schema(description = "每页大小",example = "25") + private Integer pageSize; + + @Schema(description = "页码",example = "1") + private Integer pageNum; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchRespVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchRespVO.java new file mode 100644 index 0000000000..3af181f9f8 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchRespVO.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 高德关键字搜索记录 Response VO") +@Data +@ExcelIgnoreUnannotated +public class KeywordSearchRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21756") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "描述", example = "你说的对") + @ExcelProperty("描述") + private String description; + + @Schema(description = "状态(1成功,0失败)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态(1成功,0失败)") + private String status; + + @Schema(description = "状态描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("状态描述") + private String info; + + @Schema(description = "错误码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("错误码") + private String infocode; + + @Schema(description = "返回POI数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "6432") + @ExcelProperty("返回POI数量") + private Integer count; + + @Schema(description = "搜索关键字", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("搜索关键字") + private String keywords; + + @Schema(description = "地点类型") + @ExcelProperty("地点类型") + private String types; + + @Schema(description = "搜索区域") + @ExcelProperty("搜索区域") + private String region; + + @Schema(description = "城市限制(0否,1是)") + @ExcelProperty("城市限制(0否,1是)") + private Boolean cityLimit; + + @Schema(description = "每页大小") + @ExcelProperty("每页大小") + private Integer pageSize; + + @Schema(description = "页码") + @ExcelProperty("页码") + private Integer pageNum; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchSaveReqVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchSaveReqVO.java new file mode 100644 index 0000000000..e0a9a7d2e2 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/keywordsearch/vo/KeywordSearchSaveReqVO.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisBusinessDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisIndoorDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisNaviDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisPhotosDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisDO; + +@Schema(description = "管理后台 - 高德关键字搜索记录新增/修改 Request VO") +@Data +public class KeywordSearchSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21756") + private Long id; + + @Schema(description = "描述", example = "你说的对") + private String description; + + @Schema(description = "状态(1成功,0失败)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态(1成功,0失败)不能为空") + private String status; + + @Schema(description = "状态描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "状态描述不能为空") + private String info; + + @Schema(description = "错误码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "错误码不能为空") + private String infocode; + + @Schema(description = "返回POI数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "6432") + @NotNull(message = "返回POI数量不能为空") + private Integer count; + + @Schema(description = "搜索关键字", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "搜索关键字不能为空") + private String keywords; + + @Schema(description = "地点类型") + private String types; + + @Schema(description = "搜索区域") + private String region; + + @Schema(description = "城市限制(0否,1是)") + private Boolean cityLimit; + + @Schema(description = "每页大小") + private Integer pageSize; + + @Schema(description = "页码") + private Integer pageNum; + + @Schema(description = "商业信息") + private PoisBusinessDO poisBusiness; + + @Schema(description = "室内信息") + private PoisIndoorDO poisIndoor; + + @Schema(description = "导航信息") + private PoisNaviDO poisNavi; + + @Schema(description = "图片信息") + private PoisPhotosDO poisPhotos; + + @Schema(description = "基础信息") + private PoisDO pois; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/KeywordSearchDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/KeywordSearchDO.java new file mode 100644 index 0000000000..7d6055e9d0 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/KeywordSearchDO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 高德关键字搜索记录 DO + * + * @author AN + */ +@TableName("map_keyword_search") +@KeySequence("map_keyword_search_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class KeywordSearchDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 描述 + */ + private String description; + /** + * 状态(1成功,0失败) + */ + private String status; + /** + * 状态描述 + */ + private String info; + /** + * 错误码 + */ + private String infocode; + /** + * 返回POI数量 + */ + private Integer count; + /** + * 搜索关键字 + */ + private String keywords; + /** + * 地点类型 + */ + private String types; + /** + * 搜索区域 + */ + private String region; + /** + * 城市限制(0否,1是) + */ + private Boolean cityLimit; + /** + * 每页大小 + */ + private Integer pageSize; + /** + * 页码 + */ + private Integer pageNum; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisBusinessDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisBusinessDO.java new file mode 100644 index 0000000000..cb004055dc --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisBusinessDO.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 商业信息 DO + * + * @author AN + */ +@TableName("map_pois_business") +@KeySequence("map_pois_business_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PoisBusinessDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 搜索记录ID + */ + private Long keySearchId; + /** + * 所属商圈 + */ + private String businessArea; + /** + * 今日营业时间 + */ + private String opentimeToday; + /** + * 营业时间描述 + */ + private String opentimeWeek; + /** + * 联系电话 + */ + private String tel; + /** + * 特色内容,目前仅在美食poi下返回 + */ + private String tag; + /** + * 评分,目前仅在餐饮、酒店、景点、影院类 POI 下返回 + */ + private BigDecimal rating; + /** + * 人均消费,目前仅在餐饮、酒店、景点、影院类 POI 下返回 + */ + private BigDecimal cost; + /** + * 停车场类型,目前仅在停车场类 POI 下返回 + */ + private String parkingType; + /** + * 别名,无别名时不返回 + */ + private String alias; + /** + * poi 标识,用于确认poi信息类型 + */ + private String keytag; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisDO.java new file mode 100644 index 0000000000..a0de34fa29 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisDO.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 基础信息 DO + * + * @author 芋道源码 + */ +@TableName("map_pois") +@KeySequence("map_pois_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PoisDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 搜索记录ID + */ + private Long keySearchId; + /** + * POI名称 + */ + private String name; + /** + * 经纬度 + */ + private String location; + /** + * 所属类型 + */ + private String type; + /** + * 分类编码 + */ + private String typecode; + /** + * 省份 + */ + private String pname; + /** + * 城市 + */ + private String cityName; + /** + * 区县 + */ + private String adname; + /** + * 详细地址 + */ + private String address; + /** + * 省份编码 + */ + private String pcode; + /** + * 区域编码 + */ + private String adcode; + /** + * 城市编码 + */ + private String citycode; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisIndoorDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisIndoorDO.java new file mode 100644 index 0000000000..0f7924fe21 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisIndoorDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 室内信息 DO + * + * @author AN + */ +@TableName("map_pois_indoor") +@KeySequence("map_pois_indoor_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PoisIndoorDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 搜索记录ID + */ + private Long keySearchId; + /** + * 室内地图标志(1有,0无) + */ + private Boolean indoorMap; + /** + * 如果当前 POI 为建筑物类 POI,则 cpid 为自身 POI ID;如果当前 POI 为商铺类 POI,则 cpid 为其所在建筑物的 POI ID。indoor_map 为0时不返回 + */ + private String cpid; + /** + * 楼层索引,一般会用数字表示,例如8;indoor_map 为0时不返回 + */ + private String floor; + /** + * 实际楼层,一般会带有字母,例如F8;indoor_map 为0时不返回 + */ + private String truefloor; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisNaviDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisNaviDO.java new file mode 100644 index 0000000000..816e3aca82 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisNaviDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 导航信息 DO + * + * @author AN + */ +@TableName("map_pois_navi") +@KeySequence("map_pois_navi_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PoisNaviDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 搜索记录ID + */ + private Long keySearchId; + /** + * 导航引导点坐标。大型面状 POI 的导航引导点,一般为各类出入口,方便结合导航、路线规划等服务使用 + */ + private String naviPoiid; + /** + * 入口经纬度坐标 + */ + private String entrLocation; + /** + * 出口经纬度坐标 + */ + private String exitLocation; + /** + * 地理格ID + */ + private String gridcode; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisPhotosDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisPhotosDO.java new file mode 100644 index 0000000000..f333f1329b --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/keywordsearch/PoisPhotosDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 图片信息 DO + * + * @author AN + */ +@TableName("map_pois_photos") +@KeySequence("map_pois_photos_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PoisPhotosDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 搜索记录ID + */ + private Long keySearchId; + /** + * 图片介绍 + */ + private String title; + /** + * 图片链接 + */ + private String url; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/KeywordSearchMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/KeywordSearchMapper.java new file mode 100644 index 0000000000..71bad8a87e --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/KeywordSearchMapper.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.map.dal.mysql.keywordsearch; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.KeywordSearchDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo.*; + +/** + * 高德关键字搜索记录 Mapper + * + * @author AN + */ +@Mapper +public interface KeywordSearchMapper extends BaseMapperX { + + default PageResult selectPage(KeywordSearchPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(KeywordSearchDO::getDescription, reqVO.getDescription()) + .eqIfPresent(KeywordSearchDO::getStatus, reqVO.getStatus()) + .eqIfPresent(KeywordSearchDO::getInfo, reqVO.getInfo()) + .eqIfPresent(KeywordSearchDO::getInfocode, reqVO.getInfocode()) + .eqIfPresent(KeywordSearchDO::getCount, reqVO.getCount()) + .likeIfPresent(KeywordSearchDO::getKeywords, reqVO.getKeywords()) + .eqIfPresent(KeywordSearchDO::getTypes, reqVO.getTypes()) + .eqIfPresent(KeywordSearchDO::getRegion, reqVO.getRegion()) + .eqIfPresent(KeywordSearchDO::getCityLimit, reqVO.getCityLimit()) + .eqIfPresent(KeywordSearchDO::getPageSize, reqVO.getPageSize()) + .eqIfPresent(KeywordSearchDO::getPageNum, reqVO.getPageNum()) + .betweenIfPresent(KeywordSearchDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(KeywordSearchDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisBusinessMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisBusinessMapper.java new file mode 100644 index 0000000000..9d39b1a8de --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisBusinessMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.map.dal.mysql.keywordsearch; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisBusinessDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 商业信息 Mapper + * + * @author AN + */ +@Mapper +public interface PoisBusinessMapper extends BaseMapperX { + + default PoisBusinessDO selectByKeySearchId(Long keySearchId) { + return selectOne(PoisBusinessDO::getKeySearchId, keySearchId); + } + + default int deleteByKeySearchId(Long keySearchId) { + return delete(PoisBusinessDO::getKeySearchId, keySearchId); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisIndoorMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisIndoorMapper.java new file mode 100644 index 0000000000..81b60f4be8 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisIndoorMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.map.dal.mysql.keywordsearch; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisIndoorDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 室内信息 Mapper + * + * @author AN + */ +@Mapper +public interface PoisIndoorMapper extends BaseMapperX { + + default PoisIndoorDO selectByKeySearchId(Long keySearchId) { + return selectOne(PoisIndoorDO::getKeySearchId, keySearchId); + } + + default int deleteByKeySearchId(Long keySearchId) { + return delete(PoisIndoorDO::getKeySearchId, keySearchId); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisMapper.java new file mode 100644 index 0000000000..9040d37a2e --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.map.dal.mysql.keywordsearch; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 基础信息 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface PoisMapper extends BaseMapperX { + + default PoisDO selectByKeySearchId(Long keySearchId) { + return selectOne(PoisDO::getKeySearchId, keySearchId); + } + + default int deleteByKeySearchId(Long keySearchId) { + return delete(PoisDO::getKeySearchId, keySearchId); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisNaviMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisNaviMapper.java new file mode 100644 index 0000000000..e0a9616bbe --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisNaviMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.map.dal.mysql.keywordsearch; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisNaviDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 导航信息 Mapper + * + * @author AN + */ +@Mapper +public interface PoisNaviMapper extends BaseMapperX { + + default PoisNaviDO selectByKeySearchId(Long keySearchId) { + return selectOne(PoisNaviDO::getKeySearchId, keySearchId); + } + + default int deleteByKeySearchId(Long keySearchId) { + return delete(PoisNaviDO::getKeySearchId, keySearchId); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisPhotosMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisPhotosMapper.java new file mode 100644 index 0000000000..d100278c77 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/keywordsearch/PoisPhotosMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.map.dal.mysql.keywordsearch; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisPhotosDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 图片信息 Mapper + * + * @author AN + */ +@Mapper +public interface PoisPhotosMapper extends BaseMapperX { + + default PoisPhotosDO selectByKeySearchId(Long keySearchId) { + return selectOne(PoisPhotosDO::getKeySearchId, keySearchId); + } + + default int deleteByKeySearchId(Long keySearchId) { + return delete(PoisPhotosDO::getKeySearchId, keySearchId); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchService.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchService.java new file mode 100644 index 0000000000..030f355c91 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchService.java @@ -0,0 +1,110 @@ +package cn.iocoder.yudao.module.map.service.keywordsearch; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo.*; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.KeywordSearchDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisBusinessDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisIndoorDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisNaviDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisPhotosDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 高德关键字搜索记录 Service 接口 + * + * @author AN + */ +public interface KeywordSearchService { + + /** + * 创建高德关键字搜索记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createKeywordSearch(@Valid KeywordSearchSaveReqVO createReqVO); + + /** + * 更新高德关键字搜索记录 + * + * @param updateReqVO 更新信息 + */ + void updateKeywordSearch(@Valid KeywordSearchSaveReqVO updateReqVO); + + /** + * 删除高德关键字搜索记录 + * + * @param id 编号 + */ + void deleteKeywordSearch(Long id); + + /** + * 获得高德关键字搜索记录 + * + * @param id 编号 + * @return 高德关键字搜索记录 + */ + KeywordSearchDO getKeywordSearch(Long id); + + /** + * 获得高德关键字搜索记录分页 + * + * @param pageReqVO 分页查询 + * @return 高德关键字搜索记录分页 + */ + PageResult getKeywordSearchPage(KeywordSearchPageReqVO pageReqVO); + + // ==================== 子表(商业信息) ==================== + + /** + * 获得商业信息 + * + * @param keySearchId 搜索记录ID + * @return 商业信息 + */ + PoisBusinessDO getPoisBusinessByKeySearchId(Long keySearchId); + + // ==================== 子表(室内信息) ==================== + + /** + * 获得室内信息 + * + * @param keySearchId 搜索记录ID + * @return 室内信息 + */ + PoisIndoorDO getPoisIndoorByKeySearchId(Long keySearchId); + + // ==================== 子表(导航信息) ==================== + + /** + * 获得导航信息 + * + * @param keySearchId 搜索记录ID + * @return 导航信息 + */ + PoisNaviDO getPoisNaviByKeySearchId(Long keySearchId); + + // ==================== 子表(图片信息) ==================== + + /** + * 获得图片信息 + * + * @param keySearchId 搜索记录ID + * @return 图片信息 + */ + PoisPhotosDO getPoisPhotosByKeySearchId(Long keySearchId); + + // ==================== 子表(基础信息) ==================== + + /** + * 获得基础信息 + * + * @param keySearchId 搜索记录ID + * @return 基础信息 + */ + PoisDO getPoisByKeySearchId(Long keySearchId); + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchServiceImpl.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchServiceImpl.java new file mode 100644 index 0000000000..7563bf778d --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/keywordsearch/KeywordSearchServiceImpl.java @@ -0,0 +1,258 @@ +package cn.iocoder.yudao.module.map.service.keywordsearch; + +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo.*; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.KeywordSearchDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisBusinessDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisIndoorDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisNaviDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisPhotosDO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.PoisDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.map.dal.mysql.keywordsearch.KeywordSearchMapper; +import cn.iocoder.yudao.module.map.dal.mysql.keywordsearch.PoisBusinessMapper; +import cn.iocoder.yudao.module.map.dal.mysql.keywordsearch.PoisIndoorMapper; +import cn.iocoder.yudao.module.map.dal.mysql.keywordsearch.PoisNaviMapper; +import cn.iocoder.yudao.module.map.dal.mysql.keywordsearch.PoisPhotosMapper; +import cn.iocoder.yudao.module.map.dal.mysql.keywordsearch.PoisMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.map.enums.ErrorCodeConstants.*; + +/** + * 高德关键字搜索记录 Service 实现类 + * + * @author AN + */ +@Service +@Validated +public class KeywordSearchServiceImpl implements KeywordSearchService { + + @Resource + private KeywordSearchMapper keywordSearchMapper; + @Resource + private PoisBusinessMapper poisBusinessMapper; + @Resource + private PoisIndoorMapper poisIndoorMapper; + @Resource + private PoisNaviMapper poisNaviMapper; + @Resource + private PoisPhotosMapper poisPhotosMapper; + @Resource + private PoisMapper poisMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createKeywordSearch(KeywordSearchSaveReqVO createReqVO) { + // 插入 + KeywordSearchDO keywordSearch = BeanUtils.toBean(createReqVO, KeywordSearchDO.class); + keywordSearchMapper.insert(keywordSearch); + + // 插入子表 + createPoisBusiness(keywordSearch.getId(), createReqVO.getPoisBusiness()); + createPoisIndoor(keywordSearch.getId(), createReqVO.getPoisIndoor()); + createPoisNavi(keywordSearch.getId(), createReqVO.getPoisNavi()); + createPoisPhotos(keywordSearch.getId(), createReqVO.getPoisPhotos()); + createPois(keywordSearch.getId(), createReqVO.getPois()); + // 返回 + return keywordSearch.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateKeywordSearch(KeywordSearchSaveReqVO updateReqVO) { + // 校验存在 + validateKeywordSearchExists(updateReqVO.getId()); + // 更新 + KeywordSearchDO updateObj = BeanUtils.toBean(updateReqVO, KeywordSearchDO.class); + keywordSearchMapper.updateById(updateObj); + + // 更新子表 + updatePoisBusiness(updateReqVO.getId(), updateReqVO.getPoisBusiness()); + updatePoisIndoor(updateReqVO.getId(), updateReqVO.getPoisIndoor()); + updatePoisNavi(updateReqVO.getId(), updateReqVO.getPoisNavi()); + updatePoisPhotos(updateReqVO.getId(), updateReqVO.getPoisPhotos()); + updatePois(updateReqVO.getId(), updateReqVO.getPois()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteKeywordSearch(Long id) { + // 校验存在 + validateKeywordSearchExists(id); + // 删除 + keywordSearchMapper.deleteById(id); + + // 删除子表 + deletePoisBusinessByKeySearchId(id); + deletePoisIndoorByKeySearchId(id); + deletePoisNaviByKeySearchId(id); + deletePoisPhotosByKeySearchId(id); + deletePoisByKeySearchId(id); + } + + private void validateKeywordSearchExists(Long id) { + if (keywordSearchMapper.selectById(id) == null) { + throw exception(KEYWORD_SEARCH_NOT_EXISTS); + } + } + + @Override + public KeywordSearchDO getKeywordSearch(Long id) { + return keywordSearchMapper.selectById(id); + } + + @Override + public PageResult getKeywordSearchPage(KeywordSearchPageReqVO pageReqVO) { + return keywordSearchMapper.selectPage(pageReqVO); + } + + // ==================== 子表(商业信息) ==================== + + @Override + public PoisBusinessDO getPoisBusinessByKeySearchId(Long keySearchId) { + return poisBusinessMapper.selectByKeySearchId(keySearchId); + } + + private void createPoisBusiness(Long keySearchId, PoisBusinessDO poisBusiness) { + if (poisBusiness == null) { + return; + } + poisBusiness.setKeySearchId(keySearchId); + poisBusinessMapper.insert(poisBusiness); + } + + private void updatePoisBusiness(Long keySearchId, PoisBusinessDO poisBusiness) { + if (poisBusiness == null) { + return; + } + poisBusiness.setKeySearchId(keySearchId); + poisBusiness.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 + poisBusinessMapper.insertOrUpdate(poisBusiness); + } + + private void deletePoisBusinessByKeySearchId(Long keySearchId) { + poisBusinessMapper.deleteByKeySearchId(keySearchId); + } + + // ==================== 子表(室内信息) ==================== + + @Override + public PoisIndoorDO getPoisIndoorByKeySearchId(Long keySearchId) { + return poisIndoorMapper.selectByKeySearchId(keySearchId); + } + + private void createPoisIndoor(Long keySearchId, PoisIndoorDO poisIndoor) { + if (poisIndoor == null) { + return; + } + poisIndoor.setKeySearchId(keySearchId); + poisIndoorMapper.insert(poisIndoor); + } + + private void updatePoisIndoor(Long keySearchId, PoisIndoorDO poisIndoor) { + if (poisIndoor == null) { + return; + } + poisIndoor.setKeySearchId(keySearchId); + poisIndoor.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 + poisIndoorMapper.insertOrUpdate(poisIndoor); + } + + private void deletePoisIndoorByKeySearchId(Long keySearchId) { + poisIndoorMapper.deleteByKeySearchId(keySearchId); + } + + // ==================== 子表(导航信息) ==================== + + @Override + public PoisNaviDO getPoisNaviByKeySearchId(Long keySearchId) { + return poisNaviMapper.selectByKeySearchId(keySearchId); + } + + private void createPoisNavi(Long keySearchId, PoisNaviDO poisNavi) { + if (poisNavi == null) { + return; + } + poisNavi.setKeySearchId(keySearchId); + poisNaviMapper.insert(poisNavi); + } + + private void updatePoisNavi(Long keySearchId, PoisNaviDO poisNavi) { + if (poisNavi == null) { + return; + } + poisNavi.setKeySearchId(keySearchId); + poisNavi.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 + poisNaviMapper.insertOrUpdate(poisNavi); + } + + private void deletePoisNaviByKeySearchId(Long keySearchId) { + poisNaviMapper.deleteByKeySearchId(keySearchId); + } + + // ==================== 子表(图片信息) ==================== + + @Override + public PoisPhotosDO getPoisPhotosByKeySearchId(Long keySearchId) { + return poisPhotosMapper.selectByKeySearchId(keySearchId); + } + + private void createPoisPhotos(Long keySearchId, PoisPhotosDO poisPhotos) { + if (poisPhotos == null) { + return; + } + poisPhotos.setKeySearchId(keySearchId); + poisPhotosMapper.insert(poisPhotos); + } + + private void updatePoisPhotos(Long keySearchId, PoisPhotosDO poisPhotos) { + if (poisPhotos == null) { + return; + } + poisPhotos.setKeySearchId(keySearchId); + poisPhotos.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 + poisPhotosMapper.insertOrUpdate(poisPhotos); + } + + private void deletePoisPhotosByKeySearchId(Long keySearchId) { + poisPhotosMapper.deleteByKeySearchId(keySearchId); + } + + // ==================== 子表(基础信息) ==================== + + @Override + public PoisDO getPoisByKeySearchId(Long keySearchId) { + return poisMapper.selectByKeySearchId(keySearchId); + } + + private void createPois(Long keySearchId, PoisDO pois) { + if (pois == null) { + return; + } + pois.setKeySearchId(keySearchId); + poisMapper.insert(pois); + } + + private void updatePois(Long keySearchId, PoisDO pois) { + if (pois == null) { + return; + } + pois.setKeySearchId(keySearchId); + pois.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 + poisMapper.insertOrUpdate(pois); + } + + private void deletePoisByKeySearchId(Long keySearchId) { + poisMapper.deleteByKeySearchId(keySearchId); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/keywordsearch/KeywordSearchMapper.xml b/yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/keywordsearch/KeywordSearchMapper.xml new file mode 100644 index 0000000000..2ab113aba1 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/keywordsearch/KeywordSearchMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-server/pom.xml b/yudao-server/pom.xml index 6ac577f9e0..fd032e1338 100644 --- a/yudao-server/pom.xml +++ b/yudao-server/pom.xml @@ -94,6 +94,13 @@ ${revision} + + + cn.iocoder.boot + yudao-module-map-biz + ${revision} + + diff --git a/yudao-server/src/main/java/cn/iocoder/yudao/server/controller/DefaultController.java b/yudao-server/src/main/java/cn/iocoder/yudao/server/controller/DefaultController.java index 2bf6e52775..ac4f849975 100644 --- a/yudao-server/src/main/java/cn/iocoder/yudao/server/controller/DefaultController.java +++ b/yudao-server/src/main/java/cn/iocoder/yudao/server/controller/DefaultController.java @@ -20,6 +20,11 @@ public class DefaultController { return CommonResult.error(NOT_IMPLEMENTED.getCode(), "[工作流模块 yudao-module-bpm - 已禁用][参考 https://doc.iocoder.cn/bpm/ 开启]"); } + @RequestMapping("/admin-api/map/**") + public CommonResult map404() { + return CommonResult.error(NOT_IMPLEMENTED.getCode(), + "[高德地图模块 yudao-module-map - 已禁用][参考 https://doc.iocoder.cn/bpm/ 开启]"); + } @RequestMapping("/admin-api/mp/**") public CommonResult mp404() { diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index d5ac4323f7..1068e0640f 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -178,6 +178,7 @@ logging: cn.iocoder.yudao.module.erp.dal.mysql: debug cn.iocoder.yudao.module.iot.dal.mysql: debug cn.iocoder.yudao.module.ai.dal.mysql: debug + cn.iocoder.yudao.module.map.dal.mysql: debug org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示 debug: false