86 lines
2.8 KiB
C#
86 lines
2.8 KiB
C#
|
|
using DRS9.Dashboard.Application.DTOs;
|
||
|
|
using DRS9.Dashboard.Application.Services;
|
||
|
|
using Microsoft.AspNetCore.Mvc;
|
||
|
|
|
||
|
|
namespace DRS9.Dashboard.Server.Controllers;
|
||
|
|
|
||
|
|
[ApiController]
|
||
|
|
[Route("api/admin/applications/{applicationId}/rotator-items")]
|
||
|
|
// [Authorize] - 暂时禁用认证以便测试
|
||
|
|
public class RotatorItemsController : ControllerBase
|
||
|
|
{
|
||
|
|
private readonly RotatorItemService _rotatorItemService;
|
||
|
|
|
||
|
|
public RotatorItemsController(RotatorItemService rotatorItemService)
|
||
|
|
{
|
||
|
|
_rotatorItemService = rotatorItemService;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 获取指定应用的所有轮播项
|
||
|
|
/// </summary>
|
||
|
|
[HttpGet]
|
||
|
|
public async Task<ActionResult<List<RotatorItemDto>>> GetRotatorItems(int applicationId)
|
||
|
|
{
|
||
|
|
var items = await _rotatorItemService.GetByApplicationIdAsync(applicationId);
|
||
|
|
return Ok(items);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 添加轮播项
|
||
|
|
/// </summary>
|
||
|
|
[HttpPost]
|
||
|
|
public async Task<ActionResult<RotatorItemDto>> CreateRotatorItem(int applicationId, [FromBody] RotatorItemCreateRequest request)
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
var item = await _rotatorItemService.CreateAsync(applicationId, request);
|
||
|
|
if (item == null)
|
||
|
|
return BadRequest(new { success = false, message = "应用不存在或类型不是轮播" });
|
||
|
|
return Ok(item);
|
||
|
|
}
|
||
|
|
catch (InvalidOperationException ex)
|
||
|
|
{
|
||
|
|
return BadRequest(new { success = false, message = ex.Message });
|
||
|
|
}
|
||
|
|
catch (Exception ex)
|
||
|
|
{
|
||
|
|
return BadRequest(new { success = false, message = ex.Message + " | " + ex.StackTrace });
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 更新轮播项
|
||
|
|
/// </summary>
|
||
|
|
[HttpPut("{id}")]
|
||
|
|
public async Task<ActionResult<RotatorItemDto>> UpdateRotatorItem(int id, [FromBody] RotatorItemUpdateRequest request)
|
||
|
|
{
|
||
|
|
var item = await _rotatorItemService.UpdateAsync(id, request);
|
||
|
|
if (item == null)
|
||
|
|
return NotFound(new { success = false, message = "轮播项不存在" });
|
||
|
|
return Ok(item);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 删除轮播项
|
||
|
|
/// </summary>
|
||
|
|
[HttpDelete("{id}")]
|
||
|
|
public async Task<ActionResult> DeleteRotatorItem(int id)
|
||
|
|
{
|
||
|
|
var success = await _rotatorItemService.DeleteAsync(id);
|
||
|
|
if (!success)
|
||
|
|
return NotFound(new { success = false, message = "轮播项不存在" });
|
||
|
|
return Ok(new { success = true, message = "删除成功" });
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 批量更新轮播项顺序
|
||
|
|
/// </summary>
|
||
|
|
[HttpPost("reorder")]
|
||
|
|
public async Task<ActionResult> ReorderRotatorItems(int applicationId, [FromBody] List<int> itemIds)
|
||
|
|
{
|
||
|
|
await _rotatorItemService.ReorderAsync(applicationId, itemIds);
|
||
|
|
return Ok(new { success = true, message = "顺序更新成功" });
|
||
|
|
}
|
||
|
|
}
|