Jelajahi Sumber

通过三方接口获取策略平台上的阅读记录优化

xingzai 2 tahun lalu
induk
melakukan
a8494df348
4 mengubah file dengan 128 tambahan dan 0 penghapusan
  1. 55 0
      models/celue_article_history_record.go
  2. 1 0
      models/db.go
  3. 68 0
      services/article.go
  4. 4 0
      services/task.go

+ 55 - 0
models/celue_article_history_record.go

@@ -0,0 +1,55 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CeLueArticleResultApi struct {
+	Data       []CeLueArticleResultApidate `json:"data"`
+	Code       int                         `json:"code"`
+	Msg        string                      `json:"msg"`
+	Pagination *Pagination                 `json:"pagination"`
+}
+
+type CeLueArticleResultApidate struct {
+	CelueHistoryId int      `json:"id"`
+	Mobile         string   `json:"phone_number"`
+	ArticleId      string   `json:"parameter"`
+	CreateDate     string   `json:"access_time"`
+	CrmUser        *CrmUser `json:"user"`
+	CompanyName    *CrmUser `json:"crm_company"`
+}
+
+type CrmUser struct {
+	RealName string `json:"name"`
+}
+
+type CrmCompany struct {
+	CompanyName string `json:"name"`
+}
+
+func GetCeLueArticleCountById(celueHistoryId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM cygx_celue_article_history_record WHERE celue_history_id = ? `
+	err = o.Raw(sql, celueHistoryId).QueryRow(&count)
+	return
+}
+
+type CygxCelueArticleHistoryRecord struct {
+	Id             int       `orm:"column(id);pk"`
+	ArticleId      string    `description:"文章ID"`
+	CelueHistoryId int       `description:"策略平台记录的ID"`
+	CreateTime     string    `description:"本地创建时间"`
+	CreateDateApi  time.Time `description:"图表创建时间"`
+	Mobile         string    `description:"手机号"`
+	CompanyName    string    `description:"公司名称"`
+	RealName       string    `description:"用户姓名"`
+}
+
+//新增
+func AddCeLueArticle(item *CygxCelueArticleHistoryRecord) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}

+ 1 - 0
models/db.go

@@ -102,6 +102,7 @@ func init() {
 		new(CygxChart),
 		new(CygxChartCollect),
 		new(CygxChartTop),
+		new(CygxCelueArticleHistoryRecord),
 	)
 	// 记录ORM查询日志
 	orm.Debug = true

+ 68 - 0
services/article.go

@@ -11,6 +11,7 @@ import (
 	"html"
 	"io/ioutil"
 	nhttp "net/http"
+	"net/url"
 	"strconv"
 	"strings"
 	"time"
@@ -798,3 +799,70 @@ func PushViewRecordNewRedisData(reportViewRecord *ReportViewRecord, companyId in
 	}
 	return false
 }
+
+//func GetCeLueArticlePv() {
+//	sum := 0
+//	for i := 0; i <= 450; i++ {
+//		if i >= 102 {
+//			//GetCeLueArticlePvs(strconv.Itoa(i * 1000))
+//		}
+//	}
+//	fmt.Println(sum)
+//}
+
+//获取策略平台报告阅读数据
+func GetCeLueArticlePv(cont context.Context) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+		}
+	}()
+	startTime := time.Now().Add(-time.Minute * 12).Format("2006-01-02 15:04:05")
+	endTime := time.Now().Format("2006-01-02 15:04:05")
+	requestUrl := utils.ApiUrl + "backend/statistics_access?take=1000&skip=0&sort=ASC&"
+	encodeData := url.Values{}
+	encodeData.Add("start_dt", startTime)
+	encodeData.Add("end_dt", endTime)
+	encodeStr := encodeData.Encode()
+	requestUrl += encodeStr
+	authorization := utils.ApiAuthorization
+	body, err := PublicGetDate(requestUrl, authorization)
+	if err != nil {
+		return
+	}
+	var chartResult models.CeLueArticleResultApi
+	err = json.Unmarshal(body, &chartResult)
+	if err != nil {
+		fmt.Println(err)
+		return err
+	}
+
+	for _, v := range chartResult.Data {
+		//fmt.Println(v.ArticleId)
+		item := new(models.CygxCelueArticleHistoryRecord)
+		item.CelueHistoryId = v.CelueHistoryId
+		item.Mobile = v.Mobile
+		item.ArticleId = v.ArticleId
+		if v.CrmUser != nil {
+			item.RealName = v.CrmUser.RealName
+		}
+		if v.CompanyName != nil {
+			item.CompanyName = v.CompanyName.RealName
+		}
+		item.CreateDateApi = time.Now()
+		item.CreateTime = v.CreateDate
+		count, err := models.GetCeLueArticleCountById(v.CelueHistoryId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return err
+		}
+		if count == 0 {
+			_, err := models.AddCeLueArticle(item)
+			if err != nil {
+				fmt.Println(err)
+				return err
+			}
+		}
+	}
+	return
+
+}

+ 4 - 0
services/task.go

@@ -21,6 +21,10 @@ func Task() {
 		task.AddTask("getSummarytoEs", getSummarytoEs)
 		getArticleListByApi := task.NewTask("getArticleListByApi", "0 */5 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章
 		task.AddTask("getArticleListByApi", getArticleListByApi)
+
+		getCeLueArticlePv := task.NewTask("getCeLueArticlePv", "0 */10 * * * *", GetCeLueArticlePv) //通过三方接口获取策略平台上的阅读记录
+		task.AddTask("getCeLueArticlePv", getCeLueArticlePv)
+
 		//会议提醒模板消息推送
 		sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 8-22 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
 		task.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)