package api import ( "context" "gim/internal/logic/app" "gim/pkg/logger" "gim/pkg/pb" ) type LogicIntServer struct{} // ConnSignIn 设备登录 func (*LogicIntServer) ConnSignIn(ctx context.Context, req *pb.ConnSignInReq) (*pb.Empty, error) { return &pb.Empty{}, app.DeviceApp.SignIn(ctx, req.UserId, req.DeviceId, req.Token, req.ConnAddr, req.ClientAddr) } // Sync 设备同步消息 func (*LogicIntServer) Sync(ctx context.Context, req *pb.SyncReq) (*pb.SyncResp, error) { return app.MessageApp.Sync(ctx, req.UserId, req.Seq) } // MessageACK 设备收到消息ack func (*LogicIntServer) MessageACK(ctx context.Context, req *pb.MessageACKReq) (*pb.Empty, error) { return &pb.Empty{}, app.MessageApp.MessageAck(ctx, req.UserId, req.DeviceId, req.DeviceAck) } // Offline 设备离线 func (*LogicIntServer) Offline(ctx context.Context, req *pb.OfflineReq) (*pb.Empty, error) { return &pb.Empty{}, app.DeviceApp.Offline(ctx, req.DeviceId, req.ClientAddr) } func (s *LogicIntServer) SubscribeRoom(ctx context.Context, req *pb.SubscribeRoomReq) (*pb.Empty, error) { return &pb.Empty{}, app.RoomApp.SubscribeRoom(ctx, req) } // SendMessage 发送消息 func (*LogicIntServer) SendMessage(ctx context.Context, req *pb.SendMessageReq) (*pb.SendMessageResp, error) { sender := pb.Sender{ SenderType: pb.SenderType_ST_BUSINESS, SenderId: 0, DeviceId: 0, } seq, err := app.MessageApp.SendMessage(ctx, &sender, req) if err != nil { return nil, err } return &pb.SendMessageResp{Seq: seq}, nil } // PushRoom 推送房间 func (s *LogicIntServer) PushRoom(ctx context.Context, req *pb.PushRoomReq) (*pb.Empty, error) { return &pb.Empty{}, app.RoomApp.Push(ctx, &pb.Sender{ SenderType: pb.SenderType_ST_BUSINESS, }, req) } // PushAll 全服推送 func (s *LogicIntServer) PushAll(ctx context.Context, req *pb.PushAllReq) (*pb.Empty, error) { return &pb.Empty{}, app.MessageApp.PushAll(ctx, req) } // GetDevice 获取设备信息 func (*LogicIntServer) GetDevice(ctx context.Context, req *pb.GetDeviceReq) (*pb.GetDeviceResp, error) { device, err := app.DeviceApp.GetDevice(ctx, req.DeviceId) return &pb.GetDeviceResp{Device: device}, err } // ServerStop 服务停止 func (s *LogicIntServer) ServerStop(ctx context.Context, in *pb.ServerStopReq) (*pb.Empty, error) { go func() { err := app.DeviceApp.ServerStop(ctx, in.ConnAddr) if err != nil { logger.Sugar.Error(err) } }() return &pb.Empty{}, nil }