diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
index 7e71b1b..28285a9 100644
--- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
@@ -26,6 +26,16 @@ namespace BBWYB.Server.API.Controllers
purchaseSchemeBusiness.EditPurchaseScheme(batchCURDSchemeRequest);
}
+ ///
+ /// 添加/编辑采购方案(web)
+ ///
+ ///
+ [HttpPost]
+ public void EditPurchaseSchemeV2([FromBody] BatchCURDSchemeRequest batchCURDSchemeRequest)
+ {
+ purchaseSchemeBusiness.EditPurchaseSchemeV2(batchCURDSchemeRequest);
+ }
+
///
/// 获取采购方案列表
///
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index d31a373..e08c632 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -194,25 +194,60 @@ namespace BBWYB.Server.Business
public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest)
{
- if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 &&
- batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)
- throw new BusinessException("非法参数");
- if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
- string.IsNullOrEmpty(pp.PurchaserName))))
- throw new BusinessException("新增方案中有采购商Id/Name/Location为空");
+ List dbSchemeGroupList = null;
+ List dbPurchaseSchemeList = null;
+
+ #region 数据验证
+ if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) &&
+ (batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0))
+ throw new BusinessException("更新方案和新增方案参数不能同时为空");
+
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0)
+ {
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
+ string.IsNullOrEmpty(pp.PurchaserName))))
+ throw new BusinessException("更新方案中有采购商Id/Name/Location为空");
+
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0))
+ throw new BusinessException("更新方案中采购方案缺少Id");
+
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.SchemeGroupId == null || ps.SchemeGroupId == 0))
+ throw new BusinessException("更新方案中采购方案缺少分组Id");
+ }
+
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0)
+ {
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
+ string.IsNullOrEmpty(pp.PurchaserName))))
+ throw new BusinessException("新增方案中有采购商Id/Name/Location为空");
- if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
- string.IsNullOrEmpty(pp.PurchaserName))))
- throw new BusinessException("编辑方案中有采购商Id/Name/Location为空");
- if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0 && batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0))
- throw new BusinessException("编辑方案中采购方案缺少Id");
+ var productIds = batchCURDSchemeRequest.AddPurchaseSchemeList.Select(ps => ps.ProductId).ToList();
+
+ dbSchemeGroupList = fsql.Select().Where(psg => productIds.Contains(psg.ProductId)).ToList();
+ var dbSchemeGroupIds = dbSchemeGroupList.Select(psg => psg.Id).ToList();
+ dbPurchaseSchemeList = fsql.Select().Where(ps => dbSchemeGroupIds.Contains(ps.SchemeGroupId)).ToList();
+ foreach (var addPurchaseScheme in batchCURDSchemeRequest.AddPurchaseSchemeList)
+ {
+ if (addPurchaseScheme.SchemeGroupId == null || addPurchaseScheme.SchemeGroupId == 0)
+ continue;
+ var dbSchemeGroup = dbSchemeGroupList.FirstOrDefault(g => g.Id == addPurchaseScheme.SchemeGroupId);
+ if (dbSchemeGroup == null)
+ throw new BusinessException($"新增方案中指定了不存在的分组{addPurchaseScheme.SchemeGroupId}");
+ var dbPurchaseSchemeList_sameGroup = dbPurchaseSchemeList.Where(ps => ps.SchemeGroupId == addPurchaseScheme.SchemeGroupId).ToList();
+ if (dbPurchaseSchemeList_sameGroup.Any(ps => ps.SkuId == addPurchaseScheme.SkuId))
+ throw new BusinessException($"采购方案分组中Sku不允许重复,{dbSchemeGroup.GroupName}已存在{addPurchaseScheme.SkuId}的采购方案");
+ }
+ }
+
+ #endregion
List addPurchaseSchemeList = new List();
List addPurchaseSchemeProductList = new List();
List addPurchaseSchemeProductSkuList = new List();
List newPurchaserList = new List();
List deletePurchaseSchemeIdList = new List();
List> updatePurchaseSchemeList = new List>();
+ List insertPurchaseSchemeGroupsList = new List();
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0)
{
@@ -220,13 +255,31 @@ namespace BBWYB.Server.Business
foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList)
{
+ if (psReq.SchemeGroupId == null || psReq.SchemeGroupId == 0)
+ {
+ //新增分组
+ var saemSpuSchemeGroupList = dbSchemeGroupList.Where(psg => psg.ProductId == psReq.ProductId).ToList();
+ var insertSchemeGroup = new PurchaseSchemeGroup()
+ {
+ Id = idGenerator.NewLong(),
+ CreateTime = DateTime.Now,
+ GroupName = $"{psReq.ProductId}_第{saemSpuSchemeGroupList.Count() + 1}组",
+ ProductId = psReq.ProductId,
+ ShopId = psReq.ShopId
+ };
+ insertPurchaseSchemeGroupsList.Add(insertSchemeGroup);
+ }
+
var ps = new PurchaseScheme()
{
CreateTime = DateTime.Now,
Id = idGenerator.NewLong(),
ProductId = psReq.ProductId,
SkuId = psReq.SkuId,
- ShopId = psReq.ShopId
+ ShopId = psReq.ShopId,
+ HYBDId = psReq.HYBDId,
+ HYSchemeId = psReq.HYSchemeId,
+ SchemeGroupId = psReq.SchemeGroupId ?? 0
};
addPurchaseSchemeList.Add(ps);
foreach (var pspReq in psReq.PurchaseSchemeProductList)
@@ -308,6 +361,8 @@ namespace BBWYB.Server.Business
fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows();
if (addPurchaseSchemeProductSkuList.Count > 0)
fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows();
+ if (insertPurchaseSchemeGroupsList.Count() > 0)
+ fsql.Insert(insertPurchaseSchemeGroupsList).ExecuteAffrows();
if (updatePurchaseSchemeList.Count() > 0)
{
foreach (var update in updatePurchaseSchemeList)
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
index e8ea75e..141aa17 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
@@ -15,12 +15,12 @@
public string PurchaseUrl { get; set; }
///
- /// 采购商Id
+ /// 采购商Id (1688 SellerUserId)
///
public string PurchaserId { get; set; }
///
- /// 采购商Id
+ /// 采购商Id2 (1688 SellerLoginId)
///
public string PurchaserId2 { get; set; }
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
index 6a11c88..955a6d0 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
@@ -4,10 +4,25 @@ namespace BBWYB.Server.Model.Dto
{
public class InputPurchaseSchemeRequest
{
+ ///
+ /// 采购方案分组Id,为空将新增分组
+ ///
+ public long? SchemeGroupId { get; set; }
+
+ ///
+ /// 慧眼标的Id
+ ///
+ public string HYBDId { get; set; }
+
+ ///
+ /// 慧眼方案Id
+ ///
+ public string HYSchemeId { get; set; }
+
public long ShopId { get; set; }
public string ProductId { get; set; }
public string SkuId { get; set; }
-
+
public IList PurchaseSchemeProductList { get; set; }
}
}