golang-im聊天
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

169 行
4.7 KiB

  1. package api
  2. import (
  3. "context"
  4. "gim/internal/logic/app"
  5. "gim/pkg/grpclib"
  6. "gim/pkg/pb"
  7. )
  8. type LogicExtServer struct{}
  9. // RegisterDevice 注册设备
  10. func (*LogicExtServer) RegisterDevice(ctx context.Context, in *pb.RegisterDeviceReq) (*pb.RegisterDeviceResp, error) {
  11. deviceId, err := app.DeviceApp.Register(ctx, in)
  12. return &pb.RegisterDeviceResp{DeviceId: deviceId}, err
  13. }
  14. // SendMessage 发送消息
  15. func (*LogicExtServer) SendMessage(ctx context.Context, in *pb.SendMessageReq) (*pb.SendMessageResp, error) {
  16. userId, deviceId, err := grpclib.GetCtxData(ctx)
  17. if err != nil {
  18. return nil, err
  19. }
  20. sender := pb.Sender{
  21. SenderType: pb.SenderType_ST_USER,
  22. SenderId: userId,
  23. DeviceId: deviceId,
  24. }
  25. seq, err := app.MessageApp.SendMessage(ctx, &sender, in)
  26. if err != nil {
  27. return nil, err
  28. }
  29. return &pb.SendMessageResp{Seq: seq}, nil
  30. }
  31. // PushRoom 推送房间
  32. func (s *LogicExtServer) PushRoom(ctx context.Context, req *pb.PushRoomReq) (*pb.Empty, error) {
  33. userId, deviceId, err := grpclib.GetCtxData(ctx)
  34. if err != nil {
  35. return nil, err
  36. }
  37. return &pb.Empty{}, app.RoomApp.Push(ctx, &pb.Sender{
  38. SenderType: pb.SenderType_ST_USER,
  39. SenderId: userId,
  40. DeviceId: deviceId,
  41. }, req)
  42. }
  43. func (s *LogicExtServer) AddFriend(ctx context.Context, in *pb.AddFriendReq) (*pb.Empty, error) {
  44. userId, _, err := grpclib.GetCtxData(ctx)
  45. if err != nil {
  46. return nil, err
  47. }
  48. err = app.FriendApp.AddFriend(ctx, userId, in.FriendId, in.Remarks, in.Description)
  49. if err != nil {
  50. return nil, err
  51. }
  52. return &pb.Empty{}, nil
  53. }
  54. func (s *LogicExtServer) AgreeAddFriend(ctx context.Context, in *pb.AgreeAddFriendReq) (*pb.Empty, error) {
  55. userId, _, err := grpclib.GetCtxData(ctx)
  56. if err != nil {
  57. return nil, err
  58. }
  59. err = app.FriendApp.AgreeAddFriend(ctx, userId, in.UserId, in.Remarks)
  60. if err != nil {
  61. return nil, err
  62. }
  63. return &pb.Empty{}, nil
  64. }
  65. func (s *LogicExtServer) SetFriend(ctx context.Context, req *pb.SetFriendReq) (*pb.SetFriendResp, error) {
  66. userId, _, err := grpclib.GetCtxData(ctx)
  67. if err != nil {
  68. return nil, err
  69. }
  70. app.FriendApp.SetFriend(ctx, userId, req)
  71. if err != nil {
  72. return nil, err
  73. }
  74. return &pb.SetFriendResp{}, nil
  75. }
  76. func (s *LogicExtServer) GetFriends(ctx context.Context, in *pb.Empty) (*pb.GetFriendsResp, error) {
  77. userId, _, err := grpclib.GetCtxData(ctx)
  78. if err != nil {
  79. return nil, err
  80. }
  81. friends, err := app.FriendApp.List(ctx, userId)
  82. return &pb.GetFriendsResp{Friends: friends}, err
  83. }
  84. // CreateGroup 创建群组
  85. func (*LogicExtServer) CreateGroup(ctx context.Context, in *pb.CreateGroupReq) (*pb.CreateGroupResp, error) {
  86. userId, _, err := grpclib.GetCtxData(ctx)
  87. if err != nil {
  88. return nil, err
  89. }
  90. groupId, err := app.GroupApp.CreateGroup(ctx, userId, in)
  91. return &pb.CreateGroupResp{GroupId: groupId}, err
  92. }
  93. // UpdateGroup 更新群组
  94. func (*LogicExtServer) UpdateGroup(ctx context.Context, in *pb.UpdateGroupReq) (*pb.Empty, error) {
  95. userId, _, err := grpclib.GetCtxData(ctx)
  96. if err != nil {
  97. return nil, err
  98. }
  99. return &pb.Empty{}, app.GroupApp.Update(ctx, userId, in)
  100. }
  101. // GetGroup 获取群组信息
  102. func (*LogicExtServer) GetGroup(ctx context.Context, in *pb.GetGroupReq) (*pb.GetGroupResp, error) {
  103. group, err := app.GroupApp.GetGroup(ctx, in.GroupId)
  104. return &pb.GetGroupResp{Group: group}, err
  105. }
  106. // GetGroups 获取用户加入的所有群组
  107. func (*LogicExtServer) GetGroups(ctx context.Context, in *pb.Empty) (*pb.GetGroupsResp, error) {
  108. userId, _, err := grpclib.GetCtxData(ctx)
  109. if err != nil {
  110. return nil, err
  111. }
  112. groups, err := app.GroupApp.GetUserGroups(ctx, userId)
  113. return &pb.GetGroupsResp{Groups: groups}, err
  114. }
  115. func (s *LogicExtServer) AddGroupMembers(ctx context.Context, in *pb.AddGroupMembersReq) (*pb.AddGroupMembersResp, error) {
  116. userId, _, err := grpclib.GetCtxData(ctx)
  117. if err != nil {
  118. return nil, err
  119. }
  120. userIds, err := app.GroupApp.AddMembers(ctx, userId, in.GroupId, in.UserIds)
  121. return &pb.AddGroupMembersResp{UserIds: userIds}, err
  122. }
  123. // UpdateGroupMember 更新群组成员信息
  124. func (*LogicExtServer) UpdateGroupMember(ctx context.Context, in *pb.UpdateGroupMemberReq) (*pb.Empty, error) {
  125. return &pb.Empty{}, app.GroupApp.UpdateMember(ctx, in)
  126. }
  127. // DeleteGroupMember 添加群组成员
  128. func (*LogicExtServer) DeleteGroupMember(ctx context.Context, in *pb.DeleteGroupMemberReq) (*pb.Empty, error) {
  129. userId, _, err := grpclib.GetCtxData(ctx)
  130. if err != nil {
  131. return nil, err
  132. }
  133. err = app.GroupApp.DeleteMember(ctx, in.GroupId, in.UserId, userId)
  134. return &pb.Empty{}, err
  135. }
  136. // GetGroupMembers 获取群组成员信息
  137. func (s *LogicExtServer) GetGroupMembers(ctx context.Context, in *pb.GetGroupMembersReq) (*pb.GetGroupMembersResp, error) {
  138. members, err := app.GroupApp.GetMembers(ctx, in.GroupId)
  139. return &pb.GetGroupMembersResp{Members: members}, err
  140. }