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);
}
}