| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package conversation
- import (
- "context"
- "slowwildws/internal/types"
- "slowwildws/internal/utils"
- "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()
- 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.MType),
- Content: data.Content,
- }
- return msgData, nil
- }
|