MediaModel.cs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. using AI.Platform.Core;
  2. using AI.Platform.Core.Entity.Media;
  3. using AI.Platform.Page.Pages.Site.Model;
  4. using Dm.util;
  5. using Microsoft.AspNetCore.Components;
  6. using SqlSugar;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.ComponentModel.DataAnnotations;
  10. using System.Text;
  11. using System.Text.Json;
  12. namespace AI.Platform.Page.Pages.Media.Model
  13. {
  14. public class MediaModel
  15. {
  16. }
  17. /// <summary>
  18. /// 用于新增/修改广告时传递弹窗数据
  19. /// </summary>
  20. public class MediaDialogModel: IValidatableObject
  21. {
  22. /// <summary>
  23. /// 表id
  24. /// </summary>
  25. public long? Id { get; set; }
  26. /// <summary>
  27. /// 弹窗类型:1:新增;2:编辑;3:删除
  28. /// </summary>
  29. public int Type { get; set; }
  30. /// <summary>
  31. /// 集团ID
  32. /// </summary>
  33. public long GroupID { get; set; }
  34. /// <summary>
  35. /// 站点ID
  36. /// </summary>
  37. [Required(ErrorMessage = "请绑定油站")]
  38. public long BusinessUnitID { get; set; }
  39. /// <summary>
  40. /// 文件名
  41. /// </summary>
  42. [Required(ErrorMessage = "请上传广告以获取文件名")]
  43. public string FileName { set; get; }
  44. /// <summary>
  45. /// 文件后缀
  46. /// </summary>
  47. public string FileExtension { set; get; }
  48. /// <summary>
  49. /// guid文件名
  50. /// </summary>
  51. public string GuidFileName { set; get; }
  52. /// <summary>
  53. /// 保存到服务器的地址
  54. /// </summary>
  55. public string SavePath { set; get; }
  56. /// <summary>
  57. /// 文件开始播放时间
  58. /// </summary>
  59. [Required(ErrorMessage = "请设置广告播放时段")]
  60. public int? StartTime { set; get; }
  61. /// <summary>
  62. /// 文件结束播放时间
  63. /// </summary>
  64. [Required(ErrorMessage = "请设置广告播放时段")]
  65. public int? EndTime { set; get; }
  66. /// <summary>
  67. /// 文件生效时间
  68. /// </summary>
  69. [Required(ErrorMessage = "请设置广告策略有效时间段")]
  70. public DateTime? EffecitiveTime { set; get; }
  71. /// <summary>
  72. /// 文件失效时间
  73. /// </summary>
  74. public DateTime? FailureTime { set; get; }
  75. /// <summary>
  76. /// 文件油机状态
  77. /// </summary>
  78. [Required(ErrorMessage = "请选择播放该广告的油机状态")]
  79. public List<string> MachineStateList { set; get; } = new List<string>();
  80. /// <summary>
  81. /// 文件广告状态 0:禁用;1:可用
  82. /// </summary>
  83. [Required(ErrorMessage = "请设置广告状态")]
  84. public int MediaState { set; get; }
  85. /// <summary>
  86. /// 文件上传人
  87. /// </summary>
  88. public string MediaUploader { set; get; } = Global.CurrentUser.NickName;
  89. /// <summary>
  90. /// 备注
  91. /// </summary>
  92. public string Remark { set; get; }
  93. /// <summary>
  94. /// 可选择站点
  95. /// </summary>
  96. public List<SiteInfo> siteInfos { set; get; }
  97. public MediaEntity ToCompany()
  98. {
  99. var media = new MediaEntity()
  100. {
  101. LocalPath = SavePath,
  102. GroupId = this.GroupID,
  103. BusinessUnitId = this.BusinessUnitID,
  104. FileName = FileName,
  105. FileExtension = this.FileExtension,
  106. GuidFileName = this.GuidFileName,
  107. StartTime = this.StartTime ?? 0,
  108. EndTime = this.EndTime ?? 0,
  109. EffectiveTime = this.EffecitiveTime ?? DateTime.Now,
  110. FailureTime = this.FailureTime ?? DateTime.Now,
  111. MachineState = JsonSerializer.Serialize(getMachineStateList()),
  112. MediaState = this.MediaState,
  113. Uploader = this.MediaUploader ?? "",
  114. CreateTime = DateTime.Now,
  115. EditTime = DateTime.Now,
  116. Remark = this.Remark
  117. };
  118. if(this.Id != null) media.Id = (long)Id;
  119. return media;
  120. }
  121. /// <summary>
  122. /// 获取油机状态列表,为空则返回所有状态
  123. /// </summary>
  124. /// <returns></returns>
  125. public List<string> getMachineStateList()
  126. {
  127. if (MachineStateList.IsNullOrEmpty())
  128. {
  129. return getAllMachineStateList();
  130. }
  131. return MachineStateList;
  132. }
  133. /// <summary>
  134. /// 获取所有油枪状态
  135. /// </summary>
  136. /// <returns></returns>
  137. public List<string> getAllMachineStateList()
  138. {
  139. return new List<string>
  140. {
  141. "idle","lock","offline","lift","authorised","start","fueling"
  142. };
  143. }
  144. public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
  145. {
  146. if (MachineStateList.IsNullOrEmpty())
  147. {
  148. yield return new ValidationResult("请选择播放该广告的油机状态", new[] { nameof(MachineStateList) });
  149. }
  150. //if(MediaState == -1)
  151. //{
  152. // yield return new ValidationResult("请设置广告状态", new[] { nameof(MediaState) });
  153. //}
  154. if (BusinessUnitID <= 0)
  155. {
  156. yield return new ValidationResult("请选择下发油站", new[] { nameof(BusinessUnitID) });
  157. }
  158. }
  159. }
  160. /// <summary>
  161. /// 用于显示广告列表数据
  162. /// </summary>
  163. public class MediaInfoModel
  164. {
  165. /// <summary>
  166. /// 表id
  167. /// </summary>
  168. public long? Id { get; set; }
  169. /// <summary>
  170. /// 集团ID
  171. /// </summary>
  172. public long GroupID { get; set; }
  173. /// <summary>
  174. /// 站点ID
  175. /// </summary>
  176. public long BusinessUnitID { get; set; }
  177. /// <summary>
  178. /// 站名
  179. /// </summary>
  180. public string SiteName { set; get; }
  181. /// <summary>
  182. /// 文件名
  183. /// </summary>
  184. public string FileName { set; get; }
  185. /// <summary>
  186. /// 文件后缀
  187. /// </summary>
  188. public string FileExtension { set; get; }
  189. /// <summary>
  190. /// guid文件名
  191. /// </summary>
  192. public string GuidFileName { set; get; }
  193. /// <summary>
  194. /// 保存到服务器的地址
  195. /// </summary>
  196. public string SavePath { set; get; }
  197. /// <summary>
  198. /// 文件开始播放时间
  199. /// </summary>
  200. public int? StartTime { set; get; }
  201. /// <summary>
  202. /// 文件结束播放时间
  203. /// </summary>
  204. public int? EndTime { set; get; }
  205. /// <summary>
  206. /// 文件生效时间
  207. /// </summary>
  208. public DateTime EffecitiveTime { set; get; }
  209. /// <summary>
  210. /// 文件失效时间
  211. /// </summary>
  212. public DateTime FailureTime { set; get; }
  213. /// <summary>
  214. /// 修改时间
  215. /// </summary>
  216. public DateTime? EditTime { set; get; }
  217. /// <summary>
  218. /// 文件油机状态
  219. /// </summary>
  220. public string MachineStateList { set; get; }
  221. /// <summary>
  222. /// 文件广告状态 0:禁用;1:可用
  223. /// </summary>
  224. public int MediaState { set; get; }
  225. /// <summary>
  226. /// 文件上传人
  227. /// </summary>
  228. public string MediaUploader { set; get; } = Global.CurrentUser.NickName;
  229. /// <summary>
  230. /// 备注
  231. /// </summary>
  232. public string Remark { set; get; }
  233. public MediaType getType()
  234. {
  235. if(".mp4".equals(FileExtension) || ".MP4".equals(FileExtension))
  236. {
  237. return MediaType.VIDEO;
  238. } else
  239. {
  240. return MediaType.IMAGE;
  241. }
  242. }
  243. }
  244. public enum MediaType
  245. {
  246. VIDEO,IMAGE
  247. }
  248. /// <summary>
  249. /// 用于预览窗口
  250. /// </summary>
  251. public class PreviewInfo
  252. {
  253. /// <summary>
  254. /// 1:视频;2:图片
  255. /// </summary>
  256. public MediaType Type { set; get; }
  257. /// <summary>
  258. /// 地址
  259. /// </summary>
  260. public string Path { set; get; }
  261. }
  262. }