diff --git a/ARW.Model/Dto/Api/OrderManage/OrderRefunds/AddOrderRefundApiDto.cs b/ARW.Model/Dto/Api/OrderManage/OrderRefunds/AddOrderRefundApiDto.cs index 9ae3d02..4bdf1e0 100644 --- a/ARW.Model/Dto/Api/OrderManage/OrderRefunds/AddOrderRefundApiDto.cs +++ b/ARW.Model/Dto/Api/OrderManage/OrderRefunds/AddOrderRefundApiDto.cs @@ -21,6 +21,9 @@ namespace ARW.Model.Dto.Api.OrderManage.OrderRefunds [Required(ErrorMessage = "订单guid不能为空")] public long OrderGuid { get; set; } + [Required(ErrorMessage = "店铺guid不能为空")] + public long ShopGuid { get; set; } + public long CustomerGuid { get; set; } [Required(ErrorMessage = "售后类型(1退货退款 2退货(无需退款) 3换货)不能为空")] diff --git a/ARW.Model/Dto/Api/OrderManage/OrderRefunds/BuyerDeliveryApiDto.cs b/ARW.Model/Dto/Api/OrderManage/OrderRefunds/BuyerDeliveryApiDto.cs new file mode 100644 index 0000000..7c361e2 --- /dev/null +++ b/ARW.Model/Dto/Api/OrderManage/OrderRefunds/BuyerDeliveryApiDto.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.OrderManage.OrderRefunds; + +namespace ARW.Model.Dto.Api.OrderManage.OrderRefunds +{ + + /// + /// 买家发货对象Api + /// + /// @author lwh + /// @date 2023-10-17 + /// + public class BuyerDeliveryApiDto + { + public int OrderRefundId { get; set; } + + public long OrderRefundGuid { get; set; } + + /// + /// 物流公司guid + /// + [Required(ErrorMessage = "物流公司guid不能为空")] + public long LogisticsCompanyGuid { get; set; } + + /// + /// 客户发货物流单号 + /// + public string ExpressNo { get; set; } + + + /// + /// 客户发货备注 + /// + public string CustomerWaybillRemark { get; set; } + + } + + +} diff --git a/ARW.Model/Dto/Api/Pay/GoodsRequest.cs b/ARW.Model/Dto/Api/Pay/GoodsRequest.cs index 98a2c34..d7713cb 100644 --- a/ARW.Model/Dto/Api/Pay/GoodsRequest.cs +++ b/ARW.Model/Dto/Api/Pay/GoodsRequest.cs @@ -36,5 +36,17 @@ namespace ARW.Model.Dto.Api.Pay /// public int Quantity { get; set; } + + /// + /// 店铺guid + /// + public long StoreId { get; set; } + + + /// + /// 购物车加入时间 + /// + public DateTime JoinCartTime { get; set; } + } } diff --git a/ARW.Model/Dto/Business/Marketing/CouponManage/Coupons/CouponDto.cs b/ARW.Model/Dto/Business/Marketing/CouponManage/Coupons/CouponDto.cs index 4748f59..4785a00 100644 --- a/ARW.Model/Dto/Business/Marketing/CouponManage/Coupons/CouponDto.cs +++ b/ARW.Model/Dto/Business/Marketing/CouponManage/Coupons/CouponDto.cs @@ -21,6 +21,9 @@ namespace ARW.Model.Dto.Business.Marketing.CouponManage.Coupons public long CouponGuid { get; set; } + public long ShopGuid { get; set; } + + [Required(ErrorMessage = "优惠劵名称不能为空")] public string CouponName { get; set; } @@ -78,7 +81,7 @@ namespace ARW.Model.Dto.Business.Marketing.CouponManage.Coupons /// public class CouponQueryDto : PagerInfo { - + public long ShopGuid { get; set; } public string CouponName { get; set; } public int? CouponType { get; set; } diff --git a/ARW.Model/Dto/Business/OrderManage/OrderRefunds/OrderRefundAuditDto.cs b/ARW.Model/Dto/Business/OrderManage/OrderRefunds/OrderRefundAuditDto.cs new file mode 100644 index 0000000..0ce6825 --- /dev/null +++ b/ARW.Model/Dto/Business/OrderManage/OrderRefunds/OrderRefundAuditDto.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.OrderManage.OrderRefunds; + +namespace ARW.Model.Dto.Business.OrderManage.OrderRefunds +{ + /// + /// 售后单记录表输入对象 + /// + /// @author lwh + /// @date 2023-10-17 + /// + public class OrderRefundAuditDto + { + + public int OrderRefundId { get; set; } + + [Required(ErrorMessage = "售后单guid不能为空!")] + public long OrderRefundGuid { get; set; } + + + public bool IsAgree { get; set; } + + public string MerchantRefuseDesc { get; set; } + + public long? ShopAddressGuid { get; set; } + + } + +} diff --git a/ARW.Model/Dto/Business/OrderManage/OrderRefunds/OrderRefundDto.cs b/ARW.Model/Dto/Business/OrderManage/OrderRefunds/OrderRefundDto.cs index 31b092d..a2c179d 100644 --- a/ARW.Model/Dto/Business/OrderManage/OrderRefunds/OrderRefundDto.cs +++ b/ARW.Model/Dto/Business/OrderManage/OrderRefunds/OrderRefundDto.cs @@ -74,7 +74,7 @@ namespace ARW.Model.Dto.Business.OrderManage.OrderRefunds /// public class OrderRefundQueryDto : PagerInfo { - + public long ShopGuid { get; set; } public int? RefundType { get; set; } public int? RefundReason { get; set; } diff --git a/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs b/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs index 6acf226..cb50764 100644 --- a/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs +++ b/ARW.Model/Dto/Business/OrderManage/Orders/OrderDto.cs @@ -116,6 +116,7 @@ namespace ARW.Model.Dto.Business.OrderManage.Orders public class OrderQueryDto : PagerInfo { + public long ShopGuid { get; set; } public string OrderNumber { get; set; } public int? PayType { get; set; } diff --git a/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs b/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs index 2c09609..a653897 100644 --- a/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs +++ b/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs @@ -35,6 +35,15 @@ namespace ARW.Model.Models.Business.Marketing.CouponManage.Coupons public long CouponGuid { get; set; } + /// + /// 描述 : + /// 空值 : false + /// + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName = "shop_guid")] + public long ShopGuid { get; set; } + + /// /// 描述 :优惠劵名称 /// 空值 : false diff --git a/ARW.Model/Models/Business/OrderManage/OrderRefunds/OrderRefund.cs b/ARW.Model/Models/Business/OrderManage/OrderRefunds/OrderRefund.cs index 8ce3596..ba043a1 100644 --- a/ARW.Model/Models/Business/OrderManage/OrderRefunds/OrderRefund.cs +++ b/ARW.Model/Models/Business/OrderManage/OrderRefunds/OrderRefund.cs @@ -35,6 +35,16 @@ namespace ARW.Model.Models.Business.OrderManage.OrderRefunds public long OrderRefundGuid { get; set; } + /// + /// 描述 :店铺guid + /// 空值 : false + /// + [EpplusTableColumn(Header = "店铺guid")] + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName = "shop_guid")] + public long ShopGuid { get; set; } + + /// /// 描述 :订单guid /// 空值 : false @@ -199,6 +209,15 @@ namespace ARW.Model.Models.Business.OrderManage.OrderRefunds public string ExpressNo { get; set; } + /// + /// 描述 :客户发货备注 + /// 空值 : true + /// + [EpplusTableColumn(Header = "客户发货备注")] + [SugarColumn(ColumnName = "customer_waybill_remark")] + public string CustomerWaybillRemark { get; set; } + + /// /// 描述 :售后单状态(1进行中 2已拒绝 3已完成 4已取消) /// 空值 : false diff --git a/ARW.Model/Models/Business/OrderManage/Orders/Order.cs b/ARW.Model/Models/Business/OrderManage/Orders/Order.cs index 509260c..a702506 100644 --- a/ARW.Model/Models/Business/OrderManage/Orders/Order.cs +++ b/ARW.Model/Models/Business/OrderManage/Orders/Order.cs @@ -55,6 +55,15 @@ namespace ARW.Model.Models.Business.OrderManage.Orders public long CustomerGuid { get; set; } + /// + /// 描述 :店铺guid + /// 空值 : false + /// + [EpplusTableColumn(Header = "店铺guid")] + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName = "shop_guid")] + public long ShopGuid { get; set; } + /// /// 描述 :购物车Id /// 空值 : false diff --git a/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs b/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs index 25c6306..0c702dd 100644 --- a/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs +++ b/ARW.Model/Vo/Api/OrderManage/OrderRefunds/OrderRefundApiVo.cs @@ -145,6 +145,19 @@ namespace ARW.Model.Vo.Api.OrderManage.OrderRefunds [EpplusTableColumn(Header = "售后单状态(1进行中 2已拒绝 3已完成 4已取消)")] public int OrderRefundStatus { get; set; } + + /// + /// 描述 :客户发货备注 + /// 空值 : true + /// + [EpplusTableColumn(Header = "客户发货备注")] + public string CustomerWaybillRemark { get; set; } + + + /// + /// 商家收货时间 + /// + public DateTime? MerchantReceiveTime { get; set; } } diff --git a/ARW.Model/Vo/Api/OrderManage/Orders/OrderShopApiVo.cs b/ARW.Model/Vo/Api/OrderManage/Orders/OrderShopApiVo.cs new file mode 100644 index 0000000..b195743 --- /dev/null +++ b/ARW.Model/Vo/Api/OrderManage/Orders/OrderShopApiVo.cs @@ -0,0 +1,48 @@ +using ARW.Model.Dto.Api.Pay; +using ARW.Model.Models.Business.OrderManage.Orders; +using ARW.Model.Vo.Api.Carts; +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-17 + /// + public class OrderShopApiVo + { + /// + /// 描述 : 店铺Id + /// + [JsonConverter(typeof(ValueToStringConverter))] + public long ShopGuid { get; set; } + + + /// + /// 订单号 + /// + public string OrderNo { get; set; } + + + /// + /// 该店铺待结算列表 + /// + public List OrderShopGoodsRequestList { get; set; } + + + /// + /// 关联购物车ids + /// + public List CartIdsList { get; set; } + + } + + + +} diff --git a/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs b/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs index c3905e6..ffa1dec 100644 --- a/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs +++ b/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs @@ -36,6 +36,19 @@ namespace ARW.Model.Vo.Business.Marketing.CouponManage.Coupons [EpplusTableColumn(Header = "优惠劵名称")] public string CouponName { get; set; } + /// + /// 描述 : + /// + [JsonConverter(typeof(ValueToStringConverter))] + public long ShopGuid { get; set; } + + + /// + /// 描述 :店铺名称 + /// + [EpplusTableColumn(Header = "店铺名称")] + public string ShopName { get; set; } + /// /// 描述 :优惠劵介绍 /// diff --git a/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundDetailVo.cs b/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundDetailVo.cs index 8c2f112..14834f2 100644 --- a/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundDetailVo.cs +++ b/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundDetailVo.cs @@ -39,6 +39,12 @@ namespace ARW.Model.Vo.Business.OrderManage.OrderRefunds public long OrderGuid { get; set; } + /// + /// 描述 : 店铺guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + public long ShopGuid { get; set; } + /// /// 描述 :订单号 /// diff --git a/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundVo.cs b/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundVo.cs index 17f2419..46a499b 100644 --- a/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundVo.cs +++ b/ARW.Model/Vo/Business/OrderManage/OrderRefunds/OrderRefundVo.cs @@ -40,6 +40,14 @@ namespace ARW.Model.Vo.Business.OrderManage.OrderRefunds public long OrderGuid { get; set; } + /// + /// 描述 :店铺guid + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusTableColumn(Header = "店铺guid")] + public long ShopGuid { get; set; } + + /// /// 描述 :订单号 /// @@ -48,6 +56,20 @@ namespace ARW.Model.Vo.Business.OrderManage.OrderRefunds public string OrderNumber { get; set; } + /// + /// 描述 :实际付款 + /// + [EpplusTableColumn(Header = "实际付款")] + public decimal PayPrice { get; set; } + + + /// + /// 描述 :运费 + /// + [EpplusTableColumn(Header = "运费")] + public decimal ExpressPrice { get; set; } + + /// /// 商品信息 /// diff --git a/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs b/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs index 24521d0..d166265 100644 --- a/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs +++ b/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs @@ -99,6 +99,8 @@ namespace ARW.Service.Api.BusinessService.Carts shopCart.StoreName = shop.ShopName; var promotionGoodsList = new List(); + + #region 购物车优惠券算法 // 查找当前客户可使用的优惠券 //var couponList = await _CustomerCouponRepository.GetListAsync(s => s.CustomerGuid == parm.CustomerGuid && s.CustomerCouponIsUsed == 1 && s.CustomerCouponIsExpired == 1); @@ -174,6 +176,8 @@ namespace ARW.Service.Api.BusinessService.Carts //} //else // 如果没有优惠券 //{ + #endregion + var promotionGoods = new PromotionGoods(); var goodsPromotionList = await GetGoodsPromotionList(customerCartList, shop.ShopGuid); diff --git a/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs b/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs index 7f851b6..e884d47 100644 --- a/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs +++ b/ARW.Service/Api/BusinessService/OrderManage/OrderRefunds/OrderRefundServiceApi.cs @@ -13,6 +13,7 @@ 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 { @@ -75,6 +76,8 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds LogisticsCompanyGuid = s.LogisticsCompanyGuid, ExpressNo = s.ExpressNo, OrderRefundStatus = s.OrderRefundStatus, + CustomerWaybillRemark = s.CustomerWaybillRemark, + MerchantReceiveTime = s.MerchantReceiveTime }); @@ -99,6 +102,36 @@ namespace ARW.Service.Api.BusinessService.OrderManage.OrderRefunds } + /// + /// 撤销申请 + /// + 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) diff --git a/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs b/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs index 7289920..5c14299 100644 --- a/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs +++ b/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs @@ -31,6 +31,8 @@ using ARW.Model.Models.Business.Carts; using ARW.Repository.Business.Marketing.CouponManage.CustomerCoupons; using ARW.Model.Models.Business.Marketing.CouponManage.CustomerCoupons; using ARW.Model.Vo.Business.Marketing.CouponManage.CustomerCoupons; +using System.Linq; +using ARW.Model.Vo.Api.OrderManage.Orders; namespace ARW.Service.Api.BusinessService.PaymentManage { @@ -119,6 +121,7 @@ namespace ARW.Service.Api.BusinessService.PaymentManage // 生成订单号 var orderNo = Common.Common.CreateNoQuery(); + // 调用统一下单(接口) Pay pay = new Pay(_httpClient); var payEntity = await pay.PrePay(parm.OpenId, orderNo, parm.PayType, price); @@ -138,10 +141,6 @@ namespace ARW.Service.Api.BusinessService.PaymentManage var paymentGuid = await AddPayment(parm, orderNo, totalPrice, afterPriceRes.DiscountPrice); /* 添加业务订单 */ var orderGuid = await AddOrder(parm, orderNo, paymentGuid, goodsPrice, afterPriceRes, freight); - /* 添加订单商品 */ - await AddOrderGoods(parm, orderGuid); - /* 添加订单用户地址 */ - await AddOrderCustomerAddress(parm, orderGuid); #endregion @@ -169,10 +168,10 @@ namespace ARW.Service.Api.BusinessService.PaymentManage public async Task HandleNotify(OrderReturnJson res) { /* 修改订单流水 */ - await UpdatePayment(res); + var paymentGuid = await UpdatePayment(res); /* 修改业务订单 */ - await UpdateOrder(res); + await UpdateOrder(res, paymentGuid); } @@ -321,45 +320,97 @@ namespace ARW.Service.Api.BusinessService.PaymentManage /// public async Task AddOrder(CommitPayDtoApi parm, string orderNo, long paymentGuid, decimal beforeMoney, DiscountRes discountRes, decimal freight) { - Model.Models.Business.OrderManage.Orders.Order order = new() - { - PaymentGuid = paymentGuid, - CustomerGuid = parm.UserId, - OrderNumber = orderNo, - CouponGuid = discountRes?.CouponGuid, - CouponMoney = discountRes.CouponMoney, - GoodsTotalAmoun = beforeMoney, - OrderAmount = discountRes.DiscountPrice, - //PayPrice = discountRes.DiscountPrice, - OrderRemark = parm?.Remark, - PayType = parm.PayType, - PayStatus = 1, - DeliveryStatus = 1, - ReceiptStatus = 1, - IsComment = 1, - IsSettled = 1, - OrderSource = 1, - OrderStatus = 1, - DeliveryType = 1, - ExpressPrice = freight, - }; - // 关联购物车ids - var idsList = new List(); - foreach (var item in parm.GoodsRequestList) + // 找到店铺的Guids + var sameShopGuids = parm.GoodsRequestList + .OrderByDescending(s => s.JoinCartTime) + .Select(item => item.StoreId) + .Distinct() + .ToList(); + + var res = new List(); + + // 循环每个店铺中的待结算订单商品记录 + foreach (var shopGuid in sameShopGuids) { - idsList.Add(item.CartId); + var orderShop = new OrderShopApiVo(); + orderShop.ShopGuid = shopGuid; + orderShop.OrderNo = Common.Common.CreateNoQuery(); + var orderShopGoodsRequestList = new List(); + var CartIdsList = new List(); + + foreach (var item in parm.GoodsRequestList) + { + if (item.StoreId == shopGuid) + { + orderShopGoodsRequestList.Add(item); + // 关联购物车ids + CartIdsList.Add(item.CartId); + } + } + + orderShop.OrderShopGoodsRequestList = orderShopGoodsRequestList; + orderShop.CartIdsList = CartIdsList; + + res.Add(orderShop); } - var idsArrar = idsList.ToArray(); - order.CartIds = string.Join(",", idsList); - - var response = await _OrderRepository.InsertReturnSnowflakeIdAsync(order); - if (response == 0) - throw new CustomException("业务订单数据加入失败"); + // 循环整理好的各个店铺的订单 + foreach (var item in res) + { + /* 计算商品总价 */ + var commitPayDtoApi = new CommitPayDtoApi() + { + UserId = parm.UserId, + GoodsRequestList = item.OrderShopGoodsRequestList, + CustomerAddressGuid = parm.CustomerAddressGuid + }; + var goodsTotalMoney = await CalculateBeforePrice(commitPayDtoApi); - return response; + /* 计算运费 */ + GoodsFreightDto goodsFreightDto = new() + { + GoodsRequestList = item.OrderShopGoodsRequestList, + CustomerAddressGuid = parm.CustomerAddressGuid, + }; + freight = await _GoodsServiceApi.GetGoodsFreight(goodsFreightDto); + + Model.Models.Business.OrderManage.Orders.Order order = new() + { + PaymentGuid = paymentGuid, + CustomerGuid = parm.UserId, + OrderNumber = item.OrderNo, + ShopGuid = item.ShopGuid, + CouponGuid = discountRes?.CouponGuid, + CouponMoney = discountRes.CouponMoney, + GoodsTotalAmoun = goodsTotalMoney, + OrderAmount = discountRes.DiscountPrice, + OrderRemark = parm?.Remark, + PayType = parm.PayType, + PayStatus = 1, + DeliveryStatus = 1, + ReceiptStatus = 1, + IsComment = 1, + IsSettled = 1, + OrderSource = 1, + OrderStatus = 1, + DeliveryType = 1, + ExpressPrice = freight, + }; + + + var response = await _OrderRepository.InsertReturnSnowflakeIdAsync(order); + if (response == 0) + throw new CustomException("业务订单数据加入失败"); + + /* 添加订单商品 */ + await AddOrderGoods(commitPayDtoApi, response); + /* 添加订单用户地址 */ + await AddOrderCustomerAddress(commitPayDtoApi, response); + } + + return 0; } @@ -471,7 +522,7 @@ namespace ARW.Service.Api.BusinessService.PaymentManage /// /// /// - public async Task UpdatePayment(OrderReturnJson res) + public async Task UpdatePayment(OrderReturnJson res) { await _PaymentRepository.UpdateAsync(f => new Payment { @@ -480,6 +531,9 @@ namespace ARW.Service.Api.BusinessService.PaymentManage PaymentStatus = 2, Update_time = DateTime.Now, }, f => f.PaymentNumber == res.out_trade_no); + + var payment = await _PaymentRepository.GetFirstAsync(s => s.PaymentNumber == res.out_trade_no); + return payment.PaymentGuid; } @@ -488,78 +542,83 @@ namespace ARW.Service.Api.BusinessService.PaymentManage /// /// /// - public async Task UpdateOrder(OrderReturnJson res) + public async Task UpdateOrder(OrderReturnJson res, long paymentGuid) { + var orderList = await _OrderRepository.GetListAsync(s => s.PaymentGuid == paymentGuid); - await _OrderRepository.UpdateAsync(f => new Model.Models.Business.OrderManage.Orders.Order + foreach (var item in orderList) { - TransactionId = res.transaction_id, - PayPrice = res.amount.payer_total / 100, - PayStatus = 2, - PayTime = DateTime.Now, - Update_time = DateTime.Now, - }, f => f.OrderNumber == res.out_trade_no); - - var order = await _OrderRepository.GetFirstAsync(s => s.OrderNumber == res.out_trade_no); - - - /* 删除购物车中对应的商品 */ - var cartIds = Tools.SpitIntArrary(order.CartIds); - foreach (var cartId in cartIds) - { - await _CartRepository.UpdateAsync(s => new Cart + await _OrderRepository.UpdateAsync(f => new Model.Models.Business.OrderManage.Orders.Order { - IsDelete = true, - }, s => s.CartId == cartId); - } + TransactionId = res.transaction_id, + PayPrice = item.GoodsTotalAmoun, + PayStatus = 2, + PayTime = DateTime.Now, + Update_time = DateTime.Now, + }, f => f.OrderGuid == item.OrderGuid); - /* 对应优惠券修改为已使用 */ - if (order.CouponGuid != 0) - { - var customer = await _CustomerRepository.GetFirstAsync(s => s.CustomerXcxOpenid == res.payer.openid); - var customerCoupon = await _CustomerCouponRepository.GetFirstAsync(s => s.CouponGuid == order.CouponGuid && s.CustomerGuid == customer.CustomerGuid); - await _CustomerCouponRepository.UpdateAsync(s => new CustomerCoupon + + var order = await _OrderRepository.GetFirstAsync(s => s.OrderNumber == item.OrderNumber); + + + /* 删除购物车中对应的商品 */ + var cartIds = Tools.SpitIntArrary(order.CartIds); + foreach (var cartId in cartIds) { - CustomerCouponIsUsed = 2, - }, s => s.CustomerCouponId == customerCoupon.CustomerCouponId); - } - - - /* 店铺和商品的销售数量增加 对应库存减少*/ - var orderGoodsList = await _OrderGoodsRepository.GetListAsync(s => s.OrderGuid == order.OrderGuid); - foreach (var orderGood in orderGoodsList) - { - var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == orderGood.GoodsGuid); - var shop = await _ShopRepository.GetFirstAsync(s => s.ShopGuid == goods.ShopGuid); - - goods.GoodsSalesActual += orderGood.GoodsTotalNum; - await _GoodsRepository.UpdateAsync(goods); - shop.ShopSalesOrderCount += orderGood.GoodsTotalNum; - await _ShopRepository.UpdateAsync(shop); - - if (goods.GoodsDeductStockType == 2) - { - if (orderGood.GoodsSkuId != 0) + await _CartRepository.UpdateAsync(s => new Cart { - var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == orderGood.GoodsSkuId); - sku.GoodsSkuStockNum -= orderGood.GoodsTotalNum; - goods.GoodsTotalInventory -= orderGood.GoodsTotalNum; - await _GoodsSkuRepository.UpdateAsync(sku); - await _GoodsRepository.UpdateAsync(goods); - } - else + IsDelete = true, + }, s => s.CartId == cartId); + } + + /* 对应优惠券修改为已使用 */ + if (order.CouponGuid != 0) + { + var customer = await _CustomerRepository.GetFirstAsync(s => s.CustomerXcxOpenid == res.payer.openid); + var customerCoupon = await _CustomerCouponRepository.GetFirstAsync(s => s.CouponGuid == order.CouponGuid && s.CustomerGuid == customer.CustomerGuid); + await _CustomerCouponRepository.UpdateAsync(s => new CustomerCoupon { - goods.GoodsTotalInventory -= orderGood.GoodsTotalNum; - await _GoodsRepository.UpdateAsync(goods); + CustomerCouponIsUsed = 2, + }, s => s.CustomerCouponId == customerCoupon.CustomerCouponId); + } + + + /* 店铺和商品的销售数量增加 对应库存减少*/ + var orderGoodsList = await _OrderGoodsRepository.GetListAsync(s => s.OrderGuid == order.OrderGuid); + foreach (var orderGood in orderGoodsList) + { + var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == orderGood.GoodsGuid); + var shop = await _ShopRepository.GetFirstAsync(s => s.ShopGuid == goods.ShopGuid); + + goods.GoodsSalesActual += orderGood.GoodsTotalNum; + await _GoodsRepository.UpdateAsync(goods); + shop.ShopSalesOrderCount += orderGood.GoodsTotalNum; + await _ShopRepository.UpdateAsync(shop); + + if (goods.GoodsDeductStockType == 2) + { + if (orderGood.GoodsSkuId != 0) + { + var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == orderGood.GoodsSkuId); + sku.GoodsSkuStockNum -= orderGood.GoodsTotalNum; + goods.GoodsTotalInventory -= orderGood.GoodsTotalNum; + await _GoodsSkuRepository.UpdateAsync(sku); + await _GoodsRepository.UpdateAsync(goods); + } + else + { + goods.GoodsTotalInventory -= orderGood.GoodsTotalNum; + await _GoodsRepository.UpdateAsync(goods); + } } } + + + /* 积分操作*/ + } - /* 积分操作*/ - - - } diff --git a/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs b/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs index 63ce7b4..7386c77 100644 --- a/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs +++ b/ARW.Service/Api/IBusinessService/OrderManage/OrderRefunds/IOrderRefundServiceApi.cs @@ -26,6 +26,14 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.OrderRefunds Task> GetOrderRefundListApi(OrderRefundQueryDtoApi parm); + /// + /// 获取售后单记录表详情(Api) + /// + /// + /// + Task GetOrderRefundDetails(OrderRefundDtoApi parm); + + /// /// 添加售后单记录表 /// @@ -35,11 +43,22 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.OrderRefunds /// - /// 获取售后单记录表详情(Api) + /// 撤销申请 /// /// /// - Task GetOrderRefundDetails(OrderRefundDtoApi parm); + Task RepealOrderRefund(AddOrderRefundApiDto parm); + + + + /// + /// 买家发货(填写运单号) + /// + /// + /// + Task BuyerDelivery(BuyerDeliveryApiDto parm); + + } } diff --git a/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs b/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs index f1129b3..b4cf3ab 100644 --- a/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs +++ b/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs @@ -14,6 +14,7 @@ using ARW.Service.Business.IBusinessService.Marketing.CouponManage.Coupons; using ARW.Model.Dto.Business.Marketing.CouponManage.Coupons; using ARW.Model.Models.Business.Marketing.CouponManage.Coupons; using ARW.Model.Vo.Business.Marketing.CouponManage.Coupons; +using ARW.Model.Models.Business.ShopManager.Shops; namespace ARW.Service.Business.BusinessService.Marketing.CouponManage.Coupons { @@ -44,6 +45,7 @@ namespace ARW.Service.Business.BusinessService.Marketing.CouponManage.Coupons //开始拼装查询条件d var predicate = Expressionable.Create(); + predicate = predicate.AndIF(parm.ShopGuid != 0, s => s.ShopGuid == parm.ShopGuid); predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.CouponName), s => s.CouponName.Contains(parm.CouponName)); predicate = predicate.AndIF(parm.CouponType != null, s => s.CouponType == parm.CouponType); predicate = predicate.AndIF(parm.CouponExpireType != null, s => s.CouponExpireType == parm.CouponExpireType); @@ -51,12 +53,15 @@ namespace ARW.Service.Business.BusinessService.Marketing.CouponManage.Coupons predicate = predicate.AndIF(parm.CouponDisplayStatus != null, s => s.CouponDisplayStatus == parm.CouponDisplayStatus); var query = _CouponRepository .Queryable() + .LeftJoin((s,c) => s.ShopGuid == c.ShopGuid) .Where(predicate.ToExpression()) .OrderBy(s => s.CouponSort, OrderByType.Asc) - .Select(s => new CouponVo + .Select((s, c) => new CouponVo { CouponId = s.CouponId, CouponGuid = s.CouponGuid, + ShopGuid = s.ShopGuid, + ShopName = c.ShopName, CouponName = s.CouponName, CouponDesc = s.CouponDesc, CouponType = s.CouponType, diff --git a/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs b/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs index fc275d3..945daf5 100644 --- a/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs +++ b/ARW.Service/Business/BusinessService/OrderManage/OrderRefunds/OrderRefundService.cs @@ -47,12 +47,13 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds private readonly IRegionService _RegionService; - public OrderRefundServiceImpl(OrderRefundRepository OrderRefundRepository, IOrderService orderService, ShopAddressRepository shopAddressRepository, IRegionService regionService) + public OrderRefundServiceImpl(OrderRefundRepository OrderRefundRepository, IOrderService orderService, ShopAddressRepository shopAddressRepository, IRegionService regionService, LogisticsCompanyRepository logisticsCompanyRepository) { this._OrderRefundRepository = OrderRefundRepository; _OrderService = orderService; _ShopAddressRepository = shopAddressRepository; _RegionService = regionService; + _LogisticsCompanyRepository = logisticsCompanyRepository; } #region 业务逻辑代码 @@ -66,6 +67,7 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds //开始拼装查询条件d var predicate = Expressionable.Create(); + predicate = predicate.AndIF(parm.ShopGuid != 0, s => s.ShopGuid == parm.ShopGuid); 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); @@ -85,7 +87,10 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds OrderRefundId = s.OrderRefundId, OrderRefundGuid = s.OrderRefundGuid, OrderGuid = s.OrderGuid, + ShopGuid = s.ShopGuid, OrderNumber = d.OrderNumber, + PayPrice = d.PayPrice, + ExpressPrice = d.ExpressPrice, CustomerGuid = s.CustomerGuid, CustomerNickName = c.CustomerNickname, CustomerMobilePhoneNumber = c.CustomerMobilePhoneNumber, @@ -105,7 +110,7 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds ExpressNo = s.ExpressNo, OrderRefundStatus = s.OrderRefundStatus, IsMerchantReceive = s.IsMerchantReceive, - CreateTime = s.Create_time.ToString("yyyy:HH:dd mm:ss") + CreateTime = s.Create_time.ToString("yyyy-MM-dd hh:mm") }); @@ -140,6 +145,7 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds { OrderRefundId = s.OrderRefundId, OrderRefundGuid = s.OrderRefundGuid, + ShopGuid = s.ShopGuid, OrderGuid = s.OrderGuid, OrderNumber = d.OrderNumber, CustomerPhone = c.CustomerMobilePhoneNumber, @@ -158,7 +164,7 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds ExpressNo = s.ExpressNo, OrderRefundStatus = s.OrderRefundStatus, IsMerchantReceive = s.IsMerchantReceive, - CreateTime = s.Create_time.ToString("yyyy:HH:dd mm:ss") + CreateTime = s.Create_time.ToString("yyyy-MM-dd hh:mm") }).Take(1); @@ -168,7 +174,7 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds var data = Tools.JsonToVo(json); data.GoodsInfoList = await _OrderService.GetOrderGoodsList(data.OrderGuid); data.OrderReceive = await GetOrderReceive(data.ShopRefundAddressGuid); - if(data.LogisticsCompanyGuid != null) + if (data.LogisticsCompanyGuid != null) { var company = await _LogisticsCompanyRepository.GetFirstAsync(s => s.LogisticsCompanyGuid == data.LogisticsCompanyGuid); data.LogisticsCompany = company.LogisticsCompanyName; @@ -183,23 +189,55 @@ namespace ARW.Service.Business.BusinessService.OrderManage.OrderRefunds /// - /// 添加或修改售后单记录表 + /// 审核售后订单 /// - public async Task AddOrUpdateOrderRefund(OrderRefund model) + public async Task AuditOrderRefund(OrderRefundAuditDto parm) { - if (model.OrderRefundId != 0) - { - var response = await _OrderRefundRepository.UpdateAsync(model); - return "修改成功!"; - } - else + var str = "审核成功!"; + // 同意 + if (parm.IsAgree == true) { + await _OrderRefundRepository.UpdateAsync(f => new OrderRefund + { + MerchantAuditStatus = 2, + ShopRefundAddressGuid = parm.ShopAddressGuid, + }, s => s.OrderRefundGuid == parm.OrderRefundGuid); - var response = await _OrderRefundRepository.InsertReturnSnowflakeIdAsync(model); - return "添加成功!"; + str = "同意申请!"; } + // 拒绝 + if (parm.IsAgree == false) + { + await _OrderRefundRepository.UpdateAsync(f => new OrderRefund + { + MerchantAuditStatus = 3, + MerchantRefuseDesc = parm.MerchantRefuseDesc, + OrderRefundStatus = 2 + }, s => s.OrderRefundGuid == parm.OrderRefundGuid); + + str = "拒绝申请!"; + } + + return str; } + + /// + /// 商家确认收货 + /// + public async Task ConfirmsReceipt(OrderRefundAuditDto parm) + { + await _OrderRefundRepository.UpdateAsync(f => new OrderRefund + { + IsMerchantReceive = 2, + MerchantReceiveTime = DateTime.Now, + OrderRefundStatus = 3 + }, s => s.OrderRefundGuid == parm.OrderRefundGuid); + + return "确认收货成功"; + } + + #region Excel处理 diff --git a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs index 522f676..da245a6 100644 --- a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs +++ b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs @@ -69,6 +69,7 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders //开始拼装查询条件d var predicate = Expressionable.Create(); + predicate = predicate.AndIF(parm.ShopGuid != 0, s => s.ShopGuid == parm.ShopGuid); predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.OrderNumber), s => s.OrderNumber.Contains(parm.OrderNumber)); predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LogisticsTrackingNumber), s => s.LogisticsTrackingNumber.Contains(parm.LogisticsTrackingNumber)); predicate = predicate.AndIF(parm.PayType != null, s => s.PayType == parm.PayType); diff --git a/ARW.Service/Business/IBusinessService/OrderManage/OrderRefunds/IOrderRefundService.cs b/ARW.Service/Business/IBusinessService/OrderManage/OrderRefunds/IOrderRefundService.cs index 812602c..9de8336 100644 --- a/ARW.Service/Business/IBusinessService/OrderManage/OrderRefunds/IOrderRefundService.cs +++ b/ARW.Service/Business/IBusinessService/OrderManage/OrderRefunds/IOrderRefundService.cs @@ -35,13 +35,20 @@ namespace ARW.Service.Business.IBusinessService.OrderManage.OrderRefunds /// - /// 添加或修改售后单记录表 + /// 审核售后订单 /// /// /// - Task AddOrUpdateOrderRefund(OrderRefund parm); + Task AuditOrderRefund(OrderRefundAuditDto parm); + /// + /// 商家确认收货 + /// + /// + /// + Task ConfirmsReceipt(OrderRefundAuditDto parm); + /// /// Excel导出 diff --git a/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs b/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs index e0ba55c..a3f3ec6 100644 --- a/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs +++ b/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs @@ -18,6 +18,7 @@ using Geocoding; using ARW.Model.Dto.Business.OrderManage.OrderRefunds; using ARW.Service.Business.IBusinessService.OrderManage.OrderRefunds; using ARW.Admin.WebApi.Framework; +using ARW.Service.Business.IBusinessService.LogisticsManage.LogisticsCompanys; namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds { @@ -32,14 +33,16 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds public class OrderRefundApiController : BaseController { private readonly IOrderRefundServiceApi _OrderRefundServiceApi; + private readonly ILogisticsCompanyService _LogisticsCompanyService; /// /// 依赖注入 /// /// 售后单记录表售后单记录表Api服务 - public OrderRefundApiController(IOrderRefundServiceApi OrderRefundServiceApi) + public OrderRefundApiController(IOrderRefundServiceApi OrderRefundServiceApi, ILogisticsCompanyService logisticsCompanyService) { _OrderRefundServiceApi = OrderRefundServiceApi; + _LogisticsCompanyService = logisticsCompanyService; } @@ -55,6 +58,45 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds return SUCCESS(res); } + + /// + /// 获取OrderRefund详情(Api) + /// + /// 查询参数 + /// + [HttpGet("getOrderRefundDetails")] + public async Task GetOrderRefundDetails([FromQuery] OrderRefundDtoApi parm) + { + //if (parm == null) throw new CustomException("参数错误!"); + + var res = await _OrderRefundServiceApi.GetOrderRefundDetails(parm); + + if (res != "[]") + { + res = res.Remove(0, 1); + res = res.Substring(0, res.Length - 1); + var data = res.FromJSON(); + return SUCCESS(data); + } + else + { + return SUCCESS(res); + } + } + + + /// + /// 获取物流公司列表 + /// + /// + [HttpGet("getLogisticsCompanyList")] + public async Task GetLogisticsCompanyList() + { + var res = await _LogisticsCompanyService.GetListAsync(); + return SUCCESS(res); + } + + /// /// 添加售后单记录表 /// @@ -75,29 +117,36 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds /// - /// 获取OrderRefund详情(Api) + /// 撤销申请 /// - /// 查询参数 + /// /// - [HttpGet("getOrderRefundDetails")] - public async Task GetOrderRefundDetails([FromQuery] OrderRefundDtoApi parm) + [HttpPost("repeal")] + [Log(Title = "撤销申请", BusinessType = BusinessType.ADDORUPDATE)] + public async Task RepealOrderRefund([FromBody] AddOrderRefundApiDto parm) { - //if (parm == null) throw new CustomException("参数错误!"); + if (parm == null) { throw new CustomException("请求参数错误"); } - var res = await _OrderRefundServiceApi.GetOrderRefundDetails(parm); - - if (res != "[]") - { - res = res.Remove(0, 1); - res = res.Substring(0, res.Length - 1); - var data = res.FromJSON(); - return SUCCESS(data); - } - else - { - return SUCCESS(res); - } + var res = await _OrderRefundServiceApi.RepealOrderRefund(parm); + return SUCCESS(res); } + + /// + /// 买家发货(填写运单号) + /// + /// + /// + [HttpPost("buyerDelivery")] + [Log(Title = "买家发货(填写运单号)", BusinessType = BusinessType.ADDORUPDATE)] + public async Task BuyerDelivery([FromBody] BuyerDeliveryApiDto parm) + { + if (parm == null) { throw new CustomException("请求参数错误"); } + + var res = await _OrderRefundServiceApi.BuyerDelivery(parm); + return SUCCESS(res); + } + + } } diff --git a/ARW.WebApi/Controllers/Business/Marketing/CouponManage/Coupons/CouponController.cs b/ARW.WebApi/Controllers/Business/Marketing/CouponManage/Coupons/CouponController.cs index af39041..c9cbb0b 100644 --- a/ARW.WebApi/Controllers/Business/Marketing/CouponManage/Coupons/CouponController.cs +++ b/ARW.WebApi/Controllers/Business/Marketing/CouponManage/Coupons/CouponController.cs @@ -15,6 +15,7 @@ using ARW.Model.Models.Business.Marketing.CouponManage.Coupons; using ARW.Model.Vo.Business.Marketing.CouponManage.Coupons; using Microsoft.AspNetCore.Authorization; using ARW.Admin.WebApi.Framework; +using ARW.Service.Business.IBusinessService.ShopManager.Shops; namespace ARW.WebApi.Controllers.Business.Marketing.CouponManage.Coupons @@ -30,14 +31,16 @@ namespace ARW.WebApi.Controllers.Business.Marketing.CouponManage.Coupons public class CouponController : BaseController { private readonly ICouponService _CouponService; + private readonly IShopService _ShopService; /// /// 依赖注入 /// /// 优惠券服务 - public CouponController(ICouponService CouponService) + public CouponController(ICouponService CouponService, IShopService shopService) { _CouponService = CouponService; + _ShopService = shopService; } @@ -50,6 +53,14 @@ namespace ARW.WebApi.Controllers.Business.Marketing.CouponManage.Coupons [ActionPermissionFilter(Permission = "business:coupon:list")] public async Task GetCouponList([FromQuery] CouponQueryDto parm) { + var user = JwtUtil.GetLoginUser(App.HttpContext); + if (user.UserId != 1) + { + var shop = await _ShopService.GetFirstAsync(s => s.ShopUserId == user.UserId); + if (shop == null) throw new Exception("当前用户没有店铺"); + parm.ShopGuid = shop.ShopGuid; + } + var res = await _CouponService.GetCouponList(parm); return SUCCESS(res); } @@ -66,6 +77,14 @@ namespace ARW.WebApi.Controllers.Business.Marketing.CouponManage.Coupons { if (parm == null) { throw new CustomException("请求参数错误"); } + var user = JwtUtil.GetLoginUser(App.HttpContext); + if (user.UserId != 1) + { + var shop = await _ShopService.GetFirstAsync(s => s.ShopUserId == user.UserId); + if (shop == null) throw new Exception("当前用户没有店铺"); + parm.ShopGuid = shop.ShopGuid; + } + var modal = new Coupon(); if (parm.CouponId != 0) modal = parm.Adapt().ToUpdate(HttpContext); else modal = parm.Adapt().ToCreate(HttpContext); diff --git a/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs b/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs index 5eda8f5..89486ac 100644 --- a/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs +++ b/ARW.WebApi/Controllers/Business/OrderManage/OrderRefunds/OrderRefundController.cs @@ -17,6 +17,7 @@ using Microsoft.AspNetCore.Authorization; using ARW.Admin.WebApi.Framework; using ARW.Service.Business.IBusinessService.OrderManage.Orders; using Geocoding; +using ARW.Service.Business.IBusinessService.ShopManager.Shops; namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds { @@ -31,14 +32,16 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds public class OrderRefundController : BaseController { private readonly IOrderRefundService _OrderRefundService; + private readonly IShopService _ShopService; /// /// 依赖注入 /// /// 售后单记录表服务 - public OrderRefundController(IOrderRefundService OrderRefundService) + public OrderRefundController(IOrderRefundService OrderRefundService, IShopService shopService) { _OrderRefundService = OrderRefundService; + _ShopService = shopService; } @@ -51,6 +54,14 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds [ActionPermissionFilter(Permission = "business:orderrefund:list")] public async Task GetOrderRefundList([FromQuery] OrderRefundQueryDto parm) { + var user = JwtUtil.GetLoginUser(App.HttpContext); + if (user.UserId != 1) + { + var shop = await _ShopService.GetFirstAsync(s => s.ShopUserId == user.UserId); + if (shop == null) throw new Exception("当前用户没有店铺"); + parm.ShopGuid = shop.ShopGuid; + } + var res = await _OrderRefundService.GetOrderRefundList(parm); return SUCCESS(res); } @@ -82,25 +93,37 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.OrderRefunds /// - /// 添加或修改售后单记录表 + /// 审核售后订单 /// /// /// - [HttpPost("addOrUpdateOrderRefund")] - [ActionPermissionFilter(Permission = "business:orderrefund:addOrUpdate")] - [Log(Title = "添加或修改售后单记录表", BusinessType = BusinessType.ADDORUPDATE)] - public async Task AddOrUpdateOrderRefund([FromBody] OrderRefundDto parm) + [HttpPost("auditOrderRefund")] + [Log(Title = "审核售后订单", BusinessType = BusinessType.ADDORUPDATE)] + public async Task AuditOrderRefund([FromBody] OrderRefundAuditDto parm) { if (parm == null) { throw new CustomException("请求参数错误"); } - var modal = new OrderRefund(); - if (parm.OrderRefundId != 0) modal = parm.Adapt().ToUpdate(HttpContext); - else modal = parm.Adapt().ToCreate(HttpContext); - - var res = await _OrderRefundService.AddOrUpdateOrderRefund(modal); + var res = await _OrderRefundService.AuditOrderRefund(parm); return SUCCESS(res); } + + /// + /// 商家确认收货 + /// + /// + /// + [HttpPost("confirmsReceipt")] + [Log(Title = "商家确认收货", BusinessType = BusinessType.ADDORUPDATE)] + public async Task ConfirmsReceipt([FromBody] OrderRefundAuditDto parm) + { + if (parm == null) { throw new CustomException("请求参数错误"); } + + var res = await _OrderRefundService.ConfirmsReceipt(parm); + return SUCCESS(res); + } + + /// /// 删除售后单记录表 /// diff --git a/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs b/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs index a11b209..2b71155 100644 --- a/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs +++ b/ARW.WebApi/Controllers/Business/OrderManage/Orders/OrderController.cs @@ -19,6 +19,7 @@ using ARW.Service.Api.IBusinessService.OrderManage.Orders; using Geocoding; using ARW.Service.Business.IBusinessService.OrderManage.OrderGoodss; using ARW.Service.Business.IBusinessService.OrderManage.OrderCustomerAddreses; +using ARW.Service.Business.IBusinessService.ShopManager.Shops; namespace ARW.WebApi.Controllers.Business.OrderManage.Orders { @@ -32,6 +33,7 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.Orders [Route("business/[controller]")] public class OrderController : BaseController { + private readonly IShopService _ShopService; private readonly IOrderService _OrderService; private readonly IOrderGoodsService _OrderGoodsService; private readonly IOrderCustomerAddressService _OrderCustomerAddressService; @@ -40,11 +42,12 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.Orders /// 依赖注入 /// /// 订单服务 - public OrderController(IOrderService OrderService, IOrderGoodsService orderGoodsService, IOrderCustomerAddressService orderCustomerAddressService) + public OrderController(IOrderService OrderService, IOrderGoodsService orderGoodsService, IOrderCustomerAddressService orderCustomerAddressService, IShopService shopService) { _OrderService = OrderService; _OrderGoodsService = orderGoodsService; _OrderCustomerAddressService = orderCustomerAddressService; + _ShopService = shopService; } @@ -57,6 +60,14 @@ namespace ARW.WebApi.Controllers.Business.OrderManage.Orders [ActionPermissionFilter(Permission = "business:order:list")] public async Task GetOrderList([FromQuery] OrderQueryDto parm) { + var user = JwtUtil.GetLoginUser(App.HttpContext); + if (user.UserId != 1) + { + var shop = await _ShopService.GetFirstAsync(s => s.ShopUserId == user.UserId); + if (shop == null) throw new Exception("当前用户没有店铺"); + parm.ShopGuid = shop.ShopGuid; + } + var res = await _OrderService.GetOrderList(parm); return SUCCESS(res); }