66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | package service | |||
|  | 
 | |||
|  | import ( | |||
|  | 	"context" | |||
|  | 	"tydata-server/app/user/model" | |||
|  | 
 | |||
|  | 	"github.com/google/uuid" | |||
|  | 	"github.com/zeromicro/go-zero/core/stores/sqlx" | |||
|  | ) | |||
|  | 
 | |||
|  | type UserService struct { | |||
|  | 	userModel     model.UserModel | |||
|  | 	userAuthModel model.UserAuthModel | |||
|  | } | |||
|  | 
 | |||
|  | // NewUserService 创建UserService实例 | |||
|  | func NewUserService(userModel model.UserModel, userAuthModel model.UserAuthModel) *UserService { | |||
|  | 	return &UserService{ | |||
|  | 		userModel:     userModel, | |||
|  | 		userAuthModel: userAuthModel, | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | // GenerateUUIDUserId 生成UUID用户ID | |||
|  | func (s *UserService) GenerateUUIDUserId(ctx context.Context) (string, error) { | |||
|  | 	id := uuid.NewString() | |||
|  | 	return id, nil | |||
|  | } | |||
|  | 
 | |||
|  | // RegisterUUIDUser 注册UUID用户,返回用户ID | |||
|  | func (s *UserService) RegisterUUIDUser(ctx context.Context) (int64, error) { | |||
|  | 	// 生成UUID | |||
|  | 	uuidStr, err := s.GenerateUUIDUserId(ctx) | |||
|  | 	if err != nil { | |||
|  | 		return 0, err | |||
|  | 	} | |||
|  | 
 | |||
|  | 	var userId int64 | |||
|  | 	err = s.userModel.Trans(ctx, func(ctx context.Context, session sqlx.Session) error { | |||
|  | 		// 创建用户记录 | |||
|  | 		user := &model.User{} | |||
|  | 		result, err := s.userModel.Insert(ctx, session, user) | |||
|  | 		if err != nil { | |||
|  | 			return err | |||
|  | 		} | |||
|  | 		userId, err = result.LastInsertId() | |||
|  | 		if err != nil { | |||
|  | 			return err | |||
|  | 		} | |||
|  | 
 | |||
|  | 		// 创建用户认证记录 | |||
|  | 		userAuth := &model.UserAuth{ | |||
|  | 			UserId:   userId, | |||
|  | 			AuthType: model.UserAuthTypeUUID, | |||
|  | 			AuthKey:  uuidStr, | |||
|  | 		} | |||
|  | 		_, err = s.userAuthModel.Insert(ctx, session, userAuth) | |||
|  | 		return err | |||
|  | 	}) | |||
|  | 	if err != nil { | |||
|  | 		return 0, err | |||
|  | 	} | |||
|  | 
 | |||
|  | 	return userId, nil | |||
|  | } |