From 94aff0ca6e738cae770bcbaee63e50cf1510ce45 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 21 Apr 2021 12:45:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=85=BE=E8=AE=AF=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E5=9C=B0=E5=9D=80=E6=9F=A5=E8=AF=A2=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/admin/controllers/map.controller.ts | 19 +++++++++++++++++++ src/models/shop/Shop.ts | 4 ++-- src/services/TencentMap.ts | 24 ++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/admin/controllers/map.controller.ts create mode 100644 src/services/TencentMap.ts diff --git a/src/admin/controllers/map.controller.ts b/src/admin/controllers/map.controller.ts new file mode 100644 index 0000000..43fca90 --- /dev/null +++ b/src/admin/controllers/map.controller.ts @@ -0,0 +1,19 @@ +import BaseController from '../../common/base.controller' +import { router } from '../../decorators/router' +import { queryArea } from '../../services/TencentMap' +import { ZError } from '../../common/ZError' + +class MapController extends BaseController { + @router('post /area/query') + async fetchArea(req, res) { + let {keyword, region} = req.params + let data = await queryArea(keyword, region) + if (data.status != 0) { + throw new ZError(data.status, data.message) + } + return { + count: data.count, + records: data.data + } + } +} diff --git a/src/models/shop/Shop.ts b/src/models/shop/Shop.ts index 96fdbdb..1240b08 100644 --- a/src/models/shop/Shop.ts +++ b/src/models/shop/Shop.ts @@ -45,13 +45,13 @@ class ShopClass extends FindOrCreate { * @type {number} */ @prop() - public longitude: number + public lng: number /** * 纬度 * @type {number} */ @prop() - public latitude: number + public lat: number /** * 是否删除 * @type {boolean} diff --git a/src/services/TencentMap.ts b/src/services/TencentMap.ts new file mode 100644 index 0000000..63dd5f1 --- /dev/null +++ b/src/services/TencentMap.ts @@ -0,0 +1,24 @@ +import axios from 'axios' +import { md5 } from '../utils/security.util' + +const key = 'LAHBZ-TXZYJ-CT7FQ-KIK5N-Z6PBV-QCFXN' +const signKey = 'lWmmEpmAul4u8q9gktxFmu5N36IslYyy' + + +export async function queryArea(keyword: string, region: string) { + let host = 'https://apis.map.qq.com' + let path = '/ws/place/v1/suggestion' + let signStr = `${path}?key=${key}&keyword=${keyword}®ion=${region}${signKey}` + let sig = md5(signStr) + let data = { + key, + keyword, + region, + sig + } + let url = `${host}${path}` + return axios.get(url, {params: data}) + .then(res => { + return res.data + }) +}