123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- package models
- import (
- "fmt"
- "github.com/beego/beego/v2/client/orm"
- "hongze/hongze_cygx/utils"
- "strconv"
- "time"
- )
- type CygxArticleHistoryRecordNewpv struct {
- Id int `orm:"column(id);pk"`
- ArticleId int
- UserId int
- CreateTime time.Time
- ModifyTime time.Time
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- CompanyId int `description:"公司id"`
- CompanyName string `description:"公司名称"`
- StopTime int `description:"停留时间"`
- OutType int `description:"退出方式,1正常退出,2强制关闭"`
- Source string `description:"来源,MOBILE:手机端,PC:电脑端"`
- }
- //添加阅读记录信息
- func AddCygxArticleViewRecordNewpv(item *CygxArticleHistoryRecordNewpv) (lastId int64, err error) {
- o, err := orm.NewOrm().Begin()
- if err != nil {
- return
- }
- defer func() {
- fmt.Println(err)
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- lastId, err = o.Insert(item)
- //写入记录到总的统计表
- record := new(CygxArticleHistoryRecordAll)
- record.UserId = item.UserId
- record.ArticleId = item.ArticleId
- record.CreateTime = time.Now().Format(utils.FormatDateTime)
- record.ModifyTime = item.ModifyTime
- record.Mobile = item.Mobile
- record.Email = item.Email
- record.CompanyId = item.CompanyId
- record.CompanyName = item.CompanyName
- record.StopTime = item.StopTime
- record.OutType = item.OutType
- record.Source = item.Source
- record.Platfor = 1
- lastId, err = o.Insert(record)
- // 软删除当天策略平台的文章阅读记录
- if item.Mobile != "" {
- sql := `UPDATE cygx_article_history_record_all
- SET is_del = 1
- WHERE
- article_id = ?
- AND mobile = ?
- AND platfor = 2
- AND create_time >= date(NOW()) `
- _, err = o.Raw(sql, record.ArticleId, record.Mobile).Exec()
- }
- return
- }
- //获取最新的一条阅读记录
- func GetNewArticleHistoryRecordNewpv(uid, articleId int, modifytime string) (item *AddStopTimeNewRep, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_article_history_record_newpv WHERE user_id = ? AND article_id = ? AND modify_time <='` + modifytime + `' ORDER BY id DESC LIMIT 1;`
- err = o.Raw(sql, uid, articleId).QueryRow(&item)
- return
- }
- //把十分钟之内的阅读记录进行累加
- func UpdateCygxArticleViewRecordNewpv(itemRep *CygxArticleHistoryRecordNewpv, stopTime int) (err error) {
- o, err := orm.NewOrm().Begin()
- if err != nil {
- return
- }
- defer func() {
- fmt.Println(err)
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- sql := `UPDATE cygx_article_history_record_newpv
- SET modify_time = NOW(), stop_time = stop_time + ` + strconv.Itoa(stopTime) + `
- WHERE
- article_id = ?
- AND user_id = ?
- AND out_type = 2
- AND timestampdiff(MINUTE,modify_time,NOW()) < 10`
- _, err = o.Raw(sql, itemRep.ArticleId, itemRep.UserId).Exec()
- // 修改总表的停留时间
- sql = `UPDATE cygx_article_history_record_all
- SET modify_time = NOW(), stop_time = stop_time + ` + strconv.Itoa(stopTime) + `
- WHERE
- article_id = ?
- AND user_id = ?
- AND out_type = 2
- AND timestampdiff(MINUTE,modify_time,NOW()) < 10`
- _, err = o.Raw(sql, itemRep.ArticleId, itemRep.UserId).Exec()
- return
- }
- //把十分钟之内的阅读记录进行累加
- func UpdateCygxArticleViewRecordNewpvList(itemRep *CygxArticleHistoryRecordNewpv, stopTime int) (err error) {
- o := orm.NewOrm()
- sql := `UPDATE cygx_article_history_record_newpv
- SET stop_time = stop_time + ` + strconv.Itoa(stopTime) + `
- WHERE
- article_id = ?
- AND user_id = ?
- AND modify_time = ?
- AND id = ?`
- _, err = o.Raw(sql, itemRep.ArticleId, itemRep.UserId, itemRep.ModifyTime, itemRep.Id).Exec()
- return
- }
- type CygxArticleHistoryRecordAll struct {
- Id int `orm:"column(id);pk"`
- ArticleId int
- UserId int
- CreateTime string
- ModifyTime time.Time
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- CompanyId int `description:"公司id"`
- CompanyName string `description:"公司名称"`
- StopTime int `description:"停留时间"`
- OutType int `description:"退出方式,1正常退出,2强制关闭"`
- Source string `description:"来源,MOBILE:手机端,PC:电脑端"`
- RealName string `description:"用户实际名称"`
- CreateDateApi time.Time `description:"同步创建时间"`
- CelueHistoryId int `description:"策略平台记录的ID"`
- Platfor int `description:"PV阅读记录来源,1:查研观向,2:策略平台"`
- IsDel int `description:"是否删除"`
- }
- //获取当天总表的阅读记录
- func GetArticleHistoryRecordAllList() (items []*CygxArticleHistoryRecordNewpv, err error) {
- o := orm.NewOrm()
- sql := ` SELECT * FROM cygx_article_history_record_all WHERE create_time >= date(NOW())
- AND mobile <> ''
- AND platfor = 1
- GROUP BY mobile,article_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
|