后台用户管理新增“人工实名
This commit is contained in:
@@ -79,7 +79,7 @@ func (p *CloudMarketProvider) Start(ctx context.Context, req StartRequest) (Prov
|
||||
|
||||
resp, err := p.client.Do(httpReq)
|
||||
if err != nil {
|
||||
return ProviderResult{}, fmt.Errorf("realname cloud market request failed: %w", err)
|
||||
return ProviderResult{}, fmt.Errorf("%w: realname cloud market request failed: %v", ErrProviderUnavailable, err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
@@ -165,7 +165,7 @@ func cloudMarketHTTPError(statusCode int, reason string) error {
|
||||
|
||||
func parseCloudMarketResult(raw json.RawMessage) (int, error) {
|
||||
if len(raw) == 0 || string(raw) == "null" {
|
||||
return 0, fmt.Errorf("realname cloud market result missing")
|
||||
return 0, fmt.Errorf("%w: realname cloud market result missing", ErrProviderUnavailable)
|
||||
}
|
||||
var number int
|
||||
if err := json.Unmarshal(raw, &number); err == nil {
|
||||
@@ -184,7 +184,7 @@ func parseCloudMarketResult(raw json.RawMessage) (int, error) {
|
||||
return 110, nil
|
||||
}
|
||||
}
|
||||
return 0, fmt.Errorf("realname cloud market result invalid: %s", string(raw))
|
||||
return 0, fmt.Errorf("%w: realname cloud market result invalid: %s", ErrProviderUnavailable, string(raw))
|
||||
}
|
||||
|
||||
func firstNonEmpty(values ...string) string {
|
||||
|
||||
@@ -28,7 +28,7 @@ func TestCloudMarketProviderStartVerified(t *testing.T) {
|
||||
defer server.Close()
|
||||
|
||||
provider, err := NewCloudMarketProvider(CloudMarketConfig{
|
||||
URL: server.URL,
|
||||
URL: server.URL,
|
||||
AppCode: "test-code",
|
||||
Encryptor: &crypto.MockEncryptor{},
|
||||
})
|
||||
@@ -62,7 +62,7 @@ func TestCloudMarketProviderStartRejected(t *testing.T) {
|
||||
defer server.Close()
|
||||
|
||||
provider, err := NewCloudMarketProvider(CloudMarketConfig{
|
||||
URL: server.URL,
|
||||
URL: server.URL,
|
||||
AppCode: "test-code",
|
||||
Encryptor: &crypto.MockEncryptor{},
|
||||
})
|
||||
@@ -93,7 +93,7 @@ func TestCloudMarketProviderStartRateLimited(t *testing.T) {
|
||||
defer server.Close()
|
||||
|
||||
provider, err := NewCloudMarketProvider(CloudMarketConfig{
|
||||
URL: server.URL,
|
||||
URL: server.URL,
|
||||
AppCode: "test-code",
|
||||
Encryptor: &crypto.MockEncryptor{},
|
||||
})
|
||||
@@ -110,3 +110,28 @@ func TestCloudMarketProviderStartRateLimited(t *testing.T) {
|
||||
t.Fatalf("期望限流错误,实际:%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCloudMarketProviderStartUnavailableOnInvalidResult(t *testing.T) {
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
_, _ = w.Write([]byte(`{"request_id":"TID999","status":"OK","result":"busy"}`))
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
provider, err := NewCloudMarketProvider(CloudMarketConfig{
|
||||
URL: server.URL,
|
||||
AppCode: "test-code",
|
||||
Encryptor: &crypto.MockEncryptor{},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("创建 Provider 失败:%v", err)
|
||||
}
|
||||
|
||||
_, err = provider.Start(t.Context(), StartRequest{
|
||||
UserID: 1,
|
||||
Name: "赵六",
|
||||
IDNo: "110101199001011234",
|
||||
})
|
||||
if !errors.Is(err, ErrProviderUnavailable) {
|
||||
t.Fatalf("期望服务不可用错误,实际:%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,8 +79,8 @@ func writeRealnameError(c *gin.Context, err error) {
|
||||
case errors.Is(err, ErrProviderRateLimited):
|
||||
response.Error(c, http.StatusTooManyRequests, "realname_rate_limited", "实名认证请求过于频繁,请稍后再试")
|
||||
case errors.Is(err, ErrProviderUnavailable):
|
||||
response.Error(c, http.StatusBadGateway, "realname_provider_unavailable", "实名认证服务调用失败,请稍后再试")
|
||||
response.Error(c, http.StatusBadGateway, "realname_provider_unavailable", "实名认证服务调用失败,请稍后重试或联系客服处理")
|
||||
default:
|
||||
response.Error(c, http.StatusInternalServerError, "internal_error", "实名认证服务暂时不可用")
|
||||
response.Error(c, http.StatusInternalServerError, "internal_error", "实名认证服务暂时不可用,请稍后重试或联系客服处理")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user