package yb_community_question import ( "errors" "hongze/hongze_yb/global" "hongze/hongze_yb/models/tables/yb_community_question_audio" "hongze/hongze_yb/utils" ) func (item *YbCommunityQuestion) Create() (err error) { err = global.DEFAULT_MYSQL.Create(item).Error return } func (item *YbCommunityQuestion) Update(updateCols []string) (err error) { err = global.DEFAULT_MYSQL.Model(item).Select(updateCols).Updates(*item).Error return } func GetPageListByCondition(where map[string]interface{}, pageIndex, pageSize int) (list []*YbCommunityQuestion, err error) { cond, vals, e := utils.WhereBuild(where) if e != nil { err = errors.New("系统异常,生成查询语句失败") return } offset := (pageIndex - 1) * pageSize err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).Where(cond, vals...).Offset(offset).Limit(pageSize).Order("reply_time DESC").Scan(&list).Error return } func GetWaitingReplyNum(replierId int) (num int64, err error) { err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}). Where("replier_user_id =", replierId). Count(&num).Error return } func GetItemById(questionId int) (item *YbCommunityQuestion, err error) { err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}). Where("community_question_id = ? AND is_deleted = 0", questionId). First(&item).Error return } func UpdateQuestionAndAudioList(item *YbCommunityQuestion, updateCols []string, audioList []*yb_community_question_audio.YbCommunityQuestionAudio) (err error) { tx := global.DEFAULT_MYSQL.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() if err = tx.Model(item).Select(updateCols).Updates(*item).Error; err != nil { return } if err = tx.Where("community_question_id = ?", item.CommunityQuestionID). Delete(yb_community_question_audio.YbCommunityQuestionAudio{}).Error; err != nil { return } if err = tx.Model(yb_community_question_audio.YbCommunityQuestionAudio{}). CreateInBatches(audioList, len(audioList)).Error; err != nil { } return } type ReplierQuestionCount struct { ReplyStatus int `json:"reply_status"` Total int `json:"total"` } func GetReplierQuestionCount(replierUserId int) (list []*ReplierQuestionCount, err error) { err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}). Select("reply_status, COUNT(1) total"). Where("replier_user_id = ? AND is_deleted = 0", replierUserId). Group("reply_status"). Scan(&list).Error return }