fix comb298y
This commit is contained in:
parent
191f6799a0
commit
d7763927ac
@ -145,6 +145,14 @@ func (l *COMB298YLogic) COMB298Y(req *types.Request) (resp string, err *errs.App
|
||||
return "", errs.ErrSystem
|
||||
}
|
||||
apiRequests[i].Request = common.MapStructToAPIRequest(dataMap, apiRequests[i].Mapping, apiRequests[i].Wrap)
|
||||
|
||||
// 如果是 RIS031,添加 type: 3
|
||||
if apiRequests[i].SourceId == "RIS031" {
|
||||
if apiRequests[i].Request == nil {
|
||||
apiRequests[i].Request = make(map[string]interface{})
|
||||
}
|
||||
apiRequests[i].Request["type"] = 3
|
||||
}
|
||||
}
|
||||
logx.Infof("sourceId:%s,请求参数:%v", apiRequests[i].SourceId, apiRequests[i].Request)
|
||||
}
|
||||
|
@ -3,11 +3,14 @@ package IVYZ
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"tianyuan-api/apps/api/internal/service"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
"tianyuan-api/apps/api/internal/common"
|
||||
"tianyuan-api/apps/api/internal/svc"
|
||||
"tianyuan-api/apps/api/internal/types"
|
||||
"tianyuan-api/apps/api/internal/validator"
|
||||
"tianyuan-api/apps/api/internal/westmodel"
|
||||
"tianyuan-api/pkg/crypto"
|
||||
"tianyuan-api/pkg/errs"
|
||||
|
||||
@ -49,6 +52,7 @@ func (l *IVYZ5733Logic) IVYZ5733(req *types.Request) (resp string, err *errs.App
|
||||
if !productCodeOk || productCode == "" {
|
||||
return "", errs.ErrSystem
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if err != nil {
|
||||
status = "failed"
|
||||
@ -79,68 +83,60 @@ func (l *IVYZ5733Logic) IVYZ5733(req *types.Request) (resp string, err *errs.App
|
||||
}
|
||||
|
||||
// 3、西部加密
|
||||
// westConfig := l.svcCtx.Config.WestConfig
|
||||
// encryptedFields, encryptStructFieldsErr := common.EncryptStructFields(data, westConfig.Key)
|
||||
// if encryptStructFieldsErr != nil {
|
||||
// logx.Errorf("西部加密错误:%v", encryptStructFieldsErr)
|
||||
// return "", errs.ErrSystem
|
||||
// }
|
||||
westConfig := l.svcCtx.Config.WestConfig
|
||||
encryptedFields, encryptStructFieldsErr := common.EncryptStructFields(data, westConfig.Key)
|
||||
if encryptStructFieldsErr != nil {
|
||||
logx.Errorf("西部加密错误:%v", encryptStructFieldsErr)
|
||||
return "", errs.ErrSystem
|
||||
}
|
||||
|
||||
// 4、发送请求到西部
|
||||
logx.Infof("交易号:%s", transactionID)
|
||||
// apiRequest := common.MapStructToAPIRequest(encryptedFields, westmodel.IVYZ5733FieldMapping, "data")
|
||||
apiRequest := common.MapStructToAPIRequest(encryptedFields, westmodel.IVYZ5733FieldMapping, "data")
|
||||
|
||||
// westResp, callAPIErr := l.svcCtx.WestDexService.CallAPI("G09SC02", apiRequest, l.svcCtx.Config.WestConfig.SecretId)
|
||||
// if callAPIErr != nil {
|
||||
// if callAPIErr.Code == errs.ErrDataSource.Code {
|
||||
// encryptData, aesEncrypt := crypto.AesEncrypt(westResp, key)
|
||||
// if aesEncrypt != nil {
|
||||
// return "", errs.ErrSystem
|
||||
// }
|
||||
|
||||
// return encryptData, callAPIErr
|
||||
// }
|
||||
// return "", callAPIErr
|
||||
// }
|
||||
apiRequest := map[string]interface{}{
|
||||
"cardNo": data.IDCard,
|
||||
"name": data.Name,
|
||||
}
|
||||
respData, callAPIErr := l.svcCtx.YushanService.Request("IDV044", apiRequest)
|
||||
westResp, callAPIErr := l.svcCtx.WestDexService.CallAPI("G34BJ03", apiRequest, l.svcCtx.Config.WestConfig.SecretId)
|
||||
if callAPIErr != nil {
|
||||
if errors.Is(callAPIErr, service.NotFound) {
|
||||
return "", errs.ErrNotFound
|
||||
if callAPIErr.Code == errs.ErrDataSource.Code {
|
||||
return "", callAPIErr
|
||||
}
|
||||
return "", errs.ErrSystem
|
||||
return "", callAPIErr
|
||||
}
|
||||
// 使用gjson判断respData是否有status字段
|
||||
statusField := gjson.GetBytes(respData, "status")
|
||||
if !statusField.Exists() {
|
||||
logx.Errorf("羽山返回数据中缺少status字段: %s", string(respData))
|
||||
return "", errs.ErrNotFound
|
||||
}
|
||||
encryptData, aesEncrypt := crypto.AesEncrypt(respData, key)
|
||||
encryptData, aesEncrypt := crypto.AesEncrypt(westResp, key)
|
||||
if aesEncrypt != nil {
|
||||
return "", errs.ErrSystem
|
||||
}
|
||||
|
||||
// 解析加密后的数据
|
||||
// var response map[string]interface{}
|
||||
// unmarshalErr := json.Unmarshal([]byte(encryptData), &response)
|
||||
// if unmarshalErr != nil {
|
||||
// return "", errs.ErrSystem
|
||||
// }
|
||||
|
||||
// // 判断是否包含 "data" 字段
|
||||
// responseData, dataOk := response["data"].([]interface{})
|
||||
// if !dataOk || len(responseData) == 0 {
|
||||
// return "", errs.ErrSystem
|
||||
// }
|
||||
|
||||
// 判断 "data" 中是否包含 "maritalStatus"
|
||||
// maritalStatus := response.(map[string]interface{})["maritalStatus"]
|
||||
// if maritalStatus == nil {
|
||||
// return "", errs.ErrSystem
|
||||
// }
|
||||
return encryptData, nil
|
||||
}
|
||||
func handleResponse(resp []byte) ([]byte, error) {
|
||||
result := gjson.GetBytes(resp, "data.data")
|
||||
if !result.Exists() {
|
||||
return nil, fmt.Errorf("婚姻状态查询失败")
|
||||
}
|
||||
|
||||
// 获取原始结果
|
||||
rawResult := result.String()
|
||||
|
||||
// 根据结果转换状态码
|
||||
var statusCode string
|
||||
switch {
|
||||
case strings.HasPrefix(rawResult, "INR"):
|
||||
statusCode = "0" // 匹配不成功
|
||||
case strings.HasPrefix(rawResult, "IA"):
|
||||
statusCode = "1" // 结婚
|
||||
case strings.HasPrefix(rawResult, "IB"):
|
||||
statusCode = "2" // 离婚
|
||||
default:
|
||||
return nil, fmt.Errorf("婚姻状态查询失败,未知状态码: %s", statusCode)
|
||||
}
|
||||
|
||||
// 构建新的返回结果
|
||||
response := map[string]string{
|
||||
"status": statusCode,
|
||||
}
|
||||
// 序列化为JSON
|
||||
jsonResponse, err := json.Marshal(response)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("序列化结果失败: %v", err)
|
||||
}
|
||||
return jsonResponse, nil
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ func (w *WestDexService) CallAPI(code string, reqData map[string]interface{}, se
|
||||
|
||||
logx.Infof("西部流水号: %s", westDexResp.ID)
|
||||
|
||||
if westDexResp.Code != "00000" && westDexResp.Code != "200" {
|
||||
if westDexResp.Code != "00000" && westDexResp.Code != "200" && westDexResp.Code != "0" {
|
||||
if westDexResp.Data == "" {
|
||||
logx.Errorf("【西部数据请求】业务失败时响应数据为空: %s %s", westDexResp.Message, westDexResp.Reason)
|
||||
return nil, errs.ErrSystem
|
||||
|
@ -167,4 +167,5 @@ type COMB298YRequest struct {
|
||||
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||
Name string `json:"name" validate:"required,min=1,validName"`
|
||||
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||
AuthDate string `json:"auth_date" validate:"required,validAuthDate" encrypt:"false"`
|
||||
}
|
||||
|
@ -43,17 +43,16 @@ var FLXGC9D1FieldMapping = map[string]string{
|
||||
"MobileNo": "cell",
|
||||
}
|
||||
var FLXGCA3DFieldMapping = map[string]string{
|
||||
"IDCard": "id_card",
|
||||
"Name": "name",
|
||||
"IDCard": "id_card",
|
||||
"Name": "name",
|
||||
"AuthDate": "inquired_auth",
|
||||
}
|
||||
var FLXGDEC7FieldMapping = map[string]string{
|
||||
"IDCard": "id_card",
|
||||
"Name": "name",
|
||||
}
|
||||
var FLXG8UI0FieldMapping = map[string]string{
|
||||
"IDCard": "id",
|
||||
"Name": "name",
|
||||
"MobileNo": "cell",
|
||||
"IDCard": "keyWord",
|
||||
}
|
||||
var IVYZ385EFieldMapping = map[string]string{
|
||||
"IDCard": "gmsfzhm",
|
||||
@ -61,8 +60,8 @@ var IVYZ385EFieldMapping = map[string]string{
|
||||
}
|
||||
|
||||
var IVYZ5733FieldMapping = map[string]string{
|
||||
"IDCard": "certNumMan",
|
||||
"Name": "nameMan",
|
||||
"IDCard": "idCard",
|
||||
"Name": "name",
|
||||
}
|
||||
var IVYZ9363FieldMapping = map[string]string{
|
||||
"ManName": "nameMan",
|
||||
|
Loading…
Reference in New Issue
Block a user