123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- package utils
- import (
- "bytes"
- "encoding/csv"
- "encoding/json"
- "fmt"
- "log"
- "net/http"
- "os"
- "time"
- )
- var myClient *http.Client
- func Execute(url, method string, pData []byte, headers map[string]string) (result interface{}, err error) {
- request, err := http.NewRequest(method, url, bytes.NewBuffer(pData))
- if err != nil {
- return "NewRequest err>>", err
- }
- if len(headers) > 0 {
- for key, value := range headers {
- request.Header.Add(key, value)
- }
- }
- if myClient == nil {
- myClient = &http.Client{}
- }
- response, err := myClient.Do(request)
- if err != nil {
- return "client.Do err>>", err
- }
- defer response.Body.Close()
- //fmt.Println("response code>>", response.StatusCode)
- buff := &bytes.Buffer{}
- _, err = buff.ReadFrom(response.Body)
- if err != nil {
- return "readData err>>", err
- }
- return buff.Bytes(), nil
- }
- // 获取当前执行文件所在目录
- func GetExeDir() (path string) {
- //fPath, _ := os.Executable()
- //return filepath.Dir(fPath)
- fPath, _ := os.Getwd()
- return fPath
- }
- // 输出文件到根目录 json
- func writeJsonFile(pInfos []ProvinceInfo) {
- //写json
- buff, _ := json.Marshal(pInfos)
- fPath := fmt.Sprintf("%s\\json_%s.json", GetExeDir(), time.Now().Format("20060102150405"))
- os.WriteFile(fPath, buff, os.ModePerm)
- }
- // 输出文件到根目录 csv
- func writeCsvFile(pInfos []ProvinceInfo) {
- // Create a new CSV file
- fPath := fmt.Sprintf("%s_民政部统计数据.csv", time.Now().Format("20060102"))
- file, err := os.Create(fPath)
- if err != nil {
- log.Fatal(err)
- }
- defer file.Close()
- // Create a CSV writer
- writer := csv.NewWriter(file)
- defer writer.Flush()
- // Write the CSV header
- header := []string{"type", "Province Name", "Province Code", "City Name", "City Code", "Area Name", "Area Code"}
- if err := writer.Write(header); err != nil {
- log.Fatal(err)
- }
- // Write data to the CSV file
- for _, pInfo := range pInfos {
- provinceName := pInfo.Name
- provinceCode := pInfo.Code
- //province
- record := []string{"省份", provinceName, provinceCode}
- writer.Write(record)
- for _, cInfo := range pInfo.CityInfo {
- cityName := cInfo.Name
- cityCode := cInfo.Code
- record = []string{"城市", provinceName, provinceCode, cityName, cityCode}
- writer.Write(record)
- for _, aInfo := range cInfo.AreaInfo {
- areaName := aInfo.Name
- areaCode := aInfo.Code
- record = []string{"区县", provinceName, provinceCode, cityName, cityCode, areaName, areaCode}
- if err := writer.Write(record); err != nil {
- log.Fatal(err)
- }
- }
- }
- }
- log.Printf("CSV file saved to: %s\n", fPath)
- }
|