From bd9b94e7dba8dbc32077e8bdd256e4970edfdbc5 Mon Sep 17 00:00:00 2001
From: "AERWEN\\26795" <123456789a>
Date: Sun, 15 Oct 2023 13:15:42 +0800
Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E8=AE=A2=E5=8D=95?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=8C=E7=A1=AE=E8=AE=A4=E6=94=B6=E8=B4=A7?=
=?UTF-8?q?=EF=BC=8C=E5=BE=85=E6=94=AF=E4=BB=98=E5=8F=96=E6=B6=88=E8=AE=A2?=
=?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=B7=B2=E6=94=AF=E4=BB=98=E5=8F=96=E6=B6=88?=
=?UTF-8?q?=E8=AE=A2=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dto/Api/OrderManage/Orders/OrderApiDto.cs | 2 +-
.../Vo/Api/OrderManage/Orders/OrderApiVo.cs | 185 +--------------
.../Api/OrderManage/Orders/OrderGoodsApiVo.cs | 63 +++++
.../OrderManage/Orders/OrderGoodsSpecApiVo.cs | 31 +++
.../BusinessService/Carts/CartServiceApi.cs | 4 +-
.../HistorySearchs/HistorySearchServiceApi.cs | 2 +-
.../OrderManage/Orders/OrderServiceApi.cs | 215 +++++++++++++++---
.../PayManage/PayServiceApi.cs | 51 ++++-
.../OrderManage/Orders/IOrderServiceApi.cs | 27 ++-
.../BusinessService/Carts/CartService.cs | 12 +-
.../OrderManage/Orders/OrderService.cs | 51 +++--
.../OrderManage/Orders/OrderApiController.cs | 53 ++++-
12 files changed, 452 insertions(+), 244 deletions(-)
create mode 100644 ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsApiVo.cs
create mode 100644 ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsSpecApiVo.cs
diff --git a/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs b/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs
index fcd5a8f..e1d0eeb 100644
--- a/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs
+++ b/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs
@@ -21,7 +21,7 @@ namespace ARW.Model.Dto.Api.OrderManage.Orders
public string LogisticsTrackingNumber { get; set; }
public int? DeliveryStatus { get; set; }
public int? ReceiptStatus { get; set; }
- public int? OrderStatus { get; set; }
+ public int OrderStatus { get; set; }
}
diff --git a/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs b/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs
index fe96c6a..e2ebe7c 100644
--- a/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs
+++ b/ARW.Model/Vo/Api/OrderManage/Orders/OrderApiVo.cs
@@ -2,6 +2,7 @@ using Newtonsoft.Json;
using OfficeOpenXml.Attributes;
using SqlSugar;
using System;
+using System.Collections.Generic;
namespace ARW.Model.Vo.Api.OrderManage.Orders
{
@@ -18,7 +19,6 @@ namespace ARW.Model.Vo.Api.OrderManage.Orders
///
/// 描述 :
///
- [EpplusIgnore]
public int OrderId { get; set; }
@@ -26,239 +26,74 @@ namespace ARW.Model.Vo.Api.OrderManage.Orders
/// 描述 :
///
[JsonConverter(typeof(ValueToStringConverter))]
- [EpplusIgnore]
public long OrderGuid { get; set; }
- ///
- /// 描述 :商品guid
- ///
- [JsonConverter(typeof(ValueToStringConverter))]
- [EpplusTableColumn(Header = "商品guid")]
- public long GoodsGuid { get; set; }
-
-
- ///
- /// 描述 :订单流水guid
- ///
- [JsonConverter(typeof(ValueToStringConverter))]
- [EpplusTableColumn(Header = "订单流水guid")]
- public long PaymentGuid { get; set; }
-
-
- ///
- /// 描述 :客户guid
- ///
- [JsonConverter(typeof(ValueToStringConverter))]
- [EpplusTableColumn(Header = "客户guid")]
- public long CustomerGuid { get; set; }
-
-
- ///
- /// 描述 :店铺guid
- ///
- [JsonConverter(typeof(ValueToStringConverter))]
- [EpplusIgnore]
- public long? ShopGuid { get; set; }
-
-
///
/// 描述 :订单号
///
- [EpplusTableColumn(Header = "订单号")]
- public string OrderNumber { get; set; }
+ public string OrderNo { get; set; }
+
+
+ ///
+ /// 描述 :商品列表
+ ///
+ public List GoodsList { get; set; }
///
/// 描述 :商品总金额
///
- [EpplusTableColumn(Header = "商品总金额")]
public decimal GoodsTotalAmoun { get; set; }
///
/// 描述 :订单金额
///
- [EpplusTableColumn(Header = "订单金额")]
public decimal OrderAmount { get; set; }
- ///
- /// 描述 :优惠券guid
- ///
- [JsonConverter(typeof(ValueToStringConverter))]
- [EpplusIgnore]
- public long? CouponGuid { get; set; }
-
-
- ///
- /// 描述 :优惠券抵扣金额
- ///
- [EpplusIgnore]
- public decimal CouponMoney { get; set; }
-
-
- ///
- /// 描述 :积分抵扣金额
- ///
- [EpplusIgnore]
- public decimal PointsMoney { get; set; }
-
-
- ///
- /// 描述 :积分抵扣数量
- ///
- [EpplusIgnore]
- public decimal PointsNum { get; set; }
-
-
///
/// 描述 :实际付款金额(包含运费)
///
- [EpplusTableColumn(Header = "实际付款金额(包含运费)")]
public decimal PayPrice { get; set; }
- ///
- /// 描述 :后台修改的订单金额(差价)
- ///
- [EpplusIgnore]
- public decimal UpdatePrice { get; set; }
-
-
- ///
- /// 描述 :买家留言
- ///
- [EpplusIgnore]
- public string OrderRemark { get; set; }
-
-
- ///
- /// 描述 :支付方式(1微信支付 2余额支付)
- ///
- [EpplusTableColumn(Header = "支付方式(1微信支付 2余额支付)")]
- public int PayType { get; set; }
-
-
- ///
- /// 描述 :付款状态(1未付款 2已付款)
- ///
- [EpplusTableColumn(Header = "付款状态(1未付款 2已付款)")]
- public int PayStatus { get; set; }
-
-
- ///
- /// 描述 :付款时间
- ///
- [EpplusTableColumn(Header = "付款时间", NumberFormat = "yyyy-MM-dd HH:mm:ss")]
- public DateTime? PayTime { get; set; }
-
-
- ///
- /// 描述 :配送方式(1快递配送)
- ///
- [EpplusTableColumn(Header = "配送方式(1快递配送)")]
- public int DeliveryType { get; set; }
-
-
///
/// 描述 :运费金额
///
- [EpplusTableColumn(Header = "运费金额")]
public decimal ExpressPrice { get; set; }
///
- /// 描述 :物流公司guid
+ /// 描述 :付款状态(1未付款 2已付款)
///
- [JsonConverter(typeof(ValueToStringConverter))]
- [EpplusIgnore]
- public long? LogisticsCompanyGuid { get; set; }
-
-
- ///
- /// 描述 :物流公司
- ///
- [EpplusIgnore]
- public string LogisticsCompany { get; set; }
-
-
- ///
- /// 描述 :物流单号
- ///
- [EpplusIgnore]
- public string LogisticsTrackingNumber { get; set; }
+ public int PayStatus { get; set; }
///
/// 描述 :发货状态(1未发货 2已发货)
///
- [EpplusTableColumn(Header = "发货状态(1未发货 2已发货)")]
public int DeliveryStatus { get; set; }
- ///
- /// 描述 :发货时间
- ///
- [EpplusIgnore]
- public DateTime? DeliveryTime { get; set; }
-
-
///
/// 描述 :收货状态(1未收货 2已收货)
///
- [EpplusTableColumn(Header = "收货状态(1未收货 2已收货)")]
public int ReceiptStatus { get; set; }
- ///
- /// 描述 :收货时间
- ///
- [EpplusIgnore]
- public DateTime? ReceiptTime { get; set; }
-
-
///
/// 描述 :订单状态(1进行中 2取消 3待取消 4已完成)
///
- [EpplusTableColumn(Header = "订单状态(1进行中 2取消 3待取消 4已完成)")]
public int OrderStatus { get; set; }
- ///
- /// 描述 :赠送的积分数量
- ///
- [EpplusIgnore]
- public decimal PointsBonus { get; set; }
-
-
- ///
- /// 描述 :订单是否已结算(1未结算 2已结算)
- ///
- [EpplusTableColumn(Header = "订单是否已结算(1未结算 2已结算)")]
- public int IsSettled { get; set; }
-
-
- ///
- /// 描述 :微信支付交易号
- ///
- [EpplusIgnore]
- public string TransactionId { get; set; }
-
-
///
/// 描述 :是否已评价(1否 2是)
///
- [EpplusTableColumn(Header = "是否已评价(1否 2是)")]
public int IsComment { get; set; }
-
- ///
- /// 描述 :订单来源(1普通订单)
- ///
- [EpplusTableColumn(Header = "订单来源(1普通订单)")]
- public int OrderSource { get; set; }
-
}
diff --git a/ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsApiVo.cs b/ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsApiVo.cs
new file mode 100644
index 0000000..c174479
--- /dev/null
+++ b/ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsApiVo.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 OrderGoodsApiVo
+ {
+ ///
+ /// 描述 : 商品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.Model/Vo/Api/OrderManage/Orders/OrderGoodsSpecApiVo.cs b/ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsSpecApiVo.cs
new file mode 100644
index 0000000..2da0a86
--- /dev/null
+++ b/ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsSpecApiVo.cs
@@ -0,0 +1,31 @@
+using Newtonsoft.Json;
+using OfficeOpenXml.Attributes;
+using SqlSugar;
+using System;
+
+namespace ARW.Model.Vo.Api.OrderManage.Orders
+{
+ ///
+ /// 订单商品规格展示对象Api
+ ///
+ /// @author lwh
+ /// @date 2023-10-14
+ ///
+ public class OrderGoodsSpecApiVo
+ {
+ ///
+ /// 描述 :规格组名称
+ ///
+ public string SpecTitle { get; set; }
+
+
+ ///
+ /// 描述 :规格值
+ ///
+ public string SpecValue { get; set; }
+
+ }
+
+
+
+}
diff --git a/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs b/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs
index 900686f..24521d0 100644
--- a/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/Carts/CartServiceApi.cs
@@ -334,7 +334,7 @@ namespace ARW.Service.Api.BusinessService.Carts
{
var response = await _CartRepository.UpdateAsync(f => new Cart
{
- IsSelected = parm.IsSelected
+ IsSelected = !f.IsSelected
}, s => s.CartId == parm.CartId);
return "修改成功!";
}
@@ -347,7 +347,7 @@ namespace ARW.Service.Api.BusinessService.Carts
{
var response = await _CartRepository.UpdateAsync(f => new Cart
{
- IsSelected = parm.IsSelected
+ IsSelected = !f.IsSelected
}, s => s.CustomerGuid == parm.CustomerGuid && s.IsDelete == false);
return "修改成功!";
}
diff --git a/ARW.Service/Api/BusinessService/Custom/HistorySearchs/HistorySearchServiceApi.cs b/ARW.Service/Api/BusinessService/Custom/HistorySearchs/HistorySearchServiceApi.cs
index 955bb9d..ef9a3f4 100644
--- a/ARW.Service/Api/BusinessService/Custom/HistorySearchs/HistorySearchServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/Custom/HistorySearchs/HistorySearchServiceApi.cs
@@ -77,7 +77,7 @@ namespace ARW.Service.Api.BusinessService.Custom.HistorySearchs
var query = _HistorySearchRepository
.Queryable()
- .Where(s => s.Create_time >= todayStart && s.Create_time <= todayEnd) // 仅选择当天的搜索记录
+ //.Where(s => s.Create_time >= todayStart && s.Create_time <= todayEnd) // 仅选择当天的搜索记录
.Where(predicate.ToExpression())
.OrderBy(s => s.Create_time, OrderByType.Desc)
.Select(s => new HistorySearchVoApi
diff --git a/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs b/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs
index 505af8b..544dbb2 100644
--- a/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/OrderManage/Orders/OrderServiceApi.cs
@@ -1,10 +1,8 @@
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;
@@ -13,6 +11,13 @@ using ARW.Service.Api.IBusinessService.OrderManage.Orders;
using ARW.Model.Dto.Api.OrderManage.Orders;
using ARW.Model.Models.Business.OrderManage.Orders;
using ARW.Model.Vo.Api.OrderManage.Orders;
+using ARW.Repository.Business.OrderManage.OrderGoodss;
+using ARW.Repository.Business.GoodsManager.Goodss;
+using ARW.Repository.Business.GoodsManager.GoodsSpecs.GoodsSkus;
+using ARW.Repository.Business.GoodsManager.GoodsSpecs.Specs;
+using ARW.Repository.Business.GoodsManager.GoodsSpecs.SpecValues;
+using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.GoodsSkus;
+using ARW.Model.Models.Business.GoodsManager.GoodsSpecs.SpecValues;
namespace ARW.Service.Api.BusinessService.OrderManage.Orders
{
@@ -26,10 +31,20 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
public class OrderServiceImplApi : BaseService, IOrderServiceApi
{
private readonly OrderRepository _OrderRepository;
+ private readonly OrderGoodsRepository _OrderGoodsRepository;
+ private readonly GoodsRepository _GoodsRepository;
+ private readonly GoodsSkuRepository _GoodsSkuRepository;
+ private readonly SpecRepository _SpecRepository;
+ private readonly SpecValueRepository _SpecValueRepository;
- public OrderServiceImplApi(OrderRepository OrderRepository)
+ public OrderServiceImplApi(OrderRepository OrderRepository, OrderGoodsRepository orderGoodsRepository, GoodsRepository goodsRepository, GoodsSkuRepository goodsSkuRepository, SpecRepository specRepository, SpecValueRepository specValueRepository)
{
this._OrderRepository = OrderRepository;
+ _OrderGoodsRepository = orderGoodsRepository;
+ _GoodsRepository = goodsRepository;
+ _GoodsSkuRepository = goodsSkuRepository;
+ _SpecRepository = specRepository;
+ _SpecValueRepository = specValueRepository;
}
#region Api接口代码
@@ -46,13 +61,12 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
var predicate = Expressionable.Create();
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.OrderNumber), s => s.OrderNumber.Contains(parm.OrderNumber));
+ predicate = predicate.AndIF(parm.OrderStatus != 0, s => s.OrderStatus == parm.OrderStatus);
predicate = predicate.AndIF(parm.PayType != null, s => s.PayType == parm.PayType);
predicate = predicate.AndIF(parm.PayStatus != null, s => s.PayStatus == parm.PayStatus);
predicate = predicate.AndIF(parm.DeliveryType != null, s => s.DeliveryType == parm.DeliveryType);
- predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LogisticsTrackingNumber), s => s.LogisticsTrackingNumber.Contains(parm.LogisticsTrackingNumber));
predicate = predicate.AndIF(parm.DeliveryStatus != null, s => s.DeliveryStatus == parm.DeliveryStatus);
predicate = predicate.AndIF(parm.ReceiptStatus != null, s => s.ReceiptStatus == parm.ReceiptStatus);
- predicate = predicate.AndIF(parm.OrderStatus != null, s => s.OrderStatus == parm.OrderStatus);
var query = _OrderRepository
.Queryable()
.Where(predicate.ToExpression())
@@ -61,42 +75,111 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
{
OrderId = s.OrderId,
OrderGuid = s.OrderGuid,
- PaymentGuid = s.PaymentGuid,
- CustomerGuid = s.CustomerGuid,
- OrderNumber = s.OrderNumber,
+ OrderNo = s.OrderNumber,
GoodsTotalAmoun = s.GoodsTotalAmoun,
OrderAmount = s.OrderAmount,
- CouponGuid = s.CouponGuid,
- CouponMoney = s.CouponMoney,
- PointsMoney = s.PointsMoney,
- PointsNum = s.PointsNum,
PayPrice = s.PayPrice,
- UpdatePrice = s.UpdatePrice,
- OrderRemark = s.OrderRemark,
- PayType = s.PayType,
PayStatus = s.PayStatus,
- PayTime = s.PayTime,
- DeliveryType = s.DeliveryType,
ExpressPrice = s.ExpressPrice,
- LogisticsCompanyGuid = s.LogisticsCompanyGuid,
- LogisticsCompany = s.LogisticsCompany,
- LogisticsTrackingNumber = s.LogisticsTrackingNumber,
DeliveryStatus = s.DeliveryStatus,
- DeliveryTime = s.DeliveryTime,
ReceiptStatus = s.ReceiptStatus,
- ReceiptTime = s.ReceiptTime,
OrderStatus = s.OrderStatus,
- PointsBonus = s.PointsBonus,
- IsSettled = s.IsSettled,
- TransactionId = s.TransactionId,
IsComment = s.IsComment,
- OrderSource = s.OrderSource,
});
- return await query.ToPageAsync(parm);
+ var list = await query.ToPageAsync(parm);
+
+ foreach (var item in list.Result)
+ {
+ var goodsList = 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 GetGoodsSpecList(_item.GoodsSkuId);
+
+ goodsList.Add(orderGood);
+ }
+ item.GoodsList = goodsList;
+ }
+
+ return list;
}
+
+ ///
+ /// 待付款取消订单
+ ///
+ ///
+ ///
+ public async Task WaitPayCancelOrder(OrderDtoApi parm)
+ {
+ var res = await _OrderRepository.UpdateAsync(f => new Order
+ {
+ OrderStatus = 2,
+ IsSettled = 2,
+ }, f => f.OrderGuid == parm.OrderGuid);
+ if (res)
+ return "取消订单成功";
+ else
+ return "取消订单失败!";
+ }
+
+
+ ///
+ /// 已付款取消订单
+ ///
+ ///
+ ///
+ public async Task PayCancelOrder(OrderDtoApi parm)
+ {
+ var res = await _OrderRepository.UpdateAsync(f => new Order
+ {
+ OrderStatus = 3,
+ }, f => f.OrderGuid == parm.OrderGuid);
+ if (res)
+ return "取消订单成功";
+ else
+ return "取消订单失败!";
+ }
+
+
+ ///
+ /// 确认收货
+ ///
+ ///
+ ///
+ public async Task ConfirmReceipt(OrderDtoApi parm)
+ {
+ // 收货状态 => 已收货
+ // 订单状态 => 已完成
+ // 订单结算状态 => 已结算
+ var res = await _OrderRepository.UpdateAsync(f => new Order
+ {
+ ReceiptStatus = 2,
+ ReceiptTime = DateTime.Now,
+ OrderStatus = 4,
+ IsSettled = 2,
+ }, f => f.OrderGuid == parm.OrderGuid);
+ if (res)
+ return "确认收货成功";
+ else
+ return "收货失败!";
+ }
+
+
+
///
/// 查询订单详情(Api)
///
@@ -149,6 +232,84 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
}
+
+
+ #region 业务方法调用
+
+
+ ///
+ /// 获取商品规格
+ ///
+ /// 规格id
+ ///
+ public async Task> GetGoodsSpecList(int? skuId)
+ {
+ var list = new List();
+ var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == skuId);
+ if (sku.SpecValueId != 0)
+ {
+ var orderGoodsSpecApiVo1 = await GetGoodsSpec(sku, 1);
+ list.Add(orderGoodsSpecApiVo1);
+
+ if (sku.SpecSecondValueId != 0)
+ {
+ var orderGoodsSpecApiVo2 = await GetGoodsSpec(sku, 2);
+ list.Add(orderGoodsSpecApiVo2);
+
+ if (sku.SpecThirdValueId != 0)
+ {
+ var orderGoodsSpecApiVo3 = await GetGoodsSpec(sku, 3);
+ list.Add(orderGoodsSpecApiVo3);
+ }
+ }
+ }
+
+ return list;
+ }
+
+
+ public async Task GetGoodsSpec(GoodsSku sku, int level)
+ {
+ var orderGoodsSpecApiVo = new OrderGoodsSpecApiVo();
+ var specValue = new SpecValue();
+ switch (level)
+ {
+ case 1:
+ specValue = await _SpecValueRepository.GetFirstAsync(s => s.SpecValueId == sku.SpecValueId);
+ orderGoodsSpecApiVo = await GetSpecValue(specValue);
+ break;
+ case 2:
+ specValue = await _SpecValueRepository.GetFirstAsync(s => s.SpecValueId == sku.SpecSecondValueId);
+ orderGoodsSpecApiVo = await GetSpecValue(specValue);
+ break;
+ case 3:
+ specValue = await _SpecValueRepository.GetFirstAsync(s => s.SpecValueId == sku.SpecThirdValueId);
+ orderGoodsSpecApiVo = await GetSpecValue(specValue);
+ break;
+
+ default:
+ break;
+ }
+ return orderGoodsSpecApiVo;
+ }
+
+
+ public async Task GetSpecValue(SpecValue specValue)
+ {
+ var spec = await _SpecRepository.GetFirstAsync(s => s.SpecId == specValue.SpecId);
+ OrderGoodsSpecApiVo orderGoodsSpecApiVo = new()
+ {
+ SpecTitle = spec.SpecName,
+ SpecValue = specValue.SpecValueName
+ };
+ return orderGoodsSpecApiVo;
+ }
+
+ #endregion
+
+
+
+
#endregion
}
diff --git a/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs b/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs
index fd5334d..7289920 100644
--- a/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs
@@ -193,14 +193,28 @@ namespace ARW.Service.Api.BusinessService.PaymentManage
foreach (var item in parm.GoodsRequestList)
{
var cart = await _CartRepository.GetFirstAsync(s => s.CartId == item.CartId);
- var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == cart.GoodsGuid);
- var quantity = cart.CartGoodsNum;
+ long goodsGuid = 0;
+ var quantity = 0;
+ var skuId = 0;
+ if (cart != null)
+ {
+ goodsGuid = cart.GoodsGuid;
+ quantity = cart.CartGoodsNum;
+ skuId = cart.GoodsSkuId;
+ }
+ else
+ {
+ goodsGuid = item.SpuId;
+ quantity = item.Quantity;
+ skuId = item.SkuId;
+ }
+ var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == goodsGuid);
/* 计算商品总价 */
// 是否有规格
- if (cart.GoodsSkuId != 0)
+ if (skuId != 0)
{
- var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == cart.GoodsSkuId);
+ var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == skuId);
if (sku != null)
{
price += sku.GoodsSkuPrice * quantity;
@@ -363,14 +377,31 @@ namespace ARW.Service.Api.BusinessService.PaymentManage
decimal singlePrice = 0;
decimal toatlPrice = 0;
var cart = await _CartRepository.GetFirstAsync(s => s.CartId == item.CartId);
- var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == cart.GoodsGuid);
- var quantity = cart.CartGoodsNum;
+
+ long goodsGuid = 0;
+ var quantity = 0;
+ var skuId = 0;
+ if (cart != null)
+ {
+ goodsGuid = cart.GoodsGuid;
+ quantity = cart.CartGoodsNum;
+ skuId = cart.GoodsSkuId;
+ }
+ else
+ {
+ goodsGuid = item.SpuId;
+ quantity = item.Quantity;
+ skuId = item.SkuId;
+ }
+
+ var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == goodsGuid);
+
/* 计算商品总价 */
// 是否有规格
- if (cart.GoodsSkuId != 0)
+ if (skuId != 0)
{
- var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == cart.GoodsSkuId);
+ var sku = await _GoodsSkuRepository.GetFirstAsync(s => s.GoodsSkuId == skuId);
if (sku != null)
{
singlePrice = sku.GoodsSkuPrice;
@@ -387,8 +418,8 @@ namespace ARW.Service.Api.BusinessService.PaymentManage
OrderGoods orderGoods = new()
{
OrderGuid = orderGuid,
- GoodsGuid = cart.GoodsGuid,
- GoodsSkuId = cart.GoodsSkuId,
+ GoodsGuid = goodsGuid,
+ GoodsSkuId = skuId,
GoodsPrice = singlePrice,
GoodsTotalNum = quantity,
GoodsTotalAmoun = toatlPrice,
diff --git a/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs
index 6658f23..7794cb6 100644
--- a/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs
+++ b/ARW.Service/Api/IBusinessService/OrderManage/Orders/IOrderServiceApi.cs
@@ -25,7 +25,32 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.Orders
///
Task> GetOrderListApi(OrderQueryDtoApi parm);
- ///
+
+ ///
+ /// 待付款取消订单
+ ///
+ ///
+ ///
+ Task WaitPayCancelOrder(OrderDtoApi parm);
+
+
+ ///
+ /// 已付款取消订单
+ ///
+ ///
+ ///
+ Task PayCancelOrder(OrderDtoApi parm);
+
+
+ ///
+ /// 确认收货
+ ///
+ ///
+ ///
+ Task ConfirmReceipt(OrderDtoApi parm);
+
+
+ ///
/// 获取订单详情(Api)
///
///
diff --git a/ARW.Service/Business/BusinessService/Carts/CartService.cs b/ARW.Service/Business/BusinessService/Carts/CartService.cs
index f56bec5..4b8aa08 100644
--- a/ARW.Service/Business/BusinessService/Carts/CartService.cs
+++ b/ARW.Service/Business/BusinessService/Carts/CartService.cs
@@ -78,8 +78,16 @@ namespace ARW.Service.Business.BusinessService.Carts
}
else
{
-
- var response = await _CartRepository.InsertReturnSnowflakeIdAsync(model);
+ var cart = await _CartRepository.GetFirstAsync(s => s.GoodsGuid == model.GoodsGuid && s.GoodsSkuId == model.GoodsSkuId);
+ if (cart != null)
+ {
+ cart.CartGoodsNum += model.CartGoodsNum;
+ var response = await _CartRepository.UpdateAsync(cart);
+ }
+ else
+ {
+ var response = await _CartRepository.InsertReturnSnowflakeIdAsync(model);
+ }
return "添加成功!";
}
}
diff --git a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs
index 4cc2688..522f676 100644
--- a/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs
+++ b/ARW.Service/Business/BusinessService/OrderManage/Orders/OrderService.cs
@@ -70,10 +70,10 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders
var predicate = Expressionable.Create();
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);
predicate = predicate.AndIF(parm.PayStatus != null, s => s.PayStatus == parm.PayStatus);
predicate = predicate.AndIF(parm.DeliveryType != null, s => s.DeliveryType == parm.DeliveryType);
- predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LogisticsTrackingNumber), s => s.LogisticsTrackingNumber.Contains(parm.LogisticsTrackingNumber));
predicate = predicate.AndIF(parm.DeliveryStatus != null, s => s.DeliveryStatus == parm.DeliveryStatus);
predicate = predicate.AndIF(parm.ReceiptStatus != null, s => s.ReceiptStatus == parm.ReceiptStatus);
predicate = predicate.AndIF(parm.OrderStatus != null, s => s.OrderStatus == parm.OrderStatus);
@@ -308,32 +308,35 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders
var goodsInfoList = new List();
var orderGoodsList = await _OrderGoodsRepository.GetListAsync(s => s.OrderGuid == orderGuid);
- if (orderGoodsList.Count <= 0) throw new CustomException("订单商品不存在");
- foreach (var orderGoods in orderGoodsList)
+ if (orderGoodsList.Count >= 0)
{
- var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == orderGoods.GoodsGuid) ?? throw new CustomException("商品不存在");
- var orderGoodsInfo = new OrderGoodsVo();
- orderGoodsInfo.GoodsName = goods.GoodsName;
- orderGoodsInfo.GoodsPicture = goods.GoodsPicture;
- orderGoodsInfo.GoodsTotalNum = orderGoods.GoodsTotalNum;
- orderGoodsInfo.GoodsTotalNum = orderGoods.GoodsTotalNum;
- if (orderGoods.GoodsSkuId != 0)
+ //throw new CustomException("订单商品不存在");
+ foreach (var orderGoods in orderGoodsList)
{
- var specName = await _GoodsSkuService.GetSpecValueFullName(orderGoods.GoodsSkuId);
- var sku = await _GoodsSkuService.GetByIdAsync(orderGoods.GoodsSkuId);
- if (sku != null)
- orderGoodsInfo.GoodsPrice = sku.GoodsSkuPrice;
- orderGoodsInfo.GoodsSpecName = specName;
- orderGoodsInfo.GoodsCoding = goods.GoodsCoding;
- }
- else
- {
- orderGoodsInfo.GoodsPrice = goods.GoodsPriceHighest;
- orderGoodsInfo.GoodsWeight = goods.GoodsWeight;
- }
- orderGoodsInfo.GoodsTotalPrice = orderGoodsInfo.GoodsPrice * orderGoodsInfo.GoodsTotalNum;
+ var goods = await _GoodsRepository.GetFirstAsync(s => s.GoodsGuid == orderGoods.GoodsGuid) ?? throw new CustomException("商品不存在");
+ var orderGoodsInfo = new OrderGoodsVo();
+ orderGoodsInfo.GoodsName = goods.GoodsName;
+ orderGoodsInfo.GoodsPicture = goods.GoodsPicture;
+ orderGoodsInfo.GoodsTotalNum = orderGoods.GoodsTotalNum;
+ orderGoodsInfo.GoodsTotalNum = orderGoods.GoodsTotalNum;
+ if (orderGoods.GoodsSkuId != 0)
+ {
+ var specName = await _GoodsSkuService.GetSpecValueFullName(orderGoods.GoodsSkuId);
+ var sku = await _GoodsSkuService.GetByIdAsync(orderGoods.GoodsSkuId);
+ if (sku != null)
+ orderGoodsInfo.GoodsPrice = sku.GoodsSkuPrice;
+ orderGoodsInfo.GoodsSpecName = specName;
+ orderGoodsInfo.GoodsCoding = goods.GoodsCoding;
+ }
+ else
+ {
+ orderGoodsInfo.GoodsPrice = goods.GoodsPriceHighest;
+ orderGoodsInfo.GoodsWeight = goods.GoodsWeight;
+ }
+ orderGoodsInfo.GoodsTotalPrice = orderGoodsInfo.GoodsPrice * orderGoodsInfo.GoodsTotalNum;
- goodsInfoList.Add(orderGoodsInfo);
+ goodsInfoList.Add(orderGoodsInfo);
+ }
}
return goodsInfoList;
diff --git a/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs b/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs
index 576cd15..ddd069d 100644
--- a/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs
+++ b/ARW.WebApi/Controllers/Api/OrderManage/Orders/OrderApiController.cs
@@ -15,6 +15,8 @@ using ARW.Model.Models.Business.OrderManage.Orders;
using ARW.Model.Vo.Api.OrderManage.Orders;
using Microsoft.AspNetCore.Authorization;
using Geocoding;
+using ARW.Model.Dto.Api.Carts;
+using ARW.Service.Api.IBusinessService.Carts;
namespace ARW.WebApi.Controllers.Api.OrderManage.Orders
{
@@ -52,7 +54,56 @@ namespace ARW.WebApi.Controllers.Api.OrderManage.Orders
return SUCCESS(res);
}
- ///
+
+ ///
+ /// 待付款取消订单
+ ///
+ ///
+ ///
+ [HttpPost("waitPayCancelOrder")]
+ [Log(Title = "待付款取消订单", BusinessType = BusinessType.UPDATE)]
+ public async Task WaitPayCancelOrder([FromBody] OrderDtoApi parm)
+ {
+ if (parm == null) { throw new CustomException("请求参数错误"); }
+
+ var res = await _OrderServiceApi.WaitPayCancelOrder(parm);
+ return SUCCESS(res);
+ }
+
+
+ ///
+ /// 已付款取消订单
+ ///
+ ///
+ ///
+ [HttpPost("payCancelOrder")]
+ [Log(Title = "已付款取消订单", BusinessType = BusinessType.UPDATE)]
+ public async Task PayCancelOrder([FromBody] OrderDtoApi parm)
+ {
+ if (parm == null) { throw new CustomException("请求参数错误"); }
+
+ var res = await _OrderServiceApi.PayCancelOrder(parm);
+ return SUCCESS(res);
+ }
+
+
+ ///
+ /// 确认收货
+ ///
+ ///
+ ///
+ [HttpPost("confirmReceipt")]
+ [Log(Title = "确认收货", BusinessType = BusinessType.UPDATE)]
+ public async Task ConfirmReceipt([FromBody] OrderDtoApi parm)
+ {
+ if (parm == null) { throw new CustomException("请求参数错误"); }
+
+ var res = await _OrderServiceApi.ConfirmReceipt(parm);
+ return SUCCESS(res);
+ }
+
+
+ ///
/// 获取Order详情(Api)
///
/// 查询参数