|
- package app
-
- import (
- "context"
- devicedomain "gim/internal/logic/domain/device"
- "gim/pkg/gerrors"
- "gim/pkg/pb"
- )
-
- type deviceApp struct{}
-
- var DeviceApp = new(deviceApp)
-
- // Register 注册设备
- func (*deviceApp) Register(ctx context.Context, in *pb.RegisterDeviceReq) (int64, error) {
- device := devicedomain.Device{
- Type: in.Type,
- Brand: in.Brand,
- Model: in.Model,
- SystemVersion: in.SystemVersion,
- SDKVersion: in.SdkVersion,
- }
-
- // 判断设备信息是否合法
- if !device.IsLegal() {
- return 0, gerrors.ErrBadRequest
- }
-
- err := devicedomain.DeviceRepo.Save(&device)
- if err != nil {
- return 0, err
- }
-
- return device.Id, nil
- }
-
- // SignIn 登录
- func (*deviceApp) SignIn(ctx context.Context, userId, deviceId int64, token string, connAddr string, clientAddr string) error {
- return devicedomain.DeviceService.SignIn(ctx, userId, deviceId, token, connAddr, clientAddr)
- }
-
- // Offline 设备离线
- func (*deviceApp) Offline(ctx context.Context, deviceId int64, clientAddr string) error {
- device, err := devicedomain.DeviceRepo.Get(deviceId)
- if err != nil {
- return err
- }
- if device == nil {
- return nil
- }
-
- if device.ClientAddr != clientAddr {
- return nil
- }
- device.Status = devicedomain.DeviceOffLine
-
- err = devicedomain.DeviceRepo.Save(device)
- if err != nil {
- return err
- }
- return nil
- }
-
- // ListOnlineByUserId 获取用户所有在线设备
- func (*deviceApp) ListOnlineByUserId(ctx context.Context, userId int64) ([]*pb.Device, error) {
- return devicedomain.DeviceService.ListOnlineByUserId(ctx, userId)
- }
-
- // GetDevice 获取设备信息
- func (*deviceApp) GetDevice(ctx context.Context, deviceId int64) (*pb.Device, error) {
- device, err := devicedomain.DeviceRepo.Get(deviceId)
- if err != nil {
- return nil, err
- }
- if device == nil {
- return nil, gerrors.ErrDeviceNotExist
- }
-
- return device.ToProto(), err
- }
-
- // ServerStop connect服务停止
- func (*deviceApp) ServerStop(ctx context.Context, connAddr string) error {
- return devicedomain.DeviceService.ServerStop(ctx, connAddr)
- }
|