feat 添加订单列表,确认收货,待支付取消订单,已支付取消订单
This commit is contained in:
parent
d194f85676
commit
bd9b94e7db
@ -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; }
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
/// <summary>
|
||||
/// 描述 :
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public int OrderId { get; set; }
|
||||
|
||||
|
||||
@ -26,239 +26,74 @@ namespace ARW.Model.Vo.Api.OrderManage.Orders
|
||||
/// 描述 :
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
[EpplusIgnore]
|
||||
public long OrderGuid { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :商品guid
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
[EpplusTableColumn(Header = "商品guid")]
|
||||
public long GoodsGuid { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :订单流水guid
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
[EpplusTableColumn(Header = "订单流水guid")]
|
||||
public long PaymentGuid { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :客户guid
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
[EpplusTableColumn(Header = "客户guid")]
|
||||
public long CustomerGuid { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :店铺guid
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
[EpplusIgnore]
|
||||
public long? ShopGuid { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :订单号
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "订单号")]
|
||||
public string OrderNumber { get; set; }
|
||||
public string OrderNo { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :商品列表
|
||||
/// </summary>
|
||||
public List<OrderGoodsApiVo> GoodsList { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :商品总金额
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "商品总金额")]
|
||||
public decimal GoodsTotalAmoun { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :订单金额
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "订单金额")]
|
||||
public decimal OrderAmount { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :优惠券guid
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
[EpplusIgnore]
|
||||
public long? CouponGuid { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :优惠券抵扣金额
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public decimal CouponMoney { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :积分抵扣金额
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public decimal PointsMoney { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :积分抵扣数量
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public decimal PointsNum { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :实际付款金额(包含运费)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "实际付款金额(包含运费)")]
|
||||
public decimal PayPrice { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :后台修改的订单金额(差价)
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public decimal UpdatePrice { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :买家留言
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public string OrderRemark { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :支付方式(1微信支付 2余额支付)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "支付方式(1微信支付 2余额支付)")]
|
||||
public int PayType { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :付款状态(1未付款 2已付款)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "付款状态(1未付款 2已付款)")]
|
||||
public int PayStatus { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :付款时间
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "付款时间", NumberFormat = "yyyy-MM-dd HH:mm:ss")]
|
||||
public DateTime? PayTime { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :配送方式(1快递配送)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "配送方式(1快递配送)")]
|
||||
public int DeliveryType { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :运费金额
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "运费金额")]
|
||||
public decimal ExpressPrice { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :物流公司guid
|
||||
/// 描述 :付款状态(1未付款 2已付款)
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
[EpplusIgnore]
|
||||
public long? LogisticsCompanyGuid { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :物流公司
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public string LogisticsCompany { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :物流单号
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public string LogisticsTrackingNumber { get; set; }
|
||||
public int PayStatus { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :发货状态(1未发货 2已发货)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "发货状态(1未发货 2已发货)")]
|
||||
public int DeliveryStatus { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :发货时间
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public DateTime? DeliveryTime { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :收货状态(1未收货 2已收货)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "收货状态(1未收货 2已收货)")]
|
||||
public int ReceiptStatus { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :收货时间
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public DateTime? ReceiptTime { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :订单状态(1进行中 2取消 3待取消 4已完成)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "订单状态(1进行中 2取消 3待取消 4已完成)")]
|
||||
public int OrderStatus { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :赠送的积分数量
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public decimal PointsBonus { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :订单是否已结算(1未结算 2已结算)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "订单是否已结算(1未结算 2已结算)")]
|
||||
public int IsSettled { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :微信支付交易号
|
||||
/// </summary>
|
||||
[EpplusIgnore]
|
||||
public string TransactionId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :是否已评价(1否 2是)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "是否已评价(1否 2是)")]
|
||||
public int IsComment { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :订单来源(1普通订单)
|
||||
/// </summary>
|
||||
[EpplusTableColumn(Header = "订单来源(1普通订单)")]
|
||||
public int OrderSource { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
63
ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsApiVo.cs
Normal file
63
ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsApiVo.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单商品展示对象Api
|
||||
///
|
||||
/// @author lwh
|
||||
/// @date 2023-10-14
|
||||
/// </summary>
|
||||
public class OrderGoodsApiVo
|
||||
{
|
||||
/// <summary>
|
||||
/// 描述 : 商品guid
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ValueToStringConverter))]
|
||||
public long GoodsGuId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :封面
|
||||
/// </summary>
|
||||
public string Thumb { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :商品名称
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :商品skuId
|
||||
/// </summary>
|
||||
public int? SkuId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 : 商品规格
|
||||
/// </summary>
|
||||
public List<OrderGoodsSpecApiVo> Specifications { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 商品价格
|
||||
/// </summary>
|
||||
public decimal Price { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 购买数量
|
||||
/// </summary>
|
||||
public int BuyQuantity { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
31
ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsSpecApiVo.cs
Normal file
31
ARW.Model/Vo/Api/OrderManage/Orders/OrderGoodsSpecApiVo.cs
Normal file
@ -0,0 +1,31 @@
|
||||
using Newtonsoft.Json;
|
||||
using OfficeOpenXml.Attributes;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
|
||||
namespace ARW.Model.Vo.Api.OrderManage.Orders
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单商品规格展示对象Api
|
||||
///
|
||||
/// @author lwh
|
||||
/// @date 2023-10-14
|
||||
/// </summary>
|
||||
public class OrderGoodsSpecApiVo
|
||||
{
|
||||
/// <summary>
|
||||
/// 描述 :规格组名称
|
||||
/// </summary>
|
||||
public string SpecTitle { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 描述 :规格值
|
||||
/// </summary>
|
||||
public string SpecValue { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -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 "修改成功!";
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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<Order>, 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<Order>();
|
||||
|
||||
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<OrderGoodsApiVo>();
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 待付款取消订单
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<string> 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 "取消订单失败!";
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 已付款取消订单
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<string> PayCancelOrder(OrderDtoApi parm)
|
||||
{
|
||||
var res = await _OrderRepository.UpdateAsync(f => new Order
|
||||
{
|
||||
OrderStatus = 3,
|
||||
}, f => f.OrderGuid == parm.OrderGuid);
|
||||
if (res)
|
||||
return "取消订单成功";
|
||||
else
|
||||
return "取消订单失败!";
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 确认收货
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<string> 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 "收货失败!";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询订单详情(Api)
|
||||
/// </summary>
|
||||
@ -149,6 +232,84 @@ namespace ARW.Service.Api.BusinessService.OrderManage.Orders
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#region 业务方法调用
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取商品规格
|
||||
/// </summary>
|
||||
/// <param name="skuId">规格id</param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<OrderGoodsSpecApiVo>> GetGoodsSpecList(int? skuId)
|
||||
{
|
||||
var list = new List<OrderGoodsSpecApiVo>();
|
||||
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<OrderGoodsSpecApiVo> 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<OrderGoodsSpecApiVo> 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
|
||||
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -25,7 +25,32 @@ namespace ARW.Service.Api.IBusinessService.OrderManage.Orders
|
||||
/// <returns></returns>
|
||||
Task<PagedInfo<OrderVoApi>> GetOrderListApi(OrderQueryDtoApi parm);
|
||||
|
||||
/// <summary>
|
||||
|
||||
/// <summary>
|
||||
/// 待付款取消订单
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> WaitPayCancelOrder(OrderDtoApi parm);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 已付款取消订单
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> PayCancelOrder(OrderDtoApi parm);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 确认收货
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> ConfirmReceipt(OrderDtoApi parm);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取订单详情(Api)
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
|
@ -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 "添加成功!";
|
||||
}
|
||||
}
|
||||
|
@ -70,10 +70,10 @@ namespace ARW.Service.Business.BusinessService.OrderManage.Orders
|
||||
var predicate = Expressionable.Create<Order>();
|
||||
|
||||
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<OrderGoodsVo>();
|
||||
|
||||
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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
/// <summary>
|
||||
/// 待付款取消订单
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("waitPayCancelOrder")]
|
||||
[Log(Title = "待付款取消订单", BusinessType = BusinessType.UPDATE)]
|
||||
public async Task<IActionResult> WaitPayCancelOrder([FromBody] OrderDtoApi parm)
|
||||
{
|
||||
if (parm == null) { throw new CustomException("请求参数错误"); }
|
||||
|
||||
var res = await _OrderServiceApi.WaitPayCancelOrder(parm);
|
||||
return SUCCESS(res);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 已付款取消订单
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("payCancelOrder")]
|
||||
[Log(Title = "已付款取消订单", BusinessType = BusinessType.UPDATE)]
|
||||
public async Task<IActionResult> PayCancelOrder([FromBody] OrderDtoApi parm)
|
||||
{
|
||||
if (parm == null) { throw new CustomException("请求参数错误"); }
|
||||
|
||||
var res = await _OrderServiceApi.PayCancelOrder(parm);
|
||||
return SUCCESS(res);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 确认收货
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("confirmReceipt")]
|
||||
[Log(Title = "确认收货", BusinessType = BusinessType.UPDATE)]
|
||||
public async Task<IActionResult> ConfirmReceipt([FromBody] OrderDtoApi parm)
|
||||
{
|
||||
if (parm == null) { throw new CustomException("请求参数错误"); }
|
||||
|
||||
var res = await _OrderServiceApi.ConfirmReceipt(parm);
|
||||
return SUCCESS(res);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取Order详情(Api)
|
||||
/// </summary>
|
||||
/// <param name="parm">查询参数</param>
|
||||
|
Loading…
Reference in New Issue
Block a user