// Code scaffolded by goctl. Safe to edit. // goctl 1.9.2 package user import ( "context" "errors" "juwan-backend/app/users/api/internal/svc" "juwan-backend/app/users/api/internal/types" "juwan-backend/app/users/rpc/pb" "juwan-backend/common/utils" "github.com/google/uuid" "github.com/zeromicro/go-zero/core/logx" ) type RegisterLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // 用户注册接口 func NewRegisterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RegisterLogic { return &RegisterLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *RegisterLogic) Register(req *types.RegisterReq) (resp *types.RegisterResp, err error) { // 检查用户是否已存在 existingUser, err := l.svcCtx.UserRpc.GetUserByUsername(l.ctx, &pb.GetUserByUsernameReq{ Username: req.Username, }) if err == nil && existingUser != nil { return nil, errors.New("用户已存在") } // 生成用户ID userId, err := uuid.NewRandom() if err != nil { return nil, errors.New("注册失败:无法生成用户ID") } // 加密密码 hashedPassword, err := utils.HashPassword(req.Password) if err != nil { return nil, errors.New("注册失败:密码加密失败") } // 创建新用户 newUser, err := l.svcCtx.UserRpc.AddUsers(l.ctx, &pb.AddUsersReq{ UserId: userId.String(), Username: req.Username, Passwd: hashedPassword, Phone: req.Phone, State: true, }) if err != nil { l.Errorf("AddUsers failed: %v", err) return nil, errors.New("注册失败:创建用户失败") } // 返回响应 return &types.RegisterResp{ UserId: int64(newUser.), // RPC 返回的可能是用户信息,这里简化处理 Username: req.Username, Email: req.Email, Message: "注册成功", }, nil }