From 4be7f126f0830a3eb1f09322539ae8daa1d914b9 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Tue, 14 Jun 2022 17:37:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=8E=E5=B8=82API=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=9C=81=E4=BB=BD=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rpc/services/service_region_city.go | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/internal/rpc/services/service_region_city.go b/internal/rpc/services/service_region_city.go index 36b9e8aa..84baa927 100644 --- a/internal/rpc/services/service_region_city.go +++ b/internal/rpc/services/service_region_city.go @@ -27,12 +27,39 @@ func (this *RegionCityService) FindAllEnabledRegionCities(ctx context.Context, r } 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.Id), + Name: province.Name, + Codes: province.DecodeCodes(), + } + } + pbCities = append(pbCities, &pb.RegionCity{ Id: int64(city.Id), Name: city.Name, Codes: city.DecodeCodes(), RegionProvinceId: int64(city.ProvinceId), + RegionProvince: pbProvince, }) }