feat(设备绑定): 添加用户数据迁移功能以支持设备重新绑定
Build docker and publish / build (20.15.1) (push) Successful in 6m41s

在设备重新绑定到新用户时,自动迁移旧用户的订单、订阅和余额数据
移除游客订单特殊处理逻辑,统一所有订单处理流程
更新设备绑定文档说明新的静默登录机制
This commit is contained in:
2025-10-17 19:04:47 -07:00
parent bfbc675e1a
commit 3bbd687231
6 changed files with 217 additions and 20 deletions
+6 -6
View File
@@ -192,12 +192,12 @@ func (l *ActivateOrderLogic) NewPurchase(ctx context.Context, orderInfo *order.O
return nil
}
// getUserOrCreate retrieves an existing user or creates a new guest user based on order details
// getUserOrCreate retrieves an existing user or creates a new user based on order details
func (l *ActivateOrderLogic) getUserOrCreate(ctx context.Context, orderInfo *order.Order) (*user.User, error) {
if orderInfo.UserId != 0 {
return l.getExistingUser(ctx, orderInfo.UserId)
}
return l.createGuestUser(ctx, orderInfo)
return l.createUserFromTempOrder(ctx, orderInfo)
}
// getExistingUser retrieves user information by user ID
@@ -213,9 +213,9 @@ func (l *ActivateOrderLogic) getExistingUser(ctx context.Context, userId int64)
return userInfo, nil
}
// createGuestUser creates a new user account for guest orders using temporary order information
// stored in Redis cache
func (l *ActivateOrderLogic) createGuestUser(ctx context.Context, orderInfo *order.Order) (*user.User, error) {
// createUserFromTempOrder creates a new user account using temporary order information
// stored in Redis cache. All users created this way are formal users, not guests.
func (l *ActivateOrderLogic) createUserFromTempOrder(ctx context.Context, orderInfo *order.Order) (*user.User, error) {
tempOrder, err := l.getTempOrderInfo(ctx, orderInfo.OrderNo)
if err != nil {
return nil, err
@@ -253,7 +253,7 @@ func (l *ActivateOrderLogic) createGuestUser(ctx context.Context, orderInfo *ord
// Handle referrer relationship
l.handleReferrer(ctx, userInfo, tempOrder.InviteCode)
logger.WithContext(ctx).Info("Create guest user success",
logger.WithContext(ctx).Info("Create user success",
logger.Field("user_id", userInfo.Id),
logger.Field("identifier", tempOrder.Identifier),
logger.Field("auth_type", tempOrder.AuthType),