model.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. )
  8. func (item *YbCommunityQuestion) Create() (err error) {
  9. err = global.DEFAULT_MYSQL.Create(item).Error
  10. return
  11. }
  12. func (item *YbCommunityQuestion) Update(updateCols []string) (err error) {
  13. err = global.DEFAULT_MYSQL.Model(item).Select(updateCols).Updates(*item).Error
  14. return
  15. }
  16. func GetPageListByCondition(where map[string]interface{}, pageIndex, pageSize int) (list []*YbCommunityQuestion, err error) {
  17. cond, vals, e := utils.WhereBuild(where)
  18. if e != nil {
  19. err = errors.New("系统异常,生成查询语句失败")
  20. return
  21. }
  22. offset := (pageIndex - 1) * pageSize
  23. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).Where(cond, vals...).Offset(offset).Limit(pageSize).Order("reply_time DESC").Scan(&list).Error
  24. return
  25. }
  26. func GetWaitingReplyNum(replierId int) (num int64, err error) {
  27. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).
  28. Where("replier_user_id =", replierId).
  29. Count(&num).Error
  30. return
  31. }
  32. func GetItemById(questionId int) (item *YbCommunityQuestion, err error) {
  33. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).
  34. Where("community_question_id = ? AND is_deleted = 0", questionId).
  35. First(&item).Error
  36. return
  37. }
  38. func UpdateQuestionAndAudioList(item *YbCommunityQuestion, updateCols []string, audioList []*yb_community_question_audio.YbCommunityQuestionAudio) (err error) {
  39. tx := global.DEFAULT_MYSQL.Begin()
  40. defer func() {
  41. if err != nil {
  42. tx.Rollback()
  43. } else {
  44. tx.Commit()
  45. }
  46. }()
  47. if err = tx.Model(item).Select(updateCols).Updates(*item).Error; err != nil {
  48. return
  49. }
  50. if err = tx.Where("community_question_id = ?", item.CommunityQuestionID).
  51. Delete(yb_community_question_audio.YbCommunityQuestionAudio{}).Error; err != nil {
  52. return
  53. }
  54. if err = tx.Model(yb_community_question_audio.YbCommunityQuestionAudio{}).
  55. CreateInBatches(audioList, len(audioList)).Error; err != nil {
  56. }
  57. return
  58. }
  59. type ReplierQuestionCount struct {
  60. ReplyStatus int `json:"reply_status"`
  61. Total int `json:"total"`
  62. }
  63. func GetReplierQuestionCount(replierUserId int) (list []*ReplierQuestionCount, err error) {
  64. err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).
  65. Select("reply_status, COUNT(1) total").
  66. Where("replier_user_id = ? AND is_deleted = 0", replierUserId).
  67. Group("reply_status").
  68. Scan(&list).Error
  69. return
  70. }