From fd0f88e29a69bb01634e258541238e5ad9da2ec6 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Wed, 30 Aug 2023 22:18:22 +0800
Subject: [PATCH 1/6] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=87=87=E8=B4=AD?=
=?UTF-8?q?=E6=96=B9=E6=A1=88=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E=E9=85=8D?=
=?UTF-8?q?=E4=BB=B6sku=E5=A4=B1=E6=95=88=E6=83=85=E5=86=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../PurchaseScheme/PurchaseSchemeBusiness.cs | 2 ++
.../PurchaseScheme/PurchaseSchemeProductSkuResponse.cs | 5 +++++
2 files changed, 7 insertions(+)
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index 7da1b18..692f3c9 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -604,9 +604,11 @@ namespace BBWYB.Server.Business
foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList)
{
+ schemeProductSku.IsInvalid = 1;
var basicSku = basicInfo.ItemList.FirstOrDefault(x => x.PurchaseSkuId == schemeProductSku.PurchaseSkuId);
if (basicSku != null)
{
+ schemeProductSku.IsInvalid = 0;
schemeProductSku.PurchaseSkuTitle = basicSku.Title;
schemeProductSku.PurchaseSkuPrice = basicSku.Price;
schemeProductSku.PurchaseSkuLogo = basicSku.Logo;
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
index 30942ea..95a7739 100644
--- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
@@ -17,5 +17,10 @@
/// 采购SKU单价 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值
///
public decimal? PurchaseSkuPrice { get; set; }
+
+ ///
+ /// 是否失效 失效=1 其余情况默认为有效 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值
+ ///
+ public int? IsInvalid { get; set; }
}
}
From 684c16990eef0dcceea0cb8065b372697ea21a49 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Thu, 31 Aug 2023 14:59:23 +0800
Subject: [PATCH 2/6] =?UTF-8?q?1=EF=BC=89=E5=88=A0=E9=99=A4=E9=85=8D?=
=?UTF-8?q?=E4=BB=B6=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=88=A0?=
=?UTF-8?q?=E9=99=A4=E6=9C=80=E5=90=8E=E4=B8=80=E4=B8=AA=E9=85=8D=E4=BB=B6?=
=?UTF-8?q?=E5=88=99=E5=88=A0=E9=99=A4=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?=
=?UTF-8?q?=202=EF=BC=89=E4=BF=9D=E5=AD=98=E6=8E=A5=E5=8F=A3=EF=BC=8C?=
=?UTF-8?q?=E5=88=A0=E9=99=A4=E6=AE=8B=E7=BC=BA=E7=9A=84=E9=87=87=E8=B4=AD?=
=?UTF-8?q?=E6=96=B9=E6=A1=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../PurchaseScheme/PurchaseSchemeBusiness.cs | 144 ++++++++++++++----
.../PurchaseScheme/BatchCURDSchemeRequest.cs | 4 +-
.../InputPurchaseSchemeProductRequest.cs | 2 +-
.../InputPurchaseSchemeRequest.cs | 2 +-
4 files changed, 117 insertions(+), 35 deletions(-)
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index 692f3c9..286dd05 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -208,7 +208,7 @@ namespace BBWYB.Server.Business
List dbSchemeGroupList = null;
List dbPurchaseSchemeList = null;
-
+ List deleteSchemeIdList = new List();
#region 数据验证
if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) &&
(batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0))
@@ -220,6 +220,9 @@ namespace BBWYB.Server.Business
if (groupCount > 1)
throw new BusinessException("只能对同一个spu的方案进行编辑");
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0))
+ throw new BusinessException("更新方案中采购方案缺少Id");
+
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) ||
string.IsNullOrEmpty(ps.SkuId) ||
ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) ||
@@ -230,22 +233,42 @@ namespace BBWYB.Server.Business
throw new BusinessException("更新方案缺少ProductId/SkuId");
}
- if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList == null ||
- ps.PurchaseSchemeProductList.Count() == 0 ||
- ps.PurchaseSchemeProductList.Any(psp => psp.PurchaseSchemeProductSkuList == null ||
- psp.PurchaseSchemeProductSkuList.Count() == 0)))
+ #region 验证是否存在数据残缺的采购方案
+ for (var i = 0; i < batchCURDSchemeRequest.EditPurchaseSchemeList.Count(); i++)
{
- throw new BusinessException("更新方案缺少商品信息");
+ var editScheme = batchCURDSchemeRequest.EditPurchaseSchemeList[i];
+ if (editScheme.PurchaseSchemeProductList != null && editScheme.PurchaseSchemeProductList.Count() > 0)
+ {
+ for (var j = 0; j < editScheme.PurchaseSchemeProductList.Count(); j++)
+ {
+ var editSchemeProduct = editScheme.PurchaseSchemeProductList[j];
+ if (editSchemeProduct.PurchaseSchemeProductSkuList == null || editSchemeProduct.PurchaseSchemeProductSkuList.Count() == 0)
+ {
+ //如果采购商品不具备配件,则移除该采购商品
+ editScheme.PurchaseSchemeProductList.RemoveAt(j);
+ j--;
+ }
+ }
+ }
+
+ if (editScheme.PurchaseSchemeProductList == null || editScheme.PurchaseSchemeProductList.Count() == 0)
+ {
+ //采购方案不再具备采购商品,则移除该采购方案
+ batchCURDSchemeRequest.EditPurchaseSchemeList.RemoveAt(i);
+ i--;
+ deleteSchemeIdList.Add(editScheme.Id);
+ }
}
+ #endregion
+
+
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
string.IsNullOrEmpty(pp.PurchaserId2) ||
string.IsNullOrEmpty(pp.PurchaserName))))
throw new BusinessException("更新方案中有采购商Id/Id2/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");
@@ -311,12 +334,14 @@ namespace BBWYB.Server.Business
List addPurchaseSchemeProductList = new List();
List addPurchaseSchemeProductSkuList = new List();
List newPurchaserList = new List();
- List deletePurchaseSchemeIdList = new List();
+ List deletePartsSchemeIdList = new List();
List> updatePurchaseSchemeList = new List>();
+
List insertPurchaseSchemeGroupsList = new List();
IInsert? insertPurchaseSchemeGroupIndex = null;
IUpdate? updatePurchaseSchemeGroupIndex = null;
+
if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0)
{
var firstScheme = batchCURDSchemeRequest.AddPurchaseSchemeList.First();
@@ -402,7 +427,7 @@ namespace BBWYB.Server.Business
{
ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList);
- deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id));
+ deletePartsSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id));
foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList)
{
var schemeId = psReq.Id;
@@ -446,10 +471,10 @@ namespace BBWYB.Server.Business
fsql.Insert(newPurchaserList).ExecuteAffrows();
//更新,删除已存在的采购方案商品和Sku
- if (deletePurchaseSchemeIdList.Count > 0)
+ if (deletePartsSchemeIdList.Count > 0)
{
- fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
- fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
+ fsql.Delete().Where(p => deletePartsSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
+ fsql.Delete().Where(p => deletePartsSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
}
//新增
@@ -469,6 +494,10 @@ namespace BBWYB.Server.Business
insertPurchaseSchemeGroupIndex?.ExecuteAffrows();
updatePurchaseSchemeGroupIndex?.ExecuteAffrows();
});
+
+ //删除信息残缺的采购方案
+ if (deleteSchemeIdList.Count() > 0)
+ DeletePurchaseScheme(deleteSchemeIdList);
}
///
@@ -741,23 +770,61 @@ namespace BBWYB.Server.Business
public void DeletePurchaseScheme(long schemeId)
{
- IDelete? deletePsg = null;
- var purchaseScheme = fsql.Select(schemeId).ToOne();
- if (purchaseScheme == null)
- throw new BusinessException("采购方案不存在");
- if (purchaseScheme.SchemeGroupId != 0)
+ //IDelete? deletePsg = null;
+ //var purchaseScheme = fsql.Select(schemeId).ToOne();
+ //if (purchaseScheme == null)
+ // throw new BusinessException("采购方案不存在");
+ //if (purchaseScheme.SchemeGroupId != 0)
+ //{
+ // var sameGroupSchemeCount = fsql.Select().Where(ps => ps.SchemeGroupId == purchaseScheme.SchemeGroupId &&
+ // ps.Id != purchaseScheme.Id).Count();
+ // if (sameGroupSchemeCount == 0)
+ // deletePsg = fsql.Delete(purchaseScheme.SchemeGroupId);
+ //}
+ //fsql.Transaction(() =>
+ //{
+ // deletePsg?.ExecuteAffrows();
+ // fsql.Delete(schemeId).ExecuteAffrows();
+ // fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
+ // fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
+ //});
+ DeletePurchaseScheme(new List() { schemeId });
+ }
+
+ public void DeletePurchaseScheme(List schemeIdList)
+ {
+ IList deleteSchemeGroupIdList = new List();
+ var purchaseSchemeList = fsql.Select(schemeIdList).ToList();
+ if (purchaseSchemeList.Count() == 0)
+ return;
+ var schemeGroupIdList = purchaseSchemeList.Where(ps => ps.SchemeGroupId != 0).Select(ps => ps.SchemeGroupId).ToList();
+ var sameSchemeGroupCountGroups = fsql.Select().Where(ps => ps.SchemeGroupId != 0 &&
+ schemeGroupIdList.Contains(ps.SchemeGroupId) &&
+ !schemeIdList.Contains(ps.Id))
+ .GroupBy(ps => ps.SchemeGroupId)
+ .ToList(g => new
+ {
+ SchemeGroupId = g.Key,
+ SchemeCount = g.Count()
+ });
+
+ foreach (var purchaseScheme in purchaseSchemeList)
{
- var sameGroupSchemeCount = fsql.Select().Where(ps => ps.SchemeGroupId == purchaseScheme.SchemeGroupId &&
- ps.Id != purchaseScheme.Id).Count();
- if (sameGroupSchemeCount == 0)
- deletePsg = fsql.Delete(purchaseScheme.SchemeGroupId);
+ if (purchaseScheme.SchemeGroupId != 0)
+ {
+ var sameSchemeGroupCount = sameSchemeGroupCountGroups.FirstOrDefault(g => g.SchemeGroupId == purchaseScheme.SchemeGroupId);
+ if (sameSchemeGroupCount != null && sameSchemeGroupCount.SchemeCount == 0)
+ deleteSchemeGroupIdList.Add(purchaseScheme.SchemeGroupId);
+ }
}
+
fsql.Transaction(() =>
{
- deletePsg?.ExecuteAffrows();
- fsql.Delete(schemeId).ExecuteAffrows();
- fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
- fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
+ if (deleteSchemeGroupIdList.Count() > 0)
+ fsql.Delete(deleteSchemeGroupIdList).ExecuteAffrows();
+ fsql.Delete(schemeIdList).ExecuteAffrows();
+ fsql.Delete().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
+ fsql.Delete().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
});
}
@@ -978,6 +1045,26 @@ namespace BBWYB.Server.Business
if (schemeList.Count() == 0)
throw new BusinessException("采购方案不存在");
var scheme = schemeList[0];
+
+ if (scheme.PurchaseSchemeProductList.Count() == 1)
+ {
+ var lastProduct = scheme.PurchaseSchemeProductList.FirstOrDefault();
+ if (lastProduct.PurchaseSchemeProductSkuList.Count() == 1)
+ {
+ var lastSku = lastProduct.PurchaseSchemeProductSkuList.FirstOrDefault();
+ if (lastSku.PurchaseSkuId == request.PurchaseSkuId &&
+ lastSku.SkuId == request.SkuId)
+ {
+ DeletePurchaseScheme(request.SchemeId);
+ return 0M;
+ }
+ else
+ {
+ throw new BusinessException("未找到需要移除的采购sku");
+ }
+ }
+ }
+
var defaultCost = 0M;
long? pssId = null;
@@ -993,11 +1080,7 @@ namespace BBWYB.Server.Business
if (tartegtPurchaseProductSku != null)
{
if (schemeProduct.PurchaseSchemeProductSkuList.Count() == 1)
- {
- if (scheme.PurchaseSchemeProductList.Count() == 1)
- throw new BusinessException("最后一个采购sku不能被移除");
deletePsp = fsql.Delete(schemeProduct.Id);
- }
pssId = tartegtPurchaseProductSku.Id;
deletePss = fsql.Delete(pssId);
}
@@ -1005,7 +1088,6 @@ namespace BBWYB.Server.Business
defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Where(pss => !(pss.SkuId == request.SkuId && pss.PurchaseSkuId == request.PurchaseSkuId))
.Sum(pss => ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1));
}
-
if (pssId == null)
throw new BusinessException("未找到需要移除的采购sku");
updatePs = fsql.Update(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost);
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs
index 61fba78..a9670b2 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs
@@ -7,12 +7,12 @@ namespace BBWYB.Server.Model.Dto
///
/// 需要修改的采购方案
///
- public IList EditPurchaseSchemeList { get; set; }
+ public List EditPurchaseSchemeList { get; set; }
///
/// 需要新增的采购方案
///
- public IList AddPurchaseSchemeList { get; set; }
+ public List AddPurchaseSchemeList { get; set; }
}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
index 141aa17..cd9caec 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
@@ -38,6 +38,6 @@
public Enums.Platform? PurchasePlatform { get; set; }
- public IList PurchaseSchemeProductSkuList { get; set; }
+ public List PurchaseSchemeProductSkuList { get; set; }
}
}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
index 955a6d0..25595ba 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
@@ -23,6 +23,6 @@ namespace BBWYB.Server.Model.Dto
public string ProductId { get; set; }
public string SkuId { get; set; }
- public IList PurchaseSchemeProductList { get; set; }
+ public List PurchaseSchemeProductList { get; set; }
}
}
From b52f24a875f3ab4665c776f9b3b549da81edd7a5 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Thu, 31 Aug 2023 15:38:34 +0800
Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A7=E6=BA=90?=
=?UTF-8?q?=E7=AE=A1=E7=90=86web=E7=AB=AF=E5=9C=B0=E5=9D=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
BBWYB.Client/GlobalContext.cs | 2 +-
BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs
index 4f7f7a9..19f8137 100644
--- a/BBWYB.Client/GlobalContext.cs
+++ b/BBWYB.Client/GlobalContext.cs
@@ -22,7 +22,7 @@ namespace BBWYB.Client
{
public GlobalContext()
{
- BBWYBApiVersion = "10036";
+ BBWYBApiVersion = "10037";
}
private User user;
diff --git a/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs
index bd3e95e..d4b329c 100644
--- a/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs
+++ b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs
@@ -57,7 +57,7 @@ namespace BBWYB.Client.Views.WebB
}
#if DEBUG
- var url = "http://192.168.1.2/#/goods-source";
+ var url = "http://192.168.1.2:8080/#/goods-source";
var registerName = "webTestContext";
//var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html");
#else
From c97986fe5e44d9733d6528843ad441f7322176fc Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Thu, 31 Aug 2023 17:24:59 +0800
Subject: [PATCH 4/6] =?UTF-8?q?web=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
BBWYB.Client/App.xaml | 2 +-
BBWYB.Client/GlobalContext.cs | 3 +-
BBWYB.Client/ViewModels/ViewModelLocator.cs | 9 ++
BBWYB.Client/ViewModels/WebVM.cs | 96 +++++++++++++++++++++
BBWYB.Client/Views/Web.xaml | 25 ++++++
BBWYB.Client/Views/Web.xaml.cs | 83 ++++++++++++++++++
WebTest/MainWindow.xaml.cs | 96 +++++++--------------
7 files changed, 245 insertions(+), 69 deletions(-)
create mode 100644 BBWYB.Client/ViewModels/WebVM.cs
create mode 100644 BBWYB.Client/Views/Web.xaml
create mode 100644 BBWYB.Client/Views/Web.xaml.cs
diff --git a/BBWYB.Client/App.xaml b/BBWYB.Client/App.xaml
index 5939b16..2048417 100644
--- a/BBWYB.Client/App.xaml
+++ b/BBWYB.Client/App.xaml
@@ -4,7 +4,7 @@
xmlns:local="clr-namespace:BBWYB.Client"
xmlns:vm="clr-namespace:BBWYB.Client.ViewModels"
xmlns:ctr="clr-namespace:BBWYB.Client.Converters"
- StartupUri="/Views/MainWindow.xaml"
+ StartupUri="/Views/Web.xaml"
ShutdownMode="OnExplicitShutdown">
diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs
index 19f8137..1471516 100644
--- a/BBWYB.Client/GlobalContext.cs
+++ b/BBWYB.Client/GlobalContext.cs
@@ -1,7 +1,6 @@
using BBWYB.Client.APIServices;
using BBWYB.Client.Helpers;
using BBWYB.Client.Models;
-using BBWYB.Client.ViewModels;
using BBWYB.Client.Views.PackPurchaseTaska;
using BBWYB.Client.Views.WebB;
using CommunityToolkit.Mvvm.ComponentModel;
@@ -22,7 +21,7 @@ namespace BBWYB.Client
{
public GlobalContext()
{
- BBWYBApiVersion = "10037";
+ BBWYBApiVersion = "10038";
}
private User user;
diff --git a/BBWYB.Client/ViewModels/ViewModelLocator.cs b/BBWYB.Client/ViewModels/ViewModelLocator.cs
index fe4ff35..cbddf8a 100644
--- a/BBWYB.Client/ViewModels/ViewModelLocator.cs
+++ b/BBWYB.Client/ViewModels/ViewModelLocator.cs
@@ -118,5 +118,14 @@ namespace BBWYB.Client.ViewModels
return s.ServiceProvider.GetRequiredService();
}
}
+
+ public WebVM WebVM
+ {
+ get
+ {
+ using var s = sp.CreateScope();
+ return s.ServiceProvider.GetRequiredService();
+ }
+ }
}
}
diff --git a/BBWYB.Client/ViewModels/WebVM.cs b/BBWYB.Client/ViewModels/WebVM.cs
new file mode 100644
index 0000000..46cce31
--- /dev/null
+++ b/BBWYB.Client/ViewModels/WebVM.cs
@@ -0,0 +1,96 @@
+using BBWYB.Client.APIServices;
+using BBWYB.Client.Models;
+using BBWYB.Client.Views;
+using BBWYB.Common.Extensions;
+using BBWYB.Common.Models;
+using CommunityToolkit.Mvvm.Messaging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace BBWYB.Client.ViewModels
+{
+ public class WebVM : BaseVM, IDenpendency
+ {
+ private MdsApiService mdsApiService;
+ private MenuModel selectedMenuModel;
+ private bool isLoading;
+ ShopService shopService;
+ public GlobalContext GlobalContext { get; set; }
+ public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } }
+
+ public WebVM(GlobalContext globalContext,
+ MdsApiService mdsApiService,
+ ShopService shopService)
+ {
+ this.mdsApiService = mdsApiService;
+ this.GlobalContext = globalContext;
+ this.shopService = shopService;
+ Task.Factory.StartNew(Login);
+ }
+
+ private void Login()
+ {
+ IsLoading = true;
+ try
+ {
+ var mdsUserResponse = mdsApiService.GetUserInfo(GlobalContext.UserToken);
+ if (!mdsUserResponse.Success)
+ throw new Exception($"获取磨刀石用户信息失败 {mdsUserResponse.Msg}");
+
+
+ GlobalContext.User = mdsUserResponse.Data.Map();
+ GlobalContext.User.Token = GlobalContext.UserToken;
+ GlobalContext.User.SonDepartmentNames = string.Empty;
+ if (mdsUserResponse.Data.SonDepartmentList != null && mdsUserResponse.Data.SonDepartmentList.Count > 0)
+ GlobalContext.User.SonDepartmentNames = string.Join(',', mdsUserResponse.Data.SonDepartmentList.Select(sd => sd.DepartmentName));
+
+ var res = shopService.GetDepartmentList();
+ if (!res.Success)
+ throw new Exception(res.Msg);
+ var allDepartmentList = res.Data.Map>();
+
+
+ var shopList = new List();
+ foreach (var d in allDepartmentList)
+ shopList.AddRange(d.ShopList);
+ GlobalContext.User.ShopList = shopList;
+
+
+ IList departmentList = null;
+
+ var response = mdsApiService.GetShopDetailList();
+ if (!response.Success)
+ throw new Exception(response.Msg);
+ departmentList = response.Data?.Where(d => d.Name.Contains("供应链")).ToList();
+ if (departmentList.Count == 0)
+ throw new Exception("缺少有效的部门数据");
+
+ var shopIds = new List();
+ foreach (var d in departmentList)
+ {
+ if (d.ShopList != null && d.ShopList.Count > 0)
+ {
+ foreach (var s in d.ShopList)
+ shopIds.Add(s.ShopId.ToString());
+ }
+ }
+
+ GlobalContext.User.DepartmentList = departmentList;
+ WeakReferenceMessenger.Default.Send(new Message_WebB_LoginCompleted(null));
+ IsLoading = false;
+ }
+ catch (Exception ex)
+ {
+ IsLoading = false;
+ App.Current.Dispatcher.Invoke(() =>
+ {
+ MessageBox.Show(ex.Message, "登录失败");
+ });
+ Environment.Exit(Environment.ExitCode);
+ }
+ }
+ }
+}
diff --git a/BBWYB.Client/Views/Web.xaml b/BBWYB.Client/Views/Web.xaml
new file mode 100644
index 0000000..626056f
--- /dev/null
+++ b/BBWYB.Client/Views/Web.xaml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BBWYB.Client/Views/Web.xaml.cs b/BBWYB.Client/Views/Web.xaml.cs
new file mode 100644
index 0000000..67462c0
--- /dev/null
+++ b/BBWYB.Client/Views/Web.xaml.cs
@@ -0,0 +1,83 @@
+using CommunityToolkit.Mvvm.Messaging;
+using CommunityToolkit.Mvvm.Messaging.Messages;
+using Microsoft.Extensions.DependencyInjection;
+using SJ.Controls;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace BBWYB.Client.Views
+{
+ ///
+ /// Web.xaml 的交互逻辑
+ ///
+ public partial class Web : BWindow
+ {
+ private WebView2Manager w2m;
+ private bool isNavigated;
+ private GlobalContext globalContext;
+
+ public Web()
+ {
+ InitializeComponent();
+ this.Width = SystemParameters.WorkArea.Size.Width * 0.8;
+ this.Height = SystemParameters.WorkArea.Size.Height * 0.7;
+ var sp = (App.Current as App).ServiceProvider;
+ using (var s = sp.CreateScope())
+ {
+ w2m = s.ServiceProvider.GetRequiredService();
+ globalContext = s.ServiceProvider.GetRequiredService();
+ }
+
+ WeakReferenceMessenger.Default.Register(this, (o, x) =>
+ {
+ this.Dispatcher.BeginInvoke(initWebView);
+ });
+ }
+
+ private void Web_Loaded(object sender, System.Windows.RoutedEventArgs e)
+ {
+
+
+ }
+
+ private void initWebView()
+ {
+#if DEBUG
+ var url = "http://qtbbwy.qiyue666.com";//"http://192.168.1.2:8080";
+ var registerName = "webTestContext";
+ //var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html");
+#else
+ var url = "http://qtbbwy.qiyue666.com";
+ var registerName = "webContext";
+#endif
+ //var url = "http://qtbbwy.qiyue666.com";
+ w2m.CoreWebView2InitializationCompleted = (e) =>
+ {
+ w2m.wb2.CoreWebView2.AddHostObjectToScript(registerName, this.globalContext);
+ isNavigated = true;
+ w2m.wb2.CoreWebView2.Navigate(url);
+ };
+
+
+ w2m.Init("bbwyb_web");
+ w2m.wb2.SetValue(Grid.RowProperty, 1);
+ w2m.wb2.Margin = new Thickness(1, 0, 1, 0);
+ //grid.Children.Clear();
+ grid.Children.Add(w2m.wb2);
+
+ if (w2m.IsInitializationCompleted && !isNavigated)
+ {
+ w2m.wb2.CoreWebView2.Navigate(url);
+ //w2m.wb2.CoreWebView2.NavigateToString(content);
+ isNavigated = true;
+ }
+ }
+ }
+
+ public class Message_WebB_LoginCompleted : ValueChangedMessage