From db01c5a87b5662cb8febc11f3171486bdb9526a6 Mon Sep 17 00:00:00 2001
From: "AERWEN\\26795" <123456789a>
Date: Wed, 25 Oct 2023 16:07:57 +0800
Subject: [PATCH] =?UTF-8?q?fixed=20=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Vo/Api/OrderManage/Orders/OrderApiVo.cs | 5 +
.../Vo/Api/OrderManage/Orders/OrderItem.cs | 5 +
.../CustomerServiceServiceApi.cs | 2 +-
.../OrderRefunds/OrderRefundServiceApi.cs | 52 ++++--
.../OrderManage/Orders/OrderServiceApi.cs | 53 +++++++
.../OrderRefunds/IOrderRefundServiceApi.cs | 2 +-
.../OrderManage/Orders/IOrderServiceApi.cs | 24 ++-
.../OrderRefunds/OrderRefundService.cs | 24 ++-
.../TaskScheduler/Business/OrderTask_Job.cs | 2 +-
.../OrderRefunds/OrderRefundApiController.cs | 8 +-
.../OrderManage/Orders/OrderApiController.cs | 65 +++++---
.../OrderRefunds/OrderRefundController.cs | 150 +++++++++++++++++-
12 files changed, 330 insertions(+), 62 deletions(-)
diff --git a/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs b/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs
index d4667e2..8787ba0 100644
--- a/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs
+++ b/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs
@@ -212,6 +212,11 @@ namespace ARW.Model.Vo.Api.OrderManage.Orders
public string OrderStatusName { get; set; }
+ ///
+ /// 下单时间
+ ///
+ public DateTime CreateTime { get; set; }
+
}
}
diff --git a/ARW.Model/Vo/Api/OrderManage/Orders/OrderItem.cs b/ARW.Model/Vo/Api/OrderManage/Orders/OrderItem.cs
index d34b00b..7a771f5 100644
--- a/ARW.Model/Vo/Api/OrderManage/Orders/OrderItem.cs
+++ b/ARW.Model/Vo/Api/OrderManage/Orders/OrderItem.cs
@@ -45,6 +45,11 @@ namespace ARW.Model.Vo.Api.OrderManage.Orders
public string GoodsPictureUrl { get; set; }
+ ///
+ /// 描述 : 单价
+ ///
+ public decimal Price { get; set; }
+
///
/// 描述 :购买数量
///
diff --git a/ARW.Service/Api/BusinessService/CustomerServices/CustomerServiceServiceApi.cs b/ARW.Service/Api/BusinessService/CustomerServices/CustomerServiceServiceApi.cs
index f067810..9b9c4e1 100644
--- a/ARW.Service/Api/BusinessService/CustomerServices/CustomerServiceServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/CustomerServices/CustomerServiceServiceApi.cs
@@ -59,7 +59,7 @@ namespace ARW.Service.Api.BusinessService.CustomerServices
CustomerServicePhone = s.CustomerServicePhone,
CustomerServiceImg = s.CustomerServiceImg,
WorkingHoursBeginTime = s.WorkingHoursBeginTime,
- WorkingHoursEndTime = s.WorkingHoursEndTime,
+ WorkingHoursEndTime = s.WorkingHoursEndTime,
CustomerServiceSort = s.CustomerServiceSort,
});
diff --git a/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs b/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs
index f3713db..c5a47df 100644
--- a/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs
@@ -57,9 +57,10 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
private readonly IOrderServiceApi _OrderServiceApi;
private readonly IRegionService _RegionService;
private readonly ISysDictDataService _SysDictDataService;
+ private readonly GoodsSkuRepository _GoodsSkuRepository;
- public OrderRefundServiceImplApi(OrderRefundRepository OrderRefundRepository, OrderRepository orderRepository, OrderGoodsRepository orderGoodsRepository, GoodsRepository goodsRepository, IOrderServiceApi orderServiceApi, ShopAddressRepository shopAddressRepository, IRegionService regionService, ISysDictDataService sysDictDataService, LogisticsCompanyRepository logisticsCompanyRepository)
+ public OrderRefundServiceImplApi(OrderRefundRepository OrderRefundRepository, OrderRepository orderRepository, OrderGoodsRepository orderGoodsRepository, GoodsRepository goodsRepository, IOrderServiceApi orderServiceApi, ShopAddressRepository shopAddressRepository, IRegionService regionService, ISysDictDataService sysDictDataService, LogisticsCompanyRepository logisticsCompanyRepository, GoodsSkuRepository goodsSkuRepository)
{
this._OrderRefundRepository = OrderRefundRepository;
_OrderRepository = orderRepository;
@@ -70,6 +71,7 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
_RegionService = regionService;
_SysDictDataService = sysDictDataService;
_LogisticsCompanyRepository = logisticsCompanyRepository;
+ _GoodsSkuRepository = goodsSkuRepository;
}
#region Api接口代码
@@ -139,20 +141,23 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
{
item.Status = 2;
item.EserRightsStatusDesc = "商家已审核确认,预计1小时内发起退款";
- var buttonVoList = new List();
- var buttonVo = new ButtonVO()
+ if(item.RefundType != 2)
{
- Name = "填写运单号",
- Type = 3
- };
- buttonVoList.Add(buttonVo);
- item.ButtonVOs = buttonVoList;
+ var buttonVoList = new List();
+ var buttonVo = new ButtonVO()
+ {
+ Name = "填写运单号",
+ Type = 3
+ };
+ buttonVoList.Add(buttonVo);
+ item.ButtonVOs = buttonVoList;
+ }
}
// 已发货
if (item.IsCustomerSend == 2 && item.OrderRefundStatus == 1)
{
item.Status = 3;
- item.EserRightsStatusDesc = "商家已退款,退回资金将原路三个工作日内返回您的账户";
+ item.EserRightsStatusDesc = "买家已发货,等待商家收货";
//var buttonVoList = new List();
//var buttonVo = new ButtonVO()
//{
@@ -165,7 +170,7 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
if (item.OrderRefundStatus == 3)
{
item.Status = 4;
- item.EserRightsStatusDesc = "退款/售后己完成";
+ item.EserRightsStatusDesc = "退款/售后己完成,商家已退款,退回资金将原路三个工作日内返回您的账户";
}
if (item.OrderRefundStatus == 4)
{
@@ -183,7 +188,7 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
///
/// 添加售后单记录表
///
- public async Task AddOrderRefund(OrderRefund model)
+ public async Task AddOrderRefund(OrderRefund model)
{
model.GoodsReceiveStatus = 1;
model.MerchantAuditStatus = 1;
@@ -192,7 +197,7 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
model.IsMerchantReceive = 1;
var response = await _OrderRefundRepository.InsertReturnSnowflakeIdAsync(model);
- return "添加成功!";
+ return response;
}
@@ -297,32 +302,38 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
/* 处理售后订单状态描述 */
// 待审核
- if (data.MerchantAuditStatus == 1)
+ if (data.MerchantAuditStatus == 1 && data.OrderRefundStatus == 1)
{
data.Status = 1;
data.StatusName = "待审核";
data.EserRightsStatusDesc = "商家将尽快确认您的退款申请";
}
// 已审核
- if (data.MerchantAuditStatus == 2)
+ if (data.MerchantAuditStatus == 2 && data.OrderRefundStatus == 1)
{
data.Status = 2;
data.StatusName = "已审核";
data.EserRightsStatusDesc = "商家已审核确认,预计1小时内发起退款";
}
// 已发货
- if (data.IsCustomerSend == 2)
+ if (data.IsCustomerSend == 2 && data.OrderRefundStatus == 1)
{
data.Status = 3;
data.StatusName = "已发货";
- data.EserRightsStatusDesc = "商家已退款,退回资金将原路三个工作日内返回您的账户";
+ data.EserRightsStatusDesc = "买家已发货,等待商家收货";
}
// 已完成
if (data.OrderRefundStatus == 3)
{
data.Status = 4;
data.StatusName = "已完成";
- data.EserRightsStatusDesc = "退款/售后己完成";
+ data.EserRightsStatusDesc = "退款/售后己完成,商家已退款,退回资金将原路三个工作日内返回您的账户";
+ }
+ if (data.OrderRefundStatus == 4)
+ {
+ data.Status = 5;
+ data.StatusName = "已取消";
+ data.EserRightsStatusDesc = "退款/售后己取消";
}
// 商家地址
@@ -377,7 +388,14 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds
BuyQuantity = _item.GoodsTotalNum
};
if (_item.GoodsSkuId != 0)
+ {
+ var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == _item.GoodsSkuId);
+ if (!string.IsNullOrEmpty(sku.GoodsSkuImg))
+ {
+ orderGood.Thumb = sku.GoodsSkuImg;
+ }
orderGood.Specifications = await _OrderServiceApi.GetGoodsSpecList(_item.GoodsSkuId);
+ }
orderRefundGoodList.Add(orderGood);
}
diff --git a/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs b/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs
index 80e3474..0e8278b 100644
--- a/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs
@@ -30,6 +30,7 @@ using Infrastructure.Kuaidi100;
using ARW.Model.Models.Business.LogisticsManage.LogisticsCompanys;
using ARW.Repository.Business.LogisticsManage.LogisticsCompanys;
using ARW.Repository.Business.OrderManage.OrderRefunds;
+using MimeKit.Cryptography;
namespace ARW.Service.Api.BusinessService.OrderManage.Orders
{
@@ -130,13 +131,21 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
BuyQuantity = _item.GoodsTotalNum
};
if (_item.GoodsSkuId != 0)
+ {
+ var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == _item.GoodsSkuId);
+ if (!string.IsNullOrEmpty(sku.GoodsSkuImg))
+ {
+ orderGood.Thumb = sku.GoodsSkuImg;
+ }
orderGood.Specifications = await GetGoodsSpecList(_item.GoodsSkuId);
+ }
goodsList.Add(orderGood);
}
item.GoodsList = goodsList;
+ #region 处理订单状态
/* 处理订单状态 */
if (item.PayStatus == 1 && item.OrderStatus == 1)
{
@@ -240,12 +249,49 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
item.StatusName = "待取消";
}
+ #endregion
}
return list;
}
+ ///
+ /// 获取售后订单商品列表(Api)
+ ///
+ ///
+ ///
+ public async Task> GetOrderRefundGoodsList(OrderDtoApi parm)
+ {
+
+ var order = await _OrderRepository.GetFirstAsync(s => s.OrderGuid == parm.OrderGuid);
+
+ // 订单商品
+ var orderItemList = new List();
+ var orderGoodsList = await _OrderGoodsRepository.GetListAsync(s => s.OrderGuid == parm.OrderGuid);
+ foreach (var item in orderGoodsList)
+ {
+ var orderItem = new OrderItem();
+
+ var good = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == item.GoodsGuid);
+
+ orderItem.SpuId = item.GoodsGuid;
+ orderItem.SkuId = item.GoodsSkuId;
+ orderItem.GoodsName = good.GoodsName;
+ orderItem.GoodsPictureUrl = good.GoodsPicture.Split(',').First();
+ orderItem.BuyQuantity = item.GoodsTotalNum;
+
+ if (item.GoodsSkuId != 0)
+ {
+ orderItem.Specifications = await GetGoodsSpecList(orderItem.SkuId);
+ }
+
+ orderItemList.Add(orderItem);
+ }
+ return orderItemList;
+ }
+
+
///
/// 待付款取消订单
///
@@ -393,6 +439,7 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
FreightFee = s.ExpressPrice,
CouponAmount = s.CouponMoney,
Remark = s.OrderRemark,
+ CreateTime = s.Create_time
}).Take(1);
@@ -420,9 +467,15 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
orderItem.GoodsName = good.GoodsName;
orderItem.GoodsPictureUrl = good.GoodsPicture.Split(',').First();
orderItem.BuyQuantity = item.GoodsTotalNum;
+ orderItem.Price = item.GoodsPrice;
if (item.GoodsSkuId != 0)
{
+ var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == item.GoodsSkuId);
+ if (!string.IsNullOrEmpty(sku.GoodsSkuImg))
+ {
+ orderItem.GoodsPictureUrl = sku.GoodsSkuImg;
+ }
orderItem.Specifications = await GetGoodsSpecList(orderItem.SkuId);
}
diff --git a/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs b/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs
index 7386c77..557a560 100644
--- a/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs
+++ b/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs
@@ -39,7 +39,7 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.OrderRefunds
///
///
///
- Task AddOrderRefund(OrderRefund parm);
+ Task AddOrderRefund(OrderRefund parm);
///
diff --git a/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs
index cbcbab7..3d84e41 100644
--- a/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs
+++ b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs
@@ -27,6 +27,21 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.Orders
Task> GetOrderListApi(OrderQueryDtoApi parm);
+ ///
+ /// 获取售后订单商品列表
+ ///
+ ///
+ ///
+ Task> GetOrderRefundGoodsList(OrderDtoApi parm);
+
+ ///
+ /// 获取订单详情(Api)
+ ///
+ ///
+ ///
+ Task GetOrderDetails(OrderDtoApi parm);
+
+
///
/// 待付款取消订单
///
@@ -59,14 +74,6 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.Orders
Task AddComment(GoodsComment parm);
- ///
- /// 获取订单详情(Api)
- ///
- ///
- ///
- Task GetOrderDetails(OrderDtoApi parm);
-
-
///
/// 获取订单商品规格
///
@@ -74,5 +81,6 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.Orders
///
Task> GetGoodsSpecList(int? skuId);
+
}
}
diff --git a/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs b/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs
index 945daf5..fb513d7 100644
--- a/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs
+++ b/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs
@@ -156,7 +156,7 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds
GoodsReceiveStatus = s.GoodsReceiveStatus,
MerchantAuditStatus = s.MerchantAuditStatus,
MerchantRefuseDesc = s.MerchantRefuseDesc,
- RefundMoney = s.RefundMoney,
+ RefundMoney = s.RefundActualMoney,
ShopRefundAddressGuid = s.ShopRefundAddressGuid,
IsCustomerSend = s.IsCustomerSend,
CustomerSendTime = s.CustomerSendTime,
@@ -197,11 +197,25 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds
// 同意
if (parm.IsAgree == true)
{
- await _OrderRefundRepository.UpdateAsync(f => new OrderRefund
+ var orderRefund = await _OrderRefundRepository.GetFirstAsync(s => s.OrderRefundGuid == parm.OrderRefundGuid);
+
+ if(orderRefund.RefundType == 1)
{
- MerchantAuditStatus = 2,
- ShopRefundAddressGuid = parm.ShopAddressGuid,
- }, s => s.OrderRefundGuid == parm.OrderRefundGuid);
+ await _OrderRefundRepository.UpdateAsync(f => new OrderRefund
+ {
+ MerchantAuditStatus = 2,
+ ShopRefundAddressGuid = parm.ShopAddressGuid,
+ }, s => s.OrderRefundGuid == parm.OrderRefundGuid);
+ }
+ if(orderRefund.RefundType == 2)
+ {
+ await _OrderRefundRepository.UpdateAsync(f => new OrderRefund
+ {
+ MerchantAuditStatus = 2,
+ OrderRefundStatus = 3,
+ }, s => s.OrderRefundGuid == parm.OrderRefundGuid);
+ }
+
str = "同意申请!";
}
diff --git a/ARW.Tasks/TaskScheduler/Business/OrderTask_Job.cs b/ARW.Tasks/TaskScheduler/Business/OrderTask_Job.cs
index 92e1cb0..0bbf2bf 100644
--- a/ARW.Tasks/TaskScheduler/Business/OrderTask_Job.cs
+++ b/ARW.Tasks/TaskScheduler/Business/OrderTask_Job.cs
@@ -92,7 +92,7 @@ namespace ARW.Tasks.TaskScheduler.Business
throw new CustomException("订单关闭失败!");
else
{
- var respones = _PaymentService.UpdateAsync(f => new Payment
+ var respones = await _PaymentService.UpdateAsync(f => new Payment
{
PaymentStatus = 3,
Update_time = DateTime.Now
diff --git a/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs b/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs
index 36d38f9..c688197 100644
--- a/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs
+++ b/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs
@@ -20,6 +20,7 @@ using ARW.Service.Business.IBusinessService.OrderManage.OrderRefunds;
using ARW.Admin.WebApi.Framework;
using ARW.Service.Business.IBusinessService.LogisticsManage.LogisticsCompanys;
using ARW.Service.System.IService;
+using ARW.Service.Business.IBusinessService.OrderManage.Orders;
namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds
{
@@ -36,16 +37,18 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds
private readonly IOrderRefundServiceApi _OrderRefundServiceApi;
private readonly ILogisticsCompanyService _LogisticsCompanyService;
private readonly ISysDictDataService _SysDictDataService;
+ private readonly IOrderService _OrderService;
///
/// 依赖注入
///
/// 售后单记录表售后单记录表Api服务
- public OrderRefundApiController(IOrderRefundServiceApi OrderRefundServiceApi, ILogisticsCompanyService logisticsCompanyService, ISysDictDataService sysDictDataService)
+ public OrderRefundApiController(IOrderRefundServiceApi OrderRefundServiceApi, ILogisticsCompanyService logisticsCompanyService, ISysDictDataService sysDictDataService, IOrderService orderService)
{
_OrderRefundServiceApi = OrderRefundServiceApi;
_LogisticsCompanyService = logisticsCompanyService;
_SysDictDataService = sysDictDataService;
+ _OrderService = orderService;
}
@@ -126,6 +129,9 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds
var user = JwtUtil.GetLoginUser(App.HttpContext);
parm.CustomerGuid = user.UserId;
+ var order = await _OrderService.GetFirstAsync(s => s.OrderGuid == parm.OrderGuid);
+ parm.ShopGuid = order.ShopGuid;
+
var modal = parm.Adapt().ToCreate(HttpContext);
var res = await _OrderRefundServiceApi.AddOrderRefund(modal);
return SUCCESS(res);
diff --git a/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs b/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs
index 751c0e0..91b086c 100644
--- a/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs
+++ b/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs
@@ -63,6 +63,46 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.Orders
}
+ ///
+ /// 获取售后订单商品列表(Api)
+ ///
+ /// 查询参数
+ ///
+ [HttpGet("getOrderRefundGoods")]
+ public async Task GetOrderRefundGoods([FromQuery] OrderDtoApi parm)
+ {
+ var res = await _OrderServiceApi.GetOrderRefundGoodsList(parm);
+ return SUCCESS(res);
+ }
+
+
+
+ ///
+ /// 获取Order详情(Api)
+ ///
+ /// 查询参数
+ ///
+ [HttpGet("getOrderDetails")]
+ public async Task GetOrderDetails([FromQuery] OrderDtoApi parm)
+ {
+ if (parm == null) throw new CustomException("参数错误!");
+
+ var res = await _OrderServiceApi.GetOrderDetails(parm);
+
+ if (res != "[]")
+ {
+ var data = res.FromJSON();
+ return SUCCESS(data);
+ }
+ else
+ {
+ return SUCCESS(res);
+ }
+
+ }
+
+
+
///
/// 待付款取消订单
///
@@ -130,31 +170,6 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.Orders
}
- ///
- /// 获取Order详情(Api)
- ///
- /// 查询参数
- ///
- [HttpGet("getOrderDetails")]
- public async Task GetOrderDetails([FromQuery] OrderDtoApi parm)
- {
- if (parm == null) throw new CustomException("参数错误!");
-
- var res = await _OrderServiceApi.GetOrderDetails(parm);
-
- if (res != "[]")
- {
- var data = res.FromJSON();
- return SUCCESS(data);
- }
- else
- {
- return SUCCESS(res);
- }
-
- }
-
-
///
/// 删除订单
///
diff --git a/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs b/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs
index 89486ac..7194699 100644
--- a/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs
+++ b/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs
@@ -18,6 +18,14 @@ using ARW.Admin.WebApi.Framework;
using ARW.Service.Business.IBusinessService.OrderManage.Orders;
using Geocoding;
using ARW.Service.Business.IBusinessService.ShopManager.Shops;
+using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSkus;
+using ARW.Service.Business.IBusinessService.OrderManage.OrderGoodss;
+using ARW.Service.Business.IBusinessService.Payments;
+using Infrastructure.WeChat.TenPay;
+using System.Net.Http;
+using ARW.Service.Business.IBusinessService.GoodsManager.Goodss;
+using Senparc.CO2NET.HttpUtility;
+using ARW.Model.Models.Business.Payments;
namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds
{
@@ -33,15 +41,26 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds
{
private readonly IOrderRefundService _OrderRefundService;
private readonly IShopService _ShopService;
-
+ private readonly IPaymentService _PaymentService;
+ private readonly SenparcHttpClient _httpClient;
+ private readonly IGoodsService _GoodsService;
+ private readonly IGoodsSkuService _GoodsSkuService;
+ private readonly IOrderService _OrderService;
+ private readonly IOrderGoodsService _OrderGoodsService;
///
/// 依赖注入
///
/// 售后单记录表服务
- public OrderRefundController(IOrderRefundService OrderRefundService, IShopService shopService)
+ public OrderRefundController(IOrderRefundService OrderRefundService, IShopService shopService, IPaymentService paymentService, SenparcHttpClient httpClient, IGoodsService goodsService, IGoodsSkuService goodsSkuService, IOrderService orderService, IOrderGoodsService orderGoodsService)
{
_OrderRefundService = OrderRefundService;
_ShopService = shopService;
+ _PaymentService = paymentService;
+ _httpClient = httpClient;
+ _GoodsService = goodsService;
+ _GoodsSkuService = goodsSkuService;
+ _OrderService = orderService;
+ _OrderGoodsService = orderGoodsService;
}
@@ -103,7 +122,72 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds
{
if (parm == null) { throw new CustomException("请求参数错误"); }
- var res = await _OrderRefundService.AuditOrderRefund(parm);
+ if (parm.IsAgree == true)
+ {
+ var orderRefund = await _OrderRefundService.GetFirstAsync(s => s.OrderRefundGuid == parm.OrderRefundGuid);
+ var order = await _OrderService.GetFirstAsync(s => s.OrderGuid == orderRefund.OrderGuid);
+ var payment = await _PaymentService.GetFirstAsync(s => s.PaymentGuid == order.PaymentGuid);
+
+ if (orderRefund.RefundType == 2)
+ {
+ Pay pay = new Pay(_httpClient);
+ var transactionId = payment.PaymentWeixinNumber;
+ string paymentRefundNumber = "";
+ if (!string.IsNullOrEmpty(payment.PaymentRefundNumber))
+ {
+ paymentRefundNumber = payment.PaymentRefundNumber;
+ }
+
+ var totalFee = payment.PaymentMoney * 100;
+ var canleRes = await pay.Refund(transactionId, totalFee, paymentRefundNumber, "商品退款");
+ if (canleRes.ResultCode.Success == false)
+ throw new CustomException("订单退款失败!");
+ else
+ {
+ await _OrderRefundService.UpdateAsync(f => new OrderRefund
+ {
+ RefundActualMoney = totalFee,
+ }, f => f.OrderRefundGuid == orderRefund.OrderRefundGuid);
+
+ await _PaymentService.UpdateAsync(f => new Payment
+ {
+ PaymentRefundNumber = canleRes.out_refund_no,
+ }, f => f.PaymentNumber == canleRes.out_trade_no);
+
+ var orderGoodsList = await _OrderGoodsService.GetListAsync(s => s.OrderGuid == orderRefund.OrderGuid);
+ // 库存加回来
+ foreach (var orderGood in orderGoodsList)
+ {
+ var goods = await _GoodsService.GetFirstAsync(s => s.GoodsGuid == orderGood.GoodsGuid);
+ var shop = await _ShopService.GetFirstAsync(s => s.ShopGuid == goods.ShopGuid);
+
+ goods.GoodsSalesActual += orderGood.GoodsTotalNum;
+ await _GoodsService.UpdateAsync(goods);
+ shop.ShopSalesOrderCount += orderGood.GoodsTotalNum;
+ await _ShopService.UpdateAsync(shop);
+
+ if (goods.GoodsDeductStockType == 2)
+ {
+ if (orderGood.GoodsSkuId != 0)
+ {
+ var sku = await _GoodsSkuService.GetFirstAsync(s => s.GoodsSkuId == orderGood.GoodsSkuId);
+ sku.GoodsSkuStockNum += orderGood.GoodsTotalNum;
+ goods.GoodsTotalInventory += orderGood.GoodsTotalNum;
+ await _GoodsSkuService.UpdateAsync(sku);
+ await _GoodsService.UpdateAsync(goods);
+ }
+ else
+ {
+ goods.GoodsTotalInventory += orderGood.GoodsTotalNum;
+ await _GoodsService.UpdateAsync(goods);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ var res = await _OrderRefundService.AuditOrderRefund(parm);
return SUCCESS(res);
}
@@ -119,6 +203,66 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds
{
if (parm == null) { throw new CustomException("请求参数错误"); }
+ var orderRefund = await _OrderRefundService.GetFirstAsync(s => s.OrderRefundGuid == parm.OrderRefundGuid);
+ var order = await _OrderService.GetFirstAsync(s => s.OrderGuid == orderRefund.OrderGuid);
+ var payment = await _PaymentService.GetFirstAsync(s => s.PaymentGuid == order.PaymentGuid);
+
+ Pay pay = new Pay(_httpClient);
+ var transactionId = payment.PaymentWeixinNumber;
+ string paymentRefundNumber = "";
+ if (!string.IsNullOrEmpty(payment.PaymentRefundNumber))
+ {
+ paymentRefundNumber = payment.PaymentRefundNumber;
+ }
+
+ var totalFee = payment.PaymentMoney * 100;
+ var canleRes = await pay.Refund(transactionId, totalFee, paymentRefundNumber, "商品退款");
+ if (canleRes.ResultCode.Success == false)
+ throw new CustomException("订单退款失败!");
+ else
+ {
+ await _OrderRefundService.UpdateAsync(f => new OrderRefund
+ {
+ RefundActualMoney = totalFee,
+ }, f => f.OrderRefundGuid == orderRefund.OrderRefundGuid);
+
+ var respones = await _PaymentService.UpdateAsync(f => new Payment
+ {
+ PaymentRefundNumber = canleRes.out_refund_no,
+ }, f => f.PaymentNumber == canleRes.out_trade_no);
+
+ var orderGoodsList = await _OrderGoodsService.GetListAsync(s => s.OrderGuid == orderRefund.OrderGuid);
+ // 库存加回来
+ foreach (var orderGood in orderGoodsList)
+ {
+ var goods = await _GoodsService.GetFirstAsync(s => s.GoodsGuid == orderGood.GoodsGuid);
+ var shop = await _ShopService.GetFirstAsync(s => s.ShopGuid == goods.ShopGuid);
+
+ goods.GoodsSalesActual += orderGood.GoodsTotalNum;
+ await _GoodsService.UpdateAsync(goods);
+ shop.ShopSalesOrderCount += orderGood.GoodsTotalNum;
+ await _ShopService.UpdateAsync(shop);
+
+ if (goods.GoodsDeductStockType == 2)
+ {
+ if (orderGood.GoodsSkuId != 0)
+ {
+ var sku = await _GoodsSkuService.GetFirstAsync(s => s.GoodsSkuId == orderGood.GoodsSkuId);
+ sku.GoodsSkuStockNum += orderGood.GoodsTotalNum;
+ goods.GoodsTotalInventory += orderGood.GoodsTotalNum;
+ await _GoodsSkuService.UpdateAsync(sku);
+ await _GoodsService.UpdateAsync(goods);
+ }
+ else
+ {
+ goods.GoodsTotalInventory += orderGood.GoodsTotalNum;
+ await _GoodsService.UpdateAsync(goods);
+ }
+ }
+ }
+
+ }
+
var res = await _OrderRefundService.ConfirmsReceipt(parm);
return SUCCESS(res);
}