using BBWY.Common.Extensions;
using BBWY.Common.Models;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using BBWY.Server.Model.Dto.Response.PurchaseOrderV2;
using System.Collections.Generic;
using System.Linq;
using Yitter.IdGenerator;
namespace BBWY.Server.Business
{
public class BatchPurchaseBusiness : BaseBusiness, IDenpendency
{
private ProductBusiness productBusiness;
public BatchPurchaseBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, ProductBusiness productBusiness) : base(fsql, nLogManager, idGenerator)
{
this.productBusiness = productBusiness;
}
///
/// 获取包含对应平台采购方案的sku列表
///
///
///
///
public IList GetProductSkuAndSchemeList(SearchProductSkuAndSchemeRequest request)
{
if (string.IsNullOrEmpty(request.Spu) || string.IsNullOrEmpty(request.Sku))
throw new BusinessException("至少具备一个Sku或Spu条件");
var productSkuList = productBusiness.GetProductSkuList(new SearchProductSkuRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
Platform = request.Platform,
Sku = request.Sku,
Spu = request.Spu
});
if (productSkuList == null || productSkuList.Count() == 0)
return null;
var skuIdList = productSkuList.Select(s => s.Id).ToList();
var schemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id)
.Where((ps, p) => ps.ShopId == request.ShopId)
.Where((ps, p) => ps.PurchasePlatform == request.PurchasePlatform)
.Where((ps, p) => skuIdList.Contains(ps.SkuId))
.ToList((ps, p) => new
{
PurchaseSchemeId = ps.Id,
ps.PurchaserId,
PurchaseName = p.Name,
ps.PurchasePlatform,
ps.SkuId
});
var pruductSkuSchemeList = productSkuList.Map>();
foreach (var ps in pruductSkuSchemeList)
{
var scheme = schemeList.FirstOrDefault(s => s.SkuId == ps.Id);
if (scheme == null)
continue;
ps.PurchaseSchemeId = scheme.PurchaseSchemeId;
ps.PurchaserId = scheme.PurchaserId;
ps.PurchaseName = scheme.PurchaseName;
ps.PurchasePlatform = scheme.PurchasePlatform;
}
return pruductSkuSchemeList;
}
}
}