feat:完善信息
This commit is contained in:
211
app/common/platform/gaode.go
Normal file
211
app/common/platform/gaode.go
Normal file
@ -0,0 +1,211 @@
|
||||
package platform
|
||||
|
||||
import (
|
||||
"SciencesServer/utils"
|
||||
)
|
||||
|
||||
// 高德API
|
||||
|
||||
type Gaode struct{}
|
||||
|
||||
type (
|
||||
Location struct {
|
||||
Province string `json:"province"`
|
||||
City string `json:"city"`
|
||||
AdCode string `json:"adcode"`
|
||||
Rectangle string `json:"rectangle"`
|
||||
}
|
||||
// GaoDeLocationResponse 第三方位置响应参数
|
||||
GaoDeLocationResponse struct {
|
||||
Status string `json:"status"`
|
||||
Count string `json:"count"`
|
||||
Info string `json:"info"`
|
||||
InfoCode string `json:"infocode"`
|
||||
GeoCodes []struct {
|
||||
FormattedAddress string `json:"formatted_address"`
|
||||
Country string `json:"country"`
|
||||
Province string `json:"province"`
|
||||
CityCode string `json:"citycode"`
|
||||
City string `json:"city"`
|
||||
District string `json:"district"`
|
||||
Township []string `json:"township"`
|
||||
Neighborhood []struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
} `json:"neighborhood"`
|
||||
Building []struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
} `json:"building"`
|
||||
AdCode string `json:"adcode"`
|
||||
Street string `json:"street"`
|
||||
Number string `json:"number"`
|
||||
Location string `json:"location"`
|
||||
Level string `json:"level"`
|
||||
} `json:"geocodes"`
|
||||
}
|
||||
|
||||
// GaoDeLocationReverseResponse 第三方反向位置响应参数
|
||||
GaoDeLocationReverseResponse struct {
|
||||
Status string `json:"status"`
|
||||
Count string `json:"count"`
|
||||
Info string `json:"info"`
|
||||
InfoCode string `json:"infocode"`
|
||||
ReGeoCode struct {
|
||||
FormattedAddress string `json:"formatted_address"`
|
||||
AddressComponent struct {
|
||||
Country string `json:"country"`
|
||||
Province string `json:"province"`
|
||||
City string `json:"city"`
|
||||
CityCode string `json:"citycode"`
|
||||
District string `json:"district"`
|
||||
AdCode string `json:"adcode"`
|
||||
Township string `json:"township"`
|
||||
TownCode string `json:"town_code"`
|
||||
Neighborhood struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
} `json:"neighborhood"`
|
||||
Building struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
} `json:"building"`
|
||||
StreetNumber struct {
|
||||
Street string `json:"street"`
|
||||
Number string `json:"number"`
|
||||
Location string `json:"location"`
|
||||
Direction string `json:"direction"`
|
||||
Distance string `json:"distance"`
|
||||
} `json:"streetNumber"`
|
||||
BusinessAreas []struct {
|
||||
Location string `json:"location"`
|
||||
Name string `json:"name"`
|
||||
ID string `json:"id"`
|
||||
} `json:"businessAreas"`
|
||||
} `json:"addressComponent"`
|
||||
} `json:"regeocode"`
|
||||
}
|
||||
|
||||
// GaoDeLocationIPResponse IP定位查询
|
||||
GaoDeLocationIPResponse struct {
|
||||
Status string `json:"status"`
|
||||
Count string `json:"count"`
|
||||
Info string `json:"info"`
|
||||
InfoCode string `json:"infocode"`
|
||||
Province interface{} `json:"province"`
|
||||
City interface{} `json:"city"`
|
||||
AdCode interface{} `json:"adcode"`
|
||||
Rectangle interface{} `json:"rectangle"`
|
||||
}
|
||||
|
||||
// GaoDeWeatherResponse 第三方天气响应参数
|
||||
GaoDeWeatherResponse struct {
|
||||
Status string `json:"status"`
|
||||
Count string `json:"count"`
|
||||
Info string `json:"info"`
|
||||
InfoCode string `json:"infocode"`
|
||||
Lives []struct {
|
||||
Province string `json:"province"`
|
||||
City string `json:"city"`
|
||||
AdCode string `json:"adcode"`
|
||||
Weather string `json:"weather"`
|
||||
Temperature string `json:"temperature"`
|
||||
WindDirection string `json:"winddirection"`
|
||||
WindPower string `json:"windpower"`
|
||||
Humidity string `json:"humidity"`
|
||||
ReportTime string `json:"reporttime"`
|
||||
} `json:"lives"`
|
||||
}
|
||||
)
|
||||
|
||||
const (
|
||||
GDKey = "11b1e9db2756e3482b10754bf59d0d94"
|
||||
|
||||
gaoDeRequestURLForLocation string = "https://restapi.amap.com/v3/geocode/geo"
|
||||
gaoDeRequestURLForLocationReverse string = "https://restapi.amap.com/v3/geocode/regeo"
|
||||
gaoDeRequestURLForLocationIP string = "https://restapi.amap.com/v3/ip"
|
||||
gaoDeRequestURLForLocationWeather string = "https://restapi.amap.com/v3/weather/weatherInfo"
|
||||
)
|
||||
|
||||
// Location 位置信息
|
||||
func (this *Gaode) Location(address, city string) (*GaoDeLocationResponse, error) {
|
||||
params := map[string]interface{}{
|
||||
"key": GDKey, "address": "address", "city": city,
|
||||
}
|
||||
client := utils.NewClient(gaoDeRequestURLForLocation, utils.MethodForGet, params)
|
||||
|
||||
resp, err := client.Request(utils.RequestBodyFormatForFormData)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response := new(GaoDeLocationResponse)
|
||||
|
||||
_ = utils.FromJSONBytes(resp, response)
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// LocationReverse 反向位置
|
||||
func (this *Gaode) LocationReverse(location string) (*GaoDeLocationReverseResponse, error) {
|
||||
params := map[string]interface{}{
|
||||
"key": GDKey, "location": location,
|
||||
}
|
||||
client := utils.NewClient(gaoDeRequestURLForLocationReverse, utils.MethodForGet, params)
|
||||
|
||||
resp, err := client.Request(utils.RequestBodyFormatForFormData)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response := new(GaoDeLocationReverseResponse)
|
||||
|
||||
_ = utils.FromJSONBytes(resp, response)
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// LocationIP IP查询
|
||||
func (this *Gaode) LocationIP(ip string) (*GaoDeLocationIPResponse, error) {
|
||||
params := map[string]interface{}{
|
||||
"key": GDKey,
|
||||
}
|
||||
if ip != "" {
|
||||
params["ip"] = ip
|
||||
}
|
||||
client := utils.NewClient(gaoDeRequestURLForLocationIP, utils.MethodForGet, params)
|
||||
|
||||
resp, err := client.Request(utils.RequestBodyFormatForFormData)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response := new(GaoDeLocationIPResponse)
|
||||
|
||||
_ = utils.FromJSONBytes(resp, response)
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// Weather 天气信息
|
||||
func (this *Gaode) Weather(city string) (*GaoDeWeatherResponse, error) {
|
||||
params := map[string]interface{}{
|
||||
"key": GDKey, "city": city,
|
||||
}
|
||||
client := utils.NewClient(gaoDeRequestURLForLocationWeather, utils.MethodForGet, params)
|
||||
|
||||
resp, err := client.Request(utils.RequestBodyFormatForFormData)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response := new(GaoDeWeatherResponse)
|
||||
|
||||
_ = utils.FromJSONBytes(resp, response)
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
func NewGaode() *Gaode {
|
||||
return &Gaode{}
|
||||
}
|
Reference in New Issue
Block a user