diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
index 28285a9..b31afcd 100644
--- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
@@ -143,5 +143,16 @@ namespace BBWYB.Server.API.Controllers
//{
// purchaseSchemeBusiness.EditPurchaseRatio(request);
//}
+
+ ///
+ /// 根据慧眼标的Id获取慧眼采购方案(含全部配件基本信息)
+ ///
+ ///
+ ///
+ [HttpPost]
+ public IList GetPurchaseSchemeByHYBDId([FromBody]QueryHYSchemeRequest request)
+ {
+ return purchaseSchemeBusiness.GetPurchaseSchemeByHYBDId(request);
+ }
}
}
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs
index 5549279..c447a9b 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs
@@ -273,7 +273,9 @@ namespace BBWYB.Server.Business
ItemList = list,
Purchaser = purchaser,
PurchaseProductId = request.PurchaseProductId,
- PurchasePlatform = Enums.Platform.阿里巴巴
+ PurchasePlatform = Enums.Platform.阿里巴巴,
+ ProductName = jobject["globalData"]["tempModel"]["offerTitle"]?.ToString(),
+ ProductLogo = list.FirstOrDefault()?.Logo
};
}
catch
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index e08c632..6a15dcb 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -1,10 +1,15 @@
using BBWYB.Common.Extensions;
+using BBWYB.Common.Http;
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using FreeSql;
+using MySqlX.XDevAPI;
+using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.X509.Qualified;
+using System.Net.Http.Headers;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business
@@ -12,10 +17,16 @@ namespace BBWYB.Server.Business
public class PurchaseSchemeBusiness : BaseBusiness, IDenpendency
{
private PurchaseProductAPIService purchaseProductAPIService;
+ private RestApiService restApiService;
- public PurchaseSchemeBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, PurchaseProductAPIService purchaseProductAPIService) : base(fsql, nLogManager, idGenerator)
+ public PurchaseSchemeBusiness(IFreeSql fsql,
+ NLogManager nLogManager,
+ IIdGenerator idGenerator,
+ PurchaseProductAPIService purchaseProductAPIService,
+ RestApiService restApiService) : base(fsql, nLogManager, idGenerator)
{
this.purchaseProductAPIService = purchaseProductAPIService;
+ this.restApiService = restApiService;
}
private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest
@@ -204,6 +215,16 @@ namespace BBWYB.Server.Business
if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0)
{
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) ||
+ string.IsNullOrEmpty(ps.SkuId) ||
+ ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) ||
+ string.IsNullOrEmpty(psp.SkuId) ||
+ psp.PurchaseSchemeProductSkuList.Any(pss => string.IsNullOrEmpty(pss.ProductId) ||
+ string.IsNullOrEmpty(pss.SkuId)))))
+ {
+ throw new BusinessException("更新方案缺少ProductId/SkuId");
+ }
+
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
string.IsNullOrEmpty(pp.PurchaserName))))
throw new BusinessException("更新方案中有采购商Id/Name/Location为空");
@@ -217,6 +238,16 @@ namespace BBWYB.Server.Business
if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0)
{
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) ||
+ string.IsNullOrEmpty(ps.SkuId) ||
+ ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) ||
+ string.IsNullOrEmpty(psp.SkuId) ||
+ psp.PurchaseSchemeProductSkuList.Any(pss => string.IsNullOrEmpty(pss.ProductId) ||
+ string.IsNullOrEmpty(pss.SkuId)))))
+ {
+ throw new BusinessException("新增方案缺少ProductId/SkuId");
+ }
+
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
string.IsNullOrEmpty(pp.PurchaserName))))
throw new BusinessException("新增方案中有采购商Id/Name/Location为空");
@@ -237,6 +268,11 @@ namespace BBWYB.Server.Business
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}的采购方案");
+ if (!string.IsNullOrEmpty(addPurchaseScheme.HYSchemeId))
+ {
+ if (dbPurchaseSchemeList.Any(ps => ps.HYSchemeId == addPurchaseScheme.HYSchemeId))
+ throw new BusinessException($"慧眼方案Id{addPurchaseScheme.HYSchemeId}已被其他采购方案使用");
+ }
}
}
@@ -419,7 +455,7 @@ namespace BBWYB.Server.Business
.WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId)
.Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any());
}
- var sql = select.ToSql();
+ //var sql = select.ToSql();
var purchaseSchemeList = select.OrderByDescending(ps => ps.CreateTime).ToList();
@@ -499,6 +535,9 @@ namespace BBWYB.Server.Business
});
if (basicInfo != null)
{
+ schemeProduct.PurchaseProductLogo = basicInfo.ProductLogo;
+ schemeProduct.PurchaseProductName = basicInfo.ProductName;
+
foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList)
{
var basicSku = basicInfo.ItemList.FirstOrDefault(x => x.PurchaseSkuId == schemeProductSku.PurchaseSkuId);
@@ -688,5 +727,115 @@ namespace BBWYB.Server.Business
}
return list;
}
+
+ ///
+ /// 根据慧眼标的Id获取采购方案(含全部配件基本信息)
+ ///
+ ///
+ ///
+ ///
+ public IList GetPurchaseSchemeByHYBDId(QueryHYSchemeRequest request)
+ {
+ if (request.ShopId == 0)
+ throw new BusinessException("缺少店铺Id");
+ if (string.IsNullOrEmpty(request.ProductId))
+ throw new BusinessException("缺少商品Id");
+ if (string.IsNullOrEmpty(request.HYBDId))
+ throw new BusinessException("缺少标的Id");
+
+ var hyHttpResult = restApiService.SendRequest("http://hyapi.qiyue666.com", "/HuiYan/ItemPlan/GetPlanByOrderId", $"orderId={request.HYBDId}", null, HttpMethod.Get);
+ if (hyHttpResult.StatusCode != System.Net.HttpStatusCode.OK)
+ throw new BusinessException(hyHttpResult.Content);
+ var hyResponse = JsonConvert.DeserializeObject>>(hyHttpResult.Content);
+ if (!hyResponse.Success)
+ throw new BusinessException(hyResponse.Msg);
+ if (hyResponse.Data == null || hyResponse.Data.Count() == 0)
+ throw new BusinessException("该标的Id缺少采购方案");
+ var hySchemeList = hyResponse.Data;
+ var hySchemeIdList = hySchemeList.Select(x => x.Id.ToString()).ToList();
+ var dbSchemeList = fsql.Select().Where(ps => ps.ProductId == request.ProductId &&
+ !string.IsNullOrEmpty(ps.HYSchemeId) &&
+ hySchemeIdList.Contains(ps.HYSchemeId)).ToList();
+
+ var resultList = new List();
+ foreach (var hyScheme in hySchemeList)
+ {
+ if (hyScheme.PlanItems == null || hyScheme.PlanItems.Count() == 0)
+ continue;
+
+ var hySchemeResponse = new HYPurchaseSchemeResponse()
+ {
+ Id = 0,
+ CreateTime = DateTime.Now,
+ HYBDId = request.HYBDId,
+ IsAdded = dbSchemeList.Any(ps => ps.HYBDId == request.HYBDId && ps.HYSchemeId == hyScheme.Id.ToString()),
+ HYSchemeId = hyScheme.Id.ToString(),
+ ProductId = request.ProductId,
+ ShopId = request.ShopId
+ };
+ resultList.Add(hySchemeResponse);
+
+ foreach (var hySchemeProduct in hyScheme.PlanItems)
+ {
+ var basicInfo = GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest()
+ {
+ FirstApiMode = Enums.PurchaseProductAPIMode.Spider,
+ PriceMode = Enums.PurchaseOrderMode.批发,
+ Platform = Enums.Platform.阿里巴巴,
+ PurchaseProductId = hySchemeProduct.ItemId
+ });
+
+ var hySchemeProductResponse = new PurchaseSchemeProductResponse()
+ {
+ Id = 0,
+ ProductId = request.ProductId,
+ PurchasePlatform = Enums.Platform.阿里巴巴,
+ PurchaseProductId = hySchemeProduct.ItemId,
+ PurchaseProductLogo = basicInfo.ProductLogo,
+ PurchaseProductName = basicInfo.ProductName,
+ PurchaserId = basicInfo.Purchaser?.Id,
+ PurchaserId2 = basicInfo.Purchaser?.Id2,
+ PurchaserMemberId = basicInfo.Purchaser?.MemberId,
+ PurchaserLocation = basicInfo.Purchaser?.Location,
+ PurchaserName = basicInfo.Purchaser?.Name,
+ PurchaseUrl = $"https://detail.1688.com/offer/{hySchemeProduct.ItemId}.html"
+ };
+ hySchemeResponse.PurchaseSchemeProductList.Add(hySchemeProductResponse);
+
+ if (!hySchemeResponse.PurchaserList.Any(p => p.Id == hySchemeProductResponse.PurchaserId))
+ {
+ hySchemeResponse.PurchaserList.Add(new Purchaser()
+ {
+ Id = hySchemeProductResponse.PurchaserId,
+ Id2 = hySchemeProductResponse.PurchaserId2,
+ Location = hySchemeProductResponse.PurchaserLocation,
+ Name = hySchemeProductResponse.PurchaserName,
+ Platform = hySchemeProductResponse.PurchasePlatform,
+ MemberId = hySchemeProductResponse.PurchaserMemberId
+ });
+ }
+
+ foreach (var skuBasicInfo in basicInfo.ItemList)
+ {
+ var hySchemeProductSkuResponse = new PurchaseSchemeProductSkuResponse()
+ {
+ Id = 0,
+ ActualPrice = skuBasicInfo.Price,
+ ProductId = request.ProductId,
+ PurchaseProductId = skuBasicInfo.PurchaseProductId,
+ PurchaseRatio = 1,
+ PurchaseSkuId = skuBasicInfo.PurchaseSkuId,
+ PurchaseSkuLogo = skuBasicInfo.Logo,
+ PurchaseSkuPrice = skuBasicInfo.Price,
+ PurchaseSkuSpecId = skuBasicInfo.PurchaseSkuSpecId,
+ PurchaseSkuTitle = skuBasicInfo.Title
+ };
+ hySchemeProductResponse.PurchaseSchemeProductSkuList.Add(hySchemeProductSkuResponse);
+ hySchemeResponse.DefaultCost += skuBasicInfo.Price;
+ }
+ }
+ }
+ return resultList;
+ }
}
}
diff --git a/BBWYB.Server.Model/Dto/Core/HY/HYPurchaseScheme.cs b/BBWYB.Server.Model/Dto/Core/HY/HYPurchaseScheme.cs
new file mode 100644
index 0000000..ed39981
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Core/HY/HYPurchaseScheme.cs
@@ -0,0 +1,51 @@
+namespace BBWYB.Server.Model.Dto
+{
+ public class HYPurchaseScheme
+ {
+ ///
+ /// HY方案Id
+ ///
+ public int Id { get; set; }
+
+ public string TeamitemsId { get; set; }
+
+ public string UserId { get; set; }
+
+ ///
+ /// 配件数量
+ ///
+ public int SkuCount { get; set; }
+
+ public IList PlanItems { get; set; }
+ }
+
+ public class HYPurchaseSchemeProduct
+ {
+ public string Id { get; set; }
+
+ ///
+ /// 慧眼方案Id
+ ///
+ public int SupplierTaskPlanId { get; set; }
+
+ ///
+ /// Taobao=0 Jd=1 ALBB=2 PDD=3
+ ///
+ public int Platform { get; set; }
+
+ ///
+ /// 采购商品Id
+ ///
+ public string ItemId { get; set; }
+ }
+
+ public class HYPurchaseSchemeProductSku
+ {
+
+ }
+
+ public class HYSupplierInfo
+ {
+
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/hy/QueryHYSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/hy/QueryHYSchemeRequest.cs
new file mode 100644
index 0000000..ab142fe
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/hy/QueryHYSchemeRequest.cs
@@ -0,0 +1,17 @@
+namespace BBWYB.Server.Model.Dto
+{
+ public class QueryHYSchemeRequest
+ {
+ public long ShopId { get; set; }
+
+ ///
+ /// 店铺商品Id
+ ///
+ public string ProductId { get; set; }
+
+ ///
+ /// 慧眼标的Id
+ ///
+ public string HYBDId { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/HY/HYPurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/HY/HYPurchaseSchemeResponse.cs
new file mode 100644
index 0000000..8e60df2
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/HY/HYPurchaseSchemeResponse.cs
@@ -0,0 +1,10 @@
+namespace BBWYB.Server.Model.Dto
+{
+ public class HYPurchaseSchemeResponse : PurchaseSchemeResponse
+ {
+ ///
+ /// 是否已经添加到SPU之中
+ ///
+ public bool IsAdded { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs
index 336d112..d4bd3ff 100644
--- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs
@@ -11,6 +11,10 @@ namespace BBWYB.Server.Model.Dto
public string PurchaseProductId { get; set; }
+ public string ProductName { get; set; }
+
+ public string ProductLogo { get; set; }
+
///
/// 采购SKU基础信息列表
///
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
index affd828..7010514 100644
--- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
@@ -12,6 +12,16 @@
public string PurchaserMemberId { get; set; }
+ ///
+ /// 采购商品标题 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值
+ ///
+ public string PurchaseProductName { get; set; }
+
+ ///
+ /// 采购商品Logo 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值
+ ///
+ public string PurchaseProductLogo { get; set; }
+
public new List PurchaseSchemeProductSkuList { get; set; }
public PurchaseSchemeProductResponse()