using Admin.NET.Plugin.AiDOP.Dto; using Admin.NET.Plugin.AiDOP.Entity; using Admin.NET.Plugin.AiDOP.Infrastructure; namespace Admin.NET.Plugin.AiDOP.Controllers; /// /// 与 Gitee Ai-DOP Demo 的 api/Order 路由保持一致,便于前端与脚本迁移。 /// [ApiController] [Route("api/[controller]")] [AllowAnonymous] [NonUnify] public class OrderController : ControllerBase { private readonly SqlSugarRepository _orderRep; public OrderController(SqlSugarRepository orderRep) { _orderRep = orderRep; } [HttpGet] public async Task GetOrders([FromQuery] OrderQueryDto query) { (query.Page, query.PageSize) = PagingGuard.Normalize(query.Page, query.PageSize); var q = _orderRep.AsQueryable(); if (!string.IsNullOrWhiteSpace(query.OrderNo)) q = q.Where(x => x.OrderNo.Contains(query.OrderNo)); if (!string.IsNullOrWhiteSpace(query.CustomerName)) q = q.Where(x => x.CustomerName.Contains(query.CustomerName)); if (!string.IsNullOrWhiteSpace(query.Status)) q = q.Where(x => x.Status == query.Status); var total = await q.CountAsync(); var list = await q .OrderByDescending(x => x.CreatedTime) .Skip((query.Page - 1) * query.PageSize) .Take(query.PageSize) .ToListAsync(); return Ok(new { total, page = query.Page, pageSize = query.PageSize, list = list.Select(x => new OrderDetailDto { Id = x.Id, OrderNo = x.OrderNo, CustomerName = x.CustomerName, Product = x.Product, Quantity = x.Quantity, UnitPrice = x.UnitPrice, Amount = x.Amount, Status = x.Status, DeliveryDate = x.DeliveryDate, Remark = x.Remark, CreatedTime = x.CreatedTime, UpdatedTime = x.UpdatedTime, CreatedBy = x.CreatedBy }).ToList() }); } [HttpGet("{id:long}")] public async Task GetOrder(long id) { var item = await _orderRep.GetByIdAsync(id); if (item == null) return NotFound(); return Ok(new OrderDetailDto { Id = item.Id, OrderNo = item.OrderNo, CustomerName = item.CustomerName, Product = item.Product, Quantity = item.Quantity, UnitPrice = item.UnitPrice, Amount = item.Amount, Status = item.Status, DeliveryDate = item.DeliveryDate, Remark = item.Remark, CreatedTime = item.CreatedTime, UpdatedTime = item.UpdatedTime, CreatedBy = item.CreatedBy }); } [HttpPost] public async Task CreateOrder([FromBody] OrderCreateDto dto) { var item = new AdoOrder { OrderNo = $"SO{DateTime.Now:yyyyMMddHHmmss}{Random.Shared.Next(1000, 9999)}", CustomerName = dto.CustomerName, Product = dto.Product, Quantity = dto.Quantity, UnitPrice = dto.UnitPrice, Amount = dto.Quantity * dto.UnitPrice, DeliveryDate = dto.DeliveryDate, Remark = dto.Remark, Status = "待处理", CreatedTime = DateTime.Now }; await _orderRep.AsInsertable(item).ExecuteReturnEntityAsync(); return Ok(new { id = item.Id, message = "创建成功" }); } [HttpPut("{id:long}")] public async Task UpdateOrder(long id, [FromBody] OrderUpdateDto dto) { var item = await _orderRep.GetByIdAsync(id); if (item == null) return NotFound(); item.CustomerName = dto.CustomerName; item.Product = dto.Product; item.Quantity = dto.Quantity; item.UnitPrice = dto.UnitPrice; item.Amount = dto.Quantity * dto.UnitPrice; item.DeliveryDate = dto.DeliveryDate; item.Remark = dto.Remark; item.Status = dto.Status; item.UpdatedTime = DateTime.Now; await _orderRep.AsUpdateable(item).ExecuteCommandAsync(); return Ok(new { message = "更新成功" }); } [HttpDelete("{id:long}")] public async Task DeleteOrder(long id) { var item = await _orderRep.GetByIdAsync(id); if (item == null) return NotFound(); await _orderRep.DeleteAsync(item); return Ok(new { message = "删除成功" }); } }