shanji 1 year ago
parent
commit
7ad30585c6
  1. 2
      BBWYB.Server.API/Controllers/PurchaseOrderController.cs
  2. 10
      BBWYB.Server.API/Controllers/SkuOptimizationController.cs
  3. 53
      BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs
  4. 10
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  5. 26
      BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs
  6. 3
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  7. 24
      BBWYB.Server.Business/_1688Helper/Collect1688Helper.cs
  8. 6
      BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs
  9. 5
      BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs
  10. 1
      BBWYB.Server.Model/Dto/_1688/OrderParameter.cs

2
BBWYB.Server.API/Controllers/PurchaseOrderController.cs

@ -43,7 +43,7 @@ namespace BBWYB.Server.API.Controllers
/// 网页创建采购单
/// </summary>
/// <param name="request"></param>
[HttpPost]
[HttpPost, AllowAnonymous]
public void WebCreatePurchaseOrder([FromBody] WebCreateOrderRequest request)
{
purchaseOrderBusiness.WebCreatePurchaseOrder(request);

10
BBWYB.Server.API/Controllers/SkuOptimizationController.cs

@ -80,5 +80,15 @@ namespace BBWYB.Server.API.Controllers
{
return optimizationBusiness.GetNoCompletedSpuOptimizationTaskCount(GetUserId());
}
/// <summary>
/// 获取超时任务数量
/// </summary>
/// <returns></returns>
[HttpGet]
public long GetTimeOutSpuOptimizationTaskCount()
{
return optimizationBusiness.GetTimeOutSpuOptimizationTaskCount();
}
}
}

53
BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs

@ -136,21 +136,46 @@ namespace BBWYB.Server.Business
#endregion
#region 采购方案
List<PurchaseScheme> dbSchemeList = fsql.Select<PurchaseScheme>(schemeIdList).ToList();
#region 最近采购成本
var recentOrderPurchaserRelationList = fsql.Select<OrderPurchaseInfo, OrderPurchaseRelationInfo>()
.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<OrderPurchaseRelationInfo>()
.InnerJoin((opri, opri2) => opri.MaxId == opri2.Id)
.ToList((opri, opri2) => opri2);
var purchaseOrderIdList = recentOrderPurchaserRelationList.Select(x => x.PurchaseOrderId).Distinct().ToList();
//List<PurchaseScheme> dbSchemeList = fsql.Select<PurchaseScheme>(schemeIdList).ToList();
//#region 最近采购成本/采购时间
//var recentPurchaseRecordList = fsql.Select<OrderPurchaseInfo, OrderPurchaseRelationInfo, OrderPurchaseSkuInfo>()
// .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 采购次数

10
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<Order>(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($"登录失效,正在重新登陆,登录后点击下单!");

26
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<SpuOptimizationTaskResponse>();
@ -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>(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<SpuOptimizationTask>().Where(t => t.IsOptimizationCompleted == false).Count();
}
/// <summary>
/// 获取超时的任务数量
/// </summary>
/// <returns></returns>
public long GetTimeOutSpuOptimizationTaskCount()
{
return fsql.Select<SpuOptimizationTask>()
.Where(t => t.ReStartTimes > 0)
.Count();
}
}
}

3
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,

24
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("&quot;", "\"");
var groupHeaderJson = JsonConvert.DeserializeObject<dynamic>(dataSourceValue);
//sellerMemberId
@ -191,7 +192,7 @@ namespace BBWYB.Server.Business._1688Helper
if (groupDivDataSource != null)
{
var json = JsonConvert.DeserializeObject<dynamic>(groupDivDataSource);
var json = JsonConvert.DeserializeObject<dynamic>(groupDivDataSource?.Replace("&quot;", "\""));
group = json.group.ToString();
stepName = json.stepName.ToString();
}
@ -267,11 +268,6 @@ namespace BBWYB.Server.Business._1688Helper
//'ext':'{\&quot;detailOrderBizAttributes\&quot;:{\&quot;b_cargo_from\&quot;:\&quot;offerdetail:pc;ipvId:2150462317125683404374580e106c\&quot;}}',
var ext = GetRegexValue(data_source, "'ext':'([^']+)'")?.Replace("\\&quot;","\"");
////'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<PP_OrderProductParamRequest> orderProducts, string address, OrderModel orderModel,string phoneNumber,string UserName)
public PrewOrderResponse PrewOrder(List<PP_OrderProductParamRequest> 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);

6
BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs

@ -40,6 +40,12 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 任务时间(创建/重启),用于查询
/// </summary>
[Column(DbType = "datetime")]
public DateTime? TaskTime { get; set; }
/// <summary>
/// 是否优化完成
/// </summary>

5
BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs

@ -37,6 +37,11 @@ namespace BBWYB.Server.Model.Dto
/// </summary>
public decimal? LastPurchasePriceCost { get; set; } = 0.0M;
/// <summary>
/// 店铺SKU的最近采购成本(配件单价之和)
/// </summary>
public decimal? SkuLastPurchasePriceCost { get; set; }
/// <summary>
/// 采购方案成本
/// </summary>

1
BBWYB.Server.Model/Dto/_1688/OrderParameter.cs

@ -106,6 +106,5 @@ namespace BBWYB.Server.Model._1688
/// </summary>
public int ChooseFreeFreight { get; set; }
public string Ext { get; set; }
public decimal MixAmount { get; set; }
}
}

Loading…
Cancel
Save