using AI.Platform.Core; using AI.Platform.Core.Entity.Media; using AI.Platform.Page.Pages.Site.Model; using Dm.util; using Microsoft.AspNetCore.Components; using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text; using System.Text.Json; namespace AI.Platform.Page.Pages.Media.Model { public class MediaModel { } /// /// 用于新增/修改广告时传递弹窗数据 /// public class MediaDialogModel: IValidatableObject { /// /// 表id /// public long? Id { get; set; } /// /// 弹窗类型:1:新增;2:编辑;3:删除 /// public int Type { get; set; } /// /// 集团ID /// public long GroupID { get; set; } /// /// 站点ID /// [Required(ErrorMessage = "请绑定油站")] public long BusinessUnitID { get; set; } /// /// 文件名 /// [Required(ErrorMessage = "请上传广告以获取文件名")] public string FileName { set; get; } /// /// 文件后缀 /// public string FileExtension { set; get; } /// /// guid文件名 /// public string GuidFileName { set; get; } /// /// 保存到服务器的地址 /// public string SavePath { set; get; } /// /// 文件开始播放时间 /// [Required(ErrorMessage = "请设置广告播放时段")] public int? StartTime { set; get; } /// /// 文件结束播放时间 /// [Required(ErrorMessage = "请设置广告播放时段")] public int? EndTime { set; get; } /// /// 文件生效时间 /// [Required(ErrorMessage = "请设置广告策略有效时间段")] public DateTime? EffecitiveTime { set; get; } /// /// 文件失效时间 /// public DateTime? FailureTime { set; get; } /// /// 文件油机状态 /// [Required(ErrorMessage = "请选择播放该广告的油机状态")] public List MachineStateList { set; get; } = new List(); /// /// 文件广告状态 0:禁用;1:可用 /// [Required(ErrorMessage = "请设置广告状态")] public int MediaState { set; get; } /// /// 文件上传人 /// public string MediaUploader { set; get; } = Global.CurrentUser.NickName; /// /// 备注 /// public string Remark { set; get; } /// /// 可选择站点 /// public List siteInfos { set; get; } public MediaEntity ToCompany() { var media = new MediaEntity() { LocalPath = SavePath, GroupId = this.GroupID, BusinessUnitId = this.BusinessUnitID, FileName = FileName, FileExtension = this.FileExtension, GuidFileName = this.GuidFileName, StartTime = this.StartTime ?? 0, EndTime = this.EndTime ?? 0, EffectiveTime = this.EffecitiveTime ?? DateTime.Now, FailureTime = this.FailureTime ?? DateTime.Now, MachineState = JsonSerializer.Serialize(getMachineStateList()), MediaState = this.MediaState, Uploader = this.MediaUploader ?? "", CreateTime = DateTime.Now, EditTime = DateTime.Now, Remark = this.Remark }; if(this.Id != null) media.Id = (long)Id; return media; } /// /// 获取油机状态列表,为空则返回所有状态 /// /// public List getMachineStateList() { if (MachineStateList.IsNullOrEmpty()) { return getAllMachineStateList(); } return MachineStateList; } /// /// 获取所有油枪状态 /// /// public List getAllMachineStateList() { return new List { "idle","lock","offline","lift","authorised","start","fueling" }; } public IEnumerable Validate(ValidationContext validationContext) { if (MachineStateList.IsNullOrEmpty()) { yield return new ValidationResult("请选择播放该广告的油机状态", new[] { nameof(MachineStateList) }); } //if(MediaState == -1) //{ // yield return new ValidationResult("请设置广告状态", new[] { nameof(MediaState) }); //} if (BusinessUnitID <= 0) { yield return new ValidationResult("请选择下发油站", new[] { nameof(BusinessUnitID) }); } } } /// /// 用于显示广告列表数据 /// public class MediaInfoModel { /// /// 表id /// public long? Id { get; set; } /// /// 集团ID /// public long GroupID { get; set; } /// /// 站点ID /// public long BusinessUnitID { get; set; } /// /// 站名 /// public string SiteName { set; get; } /// /// 文件名 /// public string FileName { set; get; } /// /// 文件后缀 /// public string FileExtension { set; get; } /// /// guid文件名 /// public string GuidFileName { set; get; } /// /// 保存到服务器的地址 /// public string SavePath { set; get; } /// /// 文件开始播放时间 /// public int? StartTime { set; get; } /// /// 文件结束播放时间 /// public int? EndTime { set; get; } /// /// 文件生效时间 /// public DateTime EffecitiveTime { set; get; } /// /// 文件失效时间 /// public DateTime FailureTime { set; get; } /// /// 修改时间 /// public DateTime? EditTime { set; get; } /// /// 文件油机状态 /// public string MachineStateList { set; get; } /// /// 文件广告状态 0:禁用;1:可用 /// public int MediaState { set; get; } /// /// 文件上传人 /// public string MediaUploader { set; get; } = Global.CurrentUser.NickName; /// /// 备注 /// public string Remark { set; get; } public MediaType getType() { if(".mp4".equals(FileExtension) || ".MP4".equals(FileExtension)) { return MediaType.VIDEO; } else { return MediaType.IMAGE; } } } public enum MediaType { VIDEO,IMAGE } /// /// 用于预览窗口 /// public class PreviewInfo { /// /// 1:视频;2:图片 /// public MediaType Type { set; get; } /// /// 地址 /// public string Path { set; get; } } }