package logic import ( "context" "fmt" "app.yhyue.com/moapp/jyInfo/rpc/model/province" "log" "strings" "app.yhyue.com/moapp/jyInfo/rpc/common/common" "app.yhyue.com/moapp/jyInfo/rpc/common/internal/svc" "github.com/zeromicro/go-zero/core/logx" ) type AreaInfoLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewAreaInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AreaInfoLogic { return &AreaInfoLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 获取省份信息 func (l *AreaInfoLogic) AreaInfo(in *common.ProjectReq) (*common.AreaResp, error) { //获取地区信息 data, err := l.svcCtx.AreaModel.Find() log.Println("data:", data, "--err:", err) return &common.AreaResp{ Data: AreaFormat(data), }, nil } //省份信息结构化 func AreaFormat(data []model.AreaResp) (ps []*common.Province) { var provinces = map[string][]*common.City{} for _, v := range data { pk := fmt.Sprintf("%s-%s", v.Province, fmt.Sprint(v.Pid)) provinces[pk] = append(provinces[pk], &common.City{ Name: v.City, Code: fmt.Sprint(v.Cid), }) } if provinces != nil { for pk, pv := range provinces { if strings.Contains(pk, "-") { pkarr := strings.Split(pk, "-") ps = append(ps, &common.Province{ Name: pkarr[0], Code: pkarr[1], Citys: pv, }) } } } return }