ArticleDao.go 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package dao
  2. import (
  3. "demo/configs"
  4. "demo/data/domain"
  5. "demo/data/domain/vo"
  6. "time"
  7. )
  8. type ArticleCollectionVo struct {
  9. Topic domain.ArticleTopic `json:"topic"`
  10. ArticleList []ArticleTitleVo `json:"articleList"`
  11. Total int64 `json:"total"`
  12. }
  13. type ArticleTitleVo struct {
  14. Id int64 `json:"id"` // 11 0 注释:id
  15. Image string `xorm:"image" json:"image"` // 255 0 注释:文章名称
  16. ArticleTitle string `xorm:"article_title" json:"articleTitle"` // 255 0 注释:文章名称
  17. ArticleDesc string `xorm:"article_desc" json:"articleDesc"` // 255 0 注释:文章简介 1
  18. State string `xorm:"state" json:"state"` // 255 0 注释:状态
  19. ArticleTagIds string `xorm:"article_tag_ids" json:"articleTagIds"` // 255 0 注释:文章标签
  20. PublishTime time.Time `xorm:"publish_time" json:"publishTime"` // 0 0 注释:发表时间
  21. EyeFill int64 `xorm:"eye_fill" json:"eyeFill"` // 11 0 注释:浏览量
  22. LikeCount int64 `xorm:"like_count" json:"likeCount"` // 255 0 注释:点赞量
  23. CreateBy string `xorm:"create_by" json:"createBy"`
  24. CreateTime time.Time `xorm:"create_time" json:"createTime"`
  25. }
  26. func GetArticleList(pageNum, pageSize int) (vo.BaseListVo, error) {
  27. var arr []domain.ArticleTopic
  28. var vo vo.BaseListVo
  29. c, err := configs.Engine.Table("article_topic").
  30. Limit(pageSize, (pageNum-1)*pageSize).Desc("id").FindAndCount(&arr)
  31. if err != nil {
  32. return vo, err
  33. }
  34. m := make(map[int64]ArticleCollectionVo)
  35. for i := range arr {
  36. var list = make([]ArticleTitleVo, 0)
  37. count, _ := configs.Engine.Table("article").
  38. Select("id, article_title, article_tag_ids, state, publish_time, eye_fill, like_count, create_time, article_tag_ids").
  39. Where("article_topic_id = ? and state = '1'", arr[i].Id).
  40. Limit(5).Desc("create_time").FindAndCount(&list)
  41. m[arr[i].Id] = ArticleCollectionVo{
  42. Topic: arr[i],
  43. ArticleList: list,
  44. Total: count,
  45. }
  46. }
  47. var VoList = make([]interface{}, 0)
  48. for _, v := range m {
  49. VoList = append(VoList, v)
  50. }
  51. vo.Total = int(c)
  52. vo.PageNum = pageNum
  53. vo.PageSize = pageSize
  54. vo.List = VoList
  55. return vo, nil
  56. }
  57. func GetArticleListByTopicId(topicId int64, pageNum, pageSize int) (domain.ArticleTopic, vo.BaseListVo, error) {
  58. var topic = domain.ArticleTopic{}
  59. var vo vo.BaseListVo
  60. _, err := configs.Engine.Table("article_topic").
  61. Where("id = ?", topicId).Desc("id").Get(&topic)
  62. if err != nil {
  63. return topic, vo, err
  64. }
  65. var list = make([]ArticleTitleVo, 0)
  66. count, _ := configs.Engine.Table("article").
  67. Select("id, image, article_title, article_desc, article_desc, article_tag_ids, state, publish_time, eye_fill, like_count, create_time,create_by, article_tag_ids").
  68. Where("article_topic_id = ? and state = '1'", topic.Id).
  69. Limit(pageSize, (pageNum-1)*pageSize).Desc("create_time").FindAndCount(&list)
  70. var VoList = make([]interface{}, 0)
  71. for _, v := range list {
  72. VoList = append(VoList, v)
  73. }
  74. vo.Total = int(count)
  75. vo.PageNum = pageNum
  76. vo.PageSize = pageSize
  77. vo.List = VoList
  78. return topic, vo, nil
  79. }