Quellcode durchsuchen

fix: 个人静默授权按手机号定位,手机号冲突时不再去号重建用户

Co-authored-by: Cursor <cursoragent@cursor.com>
郭铭泽 vor 2 Wochen
Ursprung
Commit
95ab261c2c
1 geänderte Dateien mit 10 neuen und 11 gelöschten Zeilen
  1. 10 11
      user.go

+ 10 - 11
user.go

@@ -133,28 +133,27 @@ func (c *Client) CreateInternalUser(p CreateUserParams) error {
 	return resp.err()
 }
 
-// CreateInternalUserSkipMobileConflict 创建用户;手机号冲突时去掉手机号重试(旧系统行为)。
-func (c *Client) CreateInternalUserSkipMobileConflict(p CreateUserParams) error {
-	err := c.CreateInternalUser(p)
+// IsMobileBoundByOtherUser 创建用户时手机号已被其他契约锁账号占用。
+func IsMobileBoundByOtherUser(err error) bool {
 	if err == nil {
-		return nil
-	}
-	if p.Mobile != "" && strings.Contains(err.Error(), "手机号已被其他用户绑定") {
-		p.Mobile = ""
-		return c.CreateInternalUser(p)
+		return false
 	}
-	return err
+	return strings.Contains(err.Error(), "手机号已被其他用户绑定")
 }
 
 // UserSignSilentURL 获取个人签名静默授权页;authEnd 为空则默认 10 个月。
 // applyCompany 传入当前体检机构(openCompanyId 通常等于 tenant_id),授权记录按机构维度拆分。
-func (c *Client) UserSignSilentURL(openUserID string, applyCompany ApplyCompanyParams, authEnd time.Time, completeToPage string) (string, error) {
+// authMobile 非空时一并传给契约锁;定位优先级为手机号高于 openUserId,避免复用无手机号的重复账号。
+func (c *Client) UserSignSilentURL(openUserID, authMobile string, applyCompany ApplyCompanyParams, authEnd time.Time, completeToPage string) (string, error) {
 	if authEnd.IsZero() {
 		authEnd = time.Now().Add(DefaultPersonalAuthDuration)
 	}
 	timeEditable := false
 	req := v2auth_request.V2AuthPersonalsignsilentUrlRequest{
-		AuthUser:           &common.SilentUserRequest{OpenUserId: openUserID},
+		AuthUser: &common.SilentUserRequest{
+			OpenUserId: strings.TrimSpace(openUserID),
+			Mobile:     strings.TrimSpace(authMobile),
+		},
 		AuthEndDate:        authEnd.Format("2006-01-02"),
 		AuthTimeModifiable: &timeEditable,
 		AuthorizedMode:     []string{"FACEAUTH", "PINAUTH"},