Files
BabyVideoService/Http/Page/ApiController.cs
2026-02-08 17:09:34 +08:00

193 lines
5.1 KiB
C#

// 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<IActionResult> 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<VideoTable>().ToPageList(data.Page, data.PageSize, ref totalCount);
List<VideoRetData> retList = [];
var retData = new PageListData<VideoRetData>
{
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<IActionResult> Add([FromForm] AddFormArgs data)
{
VideoDownload.Add(data.Text);
await Task.CompletedTask;
return Success();
}
[HttpPost("edit")]
public async Task<IActionResult> 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<IActionResult> Remove([FromForm] IdFormArgs data)
{
var video = await DB.Main.Queryable<VideoTable>().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<VideoTable>().Where(it => it.Id == data.Id).ExecuteCommandAsync();
return Success();
}
#endregion
#region
[HttpPost("info")]
public async Task<IActionResult> Info()
{
await Task.CompletedTask;
var list = DB.Main.Queryable<DeviceTable>().ToList();
return Success(list);
}
[HttpPost("device")]
public async Task<IActionResult> Device([FromForm] DeviceFormArgs data)
{
var now = DateTime.Now.AddDays(-1);
var device = await DB.Main.Queryable<DeviceTable>().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<IActionResult> CfgList([FromForm] PageFormArgs data)
{
await Task.CompletedTask;
var list = DB.Main.Queryable<ConfigTable>().ToList();
return Success(list);
}
[HttpPost("cfg/add")]
public async Task<IActionResult> CfgAdd([FromForm] ConfigTable data)
{
await DB.Main.Insertable(data).ExecuteCommandAsync();
return Success();
}
[HttpPost("cfg/edit")]
public async Task<IActionResult> CfgEdit([FromForm] ConfigTable data)
{
await DB.Main.Updateable(data).ExecuteCommandAsync();
return Success();
}
[HttpPost("cfg/remove")]
public async Task<IActionResult> CfgRemove([FromForm] KeyFormArgs data)
{
await DB.Main.Deleteable<ConfigTable>().Where(it => it.Key == data.Key).ExecuteCommandAsync();
return Success();
}
#endregion
}