// Controllers/ApiController.cs using ACBuildService.Filters; using Microsoft.AspNetCore.Mvc; namespace ACBuildService.Controllers; [ApiController] [Route("api")] [SignValidation] public class ApiController : NBControllerBase { #region 视频 [HttpPost("list")] public async Task List([FromForm] PageFormArgs data) { try { if (data.Page < 1) data.Page = 1; if (data.PageSize < 1) data.PageSize = 50; int totalCount = 0; var list = DB.Main.Queryable().ToPageList(data.Page, data.PageSize, ref totalCount); List retList = []; var retData = new PageListData { TotalCount = totalCount, Page = data.Page, List = retList, PageSize = data.PageSize }; foreach (var video in list) { var r = new VideoRetData { Id = video.Id, FilePath = video.FilePath, Title = video.Title, Desc = video.Desc, Like = video.Like, Message = video.Message, Share = video.Share, Collect = video.Collect, AuthorName = video.AuthorName }; retList.Add(r); } await Task.CompletedTask; return Success(retData); } catch (Exception ex) { return StatusCode(500, new { error = ex.Message }); } } [HttpPost("add")] public async Task Add([FromForm] AddFormArgs data) { VideoDownload.Add(data.Text); await Task.CompletedTask; return Success(); } [HttpPost("edit")] public async Task Edit([FromForm] EditFormArgs data) { await Task.CompletedTask; DB.Main.Updateable(new VideoTable() { Id = data.Id, Title = data.Title, Desc = data.Desc, Like = data.Like, Message = data.Message, Share = data.Share, Collect = data.Collect, AuthorName = data.AuthorName }).ExecuteCommand(); return Success(); } [HttpPost("remove")] public async Task Remove([FromForm] IdFormArgs data) { var video = await DB.Main.Queryable().FirstAsync(t => t.Id == data.Id); if (video != null) { //删除本地文件 var filePath = FileUtil.GetVideoPath(video.FilePath); if (System.IO.File.Exists(filePath)) { System.IO.File.Delete(filePath); } } await DB.Main.Deleteable().Where(it => it.Id == data.Id).ExecuteCommandAsync(); return Success(); } #endregion #region 信息统计 [HttpPost("info")] public async Task Info() { await Task.CompletedTask; var list = DB.Main.Queryable().ToList(); return Success(list); } [HttpPost("device")] public async Task Device([FromForm] DeviceFormArgs data) { var now = DateTime.Now.AddDays(-1); var device = await DB.Main.Queryable().FirstAsync(t => t.Id == data.Device); if (device == null) { device = new DeviceTable { Id = data.Device, Name = data.DeviceName, WatchId = data.Id, TotalTime = 0, TodayTime = data.Time, LastTime = now }; await DB.Main.Insertable(device).ExecuteCommandAsync(); } if (!now.IsSameDay(device.LastTime)) { device.TodayTime = data.Time; //重置今日时长 } else { device.TodayTime += data.Time; //今日时长增加 } device.WatchId = data.Id; device.TotalTime += data.Time; device.LastTime = now; await DB.Main.Updateable(device).ExecuteCommandAsync(); return Success(); } #endregion #region 配置项目 [HttpPost("cfg/list")] public async Task CfgList([FromForm] PageFormArgs data) { await Task.CompletedTask; var list = DB.Main.Queryable().ToList(); return Success(list); } [HttpPost("cfg/add")] public async Task CfgAdd([FromForm] ConfigTable data) { await DB.Main.Insertable(data).ExecuteCommandAsync(); return Success(); } [HttpPost("cfg/edit")] public async Task CfgEdit([FromForm] ConfigTable data) { await DB.Main.Updateable(data).ExecuteCommandAsync(); return Success(); } [HttpPost("cfg/remove")] public async Task CfgRemove([FromForm] KeyFormArgs data) { await DB.Main.Deleteable().Where(it => it.Key == data.Key).ExecuteCommandAsync(); return Success(); } #endregion }