238 lines
7.4 KiB
C#
238 lines
7.4 KiB
C#
using _29WxOrderWpf.BaseWindows;
|
|
using _29WxOrderWpf.Commands;
|
|
using AllBase;
|
|
using AllBase.Helper;
|
|
using AllBase.Model.DBModel;
|
|
using AllBase.Model.MvvmBaseClasses;
|
|
using AllBase.Model.Result;
|
|
using NaiBa.Util.Extension;
|
|
using Newtonsoft.Json.Linq;
|
|
using NPOI.HSSF.Record;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Work;
|
|
using Work.BaseForms;
|
|
using Work.SearchSame;
|
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
|
|
|
|
namespace _29WxOrderWpf.ViewModels;
|
|
|
|
public class BuyMapSkuViewModel : PropertyNotifyObject
|
|
{
|
|
public static BuyMapSkuViewModel BuyMapSkuInstance { get; set; }
|
|
/// <summary>
|
|
/// 请求关闭窗口
|
|
/// </summary>
|
|
public event Action RequestClose;
|
|
private volatile bool _isWindowLoaded = false;
|
|
public oms_wei_order_item_info OrderItem
|
|
{
|
|
get { return this.GetValue(x => x.OrderItem); }
|
|
set { this.SetValue(x => x.OrderItem, value); }
|
|
}
|
|
public ObservableCollection<WXBuyMapSkusInfo> BuyMapSkus
|
|
{
|
|
get { return this.GetValue(x => x.BuyMapSkus); }
|
|
set { this.SetValue(x => x.BuyMapSkus, value); }
|
|
}
|
|
public ObservableCollection<frontSkuInfo3> FrontSkuInfos
|
|
{
|
|
get { return this.GetValue(x => x.FrontSkuInfos); }
|
|
set { this.SetValue(x => x.FrontSkuInfos, value); }
|
|
}
|
|
public string ShopGoodsName
|
|
{
|
|
get { return this.GetValue(x => x.ShopGoodsName); }
|
|
set { this.SetValue(x => x.ShopGoodsName, value); }
|
|
}
|
|
public string ShopSkuName
|
|
{
|
|
get { return this.GetValue(x => x.ShopSkuName); }
|
|
set { this.SetValue(x => x.ShopSkuName, value); }
|
|
}
|
|
public string ShopSkuPrice
|
|
{
|
|
get { return this.GetValue(x => x.ShopSkuPrice); }
|
|
set { this.SetValue(x => x.ShopSkuPrice, value); }
|
|
}
|
|
//pddFrontGoods3Lite
|
|
|
|
public BuyMapSkuViewModel(oms_wei_order_item_info orderItem)
|
|
{
|
|
if (BuyMapSkuInstance != null)
|
|
BuyMapSkuInstance.RequestClose.Invoke();
|
|
|
|
BuyMapSkuInstance = this;
|
|
|
|
OrderItem = orderItem;
|
|
if (orderItem != null)
|
|
{
|
|
this.ShopGoodsName = orderItem.title;
|
|
this.ShopSkuName = orderItem.sku_attr_str;
|
|
this.ShopSkuPrice = (orderItem.real_price * 0.01m).ParseToString();
|
|
}
|
|
if (orderItem?.BuyMapSkus != null && orderItem?.BuyMapSkus.Count > 0)
|
|
{
|
|
BuyMapSkus = new ObservableCollection<WXBuyMapSkusInfo>(orderItem.BuyMapSkus);
|
|
SetCurrentFrontSkuInfo3(BuyMapSkus?.FirstOrDefault());
|
|
}
|
|
}
|
|
|
|
public void SetCurrentFrontSkuInfo3(WXBuyMapSkusInfo skuInfo)
|
|
{
|
|
foreach (var info in BuyMapSkus)
|
|
{
|
|
info.IsChecked = false;
|
|
}
|
|
skuInfo.IsChecked = true;
|
|
FrontSkuInfos = new ObservableCollection<frontSkuInfo3>(skuInfo?.pdd_front_goods3_Lite.skus);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 窗口加载完成时调用
|
|
/// </summary>
|
|
public void Start()
|
|
{
|
|
_isWindowLoaded = true;
|
|
|
|
Task.Run(() =>
|
|
{
|
|
// todo get skus
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 窗口关闭时调用,停止后台任务
|
|
/// </summary>
|
|
public void Stop()
|
|
{
|
|
_isWindowLoaded = false;
|
|
}
|
|
|
|
public async Task SetOrderMapSku(frontSkuInfo3 upSku)
|
|
{
|
|
var mapSkuProd = OrderItem.BuyMapSkus.FirstOrDefault(s => s.map_goods_id == upSku.goodsId.ParseToString());
|
|
if (mapSkuProd == null)
|
|
return;
|
|
|
|
var mapSku = mapSkuProd.pdd_front_goods3_Lite.skus.FirstOrDefault(s => string.Join(",", s.specs.Select(sp => sp.spec_value)) == upSku.SpecNameStr);
|
|
if (mapSku == null)
|
|
return;
|
|
|
|
var mapGoodsName = mapSkuProd.map_goods_name;
|
|
var mapSkuName = string.Join(",", mapSku.specs.Select(sp => sp.spec_value));
|
|
var mapGoodsId = mapSkuProd.map_goods_id;
|
|
var mapSkuId = mapSku.skuId.ParseToString();
|
|
var sendProvince = mapSkuProd.map_send_address;
|
|
|
|
string cmbTransitWarehouse = "";
|
|
string txtBuyTransitWarehouse = "";
|
|
var transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == mapSkuProd.transit_warehouse_id);
|
|
if (transitWarehouse != null)
|
|
{
|
|
cmbTransitWarehouse = transitWarehouse?.TransName + " " + transitWarehouse?.TransDetailAddress;
|
|
txtBuyTransitWarehouse = transitWarehouse?.TransDetailAddress;
|
|
}
|
|
|
|
var spuCode = OrderItem.out_product_id.IsNullOrEmpty() ? OrderItem.product_id : OrderItem.out_product_id;
|
|
var skuCode = OrderItem.out_sku_id.IsNullOrEmpty() ? OrderItem.sku_attr_str : OrderItem.out_sku_id;
|
|
if (spuCode.IsNullOrEmpty())
|
|
spuCode = OrderItem.product_id;
|
|
if (await SaveSkuMap(spuCode, skuCode, mapGoodsName, mapSkuName, mapGoodsId, mapSkuId, transitWarehouse, sendProvince))
|
|
RequestClose?.Invoke();
|
|
}
|
|
|
|
public async Task<bool> SaveSkuMap(string spuCode, string skuCode, string mapGoodsName,
|
|
string mapSkuName, string mapGoodsId, string mapSkuId, TransitWarehouseParam transitWarehouse, string sendProvince)
|
|
{
|
|
if (transitWarehouse == null)
|
|
{
|
|
BaseMsgForm.ShowError("仓库不能为空");
|
|
return false;
|
|
}
|
|
|
|
string url;
|
|
string upSpuCode = spuCode;
|
|
string upSkuCode = skuCode;
|
|
var data = UserLogin.GetSignaturex()
|
|
+ "&spu_code=" + GetHtml.UrlEncodeUtf8(upSpuCode)
|
|
+ "&sku_code=" + GetHtml.UrlEncodeUtf8(upSkuCode)
|
|
+ "&main_user_name=" + BaseClass.MainUserName
|
|
+ "&map_goods_name=" + mapGoodsName
|
|
+ "&map_spec_name=" + mapSkuName
|
|
+ "&map_goods_id=" + mapGoodsId
|
|
+ "&map_sku_id=" + mapSkuId
|
|
+ "&map_send_address=" + sendProvince
|
|
+ "&transit_warehouse_id=" + transitWarehouse?.TransId;
|
|
|
|
url = BaseClass.Build29WxObjString("order/wx_add_mdy_buy_prod_map");
|
|
var result = await GetHtml.PostUtf8Async(url, data);
|
|
if (!result.Contains("\"code\":200"))
|
|
result = await GetHtml.PostUtf8Async(url, data);
|
|
if (!result.Contains("\"code\":200"))
|
|
{
|
|
BaseMsgForm.ShowError("保存失败" + BaseRegex.GetStringJson(ref result, "msg") + ",请稍后重试");
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
var urlMap = BaseClass.Build29WxObjString("order/wx_get_buy_prod_map");
|
|
var dataMap = UserLogin.GetSignaturex()
|
|
+ "&spu_codes=" + upSpuCode;
|
|
//dataMap += "&sku_codes=" + upSkuCode;
|
|
dataMap += "&main_user_name=" + BaseClass.MainUserName;
|
|
var resultMap = await GetHtml.PostUtf8Async(urlMap, dataMap);
|
|
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
|
|
resultMap = await GetHtml.PostUtf8Async(urlMap, dataMap);
|
|
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
|
|
{
|
|
}
|
|
else
|
|
{
|
|
List<WXBuyMapInfo> buyMapList = new List<WXBuyMapInfo>();
|
|
try
|
|
{
|
|
buyMapList = JsonHelper.DeserializeJsonToList<WXBuyMapInfo>(JObject.Parse(resultMap)["data"].ParseToString());
|
|
|
|
GlobalConfig.BuyMapList.RemoveAll(b => buyMapList.Any(map => b.spu_code == map.spu_code && b.sku_code == map.sku_code));
|
|
GlobalConfig.BuyMapList.AddRange(buyMapList);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
var map = buyMapList.FirstOrDefault(b => b.spu_code == upSpuCode && b.sku_code == upSkuCode);
|
|
if (map != null)
|
|
{
|
|
foreach (var order in GlobalConfig.lstOrder)
|
|
{
|
|
if (order.IsWaitBuy)
|
|
{
|
|
foreach (var item in order.orderItems)
|
|
{
|
|
if ((item.out_product_id == map.spu_code && item.out_sku_id == map.sku_code) ||
|
|
(item.out_product_id == map.spu_code && item.sku_attr_str == map.sku_code) ||
|
|
(item.product_id == map.spu_code && item.out_sku_id == map.sku_code) ||
|
|
(item.product_id == map.spu_code && item.sku_attr_str == map.sku_code))
|
|
{
|
|
item.BuyMap = map;
|
|
|
|
item.SetOrderItemTextProperty();
|
|
// todo 此处刷新一条可能不够
|
|
MainWindow.Instance.orderListCtrl.FilterOneOrder(order, false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
BaseMsgWindow.ShowInfo("保存成功!");
|
|
return true;
|
|
}
|
|
}
|
|
}
|