Browse Source

修改回复已读接口,修改查询未读接口

xiexiaoyuan 2 years ago
parent
commit
93b9d364a3
2 changed files with 19 additions and 18 deletions
  1. 4 11
      models/tables/yb_community_question/model.go
  2. 15 7
      services/community/question.go

+ 4 - 11
models/tables/yb_community_question/model.go

@@ -1,10 +1,8 @@
 package yb_community_question
 
 import (
-	"errors"
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/models/tables/yb_community_question_audio"
-	"hongze/hongze_yb/utils"
 	"time"
 )
 
@@ -74,20 +72,15 @@ func GetQuestionListCount(condition string, pars []interface{}) (list []*Questio
 }
 
 // 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
+func GetUnreadNum(condition string, pars []interface{}) (num int64, err error) {
+	err = global.DEFAULT_MYSQL.Model(YbCommunityQuestion{}).Where(condition, pars...).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).
+		Where("replier_user_id = ? AND community_question_id IN (?) AND replier_is_read=0", replierUserId, questionIds).
 		Updates(YbCommunityQuestion{
 			ReplierIsRead: 1,
 			ModifyTime: time.Now().Local(),
@@ -98,7 +91,7 @@ func UpdateReplierRead(replierUserId int, questionIds []int) (err error) {
 // 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).
+		Where("user_id = ? AND community_question_id IN (?) AND is_read=0", userId, questionIds).
 		Updates(YbCommunityQuestion{
 			IsRead: 1,
 			ModifyTime: time.Now().Local(),

+ 15 - 7
services/community/question.go

@@ -300,8 +300,16 @@ func ReadQuestionReply(questionIds string, userInfo user.UserInfo) (err error) {
 		return
 	}
 	if isResearcher {
+		// 设置分配给研究员的问答已读
 		e = yb_community_question.UpdateReplierRead(int(userInfo.UserID), questionIdArr)
+		if e != nil {
+			err = errors.New("更新问答已读失败 Err:" + e.Error())
+			return
+		}
+		// 设置研究员提问的问答已读
+		e = yb_community_question.UpdateUserRead(int(userInfo.UserID), questionIdArr)
 	} else {
+		// 设置普通用户的问答已读
 		e = yb_community_question.UpdateUserRead(int(userInfo.UserID), questionIdArr)
 	}
 	if e != nil {
@@ -373,16 +381,16 @@ func GetMyQuestionUnread(userInfo user.UserInfo) (total int, err error) {
 		err = errors.New("获取用户身份失败 Err:" + e.Error())
 		return
 	}
-	condition := make(map[string]interface{}, 0)
-	condition["is_deleted ="] = 0
+	condition := " is_deleted = 0"
+	var pars []interface{}
 	if isResearcher {
-		condition["replier_user_id ="] = userInfo.UserID
-		condition["replier_is_read ="] = 0
+		condition += " and ((replier_user_id=? and replier_is_read=0) or (user_id=? and is_read=0))"
+		pars = append(pars, userInfo.UserID, userInfo.UserID)
 	} else {
-		condition["user_id ="] = userInfo.UserID
-		condition["is_read ="] = 0
+		condition += " and user_id=? and is_read=0"
+		pars = append(pars, userInfo.UserID)
 	}
-	num, e := yb_community_question.GetUnreadNum(condition)
+	num, e := yb_community_question.GetUnreadNum(condition, pars)
 	if e != nil {
 		err = errors.New("获取我的未读数失败 Err:" + e.Error())
 		return