45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
package data
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
pb "bsm/full/module/base/initial/pb"
|
|
"git.apinb.com/bsm-sdk/core/errcode"
|
|
"git.apinb.com/bsm-sdk/core/printer"
|
|
)
|
|
|
|
// 区域数据,默认级别:市
|
|
func Areas(ctx context.Context, in *pb.AreasRequest) (reply *pb.AreasReply, err error) {
|
|
// 参数检查 - 如果都没有提供,默认使用中国(ID=1)
|
|
if in.GetCountryCode() == "" && in.GetCountryId() == 0 {
|
|
in.CountryId = 1 // 默认中国
|
|
}
|
|
|
|
// 查询条件:国家代码优先
|
|
areas, err := GetAreasByCache(in)
|
|
if err != nil {
|
|
printer.Error("GetAreasByCache", err)
|
|
return nil, errcode.ErrDB
|
|
}
|
|
|
|
// 转换为响应格式
|
|
var data []*pb.AreasItem
|
|
for _, area := range areas {
|
|
data = append(data, &pb.AreasItem{
|
|
Id: fmt.Sprintf("%d", area.Id),
|
|
Pid: fmt.Sprintf("%d", area.Pid),
|
|
Deep: area.Deep,
|
|
Name: area.Name,
|
|
PinyinPrefix: area.PinyinPrefix,
|
|
Pinyin: area.Pinyin,
|
|
ExtId: area.ExtId,
|
|
ExtName: area.ExtName,
|
|
})
|
|
}
|
|
|
|
return &pb.AreasReply{
|
|
Areas: data,
|
|
}, nil
|
|
}
|