Prechádzať zdrojové kódy

定时任务同步图表

xingzai 2 rokov pred
rodič
commit
39c79c8175
5 zmenil súbory, kde vykonal 174 pridanie a 0 odobranie
  1. 64 0
      models/chart.go
  2. 1 0
      models/db.go
  3. 104 0
      services/chart.go
  4. 3 0
      services/task.go
  5. 2 0
      utils/constants.go

+ 64 - 0
models/chart.go

@@ -0,0 +1,64 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type ChartResultApi struct {
+	Data []ChartResultApidate `json:"data"`
+	Code int                  `json:"code"`
+	Msg  string               `json:"msg"`
+}
+
+type ChartResultApidate struct {
+	ChartId       int    `json:"id"`
+	Title         string `json:"title"`
+	TitleEn       string `json:"title_en"`
+	CreateDate    string `json:"create_date"`
+	UpdateDate    string `json:"update_date"`
+	PublishStatus int    `json:"publish_status"`
+	Cover         string `json:"cover"`
+	Ptag          Ptag   `json:"ptag"`
+	Ctag          Ptag   `json:"ctag"`
+}
+
+type Ptag struct {
+	Id          int    `json:"id"`
+	Name        string `json:"name"`
+	Description string `json:"description"`
+}
+
+type Ctag struct {
+	Id          int    `json:"id"`
+	Name        string `json:"name"`
+	Description string `json:"description"`
+	PtagId      string `json:"ptag_id"`
+}
+
+type CygxChart struct {
+	Id            int       `orm:"column(id);pk"`
+	ChartId       int       `description:"图表id"`
+	Title         string    `description:"标题"`
+	TitleEn       string    `description:"英文标题 "`
+	CreateDate    string    `description:"本地创建时间"`
+	CreateDateApi time.Time `description:"图表创建时间"`
+	PublishStatus int       `description:"发布状态"`
+	PtagName      string    `description:"父类名称"`
+	CtagName      string    `description:"子类名称"`
+	Cover         string    `description:"图表图片"`
+}
+
+func GetChartCountById(chartId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM cygx_chart WHERE chart_id = ? `
+	err = o.Raw(sql, chartId).QueryRow(&count)
+	return
+}
+
+//新增图表
+func AddCygxChart(item *CygxChart) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}

+ 1 - 0
models/db.go

@@ -92,6 +92,7 @@ func init() {
 		new(UserInvitee),
 		new(CygxActivitySpecialSignup),
 		new(CygxUserFollowSpecial),
+		new(CygxChart),
 	)
 	// 记录ORM查询日志
 	orm.Debug = true

+ 104 - 0
services/chart.go

@@ -0,0 +1,104 @@
+package services
+
+import (
+	"context"
+	"encoding/json"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+	"io/ioutil"
+	nhttp "net/http"
+	"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=100&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.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
+		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["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
+			whereParam := map[string]interface{}{"chart_id": v.ChartId}
+			err = models.UpdateByExpr(models.CygxChart{}, whereParam, updateParams)
+		}
+		fmt.Println(v)
+	}
+
+	return
+
+}

+ 3 - 0
services/task.go

@@ -61,6 +61,9 @@ func Task() {
 
 		sendEmailFileForAskMsg := task.NewTask("sendEmailFileForAskMsg", "0 */5 8-22 * * *", SendEmailFileForAskMsg) //非研选系列专家电话会,根据主持人姓名,会前15分钟将问题列表发送给至该主持人对应邮箱
 		task.AddTask("sendEmailFileForAskMsg", sendEmailFileForAskMsg)
+
+		getChartListByApi := task.NewTask("getChartListByApi", "0 */30 * * * *", GetChartListByApi) //同步纪要库内容到Es
+		task.AddTask("getChartListByApi", getChartListByApi)
 	}
 
 	//ActivityAttendanceDetail()

+ 2 - 0
utils/constants.go

@@ -24,6 +24,8 @@ const (
 	EmailSendToUsers  = "glji@hzinsights.com;pyan@hzinsights.com;cxzhang@hzinsights.com"
 	EmailSendToExpert = "cxzhang@hzinsights.com"
 	DefaultHeadimgurl = "https://hzstatic.hzinsights.com/static/temp/20220426202204/20220426/P5qLR2zzfBdKItp3eX2Du1tvq9Ba.jpg"
+	ApiAuthorization  = "bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkiLCJwaG9uZV9udW1iZXIiOiIxMjM0NTY3ODkiLCJuYW1lIjoi5YW25LuWIiwiZW50cmFuY2UiOiJwYXNzd3dvcmQiLCJpYXQiOjE2MzQ4NzA1OTQsImV4cCI6MTYzNDg3NDE5NH0.tho2L9jsbDPn8ltEGUVDve_nHsh0Kzf6ZrSz0RcZ0ag"
+	ApiUrl            = "https://vmp.hzinsights.com/v2api/"
 )
 
 //手机号,电子邮箱正则