package services

import (
	"encoding/json"
	"errors"
	"fmt"
	"hongze/hz_crm_api/utils"
	"io/ioutil"
	"net/http"
	"strconv"
	"strings"
	"time"
)

func GetCompanyInfo() {
	qccKey := `efd43bfceaa74cf1811079dbcec25c33`
	qccSecretKey := `2985D128630B085C1BFE8F88630B5DA8`
	getUrl := `http://api.qichacha.com/ECIV4/Search?key=` + qccKey + `&keyword=913300007125582210`

	timespan := time.Now().Unix()
	timespanStr := strconv.FormatInt(timespan, 10)
	token := utils.MD5(qccKey + timespanStr + qccSecretKey)
	client := &http.Client{}
	//提交请求
	reqest, err := http.NewRequest("GET", getUrl, nil)
	//增加header选项
	reqest.Header.Add("Token", token)
	reqest.Header.Add("Timespan", timespanStr)

	if err != nil {
		panic(err)
	}
	//处理返回结果
	response, _ := client.Do(reqest)
	defer response.Body.Close()

	body, err := ioutil.ReadAll(response.Body)
	fmt.Println("body:", string(body))
	utils.FileLog.Info("%s", string(body))
}

type QCCResp struct {
	Paging      Paging   `json:"Paging"`
	Result      []Result `json:"Result"`
	Status      string   `json:"Status"`
	Message     string   `json:"Message"`
	OrderNumber string   `json:"OrderNumber"`
}
type Paging struct {
	PageSize     int `json:"PageSize"`
	PageIndex    int `json:"PageIndex"`
	TotalRecords int `json:"TotalRecords"`
}

type Result struct {
	KeyNo      string `json:"KeyNo"`
	Name       string `json:"Name"`
	CreditCode string `json:"CreditCode"`
	StartDate  string `json:"StartDate"`
	OperName   string `json:"OperName"`
	Status     string `json:"Status"`
	No         string `json:"No"`
}

func QCCFuzzySearch(keyWord string) (results []Result, err error) {
	qccKey := `49464d73ae1c46e99ad4eff1efe943c1`
	qccSecretKey := `9DE7E83FFE26789815004C5172503290`
	getUrl := `http://api.qichacha.com/FuzzySearch/GetList?pageSize=20&key=%s&searchKey=%s `
	utils.StrFilterNonChinese(&keyWord)
	finalUrl := fmt.Sprintf(getUrl, qccKey, keyWord)
	timespan := time.Now().Unix()
	timespanStr := strconv.FormatInt(timespan, 10)
	token := utils.MD5(qccKey + timespanStr + qccSecretKey)
	client := &http.Client{}
	//提交请求
	reqest, err := http.NewRequest("GET", finalUrl, nil)
	if err != nil {
		utils.FileLog.Info("NewRequest err:" + err.Error())
		err = errors.New("NewRequest err:" + err.Error())
		return
	}
	//增加header选项
	reqest.Header.Add("Token", strings.ToUpper(token))
	reqest.Header.Add("Timespan", timespanStr)

	if err != nil {
		return
	}
	//处理返回结果
	response, _ := client.Do(reqest)
	defer response.Body.Close()

	body, err := ioutil.ReadAll(response.Body)
	var qccResp QCCResp
	err = json.Unmarshal(body, &qccResp)
	if err != nil {
		utils.FileLog.Info("Json Unmarshal err:" + err.Error())
		err = errors.New("Json Unmarshal err:" + err.Error())
		return
	}
	if qccResp.Status != "200" {
		utils.FileLog.Info("QCCFuzzySearch err:" + qccResp.Message)
		err = errors.New("QCCFuzzySearch err:" + qccResp.Message)
		return
	} else {
		results = qccResp.Result
		return
	}
}