Files
EdgeAPI/internal/rpc/services/service_region_city.go

252 lines
6.9 KiB
Go
Raw Normal View History

2024-05-17 18:27:26 +08:00
// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved.
2022-01-06 16:25:23 +08:00
package services
import (
"context"
2024-07-27 14:15:25 +08:00
2022-01-06 16:25:23 +08:00
"github.com/TeaOSLab/EdgeAPI/internal/db/models/regions"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
)
// RegionCityService 城市相关服务
type RegionCityService struct {
BaseService
}
// FindAllEnabledRegionCities 查找所有城市
// Deprecated
2022-01-06 16:25:23 +08:00
func (this *RegionCityService) FindAllEnabledRegionCities(ctx context.Context, req *pb.FindAllEnabledRegionCitiesRequest) (*pb.FindAllEnabledRegionCitiesResponse, error) {
_, _, err := this.ValidateNodeId(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
cities, err := regions.SharedRegionCityDAO.FindAllEnabledCities(tx)
if err != nil {
return nil, err
}
var pbCities = []*pb.RegionCity{}
2022-06-14 17:37:42 +08:00
var provincesMap = map[int64]*regions.RegionProvince{} // provinceId => RegionProvince
2022-01-06 16:25:23 +08:00
for _, city := range cities {
2022-06-14 17:37:42 +08:00
var provinceId = int64(city.ProvinceId)
var pbProvince = &pb.RegionProvince{Id: provinceId}
if req.IncludeRegionProvince {
province, ok := provincesMap[provinceId]
if !ok {
province, err = regions.SharedRegionProvinceDAO.FindEnabledRegionProvince(tx, provinceId)
if err != nil {
return nil, err
}
if province == nil {
continue
}
provincesMap[provinceId] = province
}
pbProvince = &pb.RegionProvince{
Id: int64(province.ValueId),
Name: province.Name,
Codes: province.DecodeCodes(),
DisplayName: province.DisplayName(),
2022-06-14 17:37:42 +08:00
}
}
2022-01-06 16:25:23 +08:00
pbCities = append(pbCities, &pb.RegionCity{
Id: int64(city.ValueId),
2022-01-06 16:25:23 +08:00
Name: city.Name,
Codes: city.DecodeCodes(),
RegionProvinceId: int64(city.ProvinceId),
2022-06-14 17:37:42 +08:00
RegionProvince: pbProvince,
CustomName: city.CustomName,
CustomCodes: city.DecodeCustomCodes(),
DisplayName: city.DisplayName(),
2022-01-06 16:25:23 +08:00
})
}
return &pb.FindAllEnabledRegionCitiesResponse{
RegionCities: pbCities,
}, nil
}
// FindAllRegionCities 查找所有城市
func (this *RegionCityService) FindAllRegionCities(ctx context.Context, req *pb.FindAllRegionCitiesRequest) (*pb.FindAllRegionCitiesResponse, error) {
_, _, err := this.ValidateNodeId(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
cities, err := regions.SharedRegionCityDAO.FindAllEnabledCities(tx)
if err != nil {
return nil, err
}
var pbCities = []*pb.RegionCity{}
var provincesMap = map[int64]*regions.RegionProvince{} // provinceId => RegionProvince
for _, city := range cities {
var provinceId = int64(city.ProvinceId)
var pbProvince = &pb.RegionProvince{Id: provinceId}
if req.IncludeRegionProvince {
province, ok := provincesMap[provinceId]
if !ok {
province, err = regions.SharedRegionProvinceDAO.FindEnabledRegionProvince(tx, provinceId)
if err != nil {
return nil, err
}
if province == nil {
continue
}
provincesMap[provinceId] = province
}
pbProvince = &pb.RegionProvince{
Id: int64(province.ValueId),
Name: province.Name,
Codes: province.DecodeCodes(),
CustomName: province.CustomName,
CustomCodes: province.DecodeCustomCodes(),
DisplayName: province.DisplayName(),
}
}
pbCities = append(pbCities, &pb.RegionCity{
Id: int64(city.ValueId),
Name: city.Name,
Codes: city.DecodeCodes(),
RegionProvinceId: int64(city.ProvinceId),
RegionProvince: pbProvince,
CustomName: city.CustomName,
CustomCodes: city.DecodeCustomCodes(),
DisplayName: city.DisplayName(),
})
}
return &pb.FindAllRegionCitiesResponse{
RegionCities: pbCities,
}, nil
}
// FindAllRegionCitiesWithRegionProvinceId 查找某个省份的所有城市
func (this *RegionCityService) FindAllRegionCitiesWithRegionProvinceId(ctx context.Context, req *pb.FindAllRegionCitiesWithRegionProvinceIdRequest) (*pb.FindAllRegionCitiesWithRegionProvinceIdResponse, error) {
_, _, err := this.ValidateNodeId(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
cities, err := regions.SharedRegionCityDAO.FindAllEnabledCitiesWithProvinceId(tx, req.RegionProvinceId)
if err != nil {
return nil, err
}
var pbCities = []*pb.RegionCity{}
for _, city := range cities {
var provinceId = int64(city.ProvinceId)
var pbProvince = &pb.RegionProvince{Id: provinceId}
pbCities = append(pbCities, &pb.RegionCity{
Id: int64(city.ValueId),
Name: city.Name,
Codes: city.DecodeCodes(),
RegionProvinceId: int64(city.ProvinceId),
RegionProvince: pbProvince,
CustomName: city.CustomName,
CustomCodes: city.DecodeCustomCodes(),
DisplayName: city.DisplayName(),
})
}
return &pb.FindAllRegionCitiesWithRegionProvinceIdResponse{
RegionCities: pbCities,
}, nil
}
2022-01-06 16:25:23 +08:00
// FindEnabledRegionCity 查找单个城市信息
// Deprecated
2022-01-06 16:25:23 +08:00
func (this *RegionCityService) FindEnabledRegionCity(ctx context.Context, req *pb.FindEnabledRegionCityRequest) (*pb.FindEnabledRegionCityResponse, error) {
_, _, err := this.ValidateNodeId(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
city, err := regions.SharedRegionCityDAO.FindEnabledRegionCity(tx, req.RegionCityId)
if err != nil {
return nil, err
}
if city == nil {
return &pb.FindEnabledRegionCityResponse{
RegionCity: nil,
}, nil
}
return &pb.FindEnabledRegionCityResponse{
RegionCity: &pb.RegionCity{
Id: int64(city.ValueId),
2022-01-06 16:25:23 +08:00
Name: city.Name,
Codes: city.DecodeCodes(),
RegionProvinceId: int64(city.ProvinceId),
CustomName: city.CustomName,
CustomCodes: city.DecodeCustomCodes(),
DisplayName: city.DisplayName(),
},
}, nil
}
// FindRegionCity 查找单个城市信息
func (this *RegionCityService) FindRegionCity(ctx context.Context, req *pb.FindRegionCityRequest) (*pb.FindRegionCityResponse, error) {
_, _, err := this.ValidateNodeId(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
city, err := regions.SharedRegionCityDAO.FindEnabledRegionCity(tx, req.RegionCityId)
if err != nil {
return nil, err
}
if city == nil {
return &pb.FindRegionCityResponse{
RegionCity: nil,
}, nil
}
return &pb.FindRegionCityResponse{
RegionCity: &pb.RegionCity{
Id: int64(city.ValueId),
Name: city.Name,
Codes: city.DecodeCodes(),
RegionProvinceId: int64(city.ProvinceId),
CustomName: city.CustomName,
CustomCodes: city.DecodeCustomCodes(),
DisplayName: city.DisplayName(),
2022-01-06 16:25:23 +08:00
},
}, nil
}
// UpdateRegionCityCustom 修改城市定制信息
func (this *RegionCityService) UpdateRegionCityCustom(ctx context.Context, req *pb.UpdateRegionCityCustomRequest) (*pb.RPCSuccess, error) {
_, err := this.ValidateAdmin(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
err = regions.SharedRegionCityDAO.UpdateCityCustom(tx, req.RegionCityId, req.CustomName, req.CustomCodes)
if err != nil {
return nil, err
}
return this.Success()
}