package conversation import ( "context" "slowwildws/internal/types" "time" msgChat "git.banshen.xyz/huangguangrong/slow_wild_queue/types" "github.com/mitchellh/mapstructure" "github.com/zeromicro/go-zero/core/logx" ) type ConversationLogic struct { logx.Logger } func NewConversationLogic(ctx context.Context) *ConversationLogic { return &ConversationLogic{ Logger: logx.WithContext(ctx), } } func (l *ConversationLogic) ChatHandler(msg *types.Message, uid int64) (*msgChat.MsgChatTransfer, error) { var data msgChat.Chat if err := mapstructure.Decode(msg.Data, &data); err != nil { return nil, err } // 设置发送者id data.SendID = msg.UserID // 设置接收者id data.RecvID = msg.FormID // 设置消息id data.Msg.MsgID = msg.Id // 设置消息发送时间 data.SendTime = time.Now().Unix() // 使用服务端下发的会话id,所以注释这里 // switch data.ChatType { // case msgChat.SingleChatType: // data.ConversationId = utils.CombineUserID(uid, data.RecvID) // case msgChat.GroupChatType: // data.ConversationId = utils.UserIdToHex(data.RecvID) // } msgData := &msgChat.MsgChatTransfer{ MsgId: msg.Id, ConversationId: data.ConversationId, ChatType: msgChat.ChatType(data.ChatType), SendID: uid, RecvID: data.RecvID, SendTime: time.Now().Unix(), MType: msgChat.MType(data.Msg.MType), Content: data.Msg.Content, } return msgData, nil }