118 lines
3.0 KiB
Go
118 lines
3.0 KiB
Go
package service
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
"net/url"
|
|
"qnc-server/config"
|
|
"qnc-server/db"
|
|
"qnc-server/model/model"
|
|
"qnc-server/model/request"
|
|
"qnc-server/model/response"
|
|
"strconv"
|
|
)
|
|
|
|
type EntSerivce struct {
|
|
}
|
|
|
|
// 请求天眼查
|
|
func (e *EntSerivce) RequestTycOpen(data interface{}, link string) (respData interface{}, err error) {
|
|
baseURL := config.ConfigData.TycOpen.Url
|
|
completeURL := fmt.Sprintf("%s/%s", baseURL, link)
|
|
token := config.ConfigData.TycOpen.Token
|
|
// 创建查询参数
|
|
params := url.Values{}
|
|
// 根据数据类型设置查询参数
|
|
switch v := data.(type) {
|
|
case request.EntReq:
|
|
params.Add("keyword", v.Keyword)
|
|
case request.EntListReq:
|
|
if link == "open/v4/open/partners" || link == "open/human/companyholding/2.0" {
|
|
params.Add("cid", v.Keyword)
|
|
} else {
|
|
params.Add("keyword", v.Keyword)
|
|
}
|
|
if v.PageNum != 0 {
|
|
params.Add("page_num", strconv.Itoa(v.PageNum))
|
|
}
|
|
if v.PageSize != 0 {
|
|
params.Add("page_size", strconv.Itoa(v.PageSize))
|
|
}
|
|
case request.EntSearchReq:
|
|
params.Add("word", v.Work)
|
|
if v.PageNum != 0 {
|
|
params.Add("page_num", strconv.Itoa(v.PageNum))
|
|
}
|
|
if v.PageSize != 0 {
|
|
params.Add("page_size", strconv.Itoa(v.PageSize))
|
|
}
|
|
default:
|
|
err = fmt.Errorf("未知的数据类型")
|
|
return
|
|
}
|
|
|
|
// 构建完整的请求 URL
|
|
requestURL := fmt.Sprintf("%s?%s", completeURL, params.Encode())
|
|
|
|
// 创建请求
|
|
reqBody := bytes.NewBuffer([]byte{})
|
|
req, err := http.NewRequest("GET", requestURL, reqBody)
|
|
if err != nil {
|
|
log.Printf("failed 创建请求: %v", err)
|
|
return
|
|
}
|
|
// 设置请求头
|
|
req.Header.Set("Authorization", token)
|
|
// 发送请求
|
|
client := &http.Client{}
|
|
resp, err := client.Do(req)
|
|
if err != nil {
|
|
log.Printf("failed 发送请求: %v", err)
|
|
return
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
// 读取响应体
|
|
body, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
log.Printf("failed 读取响应体: %v", err)
|
|
return
|
|
}
|
|
log.Printf("【企业响应】: %v", string(body))
|
|
var queryResp response.EntResponse
|
|
err = json.Unmarshal(body, &queryResp)
|
|
if err != nil {
|
|
log.Printf("failed to unmarshal response: %v", err)
|
|
return
|
|
}
|
|
if queryResp.ErrorCode == 0 || queryResp.ErrorCode == 300000 {
|
|
respData = queryResp.Result
|
|
return
|
|
}
|
|
if message, exists := response.EntRepsStatusCodeMap[queryResp.ErrorCode]; exists {
|
|
log.Println(message, queryResp.Reason, requestURL)
|
|
return nil, fmt.Errorf("response status error: %s", queryResp.Reason)
|
|
} else {
|
|
log.Println("未知的状态码:", queryResp.Reason)
|
|
return nil, fmt.Errorf("response undefind status error: %s", queryResp.Reason)
|
|
}
|
|
}
|
|
func (e *EntSerivce) QueryEntFeatureOrder(orderID uint) (entFeature []model.EntFeature, err error) {
|
|
err = db.DB.Where("order_id = ?", orderID).Find(&entFeature).Error
|
|
if err != nil {
|
|
log.Printf("query entFeature order failed: %v", err)
|
|
}
|
|
return
|
|
}
|
|
func (e *EntSerivce) SaveEntFeatureRecords(record model.EntFeature) (err error) {
|
|
err = db.DB.Save(&record).Error
|
|
if err != nil {
|
|
log.Printf("entFeature save record failed: %v", err)
|
|
}
|
|
return
|
|
}
|