package models import ( "github.com/beego/beego/v2/client/orm" "hongze/hongze_cygx/utils" "time" ) type CygxArticleCollect struct { Id int `orm:"column(id);pk"` ArticleId int ActivityVoiceId int ActivityVideoId int VideoId int UserId int CreateTime time.Time ModifyTime time.Time `description:"更新时间"` Mobile string `description:"手机号"` Email string `description:"邮箱"` CompanyId int `description:"公司id"` CompanyName string `description:"公司名称"` RealName string `description:"用户实际名称"` } // 添加收藏信息 func AddCygxArticleCollect(item *CygxArticleCollect) (lastId int64, err error) { o := orm.NewOrm() lastId, err = o.Insert(item) return } type ArticleCollectReq struct { ArticleId int `description:"报告id"` } type ArticleCollectResp struct { Status int `description:"1:收藏,2:取消收藏"` CollectCount int `description:"收藏总数"` } func RemoveArticleCollect(userId, articleId int) (err error) { o := orm.NewOrm() sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND article_id=? ` _, err = o.Raw(sql, userId, articleId).Exec() return } func GetArticleCollectUsersCount(articleId int) (count int, err error) { sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE article_id=? ` err = orm.NewOrm().Raw(sql, articleId).QueryRow(&count) return } func GetArticleCollectCount(userId, articleId int) (count int, err error) { sql := `SELECT COUNT(1) AS count FROM cygx_article_collect WHERE user_id=? AND article_id=? ` err = orm.NewOrm().Raw(sql, userId, articleId).QueryRow(&count) return } type ArticleCollectList struct { Id int `orm:"column(id);pk"` ArticleId int UserId int CreateTime time.Time Title string `description:"标题"` TitleEn string `description:"英文标题 "` UpdateFrequency string `description:"更新周期"` CreateDate string `description:"创建时间"` PublishDate string `description:"发布时间"` Body string `description:"内容"` Abstract string `description:"摘要"` CategoryName string `description:"一级分类"` SubCategoryName string `description:"二级分类"` } func GetCygxArticleCollectList(condition string) (items []*CygxArticleCollect, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_article_collect WHERE 1 =1 AND article_id > 0 ` + condition + ` GROUP BY user_id ` _, err = o.Raw(sql).QueryRows(&items) return } // GetCygxArticleCollectByUser 根据用户ID获取所有文章收藏 func GetCygxArticleCollectByUser(userId int) (items []*CygxArticleCollect, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_article_collect WHERE 1 =1 AND article_id > 0 AND user_id =? ` _, err = o.Raw(sql, userId).QueryRows(&items) return } // 修改用户收藏文章的相关信息 func UpdateCygxArticleCollect(wxUser *WxUserItem) (err error) { o := orm.NewOrm() var sql string if wxUser.Mobile != "" { sql = `UPDATE cygx_article_collect SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? ` _, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec() } else if wxUser.Email != "" { sql = `UPDATE cygx_article_collect SET user_id=?,company_id=?,company_name=?,mobile=?,real_name=? WHERE email=? ` _, err = o.Raw(sql, wxUser.UserId, wxUser.CompanyId, wxUser.CompanyName, wxUser.Mobile, wxUser.RealName, wxUser.Email).Exec() } return } type CygxArticleCollectCountRep struct { ArticleId int `description:"文章ID"` Num int `description:"数量"` } // 获取文章被收藏的数量 func GetUserArticleCollectList() (items []*CygxArticleCollectCountRep, err error) { o := orm.NewOrm() sql := `SELECT COUNT( 1 ) AS num, f.article_id FROM cygx_article_collect AS f INNER JOIN cygx_article AS a ON a.article_id = f.article_id WHERE 1 = 1 GROUP BY f.article_id ORDER BY num DESC LIMIT 30 ` _, err = o.Raw(sql).QueryRows(&items) return } // 修改文章收藏的数量 func UpdateArticleCollectCountNum(num, articleId int) (err error) { o := orm.NewOrm() sql := `UPDATE cygx_article SET user_collection_num = ? WHERE article_id = ?` _, err = o.Raw(sql, num, articleId).Exec() return } type CygxArticleNum struct { ArticleId int `description:"文章ID"` IsCollect bool `description:"本人是否收藏"` Pv int `description:"PV"` CollectNum int `description:"收藏人数"` } // GetArticleCollectNum 根据文章ID获取收藏数量的列表 func GetArticleCollectNum(articleId []string, uid int) (items []*CygxArticleNum, err error) { lenarticleId := len(articleId) if lenarticleId == 0 { return } sql := `SELECT a.article_id, ( SELECT count( 1 ) FROM cygx_article_history_record_newpv AS h WHERE h.article_id = a.article_id ) AS pv, ( SELECT count( 1 ) FROM cygx_article_collect AS ac WHERE ac.article_id = a.article_id ) AS collect_num, ( SELECT count( 1 ) FROM cygx_article_collect AS ac WHERE ac.article_id = a.article_id AND DATE_SUB( CURDATE(), INTERVAL 30 DAY ) <= date( ac.create_time ) ) AS collect_num_order, ( SELECT count( 1 ) FROM cygx_article_collect AS ac WHERE ac.article_id = a.article_id AND user_id = ? ) AS is_collect FROM cygx_article AS a WHERE 1 = 1 AND article_id IN (` + utils.GetOrmInReplace(lenarticleId) + `) ` o := orm.NewOrm() _, err = o.Raw(sql, uid, articleId).QueryRows(&items) return } // GetArticleCollectNum 根据文章ID获取收藏数量的列表 func GetArticleCollectListNum(articleIds []int) (items []*CygxArticleNum, err error) { lenArr := len(articleIds) if lenArr == 0 { return } sql := `SELECT COUNT(1) as collect_num , article_id FROM cygx_article_collect WHERE article_id IN (` + utils.GetOrmInReplace(lenArr) + `) GROUP BY article_id ` o := orm.NewOrm() _, err = o.Raw(sql, articleIds).QueryRows(&items) return } type MicroRoadshowCollectList struct { AudioIds string VideoIds string ActivityVideoIds string } func GetVideoCollectCount(userId, videoId int) (count int, err error) { sql := `SELECT COUNT(1) AS count FROM cygx_article_collect WHERE user_id=? AND video_id=? ` err = orm.NewOrm().Raw(sql, userId, videoId).QueryRow(&count) return } func RemoveVideoCollect(userId, videoId int) (err error) { o := orm.NewOrm() sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND video_id=? ` _, err = o.Raw(sql, userId, videoId).Exec() return } func GetVideoCollectUsersCount(videoId int) (count int, err error) { sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE video_id=? ` err = orm.NewOrm().Raw(sql, videoId).QueryRow(&count) return } func GetVoiceCollectCount(userId, voiceId int) (count int, err error) { sql := `SELECT COUNT(1) AS count FROM cygx_article_collect WHERE user_id=? AND activity_voice_id=? ` err = orm.NewOrm().Raw(sql, userId, voiceId).QueryRow(&count) return } func RemoveVoiceCollect(userId, voiceId int) (err error) { o := orm.NewOrm() sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND activity_voice_id=? ` _, err = o.Raw(sql, userId, voiceId).Exec() return } func GetVoiceCollectUsersCount(voiceId int) (count int, err error) { sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE activity_voice_id=? ` err = orm.NewOrm().Raw(sql, voiceId).QueryRow(&count) return } func GetActivityVideoCollectCount(userId, activityVideoId int) (count int, err error) { sql := `SELECT COUNT(1) AS count FROM cygx_article_collect WHERE user_id=? AND activity_video_id=? ` err = orm.NewOrm().Raw(sql, userId, activityVideoId).QueryRow(&count) return } func RemoveActivityVideoCollect(userId, activityVideoId int) (err error) { o := orm.NewOrm() sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND activity_video_id=? ` _, err = o.Raw(sql, userId, activityVideoId).Exec() return } func GetActivityVideoCollectUsersCount(videoId int) (count int, err error) { sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE activity_video_id=? ` err = orm.NewOrm().Raw(sql, videoId).QueryRow(&count) return } func GetActivityVoiceCollectCount(userId, activityId int) (count int, err error) { sql := `SELECT COUNT( 1 ) AS count FROM cygx_article_collect AS c INNER JOIN cygx_activity_voice AS vc WHERE c.user_id =? AND vc.activity_id =? AND c.activity_voice_id = vc.activity_voice_id` err = orm.NewOrm().Raw(sql, userId, activityId).QueryRow(&count) return } func GetActivityVideoCollectCountByActivityId(userId, activityId int) (count int, err error) { sql := `SELECT COUNT( 1 ) AS count FROM cygx_article_collect AS c INNER JOIN cygx_activity_video AS vd WHERE c.user_id =? AND vd.activity_id =? AND c.activity_video_id = vd.video_id` err = orm.NewOrm().Raw(sql, userId, activityId).QueryRow(&count) return }