qnc-server-old/service/ent.go
2024-09-14 10:48:09 +08:00

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
}