获取session添加该会话消息数量参数
This commit is contained in:
parent
3d9dea3ea7
commit
2731a5dfec
17
dao/im.go
17
dao/im.go
|
|
@ -98,3 +98,20 @@ func FindMessageBySessionID(sessionID int) []Message {
|
|||
}
|
||||
return messages
|
||||
}
|
||||
|
||||
type SessionMessageCount struct {
|
||||
SessionID int `gorm:"column:session_id"`
|
||||
Count int `gorm:"column:count"`
|
||||
}
|
||||
|
||||
// 获取属于用户的会话消息数量
|
||||
func FindSessionMessageCountByUserID(userID int) []SessionMessageCount {
|
||||
var sessionMessageCounts []SessionMessageCount
|
||||
if proto.Config.SERVER_SQL_LOG {
|
||||
//DB.Debug().Exec("Select session_id, count(*) as count from messages where to_id = ? or from_id=? group by session_id", userID,userID).Scan(&sessionMessageCounts)
|
||||
DB.Debug().Table("messages").Select("session_id, count(*) as count").Where("to_id = ? or from_id= ?", userID, userID).Group("session_id").Scan(&sessionMessageCounts)
|
||||
} else {
|
||||
DB.Table("messages").Select("session_id, count(*) as count").Where("to_id = ? or from_id= ?", userID, userID).Group("session_id").Scan(&sessionMessageCounts)
|
||||
}
|
||||
return sessionMessageCounts
|
||||
}
|
||||
|
|
|
|||
13
proto/im.go
13
proto/im.go
|
|
@ -1,6 +1,9 @@
|
|||
package proto
|
||||
|
||||
import "github.com/ollama/ollama/api"
|
||||
import (
|
||||
"github.com/ollama/ollama/api"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type AIQueueMessage struct {
|
||||
Type string `json:"type"` //声明不同消息类型
|
||||
|
|
@ -31,3 +34,11 @@ type ModelParam struct {
|
|||
APISecret string `json:"apiSecret"` //应用密钥
|
||||
APIKey string `json:"apiKey"` //应用key
|
||||
}
|
||||
|
||||
type SessionResponse struct {
|
||||
gorm.Model
|
||||
UserID int `gorm:"column:user_id"` //只能由用户创建
|
||||
Name string `gorm:"column:name"`
|
||||
Context []int `gorm:"column:context;type:json"` //会话上下文
|
||||
MsgCount int `gorm:"column:msg_count"` //消息数量
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,9 +19,23 @@ func CreateSession(userID int, name string) (error, uint) {
|
|||
}
|
||||
|
||||
// 查找用户的会话列表
|
||||
func FindSessionByUserID(userID int) []dao.Session {
|
||||
func FindSessionByUserID(userID int) []proto.SessionResponse {
|
||||
sessions := dao.FindSessionByUserID(userID)
|
||||
return sessions
|
||||
sessionsMsgCounts := dao.FindSessionMessageCountByUserID(userID)
|
||||
smap := make(map[int]int)
|
||||
for _, v := range sessionsMsgCounts {
|
||||
smap[v.SessionID] = v.Count
|
||||
}
|
||||
var res []proto.SessionResponse
|
||||
for _, v := range sessions {
|
||||
var session proto.SessionResponse
|
||||
session.ID = v.ID
|
||||
session.Name = v.Name
|
||||
session.UserID = v.UserID
|
||||
session.MsgCount = smap[int(v.ID)]
|
||||
res = append(res, session)
|
||||
}
|
||||
return res
|
||||
}
|
||||
func FindSessionByID(id, userID int) (error, []dao.Session) {
|
||||
session := dao.FindSessionByID(id)
|
||||
|
|
|
|||
Loading…
Reference in New Issue