From d2cd8a909e98d76c2914e58652344a3d7124dd52 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 21 Apr 2021 15:43:25 +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=E6=A0=B9=E6=8D=AE=E5=9C=B0=E5=9D=80=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=BA=A7=E6=A0=87=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/admin/controllers/map.controller.ts | 14 ++++++++++++-- src/models/shop/Shop.ts | 16 +++++++++++++++- src/services/TencentMap.ts | 15 +++++++++++++-- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/admin/controllers/map.controller.ts b/src/admin/controllers/map.controller.ts index 43fca90..e088038 100644 --- a/src/admin/controllers/map.controller.ts +++ b/src/admin/controllers/map.controller.ts @@ -1,12 +1,12 @@ import BaseController from '../../common/base.controller' import { router } from '../../decorators/router' -import { queryArea } from '../../services/TencentMap' +import { addressToLoc, 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 { keyword, region } = req.params let data = await queryArea(keyword, region) if (data.status != 0) { throw new ZError(data.status, data.message) @@ -16,4 +16,14 @@ class MapController extends BaseController { records: data.data } } + + @router('post /area/geocoder') + async areaToLoc(req, res) { + let { address } = req.params + let data = await addressToLoc(address) + if (data.status != 0) { + throw new ZError(data.status, data.message) + } + return data.result + } } diff --git a/src/models/shop/Shop.ts b/src/models/shop/Shop.ts index 1240b08..3d442a2 100644 --- a/src/models/shop/Shop.ts +++ b/src/models/shop/Shop.ts @@ -6,7 +6,7 @@ import { getModelForClass, index, modelOptions, - plugin, prop + plugin, post, prop } from '@typegoose/typegoose' import { dbconn } from '../../decorators/dbconn' import { checkJson, noJson } from '../../decorators/nojson' @@ -20,6 +20,12 @@ const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id'] class ShopClass extends FindOrCreate { @prop({ required: true }) public name!: string + /** + * 显示名 + * @type {string} + */ + @prop() + public showName: string /** * 详细地址 * @type {string} @@ -77,6 +83,14 @@ class ShopClass extends FindOrCreate { @prop({default: true}) public show: boolean + @prop() + public logo: string + + @prop() + public category: string + @prop() + public extData: string + public updateFromReq(data: any) { for (let key in data) { diff --git a/src/services/TencentMap.ts b/src/services/TencentMap.ts index 9fceab3..fdc007d 100644 --- a/src/services/TencentMap.ts +++ b/src/services/TencentMap.ts @@ -3,10 +3,9 @@ import { md5 } from '../utils/security.util' const key = 'SWKBZ-SI6C3-TNG3L-3IXSD-XLLXV-CJB5Q' const signKey = 'EuadDaRCGIyXpxEMSCJqPS2t4NGA44Rt' - +const host = 'https://apis.map.qq.com' 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) @@ -22,3 +21,15 @@ export async function queryArea(keyword: string, region: string) { return res.data }) } + +export async function addressToLoc(address: string) { + let path = '/ws/geocoder/v1/' + let signStr = `${path}?address=${address}&key=${key}${signKey}` + let sig = md5(signStr) + let data = {address, key, sig} + let url = `${host}${path}` + return axios.get(url, {params: data}) + .then(res => { + return res.data + }) +}