using System; using System.Collections.Generic; using System.Linq; using BBWY.Client.Models.Statistics.AfterSaleOrder; 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; } } }