Browse Source

在线采购完善

qianyi
shanji 3 years ago
parent
commit
e3e1782c23
  1. 7
      BBWY.Client/Models/Product/PurchaseSchemeProductSku.cs
  2. 9
      BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
  3. 2
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  4. 137
      BBWY.Client/ViewModels/Purchase/1688PreviewPurchaseViewModel.cs
  5. 36
      BBWY.Client/Views/Purchase/1688Purchase.xaml
  6. 3
      BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  7. 2
      BBWY.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs

7
BBWY.Client/Models/Product/PurchaseSchemeProductSku.cs

@ -32,5 +32,12 @@
public string PurchaseSkuSpecId { get; set; } public string PurchaseSkuSpecId { get; set; }
public long SkuPurchaseSchemeId { get; set; } public long SkuPurchaseSchemeId { get; set; }
public long UserId { get; set; } public long UserId { get; set; }
public int ItemTotal { get => itemTotal; set { Set(ref itemTotal, value); } }
public decimal SkuAmount { get => skuAmount; set { Set(ref skuAmount, value); } }
private int itemTotal;
private decimal skuAmount;
} }
} }

9
BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs

@ -18,6 +18,8 @@ namespace BBWY.Client.ViewModels
public string SkuId { get; set; } public string SkuId { get; set; }
public string SkuName { get; set; } public string SkuName { get; set; }
public string OrderId { get; set; } public string OrderId { get; set; }
public int ItemTotal { get; set; }
public IList<PurchaseScheme> PurchaseSchemeList { get; set; } public IList<PurchaseScheme> PurchaseSchemeList { get; set; }
@ -48,11 +50,12 @@ namespace BBWY.Client.ViewModels
PurchaseSchemeList.Clear(); PurchaseSchemeList.Clear();
} }
public void SetData(string orderId, string skuId, string skuName) public void SetData(string orderId, string skuId, string skuName, int itemTotal)
{ {
this.OrderId = orderId; this.OrderId = orderId;
this.SkuId = skuId; this.SkuId = skuId;
this.SkuName = skuName; this.SkuName = skuName;
this.ItemTotal = itemTotal;
} }
public void LoadPurchaseScheme(string skuId) public void LoadPurchaseScheme(string skuId)
@ -96,8 +99,8 @@ namespace BBWY.Client.ViewModels
} }
public void PreviewPurchase(PurchaseScheme purchaseScheme) public void PreviewPurchase(PurchaseScheme purchaseScheme)
{ {
} }
} }
} }

2
BBWY.Client/ViewModels/Order/OrderListViewModel.cs

@ -257,7 +257,7 @@ namespace BBWY.Client.ViewModels
} }
else if (chooseDFType.DFType == DFType.线) else if (chooseDFType.DFType == DFType.线)
{ {
choosePurchaseSchemeViewModel.SetData(order.Id, order.ItemList[0].Id, order.ItemList[0].Title); choosePurchaseSchemeViewModel.SetData(order.Id, order.ItemList[0].Id, order.ItemList[0].Title, order.ItemList[0].ItemTotal);
var choosePurchaseScheme = new ChoosePurchaseScheme(); var choosePurchaseScheme = new ChoosePurchaseScheme();
choosePurchaseScheme.ShowDialog(); choosePurchaseScheme.ShowDialog();
} }

137
BBWY.Client/ViewModels/Purchase/1688PreviewPurchaseViewModel.cs

@ -1,10 +1,143 @@
namespace BBWY.Client.ViewModels using BBWY.Client.APIServices;
using BBWY.Client.Models;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace BBWY.Client.ViewModels
{ {
public class _1688PreviewPurchaseViewModel : BaseVM public class _1688PreviewPurchaseViewModel : BaseVM
{ {
public _1688PreviewPurchaseViewModel() public IList<PurchaseSchemeProductSku> PurchaseSchemeProductSkuList { get; set; }
public PurchaseScheme PurchaseScheme { get; set; }
public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } }
private string orderId;
private int skuItemCount;
private bool isLoading;
private OneBoundAPIService oneBoundAPIService;
public _1688PreviewPurchaseViewModel(OneBoundAPIService oneBoundAPIService)
{
this.oneBoundAPIService = oneBoundAPIService;
PurchaseSchemeProductSkuList = new ObservableCollection<PurchaseSchemeProductSku>();
}
public void SetData(string orderId, int skuItemCount, PurchaseScheme purchaseScheme)
{
this.orderId = orderId;
this.skuItemCount = skuItemCount;
this.PurchaseScheme = purchaseScheme;
}
protected override void Load()
{
IsLoading = true;
var waitList = new List<WaitHandle>();
foreach (var purchaseSchemeProduct in PurchaseScheme.PurchaseSchemeProductList)
{
var ewh = new ManualResetEvent(false);
waitList.Add(ewh);
Task.Factory.StartNew(() => LoadPurchaseProduct(purchaseSchemeProduct, ewh));
}
Task.Factory.StartNew(() =>
{
WaitHandle.WaitAll(waitList.ToArray());
IsLoading = false;
});
}
protected override void Unload()
{
PurchaseSchemeProductSkuList.Clear();
PurchaseScheme = null;
orderId = string.Empty;
skuItemCount = 0;
}
private void LoadPurchaseProduct(PurchaseSchemeProduct purchaseSchemeProduct, ManualResetEvent ewh)
{ {
var purchaseSchemeProductSkuList = LoadPurchaseProductCore(purchaseSchemeProduct.PurchaseProductId, out string errorMsg);
if (purchaseSchemeProductSkuList != null && purchaseSchemeProductSkuList.Count > 0)
{
App.Current.Dispatcher.BeginInvoke((Action)delegate
{
foreach (var purchaseSchemeProductSku in purchaseSchemeProductSkuList)
{
if (purchaseSchemeProduct.SelectedSkuIdList.Any(s => s == purchaseSchemeProductSku.PurchaseSkuId))
{
PurchaseSchemeProductSkuList.Add(purchaseSchemeProductSku);
purchaseSchemeProductSku.ItemTotal = skuItemCount;
}
}
});
}
ewh.Set();
ewh.Dispose();
} }
private IList<PurchaseSchemeProductSku> LoadPurchaseProductCore(string purchseProductId, out string errorMsg)
{
errorMsg = string.Empty;
//1688商品详情接口
var response = oneBoundAPIService.GetProductInfo("1688", purchseProductId);
if (!response.Success)
{
//记录日志
errorMsg = response.Msg;
return null;
}
var jobject = response.Data;
//purchaserId = jobject["item"]["seller_info"].Value<string>("user_num_id");
//purchaserName = jobject["item"]["seller_info"].Value<string>("title");
//purchaserLocation = jobject["item"].Value<string>("location");
//if (checkPurchaserFunc != null)
//{
// errorMsg = checkPurchaserFunc(purchaserId);
// if (!string.IsNullOrEmpty(errorMsg))
// return null;
//}
var skuJArray = (JArray)jobject["item"]["skus"]["sku"];
if (skuJArray.Count == 0)
{
errorMsg = $"商品{purchseProductId}缺少sku信息";
return null;
}
return skuJArray.Select(j => new PurchaseSchemeProductSku()
{
ProductId = PurchaseScheme.ProductId,
SkuId = PurchaseScheme.SkuId,
PurchaseProductId = purchseProductId,
Price = j.Value<decimal>("price"),
PurchaseSkuId = j.Value<string>("sku_id"),
PurchaseSkuSpecId = j.Value<string>("spec_id"),
Title = j.Value<string>("properties_name"),
Logo = GetSkuLogo(j, (JArray)jobject["item"]["prop_imgs"]["prop_img"])
}).ToList();
}
private string GetSkuLogo(JToken skuJToken, JArray prop_img)
{
if (!prop_img.HasValues)
return "pack://application:,,,/Resources/Images/defaultItem.png";
var properties = skuJToken.Value<string>("properties").Split(';', StringSplitOptions.RemoveEmptyEntries);
foreach (var p in properties)
{
var imgJToken = prop_img.FirstOrDefault(g => g.Value<string>("properties") == p);
if (imgJToken != null)
return imgJToken.Value<string>("url");
}
return "pack://application:,,,/Resources/Images/defaultItem.png";
}
} }
} }

36
BBWY.Client/Views/Purchase/1688Purchase.xaml

@ -11,7 +11,7 @@
MinButtonVisibility="Collapsed" MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed" MaxButtonVisibility="Collapsed"
DataContext="{Binding _1688PreviewPurchase,Source={StaticResource Locator}}"> DataContext="{Binding _1688PreviewPurchase,Source={StaticResource Locator}}">
<Grid Margin="-4,-1,4,1"> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="30"/> <RowDefinition Height="30"/>
<RowDefinition/> <RowDefinition/>
@ -24,6 +24,40 @@
<TextBlock Text="提交订单" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="提交订单" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border> </Border>
<DataGrid Grid.Row="1"
ItemsSource="{Binding PurchaseSchemeProductSkuList}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="货品信息" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}" Width="1*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_orerSku}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<!--{Binding Logo}-->
<c:BAsyncImage UrlSource="{Binding Logo}"
Width="80" DecodePixelWidth="80"
VerticalAlignment="Top" Margin="0,5,0,0"/>
<TextBlock Text="{Binding Title}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="单价" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}" Width="80" Binding="{Binding Price}"/>
<DataGridTemplateColumn Header="数量" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding ItemTotal,Converter={StaticResource inputNumberConverter},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="金额" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}" Width="80"
Binding="{Binding SkuAmount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
<Grid Grid.Row="2" Margin="5,0"> <Grid Grid.Row="2" Margin="5,0">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="0.8*"/> <ColumnDefinition Width="0.8*"/>

3
BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -167,8 +167,7 @@ namespace BBWY.Server.Business
public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
{ {
var purchaseSchemeIdList = fsql.Select<PurchaseScheme>().Where(ps => ps.ShopId == deletePurchaseSchemeRequest.ShopId && var purchaseSchemeIdList = fsql.Select<PurchaseScheme>().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId &&
ps.ProductId == deletePurchaseSchemeRequest.ProductId &&
ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id); ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id);
fsql.Transaction(() => fsql.Transaction(() =>

2
BBWY.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs

@ -2,8 +2,6 @@
{ {
public class DeletePurchaseSchemeRequest public class DeletePurchaseSchemeRequest
{ {
public long ShopId { get; set; }
public string ProductId { get; set; } public string ProductId { get; set; }
public string PurchaserId { get; set; } public string PurchaserId { get; set; }

Loading…
Cancel
Save