diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java index d77b35cc62..9690139355 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java @@ -459,7 +459,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService, CrmCustomerAp } @Transactional(rollbackFor = Exception.class) // 需要 protected 修饰,因为需要在事务中调用 - protected void putCustomerPool(CrmCustomerDO customer) { + public void putCustomerPool(CrmCustomerDO customer) { // 1. 设置负责人为 NULL int updateOwnerUserIncr = customerMapper.updateOwnerUserIdById(customer.getId(), null); if (updateOwnerUserIncr == 0) { @@ -671,7 +671,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService, CrmCustomerAp createReqVO.setId(null); createReqVO.setMobile(mobile); - // TODO AN 假如已有会员,需要判断CRM中手机号是否已经存在客户 + // AN 假如已有会员,需要判断CRM中手机号是否已经存在客户 // 如果存在则放弃创建,不更新关联负责人, // 如果不存在则单独创建客户 CrmCustomerDO customer = customerMapper.selectByCustomerMobile(mobile); 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 index 31550e8da3..d12cb64b6d 100644 --- 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 @@ -18,5 +18,10 @@ public interface ErrorCodeConstants { ErrorCode POI_REQUEST_ERROR = new ErrorCode(1_050_001_003, "POI 请求失败"); ErrorCode POI_REQUEST_NO_MEMBER = new ErrorCode(1_050_001_004, "未能获取到登录用户"); + ErrorCode POI_SAVE_NO_MEMBER = new ErrorCode(1_050_001_005, "POI数据保存未能获取到登录用户"); + + ErrorCode POI_Trans_ERROR = new ErrorCode(1_050_001_006, "POI数据转换失败"); + ErrorCode POI_ID_EMPTY = new ErrorCode(1_050_001_007, "POI_ID为空"); + } diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/api/poirecord/MapPoiRecordApi.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/api/poirecord/MapPoiRecordApi.java new file mode 100644 index 0000000000..a78660f671 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/api/poirecord/MapPoiRecordApi.java @@ -0,0 +1,7 @@ +package cn.iocoder.yudao.module.map.api.poirecord; + +import cn.iocoder.yudao.module.map.mq.message.poirecord.PoiRecordMessage; + +public interface MapPoiRecordApi { + void doCreate(PoiRecordMessage message) ; +} diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoiTransSaveVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoiTransSaveVO.java new file mode 100644 index 0000000000..293ef0a16a --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoiTransSaveVO.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.map.controller.admin.pois.vo; + +import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisBusinessDO; +import cn.iocoder.yudao.module.map.dal.dataobject.pois.PoisIndoorDO; +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.serializer.PoisIdSerializer; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +@Data +@JsonSerialize(using = PoisIdSerializer.class) +public class PoiTransSaveVO { + @Schema(description = "POI名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "POI名称不能为空") + private String name; + + @Schema(description = "经纬度", requiredMode = Schema.RequiredMode.REQUIRED, example = "116.413232,39.899947") + @NotEmpty(message = "经纬度不能为空") + private String location; + + @Schema(description = "所属类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "汽车服务;汽车养护/装饰;汽车养护|汽车服务;洗车场;洗车场|汽车维修;汽车维修;汽车维修") + @NotEmpty(message = "所属类型不能为空") + private String type; + + @Schema(description = "分类编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "010400|010500|030000") + @NotEmpty(message = "分类编码不能为空") + private String typecode; + + @Schema(description = "省份", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京市") + @NotEmpty(message = "省份不能为空") + private String pname; + + @Schema(description = "城市", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京市") + @NotEmpty(message = "城市不能为空") + private String cityName; + + @Schema(description = "区县", requiredMode = Schema.RequiredMode.REQUIRED, example = "东城区") + @NotEmpty(message = "区县不能为空") + private String adname; + + @Schema(description = "详细地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "宝鼎中心C座B2层(崇文门地铁站D西南口步行480米)") + @NotEmpty(message = "详细地址不能为空") + private String address; + + @Schema(description = "省份编码", example = "110000") + private String pcode; + + @Schema(description = "区域编码", example = "110101") + private String adcode; + + @Schema(description = "城市编码", example = "010") + private String citycode; + + @Schema(description = "poi唯一标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "B0GUKCE3AI") + @NotEmpty(message = "poi唯一标识不能为空") + @JsonProperty("id") + private String poiId; + + @Schema(description = "高德POI室内信息") + private PoisIndoorDO indoor; + + @Schema(description = "高德POI商业信息") + private PoisBusinessDO business; + + @Schema(description = "高德POI导航信息") + private PoisNaviDO navi; + + @Schema(description = "高德POI图片信息") + private List photos; +} 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 8a36a69f82..0a2e75dcf7 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 @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.map.controller.admin.pois.vo; +import cn.iocoder.yudao.module.map.serializer.PoisIdSerializer; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoisTransVo.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoisTransVo.java new file mode 100644 index 0000000000..ccf663ee0b --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/pois/vo/PoisTransVo.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.module.map.controller.admin.pois.vo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "管理后台 - 高德POI基础信息转换 VO") +@Data +public class PoisTransVo { + + private List pois; +} diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/app/lbs/AppLbsController.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/app/lbs/AppLbsController.java index 3c89bd605c..e177ba70bc 100644 --- a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/app/lbs/AppLbsController.java +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/app/lbs/AppLbsController.java @@ -1,24 +1,18 @@ package cn.iocoder.yudao.module.map.controller.app.lbs; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.ratelimiter.core.annotation.RateLimiter; import cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.impl.ClientIpRateLimiterKeyResolver; +import cn.iocoder.yudao.module.map.api.poirecord.MapPoiRecordApi; import cn.iocoder.yudao.module.map.controller.app.lbs.vo.AppMapLbsReqVO; -import cn.iocoder.yudao.module.map.controller.admin.keywordsearch.vo.KeywordSearchRespVO; -import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.KeywordSearchDO; -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.mq.message.poirecord.PoiRecordMessage; import cn.iocoder.yudao.module.map.service.keywordsearch.KeywordSearchService; import cn.iocoder.yudao.module.map.service.pois.PoisService; -import com.hankcs.hanlp.HanLP; import com.hankcs.hanlp.seg.common.Term; import com.hankcs.hanlp.tokenizer.NLPTokenizer; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import jakarta.annotation.Resource; import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -75,4 +69,13 @@ public class AppLbsController { } } + @Resource + private MapPoiRecordApi mapPoiRecordApi; + + @GetMapping("/test-poi") + @Operation(summary = "测试poi存储") + public void testPoi() { + String jsons = "{\\\"count\\\":\\\"25\\\",\\\"infocode\\\":\\\"10000\\\",\\\"pois\\\":[{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"商都路与七里河南路交汇处\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-19:00\\\",\\\"keytag\\\":\\\"建材\\\",\\\"rating\\\":\\\"4.8\\\",\\\"tel\\\":\\\"4008866371\\\",\\\"rectag\\\":\\\"建材\\\",\\\"opentime_week\\\":\\\"周一至周日 09:00-19:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"410000\\\",\\\"adcode\\\":\\\"410104\\\",\\\"pname\\\":\\\"河南省\\\",\\\"cityname\\\":\\\"郑州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;建材五金市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/0df0fc743061a92b7f3c73d8af05fb54\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B01731887Y/comment/78b5d24a83143abb28e4d0260f25fdaa_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B01731887Y/comment/d6fdcecdee7219c37c15d5a011dca0a4_2048_2048_80.jpg\\\"}],\\\"typecode\\\":\\\"060603\\\",\\\"adname\\\":\\\"管城回族区\\\",\\\"citycode\\\":\\\"0371\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"华丰中街与华丰西路交叉口西40米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 停车场 \\\",\\\"name\\\":\\\"华丰灯饰界停车场\\\",\\\"location\\\":\\\"113.739955,34.744299\\\",\\\"id\\\":\\\"B0H0RHCI3E\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"I49F016046_49415\\\",\\\"entr_location\\\":\\\"113.740816,34.745998\\\",\\\"gridcode\\\":\\\"5213059900\\\"},\\\"name\\\":\\\"华丰灯饰界\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"113.741182,34.744330\\\",\\\"id\\\":\\\"B01731887Y\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"中兴大道68号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-19:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.7\\\",\\\"tel\\\":\\\"0760-22538888;0760-89838882;13527195565\\\",\\\"rectag\\\":\\\"灯具\\\",\\\"opentime_week\\\":\\\"周一至周日 08:30-19:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"440000\\\",\\\"adcode\\\":\\\"442000\\\",\\\"pname\\\":\\\"广东省\\\",\\\"cityname\\\":\\\"中山市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/77edc572e94153042f16a24ef2eb589f\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B02F80QI3M/comment/content_media_external_images_media_2850_1729612215954_10485403.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/f8218ae762c1b0e974c3052d9b883155\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"中山市\\\",\\\"citycode\\\":\\\"0760\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"中兴大道中与同益路交叉口南140米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"星光联盟全球品牌灯饰中心地面停车场\\\",\\\"location\\\":\\\"113.189976,22.616330\\\",\\\"id\\\":\\\"B0IG69FYS6\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"F49F017042_110552\\\",\\\"entr_location\\\":\\\"113.190313,22.616306\\\",\\\"gridcode\\\":\\\"3313713520\\\"},\\\"name\\\":\\\"星光联盟全球品牌灯饰中心\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"113.190992,22.616430\\\",\\\"id\\\":\\\"B02F80QI3M\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"大羊坊路\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-17:30\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"business_area\\\":\\\"十里河\\\",\\\"tel\\\":\\\"010-67327777\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周五 09:00-17:30; 周六至周日 09:00-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"110000\\\",\\\"adcode\\\":\\\"110105\\\",\\\"pname\\\":\\\"北京市\\\",\\\"cityname\\\":\\\"北京市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/6e76ddd1bc6211e6e5f8e0b88a7833b4\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/30f106e6b1ff031788feb6ca9a12266c\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B000A81KMS/comment/content_media_external_images_media_678_1732985222588_76839731.jpg\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"朝阳区\\\",\\\"citycode\\\":\\\"010\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"大羊坊路临5号(十里河地铁站K1口步行360米)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 南停车场 \\\",\\\"name\\\":\\\"十里河灯饰城南停车场\\\",\\\"location\\\":\\\"116.465206,39.862397\\\",\\\"id\\\":\\\"B0H3D5RBQQ\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"西燕街与弘燕南一路交叉口西南100米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 北侧停车场 \\\",\\\"name\\\":\\\"十里河灯饰城北侧停车场\\\",\\\"location\\\":\\\"116.466517,39.864841\\\",\\\"id\\\":\\\"B0H3S5J97G\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"J50F002020_585035\\\",\\\"entr_location\\\":\\\"116.464231,39.862597\\\",\\\"gridcode\\\":\\\"5916633720\\\"},\\\"name\\\":\\\"十里河灯饰城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"116.465561,39.864012\\\",\\\"id\\\":\\\"B000A81KMS\\\"},{\\\"parent\\\":\\\"B000A81KMS\\\",\\\"address\\\":\\\"西燕街与弘燕南一路交叉口西南140米\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"06:30-18:30\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"business_area\\\":\\\"十里河\\\",\\\"tel\\\":\\\"010-67342181;13661109552\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 06:30-18:30\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"110000\\\",\\\"adcode\\\":\\\"110105\\\",\\\"pname\\\":\\\"北京市\\\",\\\"cityname\\\":\\\"北京市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/5be65993b22874b768dbcca5803c3c4c\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/c73f6c78ce695a05e53f5eaec468bf6f\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/104d9e1cfe29b785a96f0113cfdb058a\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"朝阳区\\\",\\\"citycode\\\":\\\"010\\\",\\\"navi\\\":{\\\"navi_poiid\\\":\\\"J50F002020_653355\\\",\\\"entr_location\\\":\\\"116.466573,39.864399\\\",\\\"gridcode\\\":\\\"5916633720\\\"},\\\"name\\\":\\\"十里河灯饰城工程灯大楼\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"116.466068,39.864522\\\",\\\"id\\\":\\\"B000AA6PSX\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"灯城路88号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-18:30\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"tel\\\":\\\"0519-83833666\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 08:30-18:30\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"320000\\\",\\\"adcode\\\":\\\"320404\\\",\\\"pname\\\":\\\"江苏省\\\",\\\"cityname\\\":\\\"常州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/b9df25a703fafa5c1968babcb9c7136e\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/83aaf610b985400b6a5a37d759587433\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/e5a279970e916f0a9dfe82b704609732\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"钟楼区\\\",\\\"citycode\\\":\\\"0519\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"灯城路88号邹区灯具城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"邹区灯具城地面停车场\\\",\\\"location\\\":\\\"119.847382,31.801390\\\",\\\"id\\\":\\\"B0IBX5RBZX\\\"},{\\\"typecode\\\":\\\"150905\\\",\\\"address\\\":\\\"横洛线与环镇路交叉口西80米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 内部地面停车场 \\\",\\\"name\\\":\\\"邹区灯具城内部地面停车场\\\",\\\"location\\\":\\\"119.847608,31.800463\\\",\\\"id\\\":\\\"B0IBX5N1FW\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"H50F003047_905\\\",\\\"entr_location\\\":\\\"119.847278,31.800397\\\",\\\"gridcode\\\":\\\"4719566702\\\"},\\\"name\\\":\\\"邹区灯具城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"1\\\"},\\\"location\\\":\\\"119.846981,31.803605\\\",\\\"id\\\":\\\"B020704JEV\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"铁西区经济技术开发区花海路41号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-18:00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"tel\\\":\\\"024-25816600;024-25819188\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周五 08:30-17:00;周六至周日 08:30-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"210000\\\",\\\"adcode\\\":\\\"210106\\\",\\\"pname\\\":\\\"辽宁省\\\",\\\"cityname\\\":\\\"沈阳市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/f1959efbd2196ea801d01f3460a4f360\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/4388d877c67e5a6188223e7c80eeac0f\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/e197d36c28082487daf0556de2932d1f\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"铁西区\\\",\\\"citycode\\\":\\\"024\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"铁西区经济技术开发区花海路41号张士灯具城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"张士灯具城(花海路)地面停车场\\\",\\\"location\\\":\\\"123.286068,41.765355\\\",\\\"id\\\":\\\"B0HKLUUB3J\\\"},{\\\"typecode\\\":\\\"060000\\\",\\\"address\\\":\\\"铁西区经济技术开发区花海路41号张士灯具城\\\",\\\"subtype\\\":\\\"门\\\",\\\"sname\\\":\\\" 东门 \\\",\\\"name\\\":\\\"张士灯具城(东门)\\\",\\\"location\\\":\\\"123.287680,41.764470\\\",\\\"id\\\":\\\"B00181BMU1\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"K51F027027_48645\\\",\\\"entr_location\\\":\\\"123.287633,41.764935\\\",\\\"gridcode\\\":\\\"6223521320\\\"},\\\"name\\\":\\\"张士灯具城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"123.288136,41.764356\\\",\\\"id\\\":\\\"B0018164D6\\\"},{\\\"parent\\\":\\\"B021B03F2F\\\",\\\"address\\\":\\\"前十大街与琅琊王路交叉口南240米\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-17:30\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.1\\\",\\\"business_area\\\":\\\"育才路\\\",\\\"tel\\\":\\\"0539-2063018;0539-2067167;18660979795\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 08:30-17:30\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"370000\\\",\\\"adcode\\\":\\\"371302\\\",\\\"pname\\\":\\\"山东省\\\",\\\"cityname\\\":\\\"临沂市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/83fc7d88653dfcf81af0b1b3fdbd9272\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/51e0d6c249f68b15d6e238e3febba746\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/669289f9055adb35a2d2c05b8152d382\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"兰山区\\\",\\\"citycode\\\":\\\"0539\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"中国临沂灯具城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"中国临沂灯具城停车场\\\",\\\"location\\\":\\\"118.302892,35.090447\\\",\\\"id\\\":\\\"B0HKXUSKRT\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"I50F011035_1251\\\",\\\"entr_location\\\":\\\"118.302883,35.090295\\\",\\\"gridcode\\\":\\\"5218521401\\\"},\\\"name\\\":\\\"山东华强灯饰城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"118.302938,35.092353\\\",\\\"id\\\":\\\"B0FFH2YH16\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"建新东路286号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-18:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.7\\\",\\\"business_area\\\":\\\"五里店\\\",\\\"alias\\\":\\\"灯饰广场\\\",\\\"tel\\\":\\\"023-67754567\\\",\\\"rectag\\\":\\\"灯具\\\",\\\"opentime_week\\\":\\\"周一至周日 09:00-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"500000\\\",\\\"adcode\\\":\\\"500105\\\",\\\"pname\\\":\\\"重庆市\\\",\\\"cityname\\\":\\\"重庆市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B00170L2LZ/comment/34885daa66fc0b4427c02b539c55eeb8_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/3bdc2a1f0e3317ebf77c2abe6da81b35\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/e6c0492535b0fbffc695c2f3bd2c965d\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"江北区\\\",\\\"citycode\\\":\\\"023\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"建新东路286号东方灯饰家居广场(万丰路)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"东方灯饰广场(万丰路)停车场\\\",\\\"location\\\":\\\"106.557706,29.578761\\\",\\\"id\\\":\\\"B0HKTRLVBU\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"建新东路286号东方灯饰家居广场(万丰路)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 立体停车场 \\\",\\\"name\\\":\\\"东方灯饰广场立体停车场\\\",\\\"location\\\":\\\"106.558265,29.579129\\\",\\\"id\\\":\\\"B0HKTRJIQZ\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"H48F030037_14136\\\",\\\"entr_location\\\":\\\"106.557711,29.578772\\\",\\\"gridcode\\\":\\\"4406249411\\\"},\\\"name\\\":\\\"东方灯饰家居广场(万丰路)\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"1\\\"},\\\"location\\\":\\\"106.558049,29.578584\\\",\\\"id\\\":\\\"B00170L2LZ\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"东三环7188号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-18:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.7\\\",\\\"tel\\\":\\\"029-86189999\\\",\\\"rectag\\\":\\\"照明专卖\\\",\\\"opentime_week\\\":\\\"周一至周日 09:00-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"610000\\\",\\\"adcode\\\":\\\"610111\\\",\\\"pname\\\":\\\"陕西省\\\",\\\"cityname\\\":\\\"西安市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0GKY6E1S4/headerImg/89f208bafb37643903bbdafb054e8e96_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0GKY6E1S4/headerImg/e515ff8a9ebad166dc4c28f62d56b5c6_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/b7f57c4a434393fe9bd780faeda4006d\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"灞桥区\\\",\\\"citycode\\\":\\\"029\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"绕城新筑收费站西北角\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"同泰灯具城地面停车场\\\",\\\"location\\\":\\\"109.060499,34.348911\\\",\\\"id\\\":\\\"B0IU570BRZ\\\"}],\\\"navi\\\":{\\\"entr_location\\\":\\\"109.059177,34.348587\\\",\\\"gridcode\\\":\\\"5109401422\\\"},\\\"name\\\":\\\"同泰灯具城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"109.059127,34.348872\\\",\\\"id\\\":\\\"B0GKY6E1S4\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"津滨大道和东兴路交口东南角\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-17:30\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"tel\\\":\\\"022-84238811\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 08:30-17:30\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"120000\\\",\\\"adcode\\\":\\\"120102\\\",\\\"pname\\\":\\\"天津市\\\",\\\"cityname\\\":\\\"天津市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;家具建材综合市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/6c95380af2ae5d3310479f7c51dc25ea\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/763dfcd8824079de09a552749a52ccd7\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/8908fb88f15590292949621230822710\\\"}],\\\"typecode\\\":\\\"060601\\\",\\\"adname\\\":\\\"河东区\\\",\\\"citycode\\\":\\\"022\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"津滨大道和东兴路交口东南角平河装饰灯具城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 停车场 \\\",\\\"name\\\":\\\"平河装饰灯具城停车场\\\",\\\"location\\\":\\\"117.261762,39.117996\\\",\\\"id\\\":\\\"B0H015PYQV\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"J50F011027_45101;313458\\\",\\\"entr_location\\\":\\\"117.264116,39.119422\\\",\\\"gridcode\\\":\\\"5817524100\\\"},\\\"name\\\":\\\"平河装饰灯具城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"117.262834,39.118352\\\",\\\"id\\\":\\\"B00160521C\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"九里堤街道金府路660号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-18:00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.9\\\",\\\"business_area\\\":\\\"九里堤\\\",\\\"tel\\\":\\\"028-66644707;028-87604799\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 09:00-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"510000\\\",\\\"adcode\\\":\\\"510106\\\",\\\"pname\\\":\\\"四川省\\\",\\\"cityname\\\":\\\"成都市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/115a603cfa4d23991bd32ff29769287f\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0FFHGY09H/comment/4ad4dd3bd896295d4abb2063e9455ba3_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0FFHGY09H/comment/b241c62718d3da43dfcaac25b053e94d_2048_2048_80.jpg\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"金牛区\\\",\\\"citycode\\\":\\\"028\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"九里堤街道金府路660号金府灯具城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 停车场 \\\",\\\"name\\\":\\\"金府灯具城停车场\\\",\\\"location\\\":\\\"104.038890,30.712712\\\",\\\"id\\\":\\\"B0H01DMHQ4\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"H48F016017_46175;590384;579454\\\",\\\"entr_location\\\":\\\"104.038962,30.712898\\\",\\\"gridcode\\\":\\\"4604005310\\\"},\\\"name\\\":\\\"金府灯具城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"104.039553,30.712364\\\",\\\"id\\\":\\\"B0FFHGY09H\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"石桥路456号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"07:30-18:00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.5\\\",\\\"tel\\\":\\\"0571-85816699;0571-88121967\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 07:30-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"330000\\\",\\\"adcode\\\":\\\"330105\\\",\\\"pname\\\":\\\"浙江省\\\",\\\"cityname\\\":\\\"杭州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/7f1dbf3e0a24f80867c504a5b205dae3\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"拱墅区\\\",\\\"citycode\\\":\\\"0571\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"衣锦路与杭玻街交叉口南80米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 停车场 \\\",\\\"name\\\":\\\"永佳灯具广场停车场\\\",\\\"location\\\":\\\"120.193728,30.342374\\\",\\\"id\\\":\\\"B0H0JSTHR6\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"石桥路与杭玻街交叉口东南80米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 北地下停车场 \\\",\\\"name\\\":\\\"永佳灯具广场北地下停车场\\\",\\\"location\\\":\\\"120.192505,30.342812\\\",\\\"id\\\":\\\"B0H0JSVEJE\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"H51F020002_290133;294340;290369\\\",\\\"entr_location\\\":\\\"120.191974,30.342072\\\",\\\"gridcode\\\":\\\"4520411501\\\"},\\\"name\\\":\\\"永佳灯具广场\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"120.192869,30.342054\\\",\\\"id\\\":\\\"B0FFHJKFTG\\\"},{\\\"parent\\\":\\\"B0FFHPF0C7\\\",\\\"address\\\":\\\"沈半路131号(善贤地铁站B2口)\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-17:30\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.6\\\",\\\"business_area\\\":\\\"上塘\\\",\\\"tel\\\":\\\"18142018839\\\",\\\"rectag\\\":\\\"照明专卖\\\",\\\"opentime_week\\\":\\\"周一至周五 08:30-17:00;周六至周日 08:30-17:30\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"330000\\\",\\\"adcode\\\":\\\"330105\\\",\\\"pname\\\":\\\"浙江省\\\",\\\"cityname\\\":\\\"杭州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0G26SLO2F/comment/209C75CE_0105_4A5F_8E1B_C5D6D10584A0_L0_001_1080_608_1729417149241_07346564.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/f54d407eeb79418ab32f5fe8c091e325\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0G26SLO2F/comment/E9CE461C_F2AC_49E5_BDAC_664A859F5EAC_L0_001_1200_795_1729417149241_71083296.jpg\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"拱墅区\\\",\\\"citycode\\\":\\\"0571\\\",\\\"navi\\\":{\\\"gridcode\\\":\\\"4520318202\\\"},\\\"name\\\":\\\"杭州灯具市场\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"120.160707,30.319104\\\",\\\"id\\\":\\\"B0G26SLO2F\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"连江南路15号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"07:30-20:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.6\\\",\\\"tel\\\":\\\"0591-83200232;13705096016\\\",\\\"rectag\\\":\\\"五金机电\\\",\\\"opentime_week\\\":\\\"周一至周日 07:30-20:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"350000\\\",\\\"adcode\\\":\\\"350104\\\",\\\"pname\\\":\\\"福建省\\\",\\\"cityname\\\":\\\"福州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;建材五金市场|购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/d21a9760531012f22ce214362cb539a2\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/3306673c6f0eb838bb0f0afa262d47af\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0FFFRMH26/comment/1f9233c76156d8d3c21d2e66069b646f_2048_2048_80.jpg\\\"}],\\\"typecode\\\":\\\"060603|060606\\\",\\\"adname\\\":\\\"仓山区\\\",\\\"citycode\\\":\\\"0591\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"连江南路15号龙福五金机电灯具市场\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"龙福五金机电灯具市场停车场\\\",\\\"location\\\":\\\"119.335157,26.040502\\\",\\\"id\\\":\\\"B0HK3HIE1F\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"G50F024043_262910;87430\\\",\\\"entr_location\\\":\\\"119.334974,26.040506\\\",\\\"gridcode\\\":\\\"3919024622\\\"},\\\"name\\\":\\\"龙福五金机电灯具市场\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"119.336169,26.041027\\\",\\\"id\\\":\\\"B0FFFRMH26\\\"},{\\\"parent\\\":\\\"B0I1Z5M61X\\\",\\\"address\\\":\\\"通港街77号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-17:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.7\\\",\\\"tel\\\":\\\"0451-58592789\\\",\\\"rectag\\\":\\\"灯具\\\",\\\"opentime_week\\\":\\\"周一至周日 09:00-17:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"230000\\\",\\\"adcode\\\":\\\"230104\\\",\\\"pname\\\":\\\"黑龙江省\\\",\\\"cityname\\\":\\\"哈尔滨市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/8fa7b4c3ebf8ac9496ea6e6b19801f97\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/0d20c3f65876bc84242f3eefed83835c\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0FFG0OMHD/comment/fb80b85cd051cb1d0ec43e0d36cdffbb_2048_2048_80.jpg\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"道外区\\\",\\\"citycode\\\":\\\"0451\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"通港街77号十里河灯饰家居城(好民居滨港水岸金街店)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"十里河灯饰家居城(哈尔滨店)停车场\\\",\\\"location\\\":\\\"126.682021,45.800147\\\",\\\"id\\\":\\\"B0HKC5B27G\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"L52F027006_315233\\\",\\\"entr_location\\\":\\\"126.682304,45.800148\\\",\\\"gridcode\\\":\\\"6826556401\\\"},\\\"name\\\":\\\"十里河灯饰家居城(好民居滨港水岸金街店)\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"126.682787,45.800137\\\",\\\"id\\\":\\\"B0FFG0OMHD\\\"},{\\\"parent\\\":\\\"B0FFMH8AVK\\\",\\\"address\\\":\\\"龙岭镇北一栋203-238\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"07:30-22:30\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.0\\\",\\\"alias\\\":\\\"龙岭灯饰城\\\",\\\"tel\\\":\\\"0797-6650666;19136773007\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 07:30-22:30\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"360000\\\",\\\"adcode\\\":\\\"360703\\\",\\\"pname\\\":\\\"江西省\\\",\\\"cityname\\\":\\\"赣州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场|购物服务;家居建材市场;家具城\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/874a37ed8f2a0265d2f34ad8bee58ca9\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/164bc19f582be899e8fe46e2072e1c80\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/143ba74542ee6c051d5414afd4ce6edf\\\"}],\\\"typecode\\\":\\\"060606|060602\\\",\\\"adname\\\":\\\"南康区\\\",\\\"citycode\\\":\\\"0797\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"龙岭镇北一栋203-238灯饰城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"商汇广场·赣州灯饰城停车场\\\",\\\"location\\\":\\\"114.803073,25.704500\\\",\\\"id\\\":\\\"B0HKTRJQ9V\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"龙岭镇北一栋203-238灯饰城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地下停车场 \\\",\\\"name\\\":\\\"商汇广场灯饰城地下停车场\\\",\\\"location\\\":\\\"114.802998,25.704364\\\",\\\"id\\\":\\\"B0HKTRJ38I\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"G50F028007_3775\\\",\\\"entr_location\\\":\\\"114.801994,25.702211\\\",\\\"gridcode\\\":\\\"3814464410\\\"},\\\"name\\\":\\\"灯饰城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"114.801322,25.703167\\\",\\\"id\\\":\\\"B0FFFRJEKD\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"沈新东路27号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-17:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.8\\\",\\\"tel\\\":\\\"024-25708888\\\",\\\"rectag\\\":\\\"灯具\\\",\\\"opentime_week\\\":\\\"周一至周日 08:30-17:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"210000\\\",\\\"adcode\\\":\\\"210106\\\",\\\"pname\\\":\\\"辽宁省\\\",\\\"cityname\\\":\\\"沈阳市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B00180K5PR/comment/3205932F_61C1_4A04_9A73_9F2BF3F841FE_L0_001_1320_993_1731623437022_79207368.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/4dd44dd8c7336a3d0eba0d2a7a383e3d\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/65ba1ed8807633fea3fffe37a15fff91\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"铁西区\\\",\\\"citycode\\\":\\\"024\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"060606\\\",\\\"address\\\":\\\"沈新东路27号北京十里河灯饰城(沈阳店)\\\",\\\"subtype\\\":\\\"门\\\",\\\"sname\\\":\\\" 1号门 \\\",\\\"name\\\":\\\"十里河灯饰城(1号门)\\\",\\\"location\\\":\\\"123.325800,41.777680\\\",\\\"id\\\":\\\"B00181CSET\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"昆明湖街道沈新东路27号\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 北地面停车场 \\\",\\\"name\\\":\\\"北京十里河灯饰城(沈阳店)北停车场\\\",\\\"location\\\":\\\"123.325962,41.777876\\\",\\\"id\\\":\\\"B0HKJC1ZJP\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"沈新东路27号北京十里河灯饰城(沈阳店)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 南地面停车场 \\\",\\\"name\\\":\\\"北京十里河灯饰城(沈阳店)南停车场\\\",\\\"location\\\":\\\"123.325977,41.776517\\\",\\\"id\\\":\\\"B0HKJCYMHQ\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"K51F027027_48662\\\",\\\"entr_location\\\":\\\"123.326033,41.777873\\\",\\\"gridcode\\\":\\\"6223523512\\\"},\\\"name\\\":\\\"北京十里河灯饰城(沈阳店)\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"123.324441,41.777460\\\",\\\"id\\\":\\\"B00180K5PR\\\"},{\\\"parent\\\":\\\"B013704HHH\\\",\\\"address\\\":\\\"东风路68号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-18:00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.7\\\",\\\"business_area\\\":\\\"平安南大街\\\",\\\"alias\\\":\\\"华夏窗帘城\\\",\\\"tel\\\":\\\"0311-86110033\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 08:30-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"130000\\\",\\\"adcode\\\":\\\"130104\\\",\\\"pname\\\":\\\"河北省\\\",\\\"cityname\\\":\\\"石家庄市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B013704QKT/comment/92e741d2ce93b34711a9549ba49a1e54_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B013704QKT/headerImg/c08e4d10e6066b9511cbe275ad442732_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B013704QKT/headerImg/e3f9a35fba88eab0f1f749d87c19592a_2048_2048_80.jpg\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"桥西区\\\",\\\"citycode\\\":\\\"0311\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"东风路68号华夏灯饰城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"华夏灯饰城(东风路)停车场\\\",\\\"location\\\":\\\"114.496442,38.024663\\\",\\\"id\\\":\\\"B0HKJ7Y7H8\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"J50F024004_14170\\\",\\\"entr_location\\\":\\\"114.496659,38.024516\\\",\\\"gridcode\\\":\\\"5714033902\\\"},\\\"name\\\":\\\"华夏灯饰城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"114.496524,38.024212\\\",\\\"id\\\":\\\"B013704QKT\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"嘉定工业区回城南路1128号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:00-22:00\\\",\\\"cost\\\":\\\"30000.00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.6\\\",\\\"business_area\\\":\\\"嘉定镇\\\",\\\"tel\\\":\\\"18221557993\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 08:00-22:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"310000\\\",\\\"adcode\\\":\\\"310114\\\",\\\"pname\\\":\\\"上海市\\\",\\\"cityname\\\":\\\"上海市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0FFG4DN9X/comment/content_media_external_images_media_100000557_1743952489995_91319225.jpg\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"嘉定区\\\",\\\"citycode\\\":\\\"021\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"阳川路与招贤路交叉口东南120米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 西停车场 \\\",\\\"name\\\":\\\"上海万商灯饰市场西停车场\\\",\\\"location\\\":\\\"121.254936,31.362581\\\",\\\"id\\\":\\\"B0HKNCQQVT\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"裕民路与裕民南路交叉口西北20米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 东停车场 \\\",\\\"name\\\":\\\"上海万商灯饰市场东停车场\\\",\\\"location\\\":\\\"121.257615,31.362910\\\",\\\"id\\\":\\\"B0HKNCRSVM\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"H51F008011_239025\\\",\\\"entr_location\\\":\\\"121.254577,31.362528\\\",\\\"gridcode\\\":\\\"4721023011\\\"},\\\"name\\\":\\\"上海万商灯饰市场\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"121.256034,31.362864\\\",\\\"id\\\":\\\"B0FFG4DN9X\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"沈半路281号灯具精品馆a336华龙灯饰\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"07:00-19:30\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"business_area\\\":\\\"上塘\\\",\\\"tel\\\":\\\"0571-88126532\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 07:00-19:30\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"330000\\\",\\\"adcode\\\":\\\"330105\\\",\\\"pname\\\":\\\"浙江省\\\",\\\"cityname\\\":\\\"杭州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0FFJN92NT/comment/22bada079629ce12522e432675aba20e_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://comment-oss-online.oss-cn-wulanchabu.aliyuncs.com/B0FFJN92NT/comment/60AB4BFA_5091_4E10_BDBC_D5E302599F71_L0_001_IMG_2913_1652755821542_78b2a6b7.JPG\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://comment-oss-online.oss-cn-wulanchabu.aliyuncs.com/B0FFJN92NT/comment/674310A9_C458_451F_8643_B92AEE319C97_L0_001_IMG_2923_1652755821541_fc1417a8.JPG\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"拱墅区\\\",\\\"citycode\\\":\\\"0571\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"星河灯饰市场(皋亭坝地铁站A口步行350米)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 停车场 \\\",\\\"name\\\":\\\"星河灯饰市场停车场\\\",\\\"location\\\":\\\"120.174530,30.333471\\\",\\\"id\\\":\\\"B0H0L7JXQQ\\\"},{\\\"typecode\\\":\\\"150905\\\",\\\"address\\\":\\\"星河灯饰市场(皋亭坝地铁站A口步行480米)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 内部地下停车场 \\\",\\\"name\\\":\\\"星河灯饰市场内部地下停车场\\\",\\\"location\\\":\\\"120.172993,30.334180\\\",\\\"id\\\":\\\"B0H0L7IW3A\\\"}],\\\"navi\\\":{\\\"entr_location\\\":\\\"120.17421,30.33295\\\",\\\"gridcode\\\":\\\"4520410302\\\"},\\\"name\\\":\\\"星河灯饰市场\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"120.174045,30.334177\\\",\\\"id\\\":\\\"B0FFJN92NT\\\"},{\\\"parent\\\":\\\"B0FFJN92NT\\\",\\\"address\\\":\\\"沈半路283号杭州华力灯饰商城1层A125号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:00-18:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.8\\\",\\\"business_area\\\":\\\"沈半路沿线\\\",\\\"tel\\\":\\\"0571-88023010\\\",\\\"rectag\\\":\\\"灯具\\\",\\\"opentime_week\\\":\\\"周一至周日 08:00-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"330000\\\",\\\"adcode\\\":\\\"330105\\\",\\\"pname\\\":\\\"浙江省\\\",\\\"cityname\\\":\\\"杭州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/7438d0ab18009093ef29f97491335e53\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/21524288c3d866dbebcf4aea259834e1\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/05d05391447267d7edacc131403070e0\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"拱墅区\\\",\\\"citycode\\\":\\\"0571\\\",\\\"navi\\\":{\\\"entr_location\\\":\\\"120.174886,30.333789\\\",\\\"gridcode\\\":\\\"4520410302\\\"},\\\"name\\\":\\\"华力灯饰商城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"120.174725,30.334120\\\",\\\"id\\\":\\\"B0HUOUG7EN\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"南二环路与老沙锡路交叉口\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"07:30-18:00\\\",\\\"keytag\\\":\\\"灯具\\\",\\\"rating\\\":\\\"4.8\\\",\\\"alias\\\":\\\"梁丰机电城\\\",\\\"tel\\\":\\\"0512-56985027;0512-56985626\\\",\\\"rectag\\\":\\\"灯具\\\",\\\"opentime_week\\\":\\\"周一至周日 07:30-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"320000\\\",\\\"adcode\\\":\\\"320582\\\",\\\"pname\\\":\\\"江苏省\\\",\\\"cityname\\\":\\\"苏州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;建材五金市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/872417085c9ee27d9b545947ac056431\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/23ec825211eead68bc9bf97b2e1ee6f0\\\"}],\\\"typecode\\\":\\\"060603\\\",\\\"adname\\\":\\\"张家港市\\\",\\\"citycode\\\":\\\"0512\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"梁丰五金机电灯饰市场\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"梁丰五金机电灯饰市场停车场\\\",\\\"location\\\":\\\"120.560770,31.839853\\\",\\\"id\\\":\\\"B0HKJC2EK5\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"H51F002005_120487;79421;115699\\\",\\\"entr_location\\\":\\\"120.563592,31.838724\\\",\\\"gridcode\\\":\\\"4720640422\\\"},\\\"name\\\":\\\"梁丰五金机电灯饰市场\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"120.561684,31.838866\\\",\\\"id\\\":\\\"B02000IXDN\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"柳营路135号柳营灯饰城B1(近北宝兴路)\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-18:00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"business_area\\\":\\\"凉城\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 09:00-18:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"310000\\\",\\\"adcode\\\":\\\"310109\\\",\\\"pname\\\":\\\"上海市\\\",\\\"cityname\\\":\\\"上海市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B001517611/comment/64c9b7b6c4efa56fa0747ecf0252e7fe_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/6d3b7252d4f5b27e3fce4951857a3ed9\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B001517611/comment/content_media_external_images_media_1000043423_ss__1734059639245_39673126.jpg\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"虹口区\\\",\\\"citycode\\\":\\\"021\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"北宝兴路与柳营路交叉口西北100米\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"上海柳营灯饰城停车场\\\",\\\"location\\\":\\\"121.467364,31.271043\\\",\\\"id\\\":\\\"B0HKJCY7F5\\\"},{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"上海柳营灯饰城\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地下停车场 \\\",\\\"name\\\":\\\"上海柳营灯饰城地下停车场\\\",\\\"location\\\":\\\"121.467289,31.271133\\\",\\\"id\\\":\\\"B0HKJCYEO5\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"H51F009012_38878\\\",\\\"entr_location\\\":\\\"121.467733,31.270379\\\",\\\"gridcode\\\":\\\"4621732711\\\"},\\\"name\\\":\\\"上海柳营灯饰城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"121.467864,31.270976\\\",\\\"id\\\":\\\"B001517611\\\"},{\\\"parent\\\":\\\"\\\",\\\"address\\\":\\\"送桥镇郭集灯具城\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"09:00-20:00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"tel\\\":\\\"0514-84589666;0514-84589888\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 09:00-20:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"320000\\\",\\\"adcode\\\":\\\"321084\\\",\\\"pname\\\":\\\"江苏省\\\",\\\"cityname\\\":\\\"扬州市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B020217NB1/comment/7a5a0e84b2c9ce1860b0221cca9d1b87_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"https://aos-comment.amap.com/B0FFMFAJPX/headerImg/772251d3465ce6004509c396db0b72d0_2048_2048_80.jpg\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/cd9f0b08bbe7328b7e162aa07a4a822f\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"高邮市\\\",\\\"citycode\\\":\\\"0514\\\",\\\"navi\\\":{\\\"navi_poiid\\\":\\\"I50F040043_235\\\",\\\"entr_location\\\":\\\"119.318504,32.693562\\\",\\\"gridcode\\\":\\\"4919023511\\\"},\\\"name\\\":\\\"扬州郭集灯具城\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"119.318237,32.694470\\\",\\\"id\\\":\\\"B020217NB1\\\"},{\\\"parent\\\":\\\"B0FFFAL5TH\\\",\\\"address\\\":\\\"北新街47号\\\",\\\"business\\\":{\\\"opentime_today\\\":\\\"08:30-17:00\\\",\\\"keytag\\\":\\\"灯饰市场\\\",\\\"rating\\\":\\\"4.8\\\",\\\"tel\\\":\\\"0451-88882898\\\",\\\"rectag\\\":\\\"灯饰市场\\\",\\\"opentime_week\\\":\\\"周一至周日 08:30-17:00\\\"},\\\"distance\\\":\\\"\\\",\\\"pcode\\\":\\\"230000\\\",\\\"adcode\\\":\\\"230104\\\",\\\"pname\\\":\\\"黑龙江省\\\",\\\"cityname\\\":\\\"哈尔滨市\\\",\\\"type\\\":\\\"购物服务;家居建材市场;灯具瓷器市场\\\",\\\"photos\\\":[{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/f999ab14aad87ff58f1db2feb5b4c44a\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/c5d7b864a9c026903c0f6d325788a6c1\\\"},{\\\"title\\\":\\\"\\\",\\\"url\\\":\\\"http://store.is.autonavi.com/showpic/b6ea4031194226c5d788eec705f68be1\\\"}],\\\"typecode\\\":\\\"060606\\\",\\\"adname\\\":\\\"道外区\\\",\\\"citycode\\\":\\\"0451\\\",\\\"children\\\":[{\\\"typecode\\\":\\\"150904\\\",\\\"address\\\":\\\"北新街47号滨江精品灯饰城(方远·滨江国际店)\\\",\\\"subtype\\\":\\\"停车场\\\",\\\"sname\\\":\\\" 地面停车场 \\\",\\\"name\\\":\\\"滨江精品灯饰城停车场\\\",\\\"location\\\":\\\"126.660648,45.794043\\\",\\\"id\\\":\\\"B0HKJC3W00\\\"}],\\\"navi\\\":{\\\"navi_poiid\\\":\\\"L52F027006_102241\\\",\\\"entr_location\\\":\\\"126.661884,45.794475\\\",\\\"gridcode\\\":\\\"6826555212\\\"},\\\"name\\\":\\\"滨江精品灯饰城(方远·滨江国际店)\\\",\\\"indoor\\\":{\\\"indoor_map\\\":\\\"0\\\"},\\\"location\\\":\\\"126.661711,45.794500\\\",\\\"id\\\":\\\"B0FFFAL5TN\\\"}],\\\"status\\\":\\\"1\\\",\\\"info\\\":\\\"OK\\\"}"; + mapPoiRecordApi.doCreate(new PoiRecordMessage().setPoiData(jsons)); + } } diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/enums/LogRecordConstants.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/enums/LogRecordConstants.java index d2406237ad..a7fa83f9d5 100644 --- a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/enums/LogRecordConstants.java +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/enums/LogRecordConstants.java @@ -5,4 +5,7 @@ public interface LogRecordConstants { String POI_DATA_REQUEST = "POI数据请求"; String POI_DATA_REQUEST_SUCCESS = "POI数据请求成功"; String POI_DATA_REQUEST_ERROR = "POI数据请求失败"; + + String POI_DATA_SAVE = "POI数据保存"; + String POI_DATA_SAVE_SUCCESS = "POI数据保存成功"; } diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/consumer/poirecord/PoiRecordConsumer.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/consumer/poirecord/PoiRecordConsumer.java new file mode 100644 index 0000000000..6243a25201 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/consumer/poirecord/PoiRecordConsumer.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.map.mq.consumer.poirecord; +import cn.iocoder.yudao.module.map.api.poirecord.MapPoiRecordApi; +import cn.iocoder.yudao.module.map.mq.message.poirecord.PoiRecordMessage; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class PoiRecordConsumer { + @Resource + private MapPoiRecordApi mapPoiRecordApi; + + @EventListener + @Async // Spring Event 默认在 Producer 发送的线程,通过 @Async 实现异步 + public void onMessage(PoiRecordMessage message) { + log.info("[onMessage][消息内容({})]", message); + mapPoiRecordApi.doCreate(message); + } + +} diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/message/poirecord/PoiRecordMessage.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/message/poirecord/PoiRecordMessage.java new file mode 100644 index 0000000000..0f2ab738d4 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/message/poirecord/PoiRecordMessage.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.map.mq.message.poirecord; +import lombok.Data; +import jakarta.validation.constraints.NotNull; + +@Data +public class PoiRecordMessage { + + /** + * 高德返回数据 + */ + private String keywords; + private String location; + private String region; + private String types; + private Boolean cityLimit; + private Integer pageSize; + private Integer pageNum; + + /** + * 地图原始数据 + */ + private String poiData; + + +} diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/producer/poirecord/PoiRecordProducer.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/producer/poirecord/PoiRecordProducer.java new file mode 100644 index 0000000000..f1de92988b --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/mq/producer/poirecord/PoiRecordProducer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.map.mq.producer.poirecord; +import cn.iocoder.yudao.module.map.mq.message.poirecord.PoiRecordMessage; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; + + +/** + * PoiRecord 高德POI相关消息的 Producer + * + * @author an + * @since 2025/3/18 22:16 + */ +@Slf4j +@Component +public class PoiRecordProducer { + @Resource + private ApplicationContext applicationContext; + + /** + * 发送 {@link PoiRecordMessage} 消息 + * + * @param porRecordMessage 消息 + */ + public void sendPoiRecordMessage(PoiRecordMessage porRecordMessage) { + applicationContext.publishEvent(porRecordMessage); + } +} diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/serializer/PoisIdSerializer.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/serializer/PoisIdSerializer.java new file mode 100644 index 0000000000..6a68ebbee4 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/serializer/PoisIdSerializer.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.map.serializer; + +import cn.iocoder.yudao.module.map.controller.admin.pois.vo.PoiTransSaveVO; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; + +public class PoisIdSerializer extends JsonSerializer { + @Override + public void serialize(PoiTransSaveVO PoiTransSaveVO, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeStartObject(); + jsonGenerator.writeStringField("id", PoiTransSaveVO.getPoiId()); + jsonGenerator.writeEndObject(); + } +} 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 e0077211ad..1927e49f71 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 @@ -1,11 +1,33 @@ package cn.iocoder.yudao.module.map.service.pois; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.infra.api.config.ConfigApi; +import cn.iocoder.yudao.module.map.api.poirecord.MapPoiRecordApi; +import cn.iocoder.yudao.module.map.controller.app.lbs.vo.AppMapLbsReqVO; +import cn.iocoder.yudao.module.map.dal.dataobject.keywordsearch.KeywordSearchDO; +import cn.iocoder.yudao.module.map.dal.dataobject.poitypes.PoiTypesDO; +import cn.iocoder.yudao.module.map.dal.mysql.keywordsearch.KeywordSearchMapper; +import cn.iocoder.yudao.module.map.dal.mysql.poitypes.PoiTypesMapper; +import cn.iocoder.yudao.module.map.mq.message.poirecord.PoiRecordMessage; +import cn.iocoder.yudao.module.map.mq.producer.poirecord.PoiRecordProducer; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hankcs.hanlp.HanLP; +import com.hankcs.hanlp.seg.common.Term; +import com.mzt.logapi.context.LogRecordContext; +import com.mzt.logapi.starter.annotation.LogRecord; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.SpringTransactionAnnotationParser; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.io.IOException; +import java.time.LocalDateTime; 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; @@ -13,7 +35,6 @@ 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.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.pois.PoisMapper; @@ -24,6 +45,16 @@ import cn.iocoder.yudao.module.map.dal.mysql.pois.PoisPhotosMapper; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.map.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.map.enums.LogRecordConstants.*; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + /** * 高德POI基础信息 Service 实现类 @@ -32,7 +63,7 @@ import static cn.iocoder.yudao.module.map.enums.ErrorCodeConstants.*; */ @Service @Validated -public class PoisServiceImpl implements PoisService { +public class PoisServiceImpl implements PoisService, MapPoiRecordApi { @Resource private PoisMapper poisMapper; @@ -44,6 +75,16 @@ public class PoisServiceImpl implements PoisService { private PoisNaviMapper poisNaviMapper; @Resource private PoisPhotosMapper poisPhotosMapper; + @Resource + private PoiTypesMapper poiTypesMapper; + @Resource + private ConfigApi configApi; + @Resource + private PoiRecordProducer poiRecordProducer; + @Resource + private ObjectMapper objectMapper; + @Resource + private KeywordSearchMapper keywordSearchMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -220,4 +261,193 @@ public class PoisServiceImpl implements PoisService { poisPhotosMapper.deleteByPoisId(poisId); } + + /** + * 请求高德POI2.0接口获得地图数据 + * + * @param pageReqVO 分页查询 + * @return 搜索记录分页 + */ + @Override + @LogRecord(type = POI_DATA, subType = POI_DATA_REQUEST, success = POI_DATA_REQUEST_SUCCESS, bizNo = "{{#loginUser.getId}}") + public CommonResult getPoiData(AppMapLbsReqVO pageReqVO) { + // 高德地图新POI搜索接口地址 + String apiUrl = "https://restapi.amap.com/v5/place/text"; + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + if (loginUser != null) { + LogRecordContext.putVariable("loginUser", loginUser); + } else { + throw exception(POI_REQUEST_NO_MEMBER); + } + // 高德地图 API Key + String apiKey = configApi.getConfigValueByKey("gaode.lbs.key"); + if (apiKey == null) { + throw exception(POIS_KEYS_EXISTS); + } + // 构建请求参数 + // keyword 或者 types 二选一必填 + Map params = new HashMap<>(); + params.put("key", apiKey); + + String new_type_str = ""; + if (pageReqVO.getIsFocus() == 0) { + // 非精准查找需要对输入的关键词进行分词处理,然后在数据库中查询是否归属于poi类型 + // 使用Hutool的分词工具进行分词处理 + List termList = HanLP.segment(pageReqVO.getKeywords()); + List keywords = new ArrayList<>(); + for (Term term : termList) { + keywords.add(term.word); + } + if (!keywords.isEmpty()) { + List newtype = poiTypesMapper.selectByWords(keywords); + if (!newtype.isEmpty()) { + // 使用字符'|'拼接newtype字段 + new_type_str = newtype.stream() + .map(PoiTypesDO::getNewType) + .collect(Collectors.joining("|")); + } + } + // 类型都不为空,使用类型进行模糊查询 + if (!new_type_str.isEmpty()) { + params.put("types", new_type_str); + } else { + params.put("keywords", pageReqVO.getKeywords()); + } + } else { + // 精准模式,指定关键词查找 + if (pageReqVO.getKeywords() != null) { + params.put("keywords", pageReqVO.getKeywords()); + } + } + // 城市限制 + if (pageReqVO.getRegion() != null) { + // 仅召回 region 对应区域内数据 + params.put("region", pageReqVO.getRegion()); + // 指定城市数据召回限制 + params.put("city_limit", "true"); + } + params.put("show_fields", "children,business,navi,indoor,photos"); + params.put("page_size", pageReqVO.getPageSize().toString()); + params.put("page_num", pageReqVO.getPageNo().toString()); + // 将参数拼接成查询字符串 + String queryString = params.entrySet().stream() + .map(entry -> { + // 对参数的键和值进行 URL 编码 + String encodedKey = java.net.URLEncoder.encode(entry.getKey(), java.nio.charset.StandardCharsets.UTF_8); + String encodedValue = java.net.URLEncoder.encode(entry.getValue(), java.nio.charset.StandardCharsets.UTF_8); + return encodedKey + "=" + encodedValue; + }) + .collect(Collectors.joining("&")); + //打印日志 +// System.out.println("请求参数:" + queryString); + + // 构建完整的请求 URL + String fullUrl = apiUrl + "?" + queryString; + + // 创建 HttpClient 实例 + HttpClient client = HttpClient.newHttpClient(); + + // 创建 HttpRequest 实例 + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(fullUrl)) + .GET() + .build(); + CommonResult data = new CommonResult<>(); + try { + // 发送请求并获取响应 + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + // 处理响应 + if (response.statusCode() == 200) { + String responseBody = response.body(); + // TODO 添加消息队列,保存到json到对应数据库 + PoiRecordMessage message = new PoiRecordMessage(); + message.setTypes(new_type_str); + message.setPoiData(responseBody); + message.setKeywords(pageReqVO.getKeywords()); + message.setRegion(pageReqVO.getRegion()); + message.setCityLimit(true); + message.setPoiData(responseBody); + message.setPageNum(pageReqVO.getPageNo()); + message.setPageSize(25); + poiRecordProducer.sendPoiRecordMessage(message); +// System.out.println("响应体:" + responseBody); + return data.setCode(POI_REQUEST_SUCCESS.getCode()).setData(responseBody); + } else { + // 处理请求失败的情况 + throw exception(POI_REQUEST_ERROR, response.statusCode()); + } + } catch (IOException | InterruptedException e) { + // 处理异常 + throw exception(POI_REQUEST_ERROR); + } + } + + + /** + * 处理高德POI2.0接口获得的地图数据 + * + * @param message 消息 + */ +// @LogRecord(type = POI_DATA, subType = POI_DATA_SAVE, bizNo = "{{#loginUser.getId}}", +// success = POI_DATA_SAVE_SUCCESS) + @Override + public void doCreate(PoiRecordMessage message) { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + if (loginUser != null) { + LogRecordContext.putVariable("loginUser", loginUser); + } else { + throw exception(POI_SAVE_NO_MEMBER); + } + + try { + String poiData = message.getPoiData(); + // 简单去除多余的反斜杠 + poiData = poiData.replace("\\", ""); + System.out.println("接收数据:" + poiData); + + KeywordSearchDO keywordSearchDO = objectMapper.readValue(poiData, KeywordSearchDO.class); + keywordSearchDO.setKeywords(message.getKeywords()); + keywordSearchDO.setRegion(message.getRegion()); + keywordSearchDO.setCityLimit(message.getCityLimit()); + keywordSearchDO.setTypes(message.getTypes()); + keywordSearchDO.setRegion(message.getRegion()); + keywordSearchDO.setPageSize(message.getPageSize()); + keywordSearchDO.setPageNum(message.getPageNum()); + keywordSearchMapper.insert(keywordSearchDO); + // 在插入keywordSearch表后,继续将关联的POI数据进行转换并插入 + + PoisTransVo maps = objectMapper.readValue(poiData, PoisTransVo.class); + System.out.println("map:"); + System.out.println(maps); + for (PoiTransSaveVO map : maps.getPois()) { + System.out.println("PoiTransSaveVO:"); + System.out.println(map); + PoisSaveReqVO poisSaveReqVO = BeanUtils.toBean(map, PoisSaveReqVO.class); + System.out.println("poisSaveReqVO:"); + System.out.println(poisSaveReqVO); + poisSaveReqVO.setPoisBusiness(map.getBusiness()); + poisSaveReqVO.setPoisIndoor(map.getIndoor()); + poisSaveReqVO.setPoisNavi(map.getNavi()); + poisSaveReqVO.setKeySearchId(keywordSearchDO.getId()); + PoisDO pois = BeanUtils.toBean(poisSaveReqVO, PoisDO.class); + poisMapper.insert(pois); + + // 插入子表 + createPoisIndoor(pois.getId(), poisSaveReqVO.getPoisIndoor()); + createPoisBusiness(pois.getId(), poisSaveReqVO.getPoisBusiness()); + createPoisNavi(pois.getId(), poisSaveReqVO.getPoisNavi()); + if (map.getPhotos() != null) { + for (PoisPhotosDO photos : map.getPhotos()) { + createPoisPhotos(pois.getId(), photos); + } + } + + } + } catch (IOException e) { + System.out.println(e.getMessage()); + throw exception(POI_Trans_ERROR); + } + + } } \ 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/poitypes/PoiTypesService.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/poitypes/PoiTypesService.java new file mode 100644 index 0000000000..6a760f4eea --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/poitypes/PoiTypesService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.map.service.poitypes; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.map.controller.admin.poitypes.vo.*; +import cn.iocoder.yudao.module.map.dal.dataobject.poitypes.PoiTypesDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * POI类型 Service 接口 + * + * @author 安 + */ +public interface PoiTypesService { + + /** + * 创建POI类型 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createPoiTypes(@Valid PoiTypesSaveReqVO createReqVO); + + /** + * 更新POI类型 + * + * @param updateReqVO 更新信息 + */ + void updatePoiTypes(@Valid PoiTypesSaveReqVO updateReqVO); + + /** + * 删除POI类型 + * + * @param id 编号 + */ + void deletePoiTypes(Long id); + + /** + * 获得POI类型 + * + * @param id 编号 + * @return POI类型 + */ + PoiTypesDO getPoiTypes(Long id); + + /** + * 获得POI类型分页 + * + * @param pageReqVO 分页查询 + * @return POI类型分页 + */ + PageResult getPoiTypesPage(PoiTypesPageReqVO pageReqVO); + +} \ 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/poitypes/PoiTypesServiceImpl.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/poitypes/PoiTypesServiceImpl.java new file mode 100644 index 0000000000..f440c3724a --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/service/poitypes/PoiTypesServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.map.service.poitypes; + +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.poitypes.vo.*; +import cn.iocoder.yudao.module.map.dal.dataobject.poitypes.PoiTypesDO; +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.poitypes.PoiTypesMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.map.enums.ErrorCodeConstants.*; + +/** + * POI类型 Service 实现类 + * + * @author 安 + */ +@Service +@Validated +public class PoiTypesServiceImpl implements PoiTypesService { + + @Resource + private PoiTypesMapper poiTypesMapper; + + @Override + public Long createPoiTypes(PoiTypesSaveReqVO createReqVO) { + // 插入 + PoiTypesDO poiTypes = BeanUtils.toBean(createReqVO, PoiTypesDO.class); + poiTypesMapper.insert(poiTypes); + // 返回 + return poiTypes.getId(); + } + + @Override + public void updatePoiTypes(PoiTypesSaveReqVO updateReqVO) { + // 校验存在 + validatePoiTypesExists(updateReqVO.getId()); + // 更新 + PoiTypesDO updateObj = BeanUtils.toBean(updateReqVO, PoiTypesDO.class); + poiTypesMapper.updateById(updateObj); + } + + @Override + public void deletePoiTypes(Long id) { + // 校验存在 + validatePoiTypesExists(id); + // 删除 + poiTypesMapper.deleteById(id); + } + + private void validatePoiTypesExists(Long id) { + if (poiTypesMapper.selectById(id) == null) { + throw exception(POI_TYPES_NOT_EXISTS); + } + } + + @Override + public PoiTypesDO getPoiTypes(Long id) { + return poiTypesMapper.selectById(id); + } + + @Override + public PageResult getPoiTypesPage(PoiTypesPageReqVO pageReqVO) { + return poiTypesMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file