mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-05-07 10:35:59 +08:00
fix get groups bug (#562)
* fix get group bug Signed-off-by: ‘hanzhixiao’ <‘709674996@qq.com’> * bug * api Signed-off-by: ‘hanzhixiao’ <‘709674996@qq.com’> * Delete start.bat * Delete build.cmd --------- Signed-off-by: ‘hanzhixiao’ <‘709674996@qq.com’> Co-authored-by: ‘hanzhixiao’ <‘709674996@qq.com’>
This commit is contained in:
@@ -359,3 +359,5 @@ const (
|
||||
const OpenIMCommonConfigKey = "OpenIMServerConfig"
|
||||
|
||||
const CallbackCommand = "command"
|
||||
|
||||
const BatchNum = 100
|
||||
|
||||
@@ -21,11 +21,6 @@ import (
|
||||
|
||||
type ChatLogDatabase interface {
|
||||
CreateChatLog(msg *pbMsg.MsgDataToMQ) error
|
||||
GetChatLog(
|
||||
chatLog *relationTb.ChatLogModel,
|
||||
pageNumber, showNumber int32,
|
||||
contentTypes []int32,
|
||||
) (int64, []relationTb.ChatLogModel, error)
|
||||
}
|
||||
|
||||
func NewChatLogDatabase(chatLogModelInterface relationTb.ChatLogModelInterface) ChatLogDatabase {
|
||||
@@ -39,11 +34,3 @@ type chatLogDatabase struct {
|
||||
func (c *chatLogDatabase) CreateChatLog(msg *pbMsg.MsgDataToMQ) error {
|
||||
return c.chatLogModel.Create(msg)
|
||||
}
|
||||
|
||||
func (c *chatLogDatabase) GetChatLog(
|
||||
chatLog *relationTb.ChatLogModel,
|
||||
pageNumber, showNumber int32,
|
||||
contentTypes []int32,
|
||||
) (int64, []relationTb.ChatLogModel, error) {
|
||||
return c.chatLogModel.GetChatLog(chatLog, pageNumber, showNumber, contentTypes)
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
@@ -124,9 +125,8 @@ type CommonMsgDatabase interface {
|
||||
) (msgCount int64, userCount int64, groups []*unRelationTb.GroupCount, dateCount map[string]int64, err error)
|
||||
}
|
||||
|
||||
func NewCommonMsgDatabase(msgDocModel unRelationTb.MsgDocModelInterface, cacheModel cache.MsgModel, msgMyqModel relation.ChatLogModelInterface) CommonMsgDatabase {
|
||||
func NewCommonMsgDatabase(msgDocModel unRelationTb.MsgDocModelInterface, cacheModel cache.MsgModel) CommonMsgDatabase {
|
||||
return &commonMsgDatabase{
|
||||
msgMyq: msgMyqModel,
|
||||
msgDocDatabase: msgDocModel,
|
||||
cache: cacheModel,
|
||||
producer: kafka.NewKafkaProducer(config.Config.Kafka.Addr, config.Config.Kafka.LatestMsgToRedis.Topic),
|
||||
@@ -135,18 +135,16 @@ func NewCommonMsgDatabase(msgDocModel unRelationTb.MsgDocModelInterface, cacheMo
|
||||
}
|
||||
}
|
||||
|
||||
func InitCommonMsgDatabase(rdb redis.UniversalClient, database *mongo.Database, dbGrom *gorm.DB) CommonMsgDatabase {
|
||||
func InitCommonMsgDatabase(rdb redis.UniversalClient, database *mongo.Database) CommonMsgDatabase {
|
||||
cacheModel := cache.NewMsgCacheModel(rdb)
|
||||
msgDocModel := unrelation.NewMsgMongoDriver(database)
|
||||
msgMyqModel := relation2.NewChatLogGorm(dbGrom)
|
||||
CommonMsgDatabase := NewCommonMsgDatabase(msgDocModel, cacheModel, msgMyqModel)
|
||||
CommonMsgDatabase := NewCommonMsgDatabase(msgDocModel, cacheModel)
|
||||
return CommonMsgDatabase
|
||||
}
|
||||
|
||||
type commonMsgDatabase struct {
|
||||
msgDocDatabase unRelationTb.MsgDocModelInterface
|
||||
msg unRelationTb.MsgDocModel
|
||||
msgMyq relation.ChatLogModelInterface
|
||||
cache cache.MsgModel
|
||||
producer *kafka.Producer
|
||||
producerToMongo *kafka.Producer
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
package relation
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/golang/protobuf/jsonpb"
|
||||
"github.com/jinzhu/copier"
|
||||
"google.golang.org/protobuf/proto"
|
||||
@@ -62,44 +60,3 @@ func (c *ChatLogGorm) Create(msg *pbMsg.MsgDataToMQ) error {
|
||||
chatLog.SendTime = utils.UnixMillSecondToTime(msg.MsgData.SendTime)
|
||||
return c.DB.Create(chatLog).Error
|
||||
}
|
||||
|
||||
func (c *ChatLogGorm) GetChatLog(
|
||||
chatLog *relation.ChatLogModel,
|
||||
pageNumber, showNumber int32,
|
||||
contentTypeList []int32,
|
||||
) (int64, []relation.ChatLogModel, error) {
|
||||
mdb := c.DB.Model(chatLog)
|
||||
if chatLog.SendTime.Unix() > 0 {
|
||||
mdb = mdb.Where("send_time > ? and send_time < ?", chatLog.SendTime, chatLog.SendTime.AddDate(0, 0, 1))
|
||||
}
|
||||
if chatLog.Content != "" {
|
||||
mdb = mdb.Where(" content like ? ", fmt.Sprintf("%%%s%%", chatLog.Content))
|
||||
}
|
||||
if chatLog.SessionType == 1 {
|
||||
mdb = mdb.Where("session_type = ?", chatLog.SessionType)
|
||||
} else if chatLog.SessionType == 2 {
|
||||
mdb = mdb.Where("session_type in (?)", []int{constant.GroupChatType, constant.SuperGroupChatType})
|
||||
}
|
||||
if chatLog.ContentType != 0 {
|
||||
mdb = mdb.Where("content_type = ?", chatLog.ContentType)
|
||||
}
|
||||
if chatLog.SendID != "" {
|
||||
mdb = mdb.Where("send_id = ?", chatLog.SendID)
|
||||
}
|
||||
if chatLog.RecvID != "" {
|
||||
mdb = mdb.Where("recv_id = ?", chatLog.RecvID)
|
||||
}
|
||||
if len(contentTypeList) > 0 {
|
||||
mdb = mdb.Where("content_type in (?)", contentTypeList)
|
||||
}
|
||||
var count int64
|
||||
if err := mdb.Count(&count).Error; err != nil {
|
||||
return 0, nil, err
|
||||
}
|
||||
var chatLogs []relation.ChatLogModel
|
||||
mdb = mdb.Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1)))
|
||||
if err := mdb.Find(&chatLogs).Error; err != nil {
|
||||
return 0, nil, err
|
||||
}
|
||||
return count, chatLogs, nil
|
||||
}
|
||||
|
||||
@@ -48,5 +48,4 @@ func (ChatLogModel) TableName() string {
|
||||
|
||||
type ChatLogModelInterface interface {
|
||||
Create(msg *pbMsg.MsgDataToMQ) error
|
||||
GetChatLog(chatLog *ChatLogModel, pageNumber, showNumber int32, contentTypes []int32) (int64, []ChatLogModel, error)
|
||||
}
|
||||
|
||||
@@ -1202,5 +1202,12 @@ func (m *MsgMongoDriver) searchMessage(ctx context.Context, req *msg.SearchMessa
|
||||
msgs = append(msgs, msg)
|
||||
}
|
||||
}
|
||||
start := (req.Pagination.PageNumber - 1) * req.Pagination.ShowNumber
|
||||
n := int32(len(msgs))
|
||||
if start+req.Pagination.ShowNumber < n {
|
||||
msgs = msgs[start : start+req.Pagination.ShowNumber]
|
||||
} else {
|
||||
msgs = msgs[start:]
|
||||
}
|
||||
return msgs, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user