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