zjy 1cc3089c27 运营活动 2 viikkoa sitten
..
API_COUPON_MANAGEMENT.md 6e8ca82cc3 暂存文档 4 viikkoa sitten
API_COUPON_VERIFY.md 6e8ca82cc3 暂存文档 4 viikkoa sitten
API_INCOME_PAYMENT_CYCLE.md 6e8ca82cc3 暂存文档 4 viikkoa sitten
API_MERCHANT_USER.md 1da1d12c38 docs(api): 添加商户用户信息和店铺收益相关接口文档 1 kuukausi sitten
API_NOTICE_MANAGEMENT.md 29dc540794 feat(notice): 新增商户通知管理接口文档 4 viikkoa sitten
API_NOTICE_MANAGEMENT_ALLREAD.md 29dc540794 feat(notice): 新增商户通知管理接口文档 4 viikkoa sitten
API_NOTICE_MANAGEMENT_DETALIS.md 29dc540794 feat(notice): 新增商户通知管理接口文档 4 viikkoa sitten
API_STORE_APPLY.md 6e8ca82cc3 暂存文档 4 viikkoa sitten
API_STORE_DETAIL.md 6e8ca82cc3 暂存文档 4 viikkoa sitten
API_STORE_DRAFT.md 6e8ca82cc3 暂存文档 4 viikkoa sitten
API_TODAY_INCOME.md 1da1d12c38 docs(api): 添加商户用户信息和店铺收益相关接口文档 1 kuukausi sitten
API_TODAY_ORDER_COUNT.md 1da1d12c38 docs(api): 添加商户用户信息和店铺收益相关接口文档 1 kuukausi sitten
CHANGELOG_MERCHANT_AUTH.md d5797b2420 feat(merchant-auth): 实现web端商户身份验证接口 1 kuukausi sitten
DEVELOPMENT_SUMMARY.md d5797b2420 feat(merchant-auth): 实现web端商户身份验证接口 1 kuukausi sitten
LOGIN_USER_UTIL_README.md 4db2d89a36 feat(store): 申请入住 3 viikkoa sitten
OPERATIONAL_ACTIVITY_README.md 1cc3089c27 运营活动 2 viikkoa sitten
README_BASE_DATA.md 0e30689716 feat(util): 新增支付宝身份验证工具类 1 kuukausi sitten
README_MERCHANT_AUTH.md d5797b2420 feat(merchant-auth): 实现web端商户身份验证接口 1 kuukausi sitten
SECOND_ENTRUST_USER_README.md c0387efb66 证照合同 2 viikkoa sitten
SECOND_ENTRUST_USER_UPDATE_LOG.md c0387efb66 证照合同 2 viikkoa sitten
STORE_LICENSE_HISTORY_API.md c0387efb66 证照合同 2 viikkoa sitten
USER_AUTHENTICATION_GUIDE_AOP.md 73949aa9ed 暂存文档 4 viikkoa sitten
WEBSOCKET_INTEGRATION.md 73949aa9ed 暂存文档 4 viikkoa sitten
商户登录util.md 6e8ca82cc3 暂存文档 4 viikkoa sitten

README_BASE_DATA.md

Web端基础数据查询接口开发文档

一、接口概述

本次开发在 alien-store-platform 服务中新增了基础数据查询接口,将原 alien-store 服务中分散在不同 Controller 的基础数据查询接口统一整合到一个 BaseDataController 中,方便 web 端商户平台统一管理和调用。

二、接口列表

2.1 根据关键词获取地址提示

接口路径: GET /baseData/getAddressPrompt

接口说明: 根据输入的地址关键词,返回高德地图的地址提示列表,支持按城市过滤

原接口路径: /alienStore/gaode/getInputPrompt

请求参数:

参数名 类型 必填 说明 示例
addressName String 地址关键词 "中关村"
city String 城市名称 "北京市"

请求示例:

GET /baseData/getAddressPrompt?addressName=中关村&city=北京市

响应示例:

{
  "code": 200,
  "success": true,
  "msg": "操作成功",
  "data": {
    "status": "1",
    "info": "OK",
    "infocode": "10000",
    "count": "10",
    "tips": [
      {
        "id": "B000A8XZL4",
        "name": "中关村",
        "district": "北京市海淀区",
        "adcode": "110108",
        "location": "116.313676,39.982718",
        "address": "中关村大街",
        "typecode": "190301"
      }
    ]
  }
}

2.2 获取行政区划数据

接口路径: GET /baseData/getDistrict

接口说明: 根据行政区划代码获取省市区数据,支持级联查询

原接口路径: /alienStore/gaode/getDistrict

请求参数:

参数名 类型 必填 说明 默认值 示例
adCode String 行政区划代码 100000 "100000"

行政区划代码说明:

  • 100000:中国(返回所有省级数据)
  • 410000:河南省(返回河南省所有市级数据)
  • 410300:洛阳市(返回洛阳市所有区县数据)

请求示例:

# 查询所有省份
GET /baseData/getDistrict?adCode=100000

# 查询河南省所有城市
GET /baseData/getDistrict?adCode=410000

# 查询洛阳市所有区县
GET /baseData/getDistrict?adCode=410300

响应示例:

{
  "code": 200,
  "success": true,
  "msg": "操作成功",
  "data": {
    "status": "1",
    "info": "OK",
    "infocode": "10000",
    "districts": [
      {
        "citycode": [],
        "adcode": "100000",
        "name": "中华人民共和国",
        "center": "116.3683244,39.915085",
        "level": "country",
        "districts": [
          {
            "citycode": "010",
            "adcode": "110000",
            "name": "北京市",
            "center": "116.405285,39.904989",
            "level": "province"
          }
        ]
      }
    ]
  }
}

2.3 获取经营板块基础数据

接口路径: GET /baseData/getBusinessSection

接口说明: 获取所有经营板块数据,用于商户选择经营类型

原接口路径: /alienStore/store/info/getBusinessSection

请求参数:

请求示例:

GET /baseData/getBusinessSection

响应示例:

{
  "code": 200,
  "success": true,
  "msg": "操作成功",
  "data": [
    {
      "id": 1,
      "typeName": "business_section",
      "dictId": "1",
      "dictDetail": "餐饮美食",
      "parentId": 0
    },
    {
      "id": 2,
      "typeName": "business_section",
      "dictId": "2",
      "dictDetail": "休闲娱乐",
      "parentId": 0
    },
    {
      "id": 3,
      "typeName": "business_section",
      "dictId": "3",
      "dictDetail": "生活服务",
      "parentId": 0
    }
  ]
}

2.4 获取经营种类基础数据

接口路径: GET /baseData/getBusinessTypes

接口说明: 根据经营板块ID获取该板块下的所有经营种类

原接口路径: /alienStore/store/info/getBusinessSectionTypes

请求参数:

参数名 类型 必填 说明 示例
parentId String 经营板块ID(dictId) "1"

请求示例:

GET /baseData/getBusinessTypes?parentId=1

响应示例:

{
  "code": 200,
  "success": true,
  "msg": "操作成功",
  "data": [
    {
      "id": 101,
      "typeName": "business_section",
      "dictId": "101",
      "dictDetail": "中餐",
      "parentId": 1
    },
    {
      "id": 102,
      "typeName": "business_section",
      "dictId": "102",
      "dictDetail": "西餐",
      "parentId": 1
    },
    {
      "id": 103,
      "typeName": "business_section",
      "dictId": "103",
      "dictDetail": "火锅",
      "parentId": 1
    },
    {
      "id": 104,
      "typeName": "business_section",
      "dictId": "104",
      "dictDetail": "烧烤",
      "parentId": 1
    }
  ]
}

三、业务流程说明

3.1 地址搜索流程

用户输入地址关键词
    ↓
调用 /baseData/getAddressPrompt 接口
    ↓
系统查询城市编码(如果指定城市)
    ↓
调用高德地图输入提示接口
    ↓
返回地址提示列表

3.2 行政区划级联查询流程

1. 查询所有省份
   GET /baseData/getDistrict?adCode=100000
   
2. 用户选择省份(例如:河南省,adCode=410000)
   GET /baseData/getDistrict?adCode=410000
   
3. 用户选择城市(例如:洛阳市,adCode=410300)
   GET /baseData/getDistrict?adCode=410300
   
4. 用户选择区县完成

3.3 经营板块和种类选择流程

1. 获取所有经营板块
   GET /baseData/getBusinessSection
   
2. 用户选择经营板块(例如:餐饮美食,dictId=1)
   GET /baseData/getBusinessTypes?parentId=1
   
3. 用户选择经营种类完成

四、Nacos 配置要求

在 Nacos 配置中心的 alien-store-platform.yml 配置文件中,需要添加以下高德地图相关配置:

# 高德地图配置
gaode:
  # 高德地图API Key
  key: your_gaode_api_key_here
  
  # 地理编码URL(地址转经纬度)
  geoUrl: https://restapi.amap.com/v3/geocode/geo?address=%s&key=%s
  
  # 输入提示URL
  geoListUrl: https://restapi.amap.com/v3/assistant/inputtips?keywords=%s&key=%s&city=%s
  
  # 行政区划URL
  getDistrict: https://restapi.amap.com/v3/config/district?key=%s&keywords=%s&subdistrict=1
  
  # 距离计算URL
  distanceUrl: https://restapi.amap.com/v3/direction/driving?origin=%s,%s&destination=%s,%s&key=%s
  
  # 直线距离URL
  distanceTypeUrl: https://restapi.amap.com/v3/direction/driving?origin=%s,%s&destination=%s,%s&key=%s&strategy=%s
  
  # 周边搜索URL
  nearUrl: https://restapi.amap.com/v3/place/around?location=%s,%s&key=%s&radius=%s&offset=%s&page=%s
  
  # 地铁站查询URL
  subwayUrl: https://restapi.amap.com/v3/place/text?key=%s&location=%s,%s&keywords=%s&radius=%s&types=%s
  
  # 逆地理编码URL(经纬度转地址)
  addressUrl: https://restapi.amap.com/v3/geocode/regeo?location=%s,%s&key=%s&radius=%s&extensions=%s

注意事项:

  • 需要在高德地图开放平台申请 API Key
  • 配置值可以从 alien-store 服务的 Nacos 配置中获取
  • 确保 API Key 有足够的调用额度

五、数据库依赖

5.1 essential_city_code 表

存储城市编码信息,用于地址搜索时的城市过滤。

表结构:

CREATE TABLE `essential_city_code` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `area_code` varchar(20) DEFAULT NULL COMMENT '行政区划代码',
  `area_name` varchar(100) DEFAULT NULL COMMENT '区域名称',
  `city_code` varchar(20) DEFAULT NULL COMMENT '城市编码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

5.2 store_dictionary 表

存储经营板块和经营种类的字典数据。

表结构:

CREATE TABLE `store_dictionary` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type_name` varchar(50) DEFAULT NULL COMMENT '字典类型名称',
  `dict_id` varchar(20) DEFAULT NULL COMMENT '字典ID',
  `dict_detail` varchar(200) DEFAULT NULL COMMENT '字典详情',
  `parent_id` int(11) DEFAULT NULL COMMENT '父节点ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

数据说明:

  • type_name = 'business_section' 表示经营板块/经营种类
  • dict_id = '0' 表示根节点(不显示)
  • dict_id != '0' AND parent_id = 根节点ID 表示经营板块
  • parent_id = 经营板块ID 表示经营种类

六、代码结构

6.1 新增文件列表

alien-store-platform/
├── src/main/java/shop/alien/storeplatform/
│   ├── controller/
│   │   └── BaseDataController.java               # 基础数据查询控制器
│   ├── service/
│   │   ├── BaseDataService.java                  # 基础数据服务接口
│   │   └── impl/
│   │       └── BaseDataServiceImpl.java          # 基础数据服务实现
│   └── util/
│       └── GaoDeMapApiUtil.java                  # 高德地图API工具类

6.2 核心类说明

1. BaseDataController

  • 提供4个基础数据查询接口
  • 统一的接口路径前缀 /baseData
  • 完整的 Swagger API 文档

2. BaseDataService & BaseDataServiceImpl

  • 实现基础数据查询业务逻辑
  • 调用高德地图API和数据库查询
  • 数据格式转换和封装

3. GaoDeMapApiUtil

  • 封装高德地图API调用
  • 支持地址提示和行政区划查询
  • HTTP请求处理和JSON解析

七、接口对比表

功能 原接口(alien-store) 新接口(alien-store-platform)
地址提示 /gaode/getInputPrompt /baseData/getAddressPrompt
行政区划 /gaode/getDistrict /baseData/getDistrict
经营板块 /store/info/getBusinessSection /baseData/getBusinessSection
经营种类 /store/info/getBusinessSectionTypes /baseData/getBusinessTypes

八、测试用例

8.1 地址提示测试

# 测试1:不指定城市
curl -X GET "http://localhost:8080/baseData/getAddressPrompt?addressName=中关村"

# 测试2:指定城市
curl -X GET "http://localhost:8080/baseData/getAddressPrompt?addressName=中关村&city=北京市"

8.2 行政区划测试

# 测试1:查询所有省份
curl -X GET "http://localhost:8080/baseData/getDistrict?adCode=100000"

# 测试2:查询河南省所有城市
curl -X GET "http://localhost:8080/baseData/getDistrict?adCode=410000"

# 测试3:查询洛阳市所有区县
curl -X GET "http://localhost:8080/baseData/getDistrict?adCode=410300"

8.3 经营数据测试

# 测试1:查询所有经营板块
curl -X GET "http://localhost:8080/baseData/getBusinessSection"

# 测试2:查询板块ID为1的所有经营种类
curl -X GET "http://localhost:8080/baseData/getBusinessTypes?parentId=1"

九、技术亮点

  1. 接口统一管理:将分散的基础数据查询接口统一到一个 Controller 中
  2. 命名规范化:采用更符合 web 端语义的接口路径命名
  3. 代码复用:复用原有业务逻辑,保证数据一致性
  4. 服务解耦:独立的工具类实现,不依赖 alien-store 服务
  5. 文档完整:提供详细的接口文档和使用说明

十、部署检查清单

  • 确认 Nacos 配置中已添加高德地图相关配置
  • 确认高德地图 API Key 有效且有调用额度
  • 确认数据库中 essential_city_code 表数据完整
  • 确认数据库中 store_dictionary 表数据完整
  • 确认 alien-entity 模块版本一致
  • 确认接口权限配置正确

十一、常见问题

Q1: 高德地图API返回为空怎么办?

A: 检查以下几点:

  1. API Key 是否有效
  2. 网络连接是否正常
  3. 调用次数是否超限
  4. 请求参数是否正确

Q2: 行政区划数据查询不准确?

A: 确保 adCode 参数正确,可以参考高德地图的行政区划代码表

Q3: 经营种类查询为空?

A: 检查 parentId 是否正确,确认数据库中该板块下是否有经营种类数据


开发完成时间: 2025-01-xx
开发人员: AI Assistant
版本号: v1.0.0