createchatsessionlogic.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package logic
  2. import (
  3. "context"
  4. "messagecenter/rpc/messagecenter/messagecenter"
  5. "messagecenter/api/messagecenter/internal/svc"
  6. "messagecenter/api/messagecenter/internal/types"
  7. "github.com/zeromicro/go-zero/core/logx"
  8. )
  9. type CreateChatSessionLogic struct {
  10. logx.Logger
  11. ctx context.Context
  12. svcCtx *svc.ServiceContext
  13. }
  14. func NewCreateChatSessionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateChatSessionLogic {
  15. return &CreateChatSessionLogic{
  16. Logger: logx.WithContext(ctx),
  17. ctx: ctx,
  18. svcCtx: svcCtx,
  19. }
  20. }
  21. func (l *CreateChatSessionLogic) CreateChatSession(req *types.ChatSessionReq) (*types.CommonRes, error) {
  22. chatMession := &messagecenter.ChatSessionReq{}
  23. if req.UserType == 1 {
  24. //客服信息
  25. if req.MsgType == 5 {
  26. //客服建立连接
  27. chatMession.AppId = req.AppId
  28. chatMession.CustomerServiceId = req.EntUserId
  29. chatMession.UserId = req.ReceiveId
  30. chatMession.EntId = req.EntId
  31. }
  32. } else {
  33. //用户建立会话
  34. if req.MsgType == 4 {
  35. //机器人
  36. chatMession.AppId = req.ReceiveAppId
  37. chatMession.CustomerServiceId = 0
  38. chatMession.UserId = req.NewUserId
  39. chatMession.EntId = req.ReceiveEntId
  40. }
  41. }
  42. resp, err := l.svcCtx.Message.CreateChatSession(l.ctx, chatMession)
  43. if err != nil {
  44. return nil, err
  45. }
  46. return &types.CommonRes{
  47. Error_msg: resp.ErrorMsg,
  48. Error_code: int(resp.ErrorCode),
  49. Data: resp.SessionId,
  50. }, nil
  51. }