model.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package yb_community_question
  2. import (
  3. "errors"
  4. "hongze/hongze_yb/global"
  5. "hongze/hongze_yb/models/tables/yb_community_question_audio"
  6. "hongze/hongze_yb/utils"
  7. "time"
  8. )
  9. func (item *YbCommunityQuestion) Create() (err error) {
  10. err = global.DEFAULT_MYSQL.Create(item).Error
  11. return
  12. }
  13. func (item *YbCommunityQuestion) Update(updateCols []string) (err error) {
  14. err = global.DEFAULT_MYSQL.Model(item).Select(updateCols).Updates(*item).Error
  15. return
  16. }
  17. // GetPageListByCondition 获取问答列表-分页
  18. func GetPageListByCondition(where map[string]interface{}, pageIndex, pageSize int) (list []*YbCommunityQuestion, err error) {
  19. cond, vals, e := utils.WhereBuild(where)
  20. if e != nil {
  21. err = errors.New("系统异常,生成查询语句失败")
  22. return
  23. }
  24. offset := (pageIndex - 1) * pageSize
  25. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).Where(cond, vals...).Offset(offset).Limit(pageSize).Order("create_time DESC").Scan(&list).Error
  26. return
  27. }
  28. // GetItemById 主键获取问答信息
  29. func GetItemById(questionId int) (item *YbCommunityQuestion, err error) {
  30. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).
  31. Where("community_question_id = ? AND is_deleted = 0", questionId).
  32. First(&item).Error
  33. return
  34. }
  35. // UpdateQuestionAndAudioList 更新问答及音频
  36. func UpdateQuestionAndAudioList(item *YbCommunityQuestion, updateCols []string, audioList []*yb_community_question_audio.YbCommunityQuestionAudio) (err error) {
  37. tx := global.DEFAULT_MYSQL.Begin()
  38. defer func() {
  39. if err != nil {
  40. tx.Rollback()
  41. } else {
  42. tx.Commit()
  43. }
  44. }()
  45. if err = tx.Model(item).Select(updateCols).Updates(*item).Error; err != nil {
  46. return
  47. }
  48. if err = tx.Where("community_question_id = ?", item.CommunityQuestionID).
  49. Delete(yb_community_question_audio.YbCommunityQuestionAudio{}).Error; err != nil {
  50. return
  51. }
  52. if err = tx.Model(yb_community_question_audio.YbCommunityQuestionAudio{}).
  53. CreateInBatches(audioList, len(audioList)).Error; err != nil {
  54. }
  55. return
  56. }
  57. type QuestionListCount struct {
  58. ReplyStatus int `json:"reply_status"`
  59. Total int `json:"total"`
  60. }
  61. // GetQuestionListCount 获取问答数量统计
  62. func GetQuestionListCount(where map[string]interface{}) (list []*QuestionListCount, err error) {
  63. cond, vals, e := utils.WhereBuild(where)
  64. if e != nil {
  65. err = errors.New("系统异常,GetQuestionListCount 生成查询语句失败")
  66. return
  67. }
  68. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).
  69. Select("reply_status, COUNT(1) total").
  70. Where(cond, vals...).
  71. Group("reply_status").
  72. Scan(&list).Error
  73. return
  74. }
  75. // GetUnreadNum 获取未读数
  76. func GetUnreadNum(where map[string]interface{}) (num int64, err error) {
  77. cond, vals, e := utils.WhereBuild(where)
  78. if e != nil {
  79. err = errors.New("系统异常,GetUnreadNum 生成查询语句失败")
  80. return
  81. }
  82. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).Where(cond, vals...).Count(&num).Error
  83. return
  84. }
  85. // UpdateReplierRead 更新回复人已读
  86. func UpdateReplierRead(replierUserId int, questionIds []int) (err error) {
  87. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).
  88. Where("replier_user_id = ? AND community_question_id IN (?)", replierUserId, questionIds).
  89. Updates(YbCommunityQuestion{
  90. ReplierIsRead: 1,
  91. ModifyTime: time.Now().Local(),
  92. }).Error
  93. return
  94. }
  95. // UpdateUserRead 更新用户已读
  96. func UpdateUserRead(userId int, questionIds []int) (err error) {
  97. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).
  98. Where("user_id = ? AND community_question_id IN (?)", userId, questionIds).
  99. Updates(YbCommunityQuestion{
  100. IsRead: 1,
  101. ModifyTime: time.Now().Local(),
  102. }).Error
  103. return
  104. }