Browse Source

订单同步

AddValidOverTime
sanji 2 years ago
parent
commit
90f8b7f800
  1. 40
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  2. 76
      BBWY.Server.Model/Db/Order/OrderCoupon_New.cs
  3. 59
      BBWY.Server.Model/Db/Order/OrderPromotion.cs
  4. 200
      BBWY.Server.Model/Db/Order/OrderSku.cs
  5. 197
      BBWY.Server.Model/Db/Order/Ordertotalinfo.cs
  6. 91
      BBWY.Server.Model/Db/Product/Product.cs
  7. 8
      BBWY.Server.Model/Enums.cs

40
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -132,16 +132,6 @@ namespace BBWY.Server.Business
if (orderListResponse.Data == null || orderListResponse.Data.Count == 0)
return;
if (shopId == 10388155)
{
try
{
nLogManager.GetLogger($"订单同步-{shop.ShopName}").Info(orderListApiResult.Content);
}
catch { }
}
syncOrderMethodDic[shop.PlatformId](orderListResponse.Data, shopId, relayAPIHost, shop.AppKey, shop.AppSecret, shop.AppToken, shop.PlatformCommissionRatio ?? 0.05M);
}
catch (Exception ex)
@ -220,10 +210,10 @@ namespace BBWY.Server.Business
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
List<OrderSku> insertOrderSkuList = new List<OrderSku>();
List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>();
List<OrderTotalInfo> insertOrderTotalInfoList = new List<OrderTotalInfo>();
IList<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>();
IList<IUpdate<OrderSku>> updateOrderSkuList = new List<IUpdate<OrderSku>>();
Dictionary<string, IUpdate<OrderSku>> updateOrderSkuDictionary = new Dictionary<string, IUpdate<OrderSku>>();
IList<IUpdate<PurchaseOrder>> updatePurchaseOrderList = new List<IUpdate<PurchaseOrder>>();
#endregion
@ -265,6 +255,12 @@ namespace BBWY.Server.Business
dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => interfaceCanceledOrderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList();
}
#region 优惠券/促销/拆分明细
//var dbOrderCouponNewList = fsql.Select<OrderCoupon_New>().Where(ocn => interfaceOrderIdList.Contains(ocn.OrderId)).ToList();
//var dbOrderPromotionList = fsql.Select<OrderPromotion>().Where(op => interfaceOrderIdList.Contains(op.OrderId)).ToList();
var dbOrderTotalList = fsql.Select<OrderTotalInfo>().Where(ot => interfaceOrderIdList.Contains(ot.Id)).ToList();
#endregion
var orderSkuIds = new List<string>();
foreach (var orderJToken in validOrders)
{
@ -395,9 +391,11 @@ namespace BBWY.Server.Business
var wareId = orderSkuJToken.Value<string>("wareId");
var skuId = orderSkuJToken.Value<string>("skuId");
var dbOsku = currentDbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId);
if (dbOsku != null && dbOsku.ProductId != wareId)
var skuUpdateKey = $"";
if (dbOsku != null && dbOsku.ProductId != wareId && !updateOrderSkuDictionary.ContainsKey(skuUpdateKey))
{
updateOrderSkuList.Add(fsql.Update<OrderSku>(dbOsku.Id).Set(osku => osku.ProductId, wareId));
var update = fsql.Update<OrderSku>(dbOsku.Id).Set(osku => osku.ProductId, wareId);
updateOrderSkuDictionary.Add(skuUpdateKey, update);
}
}
}
@ -653,6 +651,14 @@ namespace BBWY.Server.Business
catch { }
#endregion
#region 优惠券/促销/拆分明细
if (orderState != Enums.OrderState. &&
orderState != Enums.OrderState. &&
!dbOrderTotalList.Any(ot => ot.Id == orderId))
{
}
#endregion
}
#region 补齐sku logo
@ -717,10 +723,10 @@ namespace BBWY.Server.Business
update.ExecuteAffrows();
}
if (updateOrderSkuList.Count() > 0)
if (updateOrderSkuDictionary.Keys.Count() > 0)
{
foreach (var update in updateOrderSkuList)
update.ExecuteAffrows();
foreach (var update in updateOrderSkuDictionary)
update.Value.ExecuteAffrows();
}
});
}

76
BBWY.Server.Model/Db/Order/OrderCoupon_New.cs

@ -0,0 +1,76 @@
using FreeSql.DataAnnotations;
using System;
namespace BBWY.Server.Model.Db
{
[Table(Name = "ordercoupon_new", DisableSyncStructure = true)]
public partial class OrderCoupon_New
{
[Column(DbType = "bigint", IsPrimary = true)]
public long Id { get; set; }
/// <summary>
/// 优惠券数量/发行量
/// </summary>
[Column(DbType = "int")]
public int? CouponNum { get; set; } = 0;
/// <summary>
/// POP优惠券ID
/// </summary>
[Column(DbType = "int")]
public int? CouponId { get; set; }
/// <summary>
/// 活动名称
/// </summary>
public string CouponName { get; set; }
/// <summary>
/// 优惠券面额,计价单位:元
/// </summary>
public decimal? CouponPrice { get; set; } = 0.00M;
/// <summary>
/// 优惠券类型,优惠券类型枚举:[京券,平台京券,限品类京券,东券,平台东券,限品类东券,店铺京券,店铺限商品京券,店铺东券,店铺限商品东券,按比例分摊平台券,自营承担平台券,商家承担平台券]
/// </summary>
public string CouponTypeDesc { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 平台优惠券ID
/// </summary>
[Column(StringLength = 50)]
public string JdCouponId { get; set; }
/// <summary>
/// 平台分摊金额,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? JdDivideMoney { get; set; } = 0.00M;
/// <summary>
/// 价格分摊标识[true:有分摊金额数据 false:无分摊金额数据]
/// </summary>
public bool? PriceDivide { get; set; }
/// <summary>
/// 商家分摊金额,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? VenderDivideMoney { get; set; } = 0.00M;
[Column(StringLength = 50)]
public string OrderId { get; set; }
}
}

59
BBWY.Server.Model/Db/Order/OrderPromotion.cs

@ -0,0 +1,59 @@
using FreeSql.DataAnnotations;
using System;
namespace BBWY.Server.Model.Db
{
/// <summary>
/// 订单促销活动表
/// </summary>
[Table(Name = "orderpromotion", DisableSyncStructure = true)]
public partial class OrderPromotion
{
[Column(DbType = "bigint", IsPrimary = true)]
public long Id { get; set; }
/// <summary>
/// 活动开始时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime? BeginTime { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 活动结束时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime? EndTime { get; set; }
[Column(StringLength = 50)]
public string OrderId { get; set; }
/// <summary>
/// pop促销ID
/// </summary>
[Column(DbType = "int")]
public int? PromotionId { get; set; }
/// <summary>
/// 活动名称
/// </summary>
public string PromotionName { get; set; }
/// <summary>
/// 优惠金额,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? SalePrice { get; set; } = 0.00M;
/// <summary>
/// 促销类型,促销类型枚举:[满减优惠,套装优惠,闪团优惠,团购优惠,预售优惠]
/// </summary>
public string SaleTypeDesc { get; set; }
}
}

200
BBWY.Server.Model/Db/Order/OrderSku.cs

@ -1,28 +1,157 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;
namespace BBWY.Server.Model.Db
{
/// <summary>
/// 订单SKU
/// </summary>
[Table(Name = "ordersku", DisableSyncStructure = true)]
public partial class OrderSku
{
/// <summary>
/// 商家Id
/// </summary>
[Column(IsIgnore = true)]
public long ShopId { get; set; }
[Column(DbType = "bigint(1)", IsPrimary = true)]
[Column(DbType = "bigint", IsPrimary = true)]
public long Id { get; set; }
/// <summary>
/// 京东支付优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? JdZhiFuYouHui { get; set; } = 0.00M;
/// <summary>
/// plus会员95折优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? Plus95 { get; set; } = 0.00M;
/// <summary>
/// 余额,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? Balance { get; set; } = 0.00M;
/// <summary>
/// 基础优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? BaseDiscount { get; set; } = 0.00M;
/// <summary>
/// 基础运费,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? BaseFee { get; set; } = 0.00M;
/// <summary>
/// 优惠券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? Coupon { get; set; } = 0.00M;
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 东券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? DongQuan { get; set; } = 0.00M;
/// <summary>
/// 满期赠促销
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? ExpiryGiftDiscount { get; set; } = 0.00M;
/// <summary>
/// 全球购一般贸易税(包税),计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? GlobalGeneralIncludeTax { get; set; } = 0.00M;
/// <summary>
/// 全球购一般贸易税,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? GlobalGeneralTax { get; set; } = 0.00M;
/// <summary>
/// 是否退款
/// </summary>
[JsonProperty]
public bool? IsRefund { get; set; } = false;
/// <summary>
/// 销售数量
/// </summary>
[Column(DbType = "int(1)")]
[Column(DbType = "int")]
public int? ItemTotal { get; set; }
/// <summary>
/// 京豆,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? JingDou { get; set; } = 0.00M;
/// <summary>
/// 京券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? JingQuan { get; set; } = 0.00M;
/// <summary>
/// 京享礼金(首单礼金或重逢礼金),计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? JingXiangLiJin { get; set; } = 0.00M;
/// <summary>
/// 礼金优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? LiJinYouHui { get; set; } = 0.00M;
/// <summary>
/// Logo
/// </summary>
[JsonProperty]
public string Logo { get; set; }
/// <summary>
/// 落地配服务,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? LuoDiPeiService { get; set; } = 0.00M;
/// <summary>
/// 满减,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? ManJian { get; set; } = 0.00M;
/// <summary>
/// 代发Id
/// </summary>
[Column(DbType = "bigint")]
public long? OrderDropShippingId { get; set; }
[Column(StringLength = 50)]
public string OrderId { get; set; }
/// <summary>
/// 按比例平台承担优惠券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? PingTaiChengDanYouHuiQuan { get; set; } = 0.00M;
/// <summary>
/// 销售单价
/// </summary>
@ -38,32 +167,75 @@ namespace BBWY.Server.Model.Db
[Column(StringLength = 50)]
public string ProductNo { get; set; }
/// <summary>
/// 跨店满减促销
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? PromotionDiscount { get; set; } = 0.00M;
/// <summary>
/// 偏远运费,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? RemoteFee { get; set; } = 0.00M;
/// <summary>
/// 应付金额,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? ShouldPay { get; set; } = 0.00M;
[Column(StringLength = 50, IsNullable = false)]
public string SkuId { get; set; }
/// <summary>
/// 超级红包,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? SuperRedEnvelope { get; set; } = 0.00M;
/// <summary>
/// 全球购税费,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TaxFee { get; set; } = 0.00M;
/// <summary>
/// Sku标题
/// </summary>
[Column(StringLength = 255)]
[JsonProperty]
public string Title { get; set; }
[Column(StringLength = 255)]
public string Logo { get; set; }
/// <summary>
/// 退换货无忧,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TuiHuanHuoWuYou { get; set; } = 0.00M;
/// <summary>
/// 代发信息Id
/// 商家运费,计价单位:元
/// </summary>
[Column(DbType = "bigint(1)", IsNullable = true)]
public long? OrderDropShippingId { get; set; }
[Column(DbType = "decimal(18,2)")]
public decimal? VenderFee { get; set; } = 0.00M;
/// <summary>
/// 是否售后
/// 限品类东券,计价单位:元
/// </summary>
[Column(DbType = "bit")]
public bool IsRefund { get; set; } = false;
[Column(DbType = "decimal(18,2)")]
public decimal? XianPinLeiDongQuan { get; set; } = 0.00M;
/// <summary>
/// 限品类京券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? XianPinLeiJingQuan { get; set; } = 0.00M;
/// <summary>
/// 支付营销优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? ZhiFuYingXiaoYouHui { get; set; } = 0.00M;
[Column(IsIgnore = true)]
public long ShopId { get; set; }
}
}

197
BBWY.Server.Model/Db/Order/Ordertotalinfo.cs

@ -0,0 +1,197 @@
using FreeSql.DatabaseModel;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;
namespace BBWY.Server.Model.Db
{
/// <summary>
/// 订单合计信息表
/// </summary>
[Table(Name = "ordertotalinfo", DisableSyncStructure = true)]
public partial class OrderTotalInfo
{
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
/// <summary>
/// 合计满期赠促销
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalExpiryGiftDiscount { get; set; } = 0.00M;
/// <summary>
/// 合计全球购一般税,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalGlobalGeneralTax { get; set; } = 0.00M;
/// <summary>
/// 合计偏远运费,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalRemoteFee { get; set; } = 0.00M;
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 合计余额,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalBalance { get; set; } = 0.00M;
/// <summary>
/// 合计基础优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalBaseDiscount { get; set; } = 0.00M;
/// <summary>
/// 合计基础运费,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalBaseFee { get; set; } = 0.00M;
/// <summary>
/// 合计优惠券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalCoupon { get; set; } = 0.00M;
/// <summary>
/// 合计东券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalDongQuan { get; set; } = 0.00M;
/// <summary>
/// 合计全球购一般包税,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalGlobalGeneralIncludeTax { get; set; } = 0.00M;
/// <summary>
/// 合计单品金额,计价单位:元
/// </summary>
public decimal? TotalItemPrice { get; set; } = 0.00M;
/// <summary>
/// 合计京东支付优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalJdZhiFuYouHui { get; set; } = 0.00M;
/// <summary>
/// 合计京豆,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalJingDou { get; set; } = 0.00M;
/// <summary>
/// 合计京券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalJingQuan { get; set; } = 0.00M;
/// <summary>
/// 合计京享礼金,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalJingXiangLiJin { get; set; } = 0.00M;
/// <summary>
/// 合计礼金优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalLiJinYouHui { get; set; } = 0.00M;
/// <summary>
/// 合计落地配服务,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalLuoDiPeiService { get; set; } = 0.00M;
/// <summary>
/// 合计满减,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalManJian { get; set; } = 0.00M;
/// <summary>
/// 合计按比例平台承担优惠券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalPingTaiChengDanYouHuiQuan { get; set; } = 0.00M;
/// <summary>
/// 合计plus会员95折优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalPlus95 { get; set; } = 0.00M;
/// <summary>
/// 合计跨店满减促销
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalPromotionDiscount { get; set; } = 0.00M;
/// <summary>
/// 合计应付金额,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalShouldPay { get; set; } = 0.00M;
/// <summary>
/// 合计超级红包,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalSuperRedEnvelope { get; set; } = 0.00M;
/// <summary>
/// 合计全球购税费,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalTaxFee { get; set; } = 0.00M;
/// <summary>
/// 合计退换货无忧,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalTuiHuanHuoWuYou { get; set; } = 0.00M;
/// <summary>
/// 合计商家运费,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalVenderFee { get; set; } = 0.00M;
/// <summary>
/// 合计限品类东券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalXianPinLeiDongQuan { get; set; } = 0.00M;
/// <summary>
/// 合计限品类京券,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalXianPinLeiJingQuan { get; set; } = 0.00M;
/// <summary>
/// 合计支付营销优惠,计价单位:元
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? TotalZhiFuYingXiaoYouHui { get; set; } = 0.00M;
}
}

91
BBWY.Server.Model/Db/Product/Product.cs

@ -1,50 +1,59 @@
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;
namespace BBWY.Server.Model.Db
{
[Table(Name = "product", DisableSyncStructure = true)]
public partial class Product {
/// <summary>
/// SPU
/// </summary>
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
[Column(DbType = "int(1)", MapType = typeof(int))]
public Enums.Platform Platform { get; set; }
/// <summary>
/// 货号
/// </summary>
[Column(StringLength = 100)]
public string ProductItemNum { get; set; }
public long? ShopId { get; set; }
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 主SkuId
/// </summary>
[Column(StringLength = 50)]
public string MainSkuId { get; set; }
/// <summary>
/// 京东商品状态【-1:删除 1:从未上架 2:自主下架 4:系统下架 8:上架 513:从未上架待审 514:自主下架待审 516:系统下架待审 520:上架待审核 1028:系统下架审核失败】
/// </summary>
public int? State { get; set; }
}
public partial class Product
{
/// <summary>
/// SPU
/// </summary>
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
[Column(DbType = "int(1)", MapType = typeof(int))]
public Enums.Platform Platform { get; set; }
/// <summary>
/// 货号
/// </summary>
[Column(StringLength = 100)]
public string ProductItemNum { get; set; }
public long? ShopId { get; set; }
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 主SkuId
/// </summary>
[Column(StringLength = 50)]
public string MainSkuId { get; set; }
/// <summary>
/// 京东商品状态【-1:删除 1:从未上架 2:自主下架 4:系统下架 8:上架 513:从未上架待审 514:自主下架待审 516:系统下架待审 520:上架待审核 1028:系统下架审核失败】
/// </summary>
public int? State { get; set; }
/// <summary>
/// 商品阶段 新品款=0 成长款=1 日销款=2 TOP款=3 清仓款=4
/// </summary>
[Column(DbType = "int", MapType = typeof(int?))]
public Enums.Stage? Stage { get; set; } = 0;
}
}

8
BBWY.Server.Model/Enums.cs

@ -388,5 +388,13 @@
{
= 1, 退 = 2, = 3, = 4, = 5, = 6, = 7, = 8, VMI锁定 = 9, = 10, = 11, = 14, TC在途可售 = 15, ERP在途可售 = 16, = 17, = 18, = 19, = 20, = 21, = 22, = 23
}
/// <summary>
/// 商品阶段 新品款 = 0 成长款 = 1 日销款 = 2 TOP款 = 3 清仓款 = 4
/// </summary>
public enum Stage
{
= 0, = 1, = 2, TOP款 = 3, = 4
}
}
}

Loading…
Cancel
Save