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.

206 lines
5.3 KiB

using CommunityToolkit.Mvvm.ComponentModel;
using System;
using System.Collections.Generic;
using System.Linq;
namespace BBWYB.Client.Models
{
public class Order : ObservableObject
{
public Order()
{
OrderCostDetailGroupList = new List<OrderCostDetailGroup>();
}
private OrderState orderState;
private string waybillNo;
private string venderRemark;
public string Id { get; set; }
/// <summary>
/// 商家Id
/// </summary>
public string VenderId { get; set; }
/// <summary>
/// 下单时间
/// </summary>
public DateTime StartTime { 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 OrderState OrderState { get => orderState; set { SetProperty(ref orderState, value); } }
public string WaybillNo { get => waybillNo; set { SetProperty(ref waybillNo, value); } }
/// <summary>
/// 商家备注
/// </summary>
public string VenderRemark { get => venderRemark; set { SetProperty(ref venderRemark, value); } }
/// <summary>
/// 快递公司名称
/// </summary>
public string ExpressName { get; set; }
/// <summary>
/// 来源Sku
/// </summary>
public string SourceSku { get; set; }
/// <summary>
/// 来源店铺名
/// </summary>
public string SourceShopName { get; set; }
/// <summary>
/// 业务端订单号
/// </summary>
public string ClientOrderId { get; set; }
/// <summary>
/// 是否采购
/// </summary>
public bool IsPurchased { get; set; }
/// <summary>
/// 收货人信息
/// </summary>
public Consignee Consignee { get; set; }
/// <summary>
/// 订单成本
/// </summary>
public OrderCost OrderCost { get; set; }
public OrderPurchaseInfo OrderPurchaseInfo { get; set; }
public IList<OrderSku> ItemList { get; set; }
/// <summary>
/// 订单成本明细列表
/// </summary>
public IList<OrderCostDetail> OrderCostDetailList { get; set; }
/// <summary>
/// 订单成本明细分组列表
/// </summary>
public IList<OrderCostDetailGroup> OrderCostDetailGroupList { get; set; }
/// <summary>
/// 是否为异常订单
/// </summary>
public bool IsCostException
{
get
{
var totalCost = OrderCost?.TotalCost ?? 0M;
return OrderState != OrderState. &&
totalCost > ActualAmount;
}
}
public void LocalConvert()
{
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);
}
}
}
public class OrderList
{
public int Count { get; set; }
public IList<Order> Items { get; set; }
}
}