package yb_community_question import ( "errors" "hongze/hongze_yb/global" "hongze/hongze_yb/models/tables/yb_community_question_audio" "hongze/hongze_yb/utils" "time" ) 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 } // GetPageListByCondition 获取问答列表-分页 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("create_time DESC").Scan(&list).Error return } // GetItemById 主键获取问答信息 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 } // UpdateQuestionAndAudioList 更新问答及音频 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 QuestionListCount struct { ReplyStatus int `json:"reply_status"` Total int `json:"total"` } // GetQuestionListCount 获取问答数量统计 func GetQuestionListCount(where map[string]interface{}) (list []*QuestionListCount, err error) { cond, vals, e := utils.WhereBuild(where) if e != nil { err = errors.New("系统异常,GetQuestionListCount 生成查询语句失败") return } err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}). Select("reply_status, COUNT(1) total"). Where(cond, vals...). Group("reply_status"). Scan(&list).Error return } // GetUnreadNum 获取未读数 func GetUnreadNum(where map[string]interface{}) (num int64, err error) { cond, vals, e := utils.WhereBuild(where) if e != nil { err = errors.New("系统异常,GetUnreadNum 生成查询语句失败") return } err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).Where(cond, vals...).Count(&num).Error return } // UpdateReplierRead 更新回复人已读 func UpdateReplierRead(replierUserId int, questionIds []int) (err error) { err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}). Where("replier_user_id = ? AND community_question_id IN (?)", replierUserId, questionIds). Updates(YbCommunityQuestion{ ReplierIsRead: 1, ModifyTime: time.Now().Local(), }).Error return } // UpdateUserRead 更新用户已读 func UpdateUserRead(userId int, questionIds []int) (err error) { err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}). Where("user_id = ? AND community_question_id IN (?)", userId, questionIds). Updates(YbCommunityQuestion{ IsRead: 1, ModifyTime: time.Now().Local(), }).Error return }