将根据坐标获取物理地址修改为根据城市code获取

This commit is contained in:
邹宗楠
2025-03-20 10:49:32 +08:00
parent 8306b04823
commit 0bfd0b6515
3 changed files with 52 additions and 13 deletions

View File

@@ -653,17 +653,24 @@ func DeleteUsers4Role(ctx *jxcontext.Context, r *authz.RoleInfo, userIDList []st
return errList.GetErrListAsOne()
}
func getAddressInfoFromCoord(db *dao.DaoDB, lng, lat float64) (formattedAddress string, districtCode, cityCode int, err error) {
regeoInfo, err := api.TencentMapAPI.GeoCodeRegeoSingle(lng, lat, 0, false, nil, 0, 0)
if err == nil {
formattedAddress = regeoInfo.Result.Address
districtCode = int(utils.Str2Int64WithDefault(regeoInfo.Result.AdInfo.Adcode, 0))
if districtCode == 0 {
err = fmt.Errorf("坐标lng:%f,lat:%f找不到位置信息", lng, lat)
} else if districtInfo, err2 := dao.GetPlaceByCode(db, districtCode); err2 == nil {
cityCode = districtInfo.ParentCode
}
func getAddressInfoFromCoord(db *dao.DaoDB, lng, lat float64, districtCodeParam int) (formattedAddress string, districtCode, cityCode int, err error) {
place, err := dao.GetPlacesByDistrictCode(districtCodeParam)
if err != nil {
return "", 0, 0, err
}
formattedAddress = place.ProvinceName + place.CityName + place.CountyName
districtCode = place.CountyCode
cityCode = place.CityCode
//regeoInfo, err := api.TencentMapAPI.GeoCodeRegeoSingle(lng, lat, 0, false, nil, 0, 0)
//if err == nil {
// formattedAddress = regeoInfo.Result.Address
// districtCode = int(utils.Str2Int64WithDefault(regeoInfo.Result.AdInfo.Adcode, 0))
// if districtCode == 0 {
// err = fmt.Errorf("坐标lng:%f,lat:%f找不到位置信息", lng, lat)
// } else if districtInfo, err2 := dao.GetPlaceByCode(db, districtCode); err2 == nil {
// cityCode = districtInfo.ParentCode
// }
//}
// 地址 // 行政区划code
return formattedAddress, districtCode, cityCode, err
}
@@ -676,7 +683,8 @@ func AddUserDeliveryAddress(ctx *jxcontext.Context, address *model.UserDeliveryA
db := dao.GetDB()
lng := address.Lng
lat := address.Lat
address.AutoAddress, address.DistrictCode, address.CityCode, err = getAddressInfoFromCoord(db, lng, lat)
address.AutoAddress, address.DistrictCode, address.CityCode, err = getAddressInfoFromCoord(db, lng, lat, address.DistrictCode)
if err == nil {
txDB, _ := dao.Begin(db)
defer func() {
@@ -739,11 +747,11 @@ func UpdateUserDeliveryAddress(ctx *jxcontext.Context, userID string, addressID
var outAddress *model.UserDeliveryAddress
valid := dao.StrictMakeMapByStructObject2(payload, address, &outAddress, ctx.GetUserName())
delete(valid, "autoAddress")
delete(valid, "districtCode")
//delete(valid, "districtCode")
delete(valid, "cityCode")
if len(valid) > 0 {
if valid["lng"] != nil || valid["lat"] != nil {
valid["autoAddress"], valid["districtCode"], valid["cityCode"], err = getAddressInfoFromCoord(db, outAddress.Lng, outAddress.Lat)
valid["autoAddress"], valid["districtCode"], valid["cityCode"], err = getAddressInfoFromCoord(db, outAddress.Lng, outAddress.Lat, valid["districtCode"].(int))
if err != nil {
return err
}

View File

@@ -114,3 +114,28 @@ func GetPlaces(db *DaoDB, cityCodes []int) (places []*model.Place, err error) {
err = GetRows(db, &places, sql, sqlParams)
return places, err
}
func GetPlacesByDistrictCode(districtCode int) (*DistrictName, error) {
sql := `
SELECT p1.name province_name,p1.code province_code,p2.name city_name,p2.code city_code,p3.name county_name,p3.code county_code FROM place p1
LEFT JOIN place p2 ON p2.parent_code = p1.code
LEFT JOIN place p3 ON p3.parent_code = p2.code
WHERE p3.code = ?
`
sqlParams := []interface{}{districtCode}
place := &DistrictName{}
if err := GetRow(GetDB(), place, sql, sqlParams...); err != nil {
return nil, err
}
return place, nil
}
type DistrictName struct {
ProvinceName string `json:"province_name"`
ProvinceCode int `json:"province_code"`
CityName string `json:"city_name"`
CityCode int `json:"city_code"`
CountyName string `json:"county_name"`
CountyCode int `json:"county_code"`
}

View File

@@ -293,6 +293,8 @@ func (c *User2Controller) TransferLegacyWeixins() {
// @Param tag formData string false "标签"
// @Param remark formData string false "备注"
// @Param isDefault formData int false "是否是默认"
// @Param cityCode formData int false "省code"
// @Param districtCode formData int false "市code"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /AddMyDeliveryAddress [post]
@@ -312,6 +314,8 @@ func (c *User2Controller) AddMyDeliveryAddress() {
Tag: params.Tag,
Remark: params.Remark,
IsDefault: int8(params.IsDefault),
CityCode: params.CityCode,
DistrictCode: params.DistrictCode,
}
retVal, err = cms.AddMyDeliveryAddress(params.Ctx, address)
return retVal, "", err
@@ -345,6 +349,8 @@ func (c *User2Controller) DeleteMyDeliveryAddress() {
// @Param tag formData string false "标签"
// @Param remark formData string false "备注"
// @Param isDefault formData int false "是否是默认01"
// @Param cityCode formData int false "省code"
// @Param districtCode formData int false "市code"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateMyDeliveryAddress [put]