123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- 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
- }
|