新增天聚数行平台,手机归属地查询,身份证归属地查询
This commit is contained in:
@@ -27,18 +27,20 @@ type ApiRequestService struct {
|
||||
config config.Config
|
||||
westDexService *WestDexService
|
||||
yushanService *YushanService
|
||||
tianjuService *TianjuService
|
||||
featureModel model.FeatureModel
|
||||
productFeatureModel model.ProductFeatureModel
|
||||
}
|
||||
|
||||
// NewApiRequestService 是一个构造函数,用于初始化 ApiRequestService
|
||||
func NewApiRequestService(c config.Config, westDexService *WestDexService, yushanService *YushanService, featureModel model.FeatureModel, productFeatureModel model.ProductFeatureModel) *ApiRequestService {
|
||||
func NewApiRequestService(c config.Config, westDexService *WestDexService, yushanService *YushanService, tianjuService *TianjuService, featureModel model.FeatureModel, productFeatureModel model.ProductFeatureModel) *ApiRequestService {
|
||||
return &ApiRequestService{
|
||||
config: c,
|
||||
featureModel: featureModel,
|
||||
productFeatureModel: productFeatureModel,
|
||||
westDexService: westDexService,
|
||||
yushanService: yushanService,
|
||||
tianjuService: tianjuService,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,47 +175,49 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
|
||||
|
||||
// ------------------------------------请求处理器--------------------------
|
||||
var requestProcessors = map[string]func(*ApiRequestService, []byte) ([]byte, error){
|
||||
"G09SC02": (*ApiRequestService).ProcessG09SC02Request,
|
||||
"G27BJ05": (*ApiRequestService).ProcessG27BJ05Request,
|
||||
"G26BJ05": (*ApiRequestService).ProcessG26BJ05Request,
|
||||
"G34BJ03": (*ApiRequestService).ProcessG34BJ03Request,
|
||||
"G35SC01": (*ApiRequestService).ProcessG35SC01Request,
|
||||
"G28BJ05": (*ApiRequestService).ProcessG28BJ05Request,
|
||||
"G05HZ01": (*ApiRequestService).ProcessG05HZ01Request,
|
||||
"Q23SC01": (*ApiRequestService).ProcessQ23SC01Request,
|
||||
"G15BJ02": (*ApiRequestService).ProcessG15BJ02Request,
|
||||
"G17BJ02": (*ApiRequestService).ProcessG17BJ02Request,
|
||||
"G08SC02": (*ApiRequestService).ProcessG08SC02Request,
|
||||
"KZEYS": (*ApiRequestService).ProcessKZEYSRequest,
|
||||
"P_C_B332": (*ApiRequestService).ProcessP_C_B332Request,
|
||||
"FIN019": (*ApiRequestService).ProcessFIN019Request,
|
||||
"CAR061": (*ApiRequestService).ProcessCAR061Request,
|
||||
"G10SC02": (*ApiRequestService).ProcessG10SC02Request,
|
||||
"G03HZ01": (*ApiRequestService).ProcessG03HZ01Request,
|
||||
"G02BJ02": (*ApiRequestService).ProcessG02BJ02Request,
|
||||
"G19BJ02": (*ApiRequestService).ProcessG19BJ02Request,
|
||||
"G20GZ01": (*ApiRequestService).ProcessG20GZ01Request,
|
||||
"CAR074": (*ApiRequestService).ProcessCAR074Request,
|
||||
"CAR058": (*ApiRequestService).ProcessCAR058Request,
|
||||
"CAR079": (*ApiRequestService).ProcessCAR079Request,
|
||||
"CAR066": (*ApiRequestService).ProcessCAR066Request,
|
||||
"CAR100": (*ApiRequestService).ProcessCAR100Request,
|
||||
"G37SC01": (*ApiRequestService).ProcessG37SC01Request,
|
||||
"G36SC01": (*ApiRequestService).ProcessG36SC01Request,
|
||||
"G22SC01": (*ApiRequestService).ProcessG22SC01Request,
|
||||
"Q03SC01": (*ApiRequestService).ProcessQ03SC01Request,
|
||||
"COM187": (*ApiRequestService).ProcessCOM187Request,
|
||||
"MOB035": (*ApiRequestService).ProcessMOB035Request,
|
||||
"PCB915": (*ApiRequestService).ProcessPCB915Request,
|
||||
"RIS031": (*ApiRequestService).ProcessRIS031Request,
|
||||
"PCB601": (*ApiRequestService).ProcessPCB601Request,
|
||||
"PCB148": (*ApiRequestService).ProcessPCB148Request,
|
||||
"FIN011": (*ApiRequestService).ProcessFIN011Request,
|
||||
"FIN020": (*ApiRequestService).ProcessFIN020Request,
|
||||
"FIN018": (*ApiRequestService).ProcessFIN018Request,
|
||||
"MOB032": (*ApiRequestService).ProcessMOB032Request,
|
||||
"FIN032": (*ApiRequestService).ProcessFIN032Request,
|
||||
"HRD004": (*ApiRequestService).ProcessHRD004Request,
|
||||
"G09SC02": (*ApiRequestService).ProcessG09SC02Request,
|
||||
"G27BJ05": (*ApiRequestService).ProcessG27BJ05Request,
|
||||
"G26BJ05": (*ApiRequestService).ProcessG26BJ05Request,
|
||||
"G34BJ03": (*ApiRequestService).ProcessG34BJ03Request,
|
||||
"G35SC01": (*ApiRequestService).ProcessG35SC01Request,
|
||||
"G28BJ05": (*ApiRequestService).ProcessG28BJ05Request,
|
||||
"G05HZ01": (*ApiRequestService).ProcessG05HZ01Request,
|
||||
"Q23SC01": (*ApiRequestService).ProcessQ23SC01Request,
|
||||
"G15BJ02": (*ApiRequestService).ProcessG15BJ02Request,
|
||||
"G17BJ02": (*ApiRequestService).ProcessG17BJ02Request,
|
||||
"G08SC02": (*ApiRequestService).ProcessG08SC02Request,
|
||||
"KZEYS": (*ApiRequestService).ProcessKZEYSRequest,
|
||||
"P_C_B332": (*ApiRequestService).ProcessP_C_B332Request,
|
||||
"FIN019": (*ApiRequestService).ProcessFIN019Request,
|
||||
"G10SC02": (*ApiRequestService).ProcessG10SC02Request,
|
||||
"G03HZ01": (*ApiRequestService).ProcessG03HZ01Request,
|
||||
"G02BJ02": (*ApiRequestService).ProcessG02BJ02Request,
|
||||
"G19BJ02": (*ApiRequestService).ProcessG19BJ02Request,
|
||||
"G20GZ01": (*ApiRequestService).ProcessG20GZ01Request,
|
||||
"CAR061": (*ApiRequestService).ProcessCAR061Request, // 名下车辆
|
||||
"CAR074": (*ApiRequestService).ProcessCAR074Request, // 车辆出险信息
|
||||
"CAR058": (*ApiRequestService).ProcessCAR058Request, // 车辆维保记录
|
||||
"CAR079": (*ApiRequestService).ProcessCAR079Request, // 车架号查车
|
||||
"CAR066": (*ApiRequestService).ProcessCAR066Request, // 车辆过户次数
|
||||
"CAR100": (*ApiRequestService).ProcessCAR100Request, // 车辆估值
|
||||
"G37SC01": (*ApiRequestService).ProcessG37SC01Request,
|
||||
"G36SC01": (*ApiRequestService).ProcessG36SC01Request,
|
||||
"G22SC01": (*ApiRequestService).ProcessG22SC01Request,
|
||||
"Q03SC01": (*ApiRequestService).ProcessQ03SC01Request,
|
||||
"COM187": (*ApiRequestService).ProcessCOM187Request,
|
||||
"MOB035": (*ApiRequestService).ProcessMOB035Request,
|
||||
"PCB915": (*ApiRequestService).ProcessPCB915Request,
|
||||
"RIS031": (*ApiRequestService).ProcessRIS031Request,
|
||||
"PCB601": (*ApiRequestService).ProcessPCB601Request,
|
||||
"PCB148": (*ApiRequestService).ProcessPCB148Request,
|
||||
"FIN011": (*ApiRequestService).ProcessFIN011Request,
|
||||
"FIN020": (*ApiRequestService).ProcessFIN020Request,
|
||||
"FIN018": (*ApiRequestService).ProcessFIN018Request,
|
||||
"MOB032": (*ApiRequestService).ProcessMOB032Request,
|
||||
"FIN032": (*ApiRequestService).ProcessFIN032Request,
|
||||
"HRD004": (*ApiRequestService).ProcessHRD004Request,
|
||||
"mobilelocal": (*ApiRequestService).ProcessMobilelocalRequest, // 手机归属地
|
||||
"sfz": (*ApiRequestService).ProcessSfzRequest, // 身份证归属地
|
||||
}
|
||||
|
||||
// PreprocessRequestApi 调用指定的请求处理函数
|
||||
@@ -1446,3 +1450,39 @@ func (a *ApiRequestService) ProcessHRD004Request(params []byte) ([]byte, error)
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// 手机归属地查询
|
||||
func (a *ApiRequestService) ProcessMobilelocalRequest(params []byte) ([]byte, error) {
|
||||
mobile := gjson.GetBytes(params, "mobile")
|
||||
if !mobile.Exists() {
|
||||
return nil, errors.New("api请求, mobilelocal, 获取相关参数失败")
|
||||
}
|
||||
|
||||
request := map[string]interface{}{
|
||||
"phone": mobile.String(),
|
||||
}
|
||||
|
||||
resp, err := a.tianjuService.Request("mobilelocal", request)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("手机归属地查询失败: %+v", err)
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// 身份证归属地查询
|
||||
func (a *ApiRequestService) ProcessSfzRequest(params []byte) ([]byte, error) {
|
||||
idCard := gjson.GetBytes(params, "id_card")
|
||||
if !idCard.Exists() {
|
||||
return nil, errors.New("api请求, sfz, 获取相关参数失败")
|
||||
}
|
||||
|
||||
request := map[string]interface{}{
|
||||
"idcard": idCard.String(),
|
||||
}
|
||||
|
||||
resp, err := a.tianjuService.Request("sfz", request)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("身份证归属地查询失败: %+v", err)
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
74
app/user/cmd/api/internal/service/tianjuService.go
Normal file
74
app/user/cmd/api/internal/service/tianjuService.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"qnc-server/app/user/cmd/api/internal/config"
|
||||
"strings"
|
||||
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
type TianjuService struct {
|
||||
config config.TianjuConfig
|
||||
}
|
||||
|
||||
func NewTianjuService(c config.Config) *TianjuService {
|
||||
return &TianjuService{
|
||||
config: c.TianjuConfig,
|
||||
}
|
||||
}
|
||||
|
||||
func (t *TianjuService) Request(apiPath string, params map[string]interface{}) ([]byte, error) {
|
||||
// 确保params中包含key参数
|
||||
reqParams := make(map[string]interface{})
|
||||
|
||||
// 复制用户参数
|
||||
for k, v := range params {
|
||||
reqParams[k] = v
|
||||
}
|
||||
|
||||
// 如果未提供key,则使用配置中的ApiKey
|
||||
if _, ok := reqParams["key"]; !ok {
|
||||
reqParams["key"] = t.config.ApiKey
|
||||
}
|
||||
|
||||
// 构建完整的URL,假设BaseURL已包含https://前缀
|
||||
fullURL := fmt.Sprintf("%s/%s/index", strings.TrimRight(t.config.BaseURL, "/"), apiPath)
|
||||
|
||||
// 将请求数据转换为JSON
|
||||
messageBytes, err := json.Marshal(reqParams)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("参数序列化失败: %w", err)
|
||||
}
|
||||
|
||||
// 发起HTTP请求
|
||||
resp, err := http.Post(fullURL, "application/json", strings.NewReader(string(messageBytes)))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("发送请求失败: %w", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 读取响应体
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("读取响应失败: %w", err)
|
||||
}
|
||||
|
||||
// 检查响应状态码
|
||||
code := gjson.GetBytes(body, "code").Int()
|
||||
if code != 200 {
|
||||
msg := gjson.GetBytes(body, "msg").String()
|
||||
return nil, fmt.Errorf("天聚请求失败: 状态码 %d, 信息: %s", code, msg)
|
||||
}
|
||||
|
||||
// 获取结果数据
|
||||
result := gjson.GetBytes(body, "result")
|
||||
if !result.Exists() {
|
||||
return nil, fmt.Errorf("天聚请求result为空: %s", string(body))
|
||||
}
|
||||
|
||||
return []byte(result.Raw), nil
|
||||
}
|
||||
Reference in New Issue
Block a user