修正命名错误
xiyunfei authored at 2023-04-09 21:10:58
2.62 KiB
NewLife.JT808
using JT808.Data;
using NewLife;
using NewLife.JT808.Models;
using NewLife.JT808.Protocols;
using NewLife.Log;

namespace JT808.Server.Handlers;

/// <summary>多媒体消息处理器(多媒体事件/存储检索)</summary>
public class MediaController
{
    [MessageKind(MessageKinds.多媒体事件信息上传)]
    public Object OnMediaEvent(JT808Session session, JTMessage message)
    {
        var model = message.ReadModel<T0800>();
        XTrace.WriteLine("多媒体事件:Mobile={0}, MultimediaType={1}, Format={2}",
            message.Mobile, model.MultimediaType, model.MultimediaCodingFormat);

        var device = Device.FindByMobile(message.Mobile);
        if (device != null)
        {
            var media = new MediaInfo
            {
                DeviceId = device.Id,
                Mobile = message.Mobile,
                MediaType = model.MultimediaType,
                Format = model.MultimediaCodingFormat,
                CreateTime = DateTime.Now,
            };
            _ = Task.Run(() => media.InsertAsync());
        }

        return null;
    }

    [MessageKind(MessageKinds.多媒体数据上传)]
    public Object OnMediaUpload(JT808Session session, JTMessage message)
    {
        var model = message.ReadModel<T0801>();
        XTrace.WriteLine("多媒体数据上传:Mobile={0}, MediaId={1}, Type={2}, Size={3}",
            message.Mobile, model.MultimediaId, model.MultimediaType, model.MultimediaDataPackage?.Length);

        var device = Device.FindByMobile(message.Mobile);
        if (device != null)
        {
            // 保存媒体信息
            var media = new MediaInfo
            {
                DeviceId = device.Id,
                Mobile = message.Mobile,
                MediaType = model.MultimediaType,
                Format = model.MultimediaCodingFormat,
                FileSize = model.MultimediaDataPackage?.Length ?? 0,
                CreateTime = DateTime.Now,
            };
            _ = Task.Run(() => media.InsertAsync());

            // 媒体记录
            var record = new MediaRecord
            {
                DeviceId = device.Id,
                Mobile = message.Mobile,
                MediaId = model.MultimediaId,
                Status = 1, // 已完成
                CreateTime = DateTime.Now,
            };
            _ = Task.Run(() => record.InsertAsync());
        }

        return null;
    }

    [MessageKind(MessageKinds.存储多媒体数据检索)]
    public Object OnMediaRetrieval(JT808Session session, JTMessage message)
    {
        XTrace.WriteLine("存储多媒体检索:Mobile={0}", message.Mobile);
        return null;
    }
}