package article import ( "git.echol.cn/loser/lckt/global" "git.echol.cn/loser/lckt/model/app" "git.echol.cn/loser/lckt/model/article" "git.echol.cn/loser/lckt/model/article/request" "git.echol.cn/loser/lckt/model/article/vo" "go.uber.org/zap" ) type ArticleService struct{} func (ArticleService) CreateArticle(req article.Article) (err error) { err = global.GVA_DB.Create(&req).Error return } func (ArticleService) DeleteArticle(ids request.DeleteIds) (err error) { err = global.GVA_DB.Delete(&article.Article{}, "id in ?", ids.Ids).Error return } func (ArticleService) UpdateArticle(req article.Article) (err error) { err = global.GVA_DB.Model(&article.Article{}).Where("id = ?", req.ID).Updates(&req).Error return } func (ArticleService) GetArticle(id string) (article article.Article, err error) { err = global.GVA_DB.Where("id = ?", id).First(&article).Error return } func (ArticleService) GetArticleList(pageInfo request.GetList) (list []article.Article, total int64, err error) { limit := pageInfo.PageSize offset := pageInfo.PageSize * (pageInfo.Page - 1) // 创建db db := global.GVA_DB.Model(&article.Article{}) err = db.Count(&total).Error if err != nil { return } err = db.Limit(limit).Offset(offset).Find(&list).Error return } func (s ArticleService) APPGetArticleList(pageInfo request.GetList) (list []vo.ArticleListVo, total int64, err error) { limit := pageInfo.PageSize offset := pageInfo.PageSize * (pageInfo.Page - 1) db := global.GVA_DB.Model(&article.Article{}) err = db.Count(&total).Error if err != nil { return } if pageInfo.Title != "" { db = db.Where("title LIKE ?", "%"+pageInfo.Title+"%") } if pageInfo.CategoryId != 0 { db = db.Where("category_id = ?", pageInfo.CategoryId) } if pageInfo.TeacherId != 0 { db = db.Where("teacher_id = ?", pageInfo.TeacherId) } if pageInfo.Keyword != "" { db = db.Where("title LIKE ? OR article.desc LIKE ? OR teacher_name LIKE ?", "%"+pageInfo.Keyword+"%", "%"+pageInfo.Keyword+"%", "%"+pageInfo.Keyword+"%") } err = db.Limit(limit).Offset(offset).Omit("teacher_avatar").Order("created_at desc").Find(&list).Error for i, a := range list { global.GVA_DB.Table("app_user").Select("avatar").Where("id = ?", a.TeacherId).Scan(&list[i].TeacherAvatar) } return } func (s ArticleService) APPGetArticle(id string, userId uint) (article vo.ArticleVo, err error) { err = global.GVA_DB.Table("article").Where("id = ?", id).First(&article).Error if err != nil { global.GVA_LOG.Error("获取文章失败", zap.Error(err)) return } article.IsBuy = 1 // 设置为已购买 global.GVA_DB.Table("app_user").Select("avatar").Where("id = ?", article.TeacherId).Scan(&article.TeacherAvatar) // 判断是否免费 if article.IsFree == 0 { // 如果不是免费文章,判断用户是否购买过 var count int64 err = global.GVA_DB.Model(&app.Order{}).Where("article_id = ? AND user_id = ?", id, userId).Count(&count).Error if err != nil { global.GVA_LOG.Error("查询用户购买记录失败", zap.Error(err)) return } if count == 0 { // 用户没有购买过,隐藏Content article.Content = "" article.IsBuy = 0 // 设置为未购买 } } return }