步步为盈
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

275 lines
7.6 KiB

using System;
using System.Collections.Generic;
using System.Linq;
namespace BBWY.Client.Models
{
public class Order : NotifyObject
{
public Order()
{
OrderCostDetailGroupList = new List<OrderCostDetailGroup>();
AfterSaleOrderGroupList = new List<AfterSaleOrderGroup>();
}
private StorageType? storageType;
private OrderState orderState;
private string waybillNo;
private string venderRemark;
private string flag;
public string Id { get; set; }
/// <summary>
/// 商家Id
/// </summary>
public string VenderId { get; set; }
/// <summary>
/// 下单时间
/// </summary>
public DateTime OrderStartTime { get; set; }
/// <summary>
/// 结单时间
/// </summary>
public DateTime? OrderEndTime { get; set; }
/// <summary>
/// 买家账号
/// </summary>
public string BuyerAccount { get; set; }
/// <summary>
/// 订单平台
/// </summary>
public Platform Platform { get; set; }
/// <summary>
/// 订单类型
/// </summary>
public OrderType OrderType { get; set; }
/// <summary>
/// 支付方式
/// </summary>
public PayType PayType { get; set; }
/// <summary>
/// 订单状态中文说明
/// </summary>
public string OrderStateText { get; set; }
/// <summary>
/// 订单总价
/// </summary>
public decimal OrderTotalPrice { get; set; }
/// <summary>
/// 订单货款金额
/// </summary>
public decimal OrderSellerPrice { get; set; }
/// <summary>
/// 用户应付金额
/// </summary>
public decimal OrderPayment { get; set; }
/// <summary>
/// 商品运费(用户付)
/// </summary>
public decimal FreightPrice { get; set; }
/// <summary>
/// 实收金额
/// </summary>
public decimal ActualAmount { get { return OrderSellerPrice + FreightPrice; } }
/// <summary>
/// 商家优惠金额
/// </summary>
public decimal PreferentialAmount { get; set; }
/// <summary>
/// 买家备注
/// </summary>
public string BuyerRemark { get; set; }
/// <summary>
/// 采购备注
/// </summary>
public string PurchaseRemark { get; set; }
/// <summary>
/// 仓储类型
/// </summary>
public StorageType? StorageType
{
get => storageType;
set
{
Set(ref storageType, value);
}
}
/// <summary>
/// 仓库名称
/// </summary>
public string StoreName { get; set; }
/// <summary>
/// 刷单类型
/// </summary>
public SDType? SDType { get; set; }
/// <summary>
/// 刷单关键词
/// </summary>
public string SDKey { get; set; }
/// <summary>
/// 刷单支付渠道
/// </summary>
public PayBillType? SDPayChannel { get; set; }
/// <summary>
/// 刷单交易账单号
/// </summary>
public string SDPayBillNo { get; set; }
/// <summary>
/// 刷单人
/// </summary>
public string SDOperator { get; set; }
/// <summary>
/// 订单状态
/// </summary>
public OrderState OrderState { get => orderState; set { Set(ref orderState, value); } }
public string WaybillNo { get => waybillNo; set { Set(ref waybillNo, value); } }
/// <summary>
/// 商家备注
/// </summary>
public string VenderRemark { get => venderRemark; set { Set(ref venderRemark, value); } }
/// <summary>
/// 订单旗帜
/// </summary>
public string Flag { get => flag; set { Set(ref flag, value); } }
/// <summary>
/// 是否包含售后单
/// </summary>
public bool IsAfterSaleOrder { get; set; }
/// <summary>
/// 收货人信息
/// </summary>
public Consignee Consignee { get; set; }
/// <summary>
/// 订单成本
/// </summary>
public OrderCost OrderCost { get; set; }
public IList<OrderSku> ItemList { get; set; }
/// <summary>
/// 优惠券列表
/// </summary>
public IList<OrderCoupon> OrderCouponList { get; set; }
/// <summary>
/// 订单成本明细列表
/// </summary>
public IList<OrderCostDetail> OrderCostDetailList { get; set; }
/// <summary>
/// 订单成本明细分组列表
/// </summary>
public IList<OrderCostDetailGroup> OrderCostDetailGroupList { get; set; }
/// <summary>
/// 代发信息
/// </summary>
public IList<OrderDropShipping> OrderDropShippingList { get; set; }
/// <summary>
/// 历史代发信息
/// </summary>
public IList<OrderDropShipping> HistoryOrderDropShippingList { get; set; }
/// <summary>
/// 售后信息
/// </summary>
public IList<AfterSaleOrder> AfterSaleOrderList { get; set; }
/// <summary>
///售后信息分组
/// </summary>
public IList<AfterSaleOrderGroup> AfterSaleOrderGroupList { get; set; }
/// <summary>
/// 是否为异常订单
/// </summary>
public bool IsCostException
{
get
{
var beforeTotalCost = OrderCost?.BeforeTotalCost ?? 0M;
return OrderState != OrderState. && StorageType != Models.StorageType.SD &&
((StorageType != null && beforeTotalCost == 0M) ||
(beforeTotalCost > OrderSellerPrice + FreightPrice) ||
(StorageType == null && OrderState != OrderState. && OrderState != OrderState.));
}
}
public void LocalConvert()
{
ConvertAfterSaleOrderToGroup();
ConvertOrderCostDetailToGroup();
}
public void ConvertOrderCostDetailToGroup()
{
if (OrderCostDetailList == null || OrderCostDetailList.Count() == 0)
return;
foreach (var detail in OrderCostDetailList)
{
var group = OrderCostDetailGroupList.FirstOrDefault(g => g.SkuId == detail.SkuId);
if (group == null)
{
group = new OrderCostDetailGroup() { SkuId = detail.SkuId };
OrderCostDetailGroupList.Add(group);
}
group.Items.Add(detail);
}
}
private void ConvertAfterSaleOrderToGroup()
{
if (!IsAfterSaleOrder || AfterSaleOrderList == null || AfterSaleOrderList.Count() == 0)
return;
foreach (var aso in AfterSaleOrderList)
{
var group = AfterSaleOrderGroupList.FirstOrDefault(g => g.SkuId == aso.SkuId);
if (group == null)
{
group = new AfterSaleOrderGroup() { SkuId = aso.SkuId };
AfterSaleOrderGroupList.Add(group);
}
group.Items.Add(aso);
}
}
}
public class OrderList
{
public int Count { get; set; }
public IList<Order> Items { get; set; }
}
}