using Infrastructure.Attribute; using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ARW.Model; using ARW.Repository; using ARW.Repository.Business.OrderManage.OrderRefunds; using ARW.Service.Api.IBusinessService.OrderManage.OrderRefunds; using ARW.Model.Dto.Api.OrderManage.OrderRefunds; using ARW.Model.Models.Business.OrderManage.OrderRefunds; using ARW.Model.Vo.Api.OrderManage.OrderRefunds; using System.Reflection.Metadata; namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds { /// /// 售后单记录表接口实现类Api /// /// @author lwh /// @date 2023-10-16 /// [AppService(ServiceType = typeof(IOrderRefundServiceApi), ServiceLifetime = LifeTime.Transient)] public class OrderRefundServiceImplApi : BaseService, IOrderRefundServiceApi { private readonly OrderRefundRepository _OrderRefundRepository; public OrderRefundServiceImplApi(OrderRefundRepository OrderRefundRepository) { this._OrderRefundRepository = OrderRefundRepository; } #region Api接口代码 /// /// 查询售后单记录表列表(Api) /// /// /// public async Task> GetOrderRefundListApi(OrderRefundQueryDtoApi parm) { //开始拼装查询条件d var predicate = Expressionable.Create(); predicate = predicate.AndIF(parm.CustomerGuid != 0, s => s.CustomerGuid == parm.CustomerGuid); predicate = predicate.AndIF(parm.RefundType != null, s => s.RefundType == parm.RefundType); predicate = predicate.AndIF(parm.RefundReason != null, s => s.RefundReason == parm.RefundReason); predicate = predicate.AndIF(parm.GoodsReceiveStatus != null, s => s.GoodsReceiveStatus == parm.GoodsReceiveStatus); predicate = predicate.AndIF(parm.MerchantAuditStatus != null, s => s.MerchantAuditStatus == parm.MerchantAuditStatus); predicate = predicate.AndIF(parm.IsCustomerSend != null, s => s.IsCustomerSend == parm.IsCustomerSend); predicate = predicate.AndIF(parm.OrderRefundStatus != null, s => s.OrderRefundStatus == parm.OrderRefundStatus); var query = _OrderRefundRepository .Queryable() .Where(predicate.ToExpression()) .OrderBy(s => s.Create_time, OrderByType.Desc) .Select(s => new OrderRefundVoApi { OrderRefundId = s.OrderRefundId, OrderRefundGuid = s.OrderRefundGuid, OrderGuid = s.OrderGuid, CustomerGuid = s.CustomerGuid, RefundType = s.RefundType, RefundReason = s.RefundReason, CustomerRefundDesc = s.CustomerRefundDesc, CustomerRefundImg = s.CustomerRefundImg, GoodsReceiveStatus = s.GoodsReceiveStatus, MerchantAuditStatus = s.MerchantAuditStatus, MerchantRefuseDesc = s.MerchantRefuseDesc, RefundMoney = s.RefundMoney, ShopRefundAddressGuid = s.ShopRefundAddressGuid, IsCustomerSend = s.IsCustomerSend, CustomerSendTime = s.CustomerSendTime, LogisticsCompanyGuid = s.LogisticsCompanyGuid, ExpressNo = s.ExpressNo, OrderRefundStatus = s.OrderRefundStatus, CustomerWaybillRemark = s.CustomerWaybillRemark, MerchantReceiveTime = s.MerchantReceiveTime }); return await query.ToPageAsync(parm); } /// /// 添加售后单记录表 /// public async Task AddOrderRefund(OrderRefund model) { model.GoodsReceiveStatus = 1; model.MerchantAuditStatus = 1; model.IsCustomerSend = 1; model.OrderRefundStatus = 1; model.IsMerchantReceive = 1; var response = await _OrderRefundRepository.InsertReturnSnowflakeIdAsync(model); return "添加成功!"; } /// /// 撤销申请 /// public async Task RepealOrderRefund(AddOrderRefundApiDto parm) { var response = await _OrderRefundRepository.UpdateAsync(f => new OrderRefund { OrderRefundStatus = 4 }, s => s.OrderRefundGuid == parm.OrderRefundGuid); return "撤销成功!"; } /// /// 买家发货(填写运单号) /// public async Task BuyerDelivery(BuyerDeliveryApiDto parm) { var response = await _OrderRefundRepository.UpdateAsync(f => new OrderRefund { LogisticsCompanyGuid = parm.LogisticsCompanyGuid, ExpressNo = parm.ExpressNo, CustomerWaybillRemark = parm.CustomerWaybillRemark, IsCustomerSend = 2, CustomerSendTime = DateTime.Now, }, s => s.OrderRefundGuid == parm.OrderRefundGuid); return "发货成功!"; } /// /// 查询售后单记录表详情(Api) /// /// /// public async Task GetOrderRefundDetails(OrderRefundDtoApi parm) { var query = _OrderRefundRepository .Queryable() .Where(s => s.OrderRefundGuid == parm.OrderRefundGuid) .Select(s => new OrderRefundApiDetailsVo { OrderRefundId = s.OrderRefundId, OrderRefundGuid = s.OrderRefundGuid, OrderGuid = s.OrderGuid, CustomerGuid = s.CustomerGuid, RefundType = s.RefundType, RefundReason = s.RefundReason, CustomerRefundDesc = s.CustomerRefundDesc, CustomerRefundImg = s.CustomerRefundImg, GoodsReceiveStatus = s.GoodsReceiveStatus, MerchantAuditStatus = s.MerchantAuditStatus, MerchantRefuseDesc = s.MerchantRefuseDesc, RefundMoney = s.RefundMoney, ShopRefundAddressGuid = s.ShopRefundAddressGuid, IsCustomerSend = s.IsCustomerSend, CustomerSendTime = s.CustomerSendTime, LogisticsCompanyGuid = s.LogisticsCompanyGuid, ExpressNo = s.ExpressNo, OrderRefundStatus = s.OrderRefundStatus, }).Take(1); return await query.ToJsonAsync(); } #endregion } }