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 }