12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package models
- import (
- "github.com/beego/beego/v2/client/orm"
- "time"
- )
- // ArticleTopHistoryRecord 报告阅读飙升榜
- type ArticleTopHistoryRecord struct {
- Id int `orm:"column(id);pk"`
- ArticleId int `description:"文章ID"`
- Title string `description:"文章标题"`
- PublishDate string `description:"发布日期"`
- ChartPermissionId int `description:"行业ID"`
- PermissionName string `description:"行业名称"`
- Pv int `description:"PV"`
- CreateTime time.Time `description:"创建时间"`
- }
- func (item *ArticleTopHistoryRecord) TableName() string {
- return "cygx_article_top_history_record"
- }
- // GetTopReadRecordArticleListFromSource 获取阅读量排行榜源报告
- func GetTopReadRecordArticleListFromSource(startTime, endTime time.Time) (list []*ArticleTopHistoryRecord, err error) {
- sql := `SELECT
- a.article_id,
- a.title,
- date_format(a.publish_date, '%Y-%m-%d') AS publish_date,
- m.chart_permission_id,
- m.chart_permission_name as permission_name,
- COUNT(1) AS pv
- FROM
- cygx_article_history_record_newpv AS l
- JOIN cygx_article AS a ON a.article_id = l.article_id
- JOIN cygx_report_mapping AS m ON m.category_id = a.category_id
- WHERE
- a.publish_status = 1 AND l.create_time BETWEEN ? AND ?
- GROUP BY
- l.article_id
- ORDER BY
- pv DESC,
- a.publish_date DESC`
- _, err = orm.NewOrm().Raw(sql, startTime, endTime).QueryRows(&list)
- return
- }
- // UpdateTopReadRecordArticleList 更新榜单
- func UpdateTopReadRecordArticleList(items []*ArticleTopHistoryRecord) (err error) {
- o := orm.NewOrm()
- tx, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = tx.Rollback()
- } else {
- _ = tx.Commit()
- }
- }()
- // 重置榜单
- sql := `DELETE FROM cygx_article_top_history_record WHERE 1 = 1 `
- _, err = tx.Raw(sql).Exec()
- if err != nil {
- return
- }
- // 新增今日榜单
- _, err = tx.InsertMulti(len(items), items)
- if err != nil {
- return
- }
- return
- }
- // GetTopReadRecordArticleListByCondition 获取阅读量排行榜
- func GetTopReadRecordArticleListByCondition(limit int, condition string, pars []interface{}) (list []*ArticleTopHistoryRecord, err error) {
- sql := `SELECT * FROM cygx_article_top_history_record WHERE 1 = 1 `
- if condition != `` {
- sql += condition
- }
- sql += ` ORDER BY pv DESC, publish_date DESC LIMIT ?`
- _, err = orm.NewOrm().Raw(sql, pars, limit).QueryRows(&list)
- return
- }
|