diff --git a/api/backend/v1/chat.go b/api/backend/v1/chat.go index c1928e0..031ec3d 100644 --- a/api/backend/v1/chat.go +++ b/api/backend/v1/chat.go @@ -84,6 +84,7 @@ type ChatWaitingUser struct { } type ChatSimpleMessage struct { + Id uint `json:"id"` Type string `json:"type"` Time *gtime.Time `json:"time"` Content string `json:"content"` diff --git a/internal/controller/backend/chat.go b/internal/controller/backend/chat.go index 4dd7f27..624eee2 100644 --- a/internal/controller/backend/chat.go +++ b/internal/controller/backend/chat.go @@ -64,6 +64,7 @@ func (c cChat) CancelTransfer(ctx context.Context, _ *v1.CancelTransferReq) (res admin := service.AdminCtx().GetUser(ctx) transfer, err := service.ChatTransfer().First(ctx, g.Map{ "to_admin_id": admin.Id, + "id": ghttp.RequestFromCtx(ctx).GetRouter("id").Int(), }) if err != nil { return diff --git a/internal/logic/chat/admin_manager.go b/internal/logic/chat/admin_manager.go index 1509a43..e95446a 100644 --- a/internal/logic/chat/admin_manager.go +++ b/internal/logic/chat/admin_manager.go @@ -160,7 +160,7 @@ func (m *adminManager) broadcastWaitingUser(ctx context.Context, customerId uint messages, err := service.ChatMessage().All(ctx, do.CustomerChatMessages{ Source: consts.MessageSourceUser, SessionId: sessionIds, - }, nil, "id") + }, nil, "id desc") if err != nil { return err } @@ -178,6 +178,7 @@ func (m *adminManager) broadcastWaitingUser(ctx context.Context, customerId uint } for _, m := range messages { userMap[m.UserId].Messages = append(userMap[m.UserId].Messages, v1.ChatSimpleMessage{ + Id: m.Id, Type: m.Type, Time: m.ReceivedAt, Content: m.Content, diff --git a/internal/logic/chat/chat.go b/internal/logic/chat/chat.go index 0a71024..0ed4533 100644 --- a/internal/logic/chat/chat.go +++ b/internal/logic/chat/chat.go @@ -2,7 +2,7 @@ package chat import ( "context" - api2 "gf-chat/api" + baseApi "gf-chat/api" api "gf-chat/api/backend/v1" "gf-chat/internal/consts" "gf-chat/internal/model" @@ -160,14 +160,13 @@ func (s sChat) Accept(ctx context.Context, admin model.CustomerAdmin, sessionId } } messagesLength := len(messages) - var lastMsg *api2.ChatMessage + var lastMsg *baseApi.ChatMessage if messagesLength > 0 { lastMessage := messages[0] - v, err := service.ChatMessage().ToApi(ctx, lastMessage) + lastMsg, err = service.ChatMessage().ToApi(ctx, lastMessage) if err != nil { return nil, err } - lastMsg = v } err = service.ChatRelation().AddUser(ctx, admin.Id, session.UserId) if err != nil {