2024-09-14 10:48:09 +08:00
|
|
|
|
package service
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/base64"
|
|
|
|
|
"encoding/hex"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"log"
|
|
|
|
|
"qnc-server/config"
|
|
|
|
|
"qnc-server/db"
|
|
|
|
|
"qnc-server/model/model"
|
|
|
|
|
"qnc-server/utils"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type SingleQueryService struct {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *SingleQueryService) EvaluateMarriageReqYuShan(data *model.EvaluateMarriagePayload) (plainText []byte, err error) {
|
|
|
|
|
currentTime := time.Now()
|
|
|
|
|
unixMilliseconds := currentTime.UnixNano() / int64(time.Millisecond)
|
|
|
|
|
requestSN, _ := utils.GenerateRandomString()
|
|
|
|
|
apiKey := config.ConfigData.Antifraud.ApiKey
|
|
|
|
|
acctId := config.ConfigData.Antifraud.AcctId
|
|
|
|
|
httpUrl := config.ConfigData.Antifraud.HttpUrl
|
|
|
|
|
// 根据 ProdID 动态构建请求数据
|
|
|
|
|
reqData := map[string]interface{}{
|
|
|
|
|
"prod_id": data.ProdID,
|
|
|
|
|
"req_time": unixMilliseconds,
|
|
|
|
|
"request_sn": requestSN,
|
|
|
|
|
"req_data": map[string]interface{}{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, param := range model.SingleQueryProdIDParams[data.ProdID] {
|
|
|
|
|
switch param {
|
|
|
|
|
case "cardNo":
|
|
|
|
|
reqData["req_data"].(map[string]interface{})["cardNo"] = data.CardNo
|
|
|
|
|
case "name":
|
|
|
|
|
reqData["req_data"].(map[string]interface{})["name"] = data.Name
|
|
|
|
|
case "pageNo":
|
|
|
|
|
reqData["req_data"].(map[string]interface{})["pageNo"] = 1
|
|
|
|
|
case "pageSize":
|
|
|
|
|
reqData["req_data"].(map[string]interface{})["pageSize"] = 100
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
messageBytes, err := json.Marshal(reqData)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
key, err := hex.DecodeString(apiKey)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
//加密
|
|
|
|
|
cipherText := utils.AES_CBC_Encrypt(messageBytes, key)
|
|
|
|
|
|
|
|
|
|
content := base64.StdEncoding.EncodeToString(cipherText)
|
|
|
|
|
respStr, err := httpDo(httpUrl, content, acctId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
//解密
|
|
|
|
|
sDec, err := base64.StdEncoding.DecodeString(respStr)
|
|
|
|
|
if err != nil {
|
|
|
|
|
if utils.IsJSON(respStr) {
|
|
|
|
|
return []byte(respStr), nil
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
plainText = utils.AES_CBC_Decrypt(sDec, key)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 对返回信息进行处理,返回一份完整的报告
|
|
|
|
|
func (a *SingleQueryService) DataAnalysis(respString string) (data map[string]interface{}, err error) {
|
|
|
|
|
var resp model.YuShanResponse[map[string]interface{}]
|
|
|
|
|
err = json.Unmarshal([]byte(respString), &resp)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("singleQuery Unmarshal error:%v", err)
|
|
|
|
|
return nil, utils.ErrSystemError
|
|
|
|
|
}
|
|
|
|
|
if resp.Retcode == RetCodeSuccess {
|
|
|
|
|
data = resp.Retdata
|
|
|
|
|
return data, nil
|
|
|
|
|
} else if resp.Retcode == RetCodeEmpty {
|
|
|
|
|
log.Printf("singleQuery resp empty:%s", resp.Retmsg)
|
|
|
|
|
return data, utils.ErrNoRecord
|
|
|
|
|
} else {
|
|
|
|
|
log.Printf("singleQuery resp error:%s", resp.Retmsg)
|
|
|
|
|
return data, utils.ErrSystemError
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 对返回信息进行处理,返回一份完整的报告
|
|
|
|
|
func (a *SingleQueryService) MarryDataAnalysis(respString string) (data []map[string]interface{}, err error) {
|
|
|
|
|
var resp model.YuShanResponse[[]map[string]interface{}]
|
|
|
|
|
err = json.Unmarshal([]byte(respString), &resp)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("singleQuery Unmarshal error:%v", err)
|
|
|
|
|
return nil, utils.ErrSystemError
|
|
|
|
|
}
|
|
|
|
|
if resp.Retcode == RetCodeSuccess {
|
|
|
|
|
data = resp.Retdata
|
|
|
|
|
return data, nil
|
|
|
|
|
} else if resp.Retcode == RetCodeEmpty {
|
|
|
|
|
log.Printf("singleQuery resp empty:%s", resp.Retmsg)
|
|
|
|
|
return data, utils.ErrNoRecord
|
|
|
|
|
} else {
|
|
|
|
|
log.Printf("singleQuery resp error:%s", resp.Retmsg)
|
|
|
|
|
return data, utils.ErrSystemError
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
func (a *SingleQueryService) MarryAnalysis(jsonStr string) (resp *model.MerryResponse, err error) {
|
|
|
|
|
err = json.Unmarshal([]byte(jsonStr), &resp)
|
|
|
|
|
if err != nil {
|
2024-12-25 11:59:33 +08:00
|
|
|
|
log.Printf("【婚姻结果解析错误】JSON解析错误: %v\n", err)
|
2024-09-14 10:48:09 +08:00
|
|
|
|
return
|
|
|
|
|
}
|
2024-12-25 11:59:33 +08:00
|
|
|
|
return
|
2024-09-14 10:48:09 +08:00
|
|
|
|
}
|
|
|
|
|
func (a *SingleQueryService) QueryEvaluateMarriageOrder(orderID uint) (m model.EvaluateMarriage, err error) {
|
|
|
|
|
err = db.DB.Where("order_id = ?", orderID).First(&m).Error
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取婚姻评估记录
|
|
|
|
|
func (a *SingleQueryService) QueryEvaluateMarriageRecord(id uint) (m model.EvaluateMarriage, err error) {
|
|
|
|
|
err = db.DB.Where("id = ?", id).First(&m).Error
|
|
|
|
|
return
|
|
|
|
|
}
|