package logic import ( "context" "slowwild/internal/svc" "slowwild/internal/model" "slowwild/internal/errorx" "git.banshen.xyz/huangguangrong/slow_wild_protobuff/slowwild/slowwildserver" "github.com/zeromicro/go-zero/core/logx" ) type FindUserLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewFindUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *FindUserLogic { return &FindUserLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 查询用户信息 func (l *FindUserLogic) FindUser(in *slowwildserver.FindUserReq) (*slowwildserver.FindUserResp, error) { // 参数校验 if len(in.Ids) == 0 && in.Phone == "" && in.Username == "" { return nil, errorx.ErrInvalidParam } var users []*model.User var err error if len(in.Ids) > 0 { users, err = l.svcCtx.UserModel.FindByIds(l.ctx, in.Ids) } else if in.Phone != "" { user, err := l.svcCtx.UserModel.FindOneByPhone(l.ctx, in.Phone) if err == model.ErrNotFound { return nil, errorx.ErrUserNotFound } if err == nil && user != nil { users = append(users, user) } } else if in.Username != "" { user, err := l.svcCtx.UserModel.FindOneByUsername(l.ctx, in.Username) if err == model.ErrNotFound { return nil, errorx.ErrUserNotFound } if err == nil && user != nil { users = append(users, user) } } if err != nil { return nil, errorx.ErrUserQueryFailed } // 转换为响应对象 resp := &slowwildserver.FindUserResp{ UserList: make([]*slowwildserver.UserInfo, 0, len(users)), } for _, user := range users { resp.UserList = append(resp.UserList, &slowwildserver.UserInfo{ Id: user.ID, Avatar: user.Avatar, Sex: int32(user.Sex), Nickname: user.Nickname, }) } return resp, nil }