electricity_bill_calc_service/service/region.go

40 lines
972 B
Go

package service
import (
"electricity_bill_calc/global"
"electricity_bill_calc/model"
"electricity_bill_calc/repository"
"xorm.io/builder"
)
type _RegionService struct{}
var RegionService _RegionService
func (_RegionService) FetchSubRegions(parent string) ([]model.Region, error) {
regions := make([]model.Region, 0)
err := global.DBConn.Where(builder.Eq{"parent": parent}).Asc("code").Find(&regions)
if err != nil {
return make([]model.Region, 0), err
}
return regions, err
}
func (_RegionService) FetchAllParentRegions(code string) ([]model.Region, error) {
regions := make([]model.Region, 0)
region, err := repository.RegionRepository.FetchRegion(code)
if err != nil {
return regions, err
}
regions = append(regions, *region)
for region.Level > 1 {
region, err = repository.RegionRepository.FetchRegion(region.Parent)
if err != nil {
return make([]model.Region, 0), nil
}
regions = append(regions, *region)
}
return regions, nil
}