package services import ( "context" "encoding/json" "fmt" "hongze/hongze_cygx/models" "hongze/hongze_cygx/utils" "io/ioutil" nhttp "net/http" "strconv" "strings" "time" ) //get公共请求方法 func PublicGetDate(url, authorization string) (body []byte, err error) { defer func() { if err != nil { fmt.Println(url + "Get Err:" + err.Error()) go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", url+"Get ErrMsg:"+err.Error(), utils.EmailSendToUsers) } }() method := "GET" client := &nhttp.Client{} req, err := nhttp.NewRequest(method, url, nil) if err != nil { fmt.Println(url+"Get Err:", err.Error()) return } req.Header.Add("Authorization", authorization) res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err = ioutil.ReadAll(res.Body) if err != nil { fmt.Println("Getres.Body Err:", err.Error()) return } return } //获取列表 func GetChartListByApi(cont context.Context) (err error) { defer func() { if err != nil { fmt.Println("GetArticleListByApi Err:" + err.Error()) go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers) } }() url := utils.ApiUrl + "charts/mp?take=4000&skip=0" authorization := utils.ApiAuthorization body, err := PublicGetDate(url, authorization) if err != nil { fmt.Println(err) return } var chartResult models.ChartResultApi err = json.Unmarshal(body, &chartResult) if err != nil { fmt.Println("Getres.pdfResult Err:", err.Error()) return err } for _, v := range chartResult.Data { item := new(models.CygxChart) item.ChartId = v.ChartId item.PtagId = v.PtagId item.CtagId = v.CtagId item.Title = v.Title item.TitleEn = v.TitleEn item.CreateDateApi = time.Now() item.CreateDate = v.CreateDate item.PublishStatus = v.PublishStatus item.PtagName = v.Ptag.Name item.CtagName = v.Ctag.Name item.Cover = v.Cover item.Iframe = v.Iframe count, err := models.GetChartCountById(v.ChartId) if err != nil && err.Error() != utils.ErrNoRow() { fmt.Println("GetChartCountById Err:", err.Error()) return err } if count == 0 { _, err := models.AddCygxChart(item) if err != nil { fmt.Println("AddCygxChart Err:", err.Error()) return err } } else { updateParams := make(map[string]interface{}) updateParams["Title"] = v.Title updateParams["PtagId"] = v.PtagId updateParams["CtagId"] = v.CtagId updateParams["TitleEn"] = v.TitleEn updateParams["CreateDate"] = v.CreateDate updateParams["PublishStatus"] = v.PublishStatus updateParams["PtagName"] = v.Ptag.Name updateParams["CtagName"] = v.Ctag.Name updateParams["Cover"] = v.Cover updateParams["Iframe"] = v.Iframe whereParam := map[string]interface{}{"chart_id": v.ChartId} err = models.UpdateByExpr(models.CygxChart{}, whereParam, updateParams) } fmt.Println(v) } return } //获取图表分类 func GetChartPtagByApi() (items []*models.ChartPtagResp, err error) { defer func() { if err != nil { fmt.Println("GetChartPtagByApi Err:" + err.Error()) go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetChartPtagByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers) } }() url := utils.ApiUrl + "charts/ptag" authorization := utils.ApiAuthorization body, err := PublicGetDate(url, authorization) if err != nil { fmt.Println(err) return } var chartResult models.ChartPtagResultApi err = json.Unmarshal(body, &chartResult) if err != nil { fmt.Println("Getres.pdfResult Err:", err.Error()) return } for _, v := range chartResult.Data { item := new(models.ChartPtagResp) item.ChartPermissionName = v.ChartPermissionName item.ChartPermissionId = v.ChartPermissionId if len(v.Ctag) > 0 { for _, v2 := range v.Ctag { itemCtag := new(models.CtagResp) itemCtag.CtagId = v2.Id itemCtag.Name = v2.Name item.List = append(item.List, itemCtag) } } items = append(items, item) } return } //获取用户的Token func GetUserTokenByMobile(mobile string) (token string, err error) { url := "https://vmp.hzinsights.com/v2api/auth/login" method := "POST" payload := strings.NewReader(`{ "phone_number":"` + mobile + `", "password":"hz123456" }`) client := &nhttp.Client{} req, err := nhttp.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } req.Header.Add("Content-Type", "application/json") req.Header.Add("Cookie", "sessionid=naj5j5kl1jjynh7og1rsaxkl1vrsl829") res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return } var chartResult models.ChartUserTokenResultApi err = json.Unmarshal(body, &chartResult) if err != nil { fmt.Println("Getres.pdfResult Err:", err.Error()) return } token = chartResult.Data.AccessToken return } //获取图表分类 func GetChartCollectionByApi(mobile string) (items []*models.HomeChartListResp, err error) { defer func() { if err != nil { fmt.Println("GetChartPtagByApi Err:" + err.Error()) go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetChartPtagByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers) } }() url := utils.ApiUrl + "charts/favorites" authorization, err := GetUserTokenByMobile(mobile) if err != nil { fmt.Println(err) return } authorization = "bearer " + authorization body, err := PublicGetDate(url, authorization) if err != nil { fmt.Println(err) return } var chartResult models.ChartFavoritesResultApi err = json.Unmarshal(body, &chartResult) if err != nil { fmt.Println("Getres.pdfResult Err:", err.Error()) return } for _, v := range chartResult.Data { fmt.Println(v) item := new(models.HomeChartListResp) item.ChartId = v.ChartId item.Title = v.ChartInfo.Title item.TitleEn = v.ChartInfo.TitleEn item.CreateDate = v.ChartInfo.CreateDate item.PtagName = v.ChartInfo.Ptag.Name item.CtagName = v.ChartInfo.Ctag.Name item.ImgUrlPc = "https://vmp.hzinsights.com/v2/charts/" + strconv.Itoa(v.ChartId) item.HttpUrl = v.ChartInfo.Iframe item.IsNeedJump = true items = append(items, item) } return }