using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using KonSoft.Admin.Dtos; using KonSoft.Admin.Entities; using KonSoft.Admin.IApplicationServices; using KonSoft.Admin.IRepositories; using KonSoft.Admin.ValueObjects; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace KonSoft.Admin.ApplicationServices; public class OrderAppService(IOrderRepository orderRepository) : ApplicationService, IOrderAppService { private readonly IOrderRepository _orderRepository = orderRepository; /// /// 分配师傅 /// /// /// /// /// public async Task AssignAsync(Guid orderId, Guid workerId) { var order = await _orderRepository.GetAsync(o => o.Id == orderId); order.AssignWorker(workerId); } /// /// 取消订单 /// /// /// /// /// public async Task CancelAsync(Guid orderId, string reason) { var order = await _orderRepository.GetAsync(o => o.Id == orderId); order.Cancel(reason); } /// /// 完成订单 /// /// /// /// public async Task CompleteServiceAsync(Guid orderId) { var order = await _orderRepository.GetAsync(o => o.Id == orderId); order.CompleteService(); } /// /// 确认订单 /// /// /// /// public async Task ConfirmAsync(Guid orderId) { var order = await _orderRepository.GetAsync(o => o.Id == orderId); order.ConfirmCompletion(); } /// /// 创建订单 /// /// /// /// public async Task CreateAsync(CreateOrderDto input) { // 生成订单号 TODO var orderSN = "SN001"; var address = ObjectMapper.Map(input.Address); var order = new Order(input.CustomerId, input.ServiceCategoryId, input.ServiceTime, input.Amount, address, input.Remark); await _orderRepository.InsertAsync(order); return ObjectMapper.Map(order); } /// /// 根据订单ID删除订单 /// /// 订单ID public async Task DeleteAsync(params Guid[] ids) { // 根据ID删除订单 await _orderRepository.DeleteAsync(x => ids.Contains(x.Id)); } /// /// 修改订单信息 /// /// 订单DTO对象 /// s public async Task EditAsync(OrderDto input) { // 根据ID查询订单,如果不存在则抛出异常【修改前端必然看到了,数据若查不到提示自定义异常信息】 var order = await _orderRepository.FindAsync(o => o.Id == input.Id) ?? throw new BusinessException("订单找不到").WithData("Id", input.Id); // 将输入的DTO字段映射到订单实体 ObjectMapper.Map(input, order); // 更新订单 await _orderRepository.UpdateAsync(order); } /// /// 支付 /// /// /// /// /// public Task PayAsync(Guid orderId, PayOrderDto input) { throw new NotImplementedException(); } /// /// 开始订单 /// /// /// /// public async Task StartServiceAsync(Guid orderId) { var order = await _orderRepository.GetAsync(o => o.Id == orderId); order.StartService(); } /// /// 根据订单ID获取单个订单 /// public async Task GetAsync(Guid id) { // 根据ID从数据库查询订单 var order = await _orderRepository.GetAsync(o => o.Id == id); // 转换为OrderDto返回 return ObjectMapper.Map(order); } /// /// 获取所有订单列表 /// public async Task> GetListAsync(PagedResultRequestDto input) { // 查询所有订单 var orders = await _orderRepository.GetPagedListAsync(input.SkipCount, input.MaxResultCount, "Id"); var totalCount = await _orderRepository.CountAsync(); var orderDtos = ObjectMapper.Map, List>(orders); return new PagedResultDto(totalCount, orderDtos); } }