package logic import ( "app.yhyue.com/moapp/jyInfo/rpc/model/province" "context" "fmt" "log" "strings" "app.yhyue.com/moapp/jyInfo/rpc/common/commonclient" "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 *commonclient.ProjectReq) (*commonclient.AreaResp, error) { //获取地区信息 data, err := l.svcCtx.AreaModel.Find() log.Println("data:", data, "--err:", err) return &commonclient.AreaResp{ Data: AreaFormat(data), }, nil } //省份信息结构化 func AreaFormat(data []model.AreaResp) (ps []*commonclient.Province) { var provinces = map[string][]*commonclient.City{} for _, v := range data { pk := fmt.Sprintf("%s-%s", v.Province, fmt.Sprint(v.Pid)) provinces[pk] = append(provinces[pk], &commonclient.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, &commonclient.Province{ Name: pkarr[0], Code: pkarr[1], Citys: pv, }) } } } return }