From d38648d8477ff3f1238f81c94e69527e52999776 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: Fri, 28 Mar 2025 00:12:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0poi=E5=AE=A4=E5=86=85?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/pojo/PageParam.java | 2 +- .../KeywordSearchController.java | 1 - .../controller/admin/pois/PoisController.java | 11 ++++ .../admin/pois/vo/PoisSaveReqVO.java | 4 ++ .../map/dal/dataobject/pois/PoisIndoorDO.java | 50 +++++++++++++++++++ .../map/dal/mysql/pois/PoisIndoorMapper.java | 28 +++++++++++ .../module/map/service/pois/PoisService.java | 11 ++++ .../map/service/pois/PoisServiceImpl.java | 41 +++++++++++++-- .../keywordsearch/KeywordSearchMapper.xml | 12 +++++ 9 files changed, 155 insertions(+), 5 deletions(-) create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/pois/PoisIndoorDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/pois/PoisIndoorMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/keywordsearch/KeywordSearchMapper.xml diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PageParam.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PageParam.java index 268d117f95..735896880a 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PageParam.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PageParam.java @@ -27,7 +27,7 @@ public class PageParam implements Serializable { @Min(value = 1, message = "页码最小值为 1") private Integer pageNo = PAGE_NO; - @Schema(description = "每页条数,最大值为 100", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") + @Schema(description = "每页条数,最大值为 100", requiredMode = Schema.RequiredMode.REQUIRED, example = "25") @NotNull(message = "每页条数不能为空") @Min(value = 1, message = "每页条数最小值为 1") @Max(value = 100, message = "每页条数最大值为 100") 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 index fd82232abc..70403d3379 100644 --- 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 @@ -91,5 +91,4 @@ public class KeywordSearchController { ExcelUtils.write(response, "搜索记录.xls", "数据", KeywordSearchRespVO.class, BeanUtils.toBean(list, KeywordSearchRespVO.class)); } - } \ 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/pois/PoisController.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/PoisController.java index d7dcf5345e..6b7f31bb1d 100644 --- a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/PoisController.java +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/PoisController.java @@ -30,6 +30,7 @@ import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisBusinessDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisNaviDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisPhotosDO; +import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisIndoorDO; import cn.iocoder.yudao.module.map.service.pois.PoisService; @Tag(name = "管理后台 - 高德POI基础信息") @@ -95,6 +96,16 @@ public class PoisController { BeanUtils.toBean(list, PoisRespVO.class)); } + // ==================== 子表(高德POI室内信息) ==================== + + @GetMapping("/pois-indoor/get-by-pois-id") + @Operation(summary = "获得高德POI室内信息") + @Parameter(name = "poisId", description = "pois表ID") + @PreAuthorize("@ss.hasPermission('map:pois:query')") + public CommonResult getPoisIndoorByPoisId(@RequestParam("poisId") Long poisId) { + return success(poisService.getPoisIndoorByPoisId(poisId)); + } + // ==================== 子表(高德POI商业信息) ==================== @GetMapping("/pois-business/get-by-pois-id") diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoisSaveReqVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoisSaveReqVO.java index 90e0f03f1c..8a36a69f82 100644 --- a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoisSaveReqVO.java +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoisSaveReqVO.java @@ -4,6 +4,7 @@ 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.pois.PoisIndoorDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisBusinessDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisNaviDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisPhotosDO; @@ -64,6 +65,9 @@ public class PoisSaveReqVO { @NotEmpty(message = "poi唯一标识不能为空") private String poiId; + @Schema(description = "高德POI室内信息") + private PoisIndoorDO poisIndoor; + @Schema(description = "高德POI商业信息") private PoisBusinessDO poisBusiness; diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/pois/PoisIndoorDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/pois/PoisIndoorDO.java new file mode 100644 index 0000000000..dc3b473412 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/pois/PoisIndoorDO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.pois; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 高德POI室内信息 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; + /** + * pois表ID + */ + private Long poisId; + /** + * 室内地图标志(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/mysql/pois/PoisIndoorMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/pois/PoisIndoorMapper.java new file mode 100644 index 0000000000..079d67be16 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/pois/PoisIndoorMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.map.dal.mysql.pois; + +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.pois.PoisIndoorDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 高德POI室内信息 Mapper + * + * @author AN + */ +@Mapper +public interface PoisIndoorMapper extends BaseMapperX { + + default PoisIndoorDO selectByPoisId(Long poisId) { + return selectOne(PoisIndoorDO::getPoisId, poisId); + } + + default int deleteByPoisId(Long poisId) { + return delete(PoisIndoorDO::getPoisId, poisId); + } + +} diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisService.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisService.java index 3a3c103a8f..f50ec23eaa 100644 --- a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisService.java +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisService.java @@ -4,6 +4,7 @@ import java.util.*; import jakarta.validation.*; import cn.iocoder.yudao.module.map.controller.admin.pois.vo.*; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisDO; +import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisIndoorDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisBusinessDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisNaviDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisPhotosDO; @@ -55,6 +56,16 @@ public interface PoisService { */ PageResult getPoisPage(PoisPageReqVO pageReqVO); + // ==================== 子表(高德POI室内信息) ==================== + + /** + * 获得高德POI室内信息 + * + * @param poisId pois表ID + * @return 高德POI室内信息 + */ + PoisIndoorDO getPoisIndoorByPoisId(Long poisId); + // ==================== 子表(高德POI商业信息) ==================== /** diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisServiceImpl.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisServiceImpl.java index 07d5fbaacd..e0077211ad 100644 --- a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisServiceImpl.java +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/pois/PoisServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import cn.iocoder.yudao.module.map.controller.admin.pois.vo.*; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisDO; +import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisIndoorDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisBusinessDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisNaviDO; import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisPhotosDO; @@ -16,6 +17,7 @@ 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.pois.PoisMapper; +import cn.iocoder.yudao.module.map.dal.mysql.pois.PoisIndoorMapper; import cn.iocoder.yudao.module.map.dal.mysql.pois.PoisBusinessMapper; import cn.iocoder.yudao.module.map.dal.mysql.pois.PoisNaviMapper; import cn.iocoder.yudao.module.map.dal.mysql.pois.PoisPhotosMapper; @@ -35,6 +37,8 @@ public class PoisServiceImpl implements PoisService { @Resource private PoisMapper poisMapper; @Resource + private PoisIndoorMapper poisIndoorMapper; + @Resource private PoisBusinessMapper poisBusinessMapper; @Resource private PoisNaviMapper poisNaviMapper; @@ -49,6 +53,7 @@ public class PoisServiceImpl implements PoisService { poisMapper.insert(pois); // 插入子表 + createPoisIndoor(pois.getId(), createReqVO.getPoisIndoor()); createPoisBusiness(pois.getId(), createReqVO.getPoisBusiness()); createPoisNavi(pois.getId(), createReqVO.getPoisNavi()); createPoisPhotos(pois.getId(), createReqVO.getPoisPhotos()); @@ -66,6 +71,7 @@ public class PoisServiceImpl implements PoisService { poisMapper.updateById(updateObj); // 更新子表 + updatePoisIndoor(updateReqVO.getId(), updateReqVO.getPoisIndoor()); updatePoisBusiness(updateReqVO.getId(), updateReqVO.getPoisBusiness()); updatePoisNavi(updateReqVO.getId(), updateReqVO.getPoisNavi()); updatePoisPhotos(updateReqVO.getId(), updateReqVO.getPoisPhotos()); @@ -80,6 +86,7 @@ public class PoisServiceImpl implements PoisService { poisMapper.deleteById(id); // 删除子表 + deletePoisIndoorByPoisId(id); deletePoisBusinessByPoisId(id); deletePoisNaviByPoisId(id); deletePoisPhotosByPoisId(id); @@ -101,6 +108,34 @@ public class PoisServiceImpl implements PoisService { return poisMapper.selectPage(pageReqVO); } + // ==================== 子表(高德POI室内信息) ==================== + + @Override + public PoisIndoorDO getPoisIndoorByPoisId(Long poisId) { + return poisIndoorMapper.selectByPoisId(poisId); + } + + private void createPoisIndoor(Long poisId, PoisIndoorDO poisIndoor) { + if (poisIndoor == null) { + return; + } + poisIndoor.setPoisId(poisId); + poisIndoorMapper.insert(poisIndoor); + } + + private void updatePoisIndoor(Long poisId, PoisIndoorDO poisIndoor) { + if (poisIndoor == null) { + return; + } + poisIndoor.setPoisId(poisId); + poisIndoor.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 + poisIndoorMapper.insertOrUpdate(poisIndoor); + } + + private void deletePoisIndoorByPoisId(Long poisId) { + poisIndoorMapper.deleteByPoisId(poisId); + } + // ==================== 子表(高德POI商业信息) ==================== @Override @@ -118,7 +153,7 @@ public class PoisServiceImpl implements PoisService { private void updatePoisBusiness(Long poisId, PoisBusinessDO poisBusiness) { if (poisBusiness == null) { - return; + return; } poisBusiness.setPoisId(poisId); poisBusiness.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 @@ -146,7 +181,7 @@ public class PoisServiceImpl implements PoisService { private void updatePoisNavi(Long poisId, PoisNaviDO poisNavi) { if (poisNavi == null) { - return; + return; } poisNavi.setPoisId(poisId); poisNavi.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 @@ -174,7 +209,7 @@ public class PoisServiceImpl implements PoisService { private void updatePoisPhotos(Long poisId, PoisPhotosDO poisPhotos) { if (poisPhotos == null) { - return; + return; } poisPhotos.setPoisId(poisId); poisPhotos.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 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