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;
}
///
/// 获取指定应用的所有轮播项
///
[HttpGet]
public async Task>> GetRotatorItems(int applicationId)
{
var items = await _rotatorItemService.GetByApplicationIdAsync(applicationId);
return Ok(items);
}
///
/// 添加轮播项
///
[HttpPost]
public async Task> 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 });
}
}
///
/// 更新轮播项
///
[HttpPut("{id}")]
public async Task> 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);
}
///
/// 删除轮播项
///
[HttpDelete("{id}")]
public async Task DeleteRotatorItem(int id)
{
var success = await _rotatorItemService.DeleteAsync(id);
if (!success)
return NotFound(new { success = false, message = "轮播项不存在" });
return Ok(new { success = true, message = "删除成功" });
}
///
/// 批量更新轮播项顺序
///
[HttpPost("reorder")]
public async Task ReorderRotatorItems(int applicationId, [FromBody] List itemIds)
{
await _rotatorItemService.ReorderAsync(applicationId, itemIds);
return Ok(new { success = true, message = "顺序更新成功" });
}
}