diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index ba7683f..6529d47 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -43,7 +43,7 @@ namespace BBWYB.Server.API.Controllers /// 网页创建采购单 /// /// - [HttpPost] + [HttpPost, AllowAnonymous] public void WebCreatePurchaseOrder([FromBody] WebCreateOrderRequest request) { purchaseOrderBusiness.WebCreatePurchaseOrder(request); diff --git a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs index f99350f..1830bcc 100644 --- a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs +++ b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs @@ -80,5 +80,15 @@ namespace BBWYB.Server.API.Controllers { return optimizationBusiness.GetNoCompletedSpuOptimizationTaskCount(GetUserId()); } + + /// + /// 获取超时任务数量 + /// + /// + [HttpGet] + public long GetTimeOutSpuOptimizationTaskCount() + { + return optimizationBusiness.GetTimeOutSpuOptimizationTaskCount(); + } } } diff --git a/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs b/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs index 9ac86c6..30f939b 100644 --- a/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs @@ -136,21 +136,46 @@ namespace BBWYB.Server.Business #endregion #region 采购方案 - List dbSchemeList = fsql.Select(schemeIdList).ToList(); - - #region 最近采购成本 - var recentOrderPurchaserRelationList = fsql.Select() - .InnerJoin((opi, opri) => opi.OrderId == opri.OrderId && - opi.PurchaseOrderId == opri.PurchaseOrderId) - .Where((opi, opri) => opi.IsEnabled == true && schemeIdList.Contains(opri.SchemeId.Value)) - .GroupBy((opi, opri) => opri.SchemeId.Value) - .WithTempQuery(g => new { MaxId = g.Max(g.Value.Item2.Id) }) - .From() - .InnerJoin((opri, opri2) => opri.MaxId == opri2.Id) - .ToList((opri, opri2) => opri2); - var purchaseOrderIdList = recentOrderPurchaserRelationList.Select(x => x.PurchaseOrderId).Distinct().ToList(); + //List dbSchemeList = fsql.Select(schemeIdList).ToList(); + + //#region 最近采购成本/采购时间 + + + //var recentPurchaseRecordList = fsql.Select() + // .InnerJoin((opi, opri, opsi) => opi.OrderId == opri.OrderId && + // opi.PurchaseOrderId == opri.PurchaseOrderId) + // .InnerJoin((opi, opri, opsi) => opri.PurchaseOrderId == opsi.PurchaseOrderId && + // opri.PurchaseSkuId == opsi.PurchaseSkuId) + // .Where((opi, opri, opsi) => opi.IsEnabled == true && + // schemeIdList.Contains(opri.SchemeId.Value)) + // .OrderByDescending((opi, opri, opsi) => opri.CreateTime) + // .Page(1, 1000) + // .ToList((opi, opri, opsi) => new + // { + // opi.OrderId, + // opi.PurchaseOrderId, + // opri.SchemeId, + // opsi.PurchasedPrice, + // opsi.CreateTime + // }); + + //var recentPurchaseRecordGroups = recentPurchaseRecordList.GroupBy(x => x.SchemeId); + //foreach (var relationGroup in recentPurchaseRecordGroups) + //{ + // var scheme = dbSchemeList.FirstOrDefault(s => s.Id == relationGroup.Key.Value); + // if (scheme == null) + // continue; + + // //取最近一笔订单,最大的订单号 + // var recentOrderId = relationGroup.Max(x => x.OrderId); + // var recentOrderRelationRecordList = relationGroup.Where(x => x.OrderId == recentOrderId); + // scheme.LastPurchasePriceCost = recentOrderRelationRecordList.Sum(x=>x.PurchasedPrice); + // scheme.LastBargainingTime = recentOrderRelationRecordList.FirstOrDefault()?.CreateTime; + //} + + + //#endregion - #endregion #region 采购次数 diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ac504a4..cb16449 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -3382,7 +3382,7 @@ namespace BBWYB.Server.Business public void WebCreatePurchaseOrder(WebCreateOrderRequest request) { - nLogManager.Default().Info($"CreatePurchaseOrder\r\n{JsonConvert.SerializeObject(request)}"); + nLogManager.Default().Info($"WebCreateOrderRequest\r\n{JsonConvert.SerializeObject(request)}"); var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) @@ -3513,13 +3513,15 @@ namespace BBWYB.Server.Business Collect1688Helper collect1688Helper = new Collect1688Helper(cookies); - var adress = request.Consignee.Province + request.Consignee.City + request.Consignee.Town + request.Consignee.Address; + var adress = request.Consignee.Province + request.Consignee.City+request.Consignee.County + request.Consignee.Town ; - var orderModel = (Model.Enums.OrderModel)request.PurchaseOrderMode; + var detailAdress = request.Consignee.Town + request.Consignee.Address; + var orderModel = (Model.Enums.OrderModel)request.PurchaseOrderMode; + //+ request.Consignee.Address - var prewOrder = collect1688Helper.PrewOrder(orderProductParamList.ToList(), adress, orderModel, request.Consignee.Mobile, request.Consignee.ContactName); + var prewOrder = collect1688Helper.PrewOrder(orderProductParamList.ToList(), orderModel, request.Consignee); if (prewOrder == null) { throw new BusinessException($"登录失效,正在重新登陆,登录后点击下单!"); diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index f65655b..fe13258 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -183,6 +183,7 @@ namespace BBWYB.Server.Business BelongShopName = belongShop.ShopName, CompletionTime = null, CreateTime = DateTime.Now, + TaskTime = DateTime.Now, IsOptimizationCompleted = false, LastOptimizationTime = null, ProductId = productId, @@ -330,7 +331,7 @@ namespace BBWYB.Server.Business Id = idGenerator.NewLong(), CreateTme = DateTime.Now, //ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1), - ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now), + ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now.AddDays(1)), //OrderId = o.OrderId, //OrderSn = o.OrderSn, ShopId = shopId, @@ -736,7 +737,7 @@ namespace BBWYB.Server.Business .Page(request.PageIndex, request.PageSize) .ToSql(); - var taskList = select.OrderBy(t => t.CreateTime) + var taskList = select.OrderBy(t => t.TaskTime) .Count(out var total) .Page(request.PageIndex, request.PageSize) .ToList(); @@ -790,7 +791,8 @@ namespace BBWYB.Server.Business SkuIdList = skuIdList, BargainTeamIdList = bargainTeamIdList, IncludePurchaseSkuBasicInfo = 1, - IncludePurchaseSkuStatisticsInfo = 1 + IncludePurchaseSkuStatisticsInfo = 1, + IncludeSkuStatisticsInfo = 1 }); #endregion @@ -818,7 +820,8 @@ namespace BBWYB.Server.Business SchemeGroupId = ps.SchemeGroupId, IsFreeFreight = ps.IsFreeFreight, LastPurchasePriceCost = ps.LastPurchasePriceCost, - PurchaseSchemeCost = ps.BargainingCost ?? ps.DefaultCost + PurchaseSchemeCost = ps.BargainingCost ?? ps.DefaultCost, + SkuLastPurchasePriceCost = ps.SkuLastPurchasePriceCost }).ToList(); } #endregion @@ -998,7 +1001,8 @@ namespace BBWYB.Server.Business } spuOptimizationTask.ReStartTimes++; updateSpuTask = fsql.Update(spuOptimizationTask.Id) - .Set(t => t.ReStartTimes, spuOptimizationTask.ReStartTimes); + .Set(t => t.ReStartTimes, spuOptimizationTask.ReStartTimes) + .Set(t => t.TaskTime, DateTime.Now); } } @@ -1070,5 +1074,17 @@ namespace BBWYB.Server.Business return fsql.Select().Where(t => t.IsOptimizationCompleted == false).Count(); } + + /// + /// 获取超时的任务数量 + /// + /// + public long GetTimeOutSpuOptimizationTaskCount() + { + return fsql.Select() + .Where(t => t.ReStartTimes > 0) + .Count(); + } + } } diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index f8cb9ef..7562bb2 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -498,6 +498,7 @@ namespace BBWYB.Server.Business.Sync BelongShopName = sourceShopName, CompletionTime = null, CreateTime = DateTime.Now, + TaskTime = DateTime.Now, IsOptimizationCompleted = false, LastOptimizationTime = null, ProductId = spuGroup.Key, @@ -641,7 +642,7 @@ namespace BBWYB.Server.Business.Sync Id = idGenerator.NewLong(), CreateTme = DateTime.Now, //ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1), - ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now), + ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now.AddDays(1)), //OrderId = o.OrderId, //OrderSn = o.OrderSn, ShopId = shopId, diff --git a/BBWYB.Server.Business/_1688Helper/Collect1688Helper.cs b/BBWYB.Server.Business/_1688Helper/Collect1688Helper.cs index 338b9f9..3e33b6d 100644 --- a/BBWYB.Server.Business/_1688Helper/Collect1688Helper.cs +++ b/BBWYB.Server.Business/_1688Helper/Collect1688Helper.cs @@ -1,6 +1,7 @@  using BBWYB.Common.Models; using BBWYB.Server.Model._1688; +using BBWYB.Server.Model.Dto; using HtmlAgilityPack; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -154,7 +155,7 @@ namespace BBWYB.Server.Business._1688Helper foreach (HtmlNode zone_order in zone_orders) { // 获取 data-source 属性的值 - string dataSourceValue = zone_order.GetAttributeValue("data-source", ""); + string dataSourceValue = zone_order.GetAttributeValue("data-source", "")?.Replace(""", "\""); var groupHeaderJson = JsonConvert.DeserializeObject(dataSourceValue); //sellerMemberId @@ -191,7 +192,7 @@ namespace BBWYB.Server.Business._1688Helper if (groupDivDataSource != null) { - var json = JsonConvert.DeserializeObject(groupDivDataSource); + var json = JsonConvert.DeserializeObject(groupDivDataSource?.Replace(""", "\"")); group = json.group.ToString(); stepName = json.stepName.ToString(); } @@ -267,11 +268,6 @@ namespace BBWYB.Server.Business._1688Helper //'ext':'{\"detailOrderBizAttributes\":{\"b_cargo_from\":\"offerdetail:pc;ipvId:2150462317125683404374580e106c\"}}', var ext = GetRegexValue(data_source, "'ext':'([^']+)'")?.Replace("\\"","\""); - ////'mixAmount':'100' - - var mixAmount = decimal.Parse(GetRegexValue(data_source, "'mixAmount':'([^']+)'")); - - //'offerId':'563883060952', var offerId = GetRegexValue(data_source, "'offerId':'([^']+)'"); @@ -303,7 +299,6 @@ namespace BBWYB.Server.Business._1688Helper OutId = outId, OfferPriceRangeJson = offerPriceRangeJson, Ext = ext, - MixAmount = mixAmount }); } @@ -898,7 +893,7 @@ namespace BBWYB.Server.Business._1688Helper return response; } - public PrewOrderResponse PrewOrder(List orderProducts, string address, OrderModel orderModel,string phoneNumber,string UserName) + public PrewOrderResponse PrewOrder(List orderProducts, OrderModel orderModel, ConsigneeRequest Consignee) { var flow = orderModel.ToString(); //下单类型 //获取时间戳 @@ -908,6 +903,9 @@ namespace BBWYB.Server.Business._1688Helper var _csrf_token = productParameter.Csrf_token; var lvid = productParameter.Lvid; var orderUrl = productParameter.OrderUrl; + + var address = Consignee.Province+ Consignee.City+ Consignee.County; + var adressModel = InputAddress(address, _csrf_token); if (adressModel == null) { @@ -916,9 +914,11 @@ namespace BBWYB.Server.Business._1688Helper AddLog?.Invoke($"获取地址信息成功,姓名:{adressModel.PersonalName},手机号:{adressModel.MobileNO},地址:{adressModel.AddressDetail},邮编:{adressModel.DivisionZip}"); var addressCode = adressModel.AddressCode; - var addressDetail = adressModel.AddressDetail; - adressModel.PersonalName = UserName; - adressModel.MobileNO= phoneNumber; + + adressModel.PersonalName = Consignee.ContactName; + adressModel.MobileNO= Consignee.Mobile; + + adressModel.AddressDetail = Consignee.Town+ Consignee.Address; var divisionZip = adressModel.DivisionZip; //刷新地址 productParameter = ReflashAdress(productParameter, adressModel, orderModel); diff --git a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs index 1c5c598..e496741 100644 --- a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs +++ b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs @@ -40,6 +40,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } + /// + /// 任务时间(创建/重启),用于查询 + /// + [Column(DbType = "datetime")] + public DateTime? TaskTime { get; set; } + /// /// 是否优化完成 /// diff --git a/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs b/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs index 0b5c60a..b90105b 100644 --- a/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs @@ -37,6 +37,11 @@ namespace BBWYB.Server.Model.Dto /// public decimal? LastPurchasePriceCost { get; set; } = 0.0M; + /// + /// 店铺SKU的最近采购成本(配件单价之和) + /// + public decimal? SkuLastPurchasePriceCost { get; set; } + /// /// 采购方案成本 /// diff --git a/BBWYB.Server.Model/Dto/_1688/OrderParameter.cs b/BBWYB.Server.Model/Dto/_1688/OrderParameter.cs index 6ae7c80..9704536 100644 --- a/BBWYB.Server.Model/Dto/_1688/OrderParameter.cs +++ b/BBWYB.Server.Model/Dto/_1688/OrderParameter.cs @@ -106,6 +106,5 @@ namespace BBWYB.Server.Model._1688 /// public int ChooseFreeFreight { get; set; } public string Ext { get; set; } - public decimal MixAmount { get; set; } } }