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 + }) +}