From a9ec7f534996abc38034914d464f24d38da34b5a Mon Sep 17 00:00:00 2001 From: "AERWEN\\26795" <123456789a> Date: Fri, 20 Oct 2023 22:57:53 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrderRefunds/OrderRefundApiVo.cs | 108 ++++---------- .../OrderRefunds/OrderRefundGood.cs | 63 ++++++++ .../OrderRefunds/OrderRefundServiceApi.cs | 136 ++++++++++++++++-- .../OrderManage/Orders/IOrderServiceApi.cs | 8 ++ 4 files changed, 216 insertions(+), 99 deletions(-) create mode 100644 ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundGood.cs diff --git a/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs b/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs index 0c702dd..fa4cd9b 100644 --- a/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs +++ b/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs @@ -1,7 +1,9 @@ +using ARW.Model.Vo.Api.OrderManage.Orders; using Newtonsoft.Json; using OfficeOpenXml.Attributes; using SqlSugar; using System; +using System.Collections.Generic; namespace ARW.Model.Vo.Api.OrderManage.OrderRefunds { @@ -13,20 +15,15 @@ namespace ARW.Model.Vo.Api.OrderManage.OrderRefunds /// public class OrderRefundVoApi { - - /// /// 描述 : /// - [EpplusIgnore] public int OrderRefundId { get; set; } - /// /// 描述 : /// [JsonConverter(typeof(ValueToStringConverter))] - [EpplusIgnore] public long OrderRefundGuid { get; set; } @@ -34,134 +31,77 @@ namespace ARW.Model.Vo.Api.OrderManage.OrderRefunds /// 描述 :订单guid /// [JsonConverter(typeof(ValueToStringConverter))] - [EpplusTableColumn(Header = "订单guid")] public long OrderGuid { get; set; } /// - /// 描述 :客户guid + /// 店铺名称 /// - [JsonConverter(typeof(ValueToStringConverter))] - [EpplusTableColumn(Header = "客户guid")] - public long CustomerGuid { get; set; } + public string StoreName { get; set; } + + + public List OrderRefundGoodList { get; set; } /// /// 描述 :售后类型(1退货退款 2退货(无需退款) 3换货) /// - [EpplusTableColumn(Header = "售后类型(1退货退款 2退货(无需退款) 3换货)")] public int RefundType { get; set; } /// - /// 描述 :客户退货原因 + /// 描述 : 申请退款金额 /// - [EpplusTableColumn(Header = "客户退货原因")] - public int RefundReason { get; set; } - - - /// - /// 描述 :客户退款说明 - /// - [EpplusIgnore] - public string CustomerRefundDesc { get; set; } - - - /// - /// 描述 :客户退款凭证 - /// - [EpplusIgnore] - public string CustomerRefundImg { get; set; } - - - /// - /// 描述 :商品收货状态(1未收到货 2已收到货) - /// - [EpplusTableColumn(Header = "商品收货状态(1未收到货 2已收到货)")] - public int GoodsReceiveStatus { get; set; } + public decimal RefundRequestAmount { get; set; } /// /// 描述 :商家审核状态(1待审核 2已同意 3已拒绝) /// - [EpplusTableColumn(Header = "商家审核状态(1待审核 2已同意 3已拒绝)")] public int MerchantAuditStatus { get; set; } - /// - /// 描述 :商家拒绝原因(说明) - /// - [EpplusIgnore] - public string MerchantRefuseDesc { get; set; } - - /// /// 描述 :实际退款金额 /// - [EpplusTableColumn(Header = "实际退款金额")] public decimal RefundMoney { get; set; } /// - /// 描述 :商家退货地址guid + /// 售后订单状态描述 /// - [JsonConverter(typeof(ValueToStringConverter))] - [EpplusIgnore] - public long? ShopRefundAddressGuid { get; set; } + public string EserRightsStatusDesc { get; set; } + + + /// + /// 状态(1待审核 2已审核 3已发货 4已完成 ) + /// + public int Status { get; set; } + /// /// 描述 :用户是否发货(1未发货 2已发货) /// - [EpplusTableColumn(Header = "用户是否发货(1未发货 2已发货)")] public int IsCustomerSend { get; set; } - - - /// - /// 描述 :客户发货时间 - /// - [EpplusIgnore] - public DateTime? CustomerSendTime { get; set; } - - - /// - /// 描述 :客户发货物流公司guid - /// - [JsonConverter(typeof(ValueToStringConverter))] - [EpplusIgnore] - public long? LogisticsCompanyGuid { get; set; } - - - /// - /// 描述 :客户发货物流单号 - /// - [EpplusIgnore] - public string ExpressNo { get; set; } - + /// /// 描述 :售后单状态(1进行中 2已拒绝 3已完成 4已取消) /// - [EpplusTableColumn(Header = "售后单状态(1进行中 2已拒绝 3已完成 4已取消)")] public int OrderRefundStatus { get; set; } /// - /// 描述 :客户发货备注 - /// 空值 : true + /// 商家是否收货(1未收货 2已收货) /// - [EpplusTableColumn(Header = "客户发货备注")] - public string CustomerWaybillRemark { get; set; } + public int IsMerchantReceive { get; set; } - /// - /// 商家收货时间 - /// - public DateTime? MerchantReceiveTime { get; set; } } - - - /// + + + /// /// 售后单记录表详情展示对象Api /// public class OrderRefundApiDetailsVo diff --git a/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundGood.cs b/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundGood.cs new file mode 100644 index 0000000..3227909 --- /dev/null +++ b/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundGood.cs @@ -0,0 +1,63 @@ +using Newtonsoft.Json; +using OfficeOpenXml.Attributes; +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace ARW.Model.Vo.Api.OrderManage.Orders +{ + /// + /// 售后订单商品展示对象Api + /// + /// @author lwh + /// @date 2023-10-14 + /// + public class OrderRefundGood + { + /// + /// 描述 : 商品guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + public long GoodsGuId { get; set; } + + + /// + /// 描述 :封面 + /// + public string Thumb { get; set; } + + + /// + /// 描述 :商品名称 + /// + public string Title { get; set; } + + + /// + /// 描述 :商品skuId + /// + public int? SkuId { get; set; } + + + /// + /// 描述 : 商品规格 + /// + public List Specifications { get; set; } + + + /// + /// 商品价格 + /// + public decimal Price { get; set; } + + + /// + /// 购买数量 + /// + public int BuyQuantity { get; set; } + + } + + + +} diff --git a/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs b/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs index f4d0401..4068a2e 100644 --- a/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs +++ b/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs @@ -14,6 +14,17 @@ 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; +using ARW.Model.Models.Business.ShopManager.Shops; +using ARW.Model.Vo.Api.OrderManage.Orders; +using ARW.Repository.Business.OrderManage.Orders; +using ARW.Repository.Business.OrderManage.OrderGoodss; +using ARW.Repository.Business.GoodsManager.Goodss; +using ARW.Repository.Business.GoodsManager.GoodsSpecs.GoodsSkus; +using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.GoodsSkus; +using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.SpecValues; +using ARW.Repository.Business.GoodsManager.GoodsSpecs.SpecValues; +using ARW.Service.Api.IBusinessService.OrderManage.Orders; +using OfficeOpenXml; namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds { @@ -27,10 +38,19 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds public class OrderRefundServiceImplApi : BaseService, IOrderRefundServiceApi { private readonly OrderRefundRepository _OrderRefundRepository; + private readonly OrderRepository _OrderRepository; + private readonly OrderGoodsRepository _OrderGoodsRepository; + private readonly GoodsRepository _GoodsRepository; + private readonly IOrderServiceApi _OrderServiceApi; - public OrderRefundServiceImplApi(OrderRefundRepository OrderRefundRepository) + + public OrderRefundServiceImplApi(OrderRefundRepository OrderRefundRepository, OrderRepository orderRepository, OrderGoodsRepository orderGoodsRepository, GoodsRepository goodsRepository, IOrderServiceApi orderServiceApi) { this._OrderRefundRepository = OrderRefundRepository; + _OrderRepository = orderRepository; + _OrderGoodsRepository = orderGoodsRepository; + _GoodsRepository = goodsRepository; + _OrderServiceApi = orderServiceApi; } #region Api接口代码 @@ -56,33 +76,78 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds var query = _OrderRefundRepository .Queryable() .Where(predicate.ToExpression()) + .LeftJoin((s, c) => s.ShopGuid == c.ShopGuid) .OrderBy(s => s.Create_time, OrderByType.Desc) - .Select(s => new OrderRefundVoApi + .Select((s, c) => new OrderRefundVoApi { OrderRefundId = s.OrderRefundId, OrderRefundGuid = s.OrderRefundGuid, + StoreName = c.ShopName, 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); + var list = await query.ToPageAsync(parm); + + foreach (var item in list.Result) + { + var orderRefundGood = new List(); + + /* 获取售后订单商品列表 */ + var orderGoodsList = await _OrderGoodsRepository.GetListAsync(s => s.OrderGuid == item.OrderGuid); + foreach (var _item in orderGoodsList) + { + var good = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == _item.GoodsGuid); + var orderGood = new OrderGoodsApiVo + { + GoodsGuId = good.GoodsGuid, + Thumb = good.GoodsPicture.Split(',').First(), + Title = good.GoodsName, + SkuId = _item.GoodsSkuId, + Price = _item.GoodsPrice, + BuyQuantity = _item.GoodsTotalNum + }; + if (_item.GoodsSkuId != 0) + orderGood.Specifications = await _OrderServiceApi.GetGoodsSpecList(_item.GoodsSkuId); + + orderRefundGood.Add(orderGood); + } + item.OrderRefundGoodList = orderRefundGood; + + + /* 处理售后订单状态描述 */ + // 待审核 + if (item.MerchantAuditStatus == 1) + { + item.Status = 1; + item.EserRightsStatusDesc = "商家将尽快确认您的退款申请"; + } + // 已审核 + if (item.MerchantAuditStatus == 2) + { + item.Status = 2; + item.EserRightsStatusDesc = "商家已审核确认,预计1小时内发起退款"; + } + // 已发货 + if (item.IsCustomerSend == 2) + { + item.Status = 3; + item.EserRightsStatusDesc = "商家已退款,退回资金将原路三个工作日内返回您的账户"; + } + if (item.OrderRefundStatus == 3) + { + item.Status = 4; + item.EserRightsStatusDesc = "退款/售后己完成"; + } + + } + + return list; } @@ -172,6 +237,47 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds } + + #region 业务方法调用 + + + /// + /// 处理售后订单状态描述 + /// + /// + /// + //public OrderRefundVoApi GetOrderRefundStatus(OrderRefundVoApi data) + //{ + // // 待审核 + // if (data.MerchantAuditStatus == 1) + // { + // data.Status = 1; + // data.EserRightsStatusDesc = "商家将尽快确认您的退款申请"; + // } + // // 已审核 + // if (data.MerchantAuditStatus == 2) + // { + // data.Status = 2; + // data.EserRightsStatusDesc = "商家已审核确认,预计1小时内发起退款"; + // } + // // 已发货 + // if (data.IsCustomerSend == 2) + // { + // data.Status = 3; + // data.EserRightsStatusDesc = "商家已退款,退回资金将原路三个工作日内返回您的账户"; + // } + // if (data.OrderRefundStatus == 3) + // { + // data.Status = 4; + // data.EserRightsStatusDesc = "退款/售后己完成"; + // } + + // return data; + //} + + #endregion + + #endregion } diff --git a/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs index 0f9742b..cbcbab7 100644 --- a/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs +++ b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs @@ -66,5 +66,13 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.Orders /// Task GetOrderDetails(OrderDtoApi parm); + + /// + /// 获取订单商品规格 + /// + /// + /// + Task> GetGoodsSpecList(int? skuId); + } }