Browse Source

财务审计

qianyi
shanji 3 years ago
parent
commit
17ebf85f85
  1. 20
      BBWY.Client/APIServices/PurchaseOrderService.cs
  2. 3
      BBWY.Client/APIServices/ShopService.cs
  3. 17
      BBWY.Client/Models/APIModel/Response/PurchaseOrder/AuditPurchaseOrderResponse.cs
  4. 3
      BBWY.Client/Models/FinancialTerminal/ProcurementAudit/AuditPayBill.cs
  5. 7
      BBWY.Client/Models/Shop/Department.cs
  6. 28
      BBWY.Client/Resources/Themes/Generic.xaml
  7. 168
      BBWY.Client/ViewModels/FinancialTerminal/ProcurementAuditViewModel.cs
  8. 43
      BBWY.Client/Views/FinancialTerminal/ProcurementAudit.xaml
  9. 11
      BBWY.Server.API/Controllers/PurchaseOrderController.cs
  10. 2
      BBWY.Server.Business/PlatformSDK/JDBusiness.cs
  11. 24
      BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  12. 14
      BBWY.Server.Model/Dto/Request/Order/AuditOrderRequest.cs
  13. 19
      BBWY.Server.Model/Dto/Response/PurchaseOrder/AuditPurchaseOrderResponse.cs
  14. 50
      BBWY.Test/Program.cs

20
BBWY.Client/APIServices/PurchaseOrderService.cs

@ -1,6 +1,7 @@
using BBWY.Client.Models;
using BBWY.Common.Http;
using BBWY.Common.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
@ -135,5 +136,24 @@ namespace BBWY.Client.APIServices
platformCommissionRatio
}, null, HttpMethod.Post);
}
/// <summary>
/// 查询审核采购单
/// </summary>
/// <param name="shopIdList"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public ApiResponse<IList<AuditPurchaseOrderResponse>> GetAuditPurchaseOrderList(IList<long> shopIdList, DateTime startDate, DateTime endDate)
{
return SendRequest<IList<AuditPurchaseOrderResponse>>(globalContext.BBYWApiHost, "Api/PurchaseOrder/GetAuditPurchaseOrderList", new
{
startDate,
endDate,
shopIdList
}, null, HttpMethod.Post);
}
}
}

3
BBWY.Client/APIServices/ShopService.cs

@ -46,5 +46,8 @@ namespace BBWY.Client.APIServices
{
return SendRequest<IList<Department>>(globalContext.BBYWApiHost, "api/vender/GetDeparmentList", null, null, HttpMethod.Get);
}
}
}

17
BBWY.Client/Models/APIModel/Response/PurchaseOrder/AuditPurchaseOrderResponse.cs

@ -0,0 +1,17 @@
using System;
namespace BBWY.Client.Models
{
public class AuditPurchaseOrderResponse
{
public string PurchaseOrderId { get; set; }
public long ShopId { get; set; }
public decimal PurchaseAmount { get; set; }
public string OrderId { get; set; }
public DateTime? PurchaseTime { get; set; }
}
}

3
BBWY.Client/Models/FinancialTerminal/ProcurementAudit/AuditPayBill.cs

@ -44,9 +44,12 @@ namespace BBWY.Client.Models
/// </summary>
public decimal ExpenditureAmount { get; set; }
public long BelongShopId { get; set; }
/// <summary>
/// 归属店铺
/// </summary>
///
public string BelongShop { get; set; }
public string BelongFileName { get; set; }

7
BBWY.Client/Models/Shop/Department.cs

@ -23,10 +23,15 @@ namespace BBWY.Client.Models
/// <summary>
/// ShopId
/// </summary>
public string Id { get; set; }
public long Id { get; set; }
public string Name { get; set; }
public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } }
public override string ToString()
{
return Name;
}
}
}

28
BBWY.Client/Resources/Themes/Generic.xaml

@ -335,6 +335,7 @@
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="BorderThickness" Value="0,0,1,0"/>
<Setter Property="BorderBrush" Value="{StaticResource Border.Brush}"/>
<Setter Property="Background" Value="{StaticResource Border.Background}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
@ -356,4 +357,31 @@
</Setter.Value>
</Setter>
</Style>
<Style TargetType="DataGridColumnHeader">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="BorderThickness" Value="0,0,1,0"/>
<Setter Property="BorderBrush" Value="{StaticResource Border.Brush}"/>
<Setter Property="Background" Value="{StaticResource Border.Background}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<Border x:Name="BackgroundBorder"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}"
Width="{TemplateBinding Width}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5,0,0,0"/>
<Path x:Name="SortArrow" Visibility="Collapsed" Data="M0,0 L1,0 0.5,1 z" Stretch="Fill" Grid.Column="2" Width="8" Height="6" Fill="White" Margin="0,0,50,0"
VerticalAlignment="Center" RenderTransformOrigin="1,1" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

168
BBWY.Client/ViewModels/FinancialTerminal/ProcurementAuditViewModel.cs

@ -1,4 +1,5 @@
using BBWY.Client.APIServices;
using BBWY.Client.Extensions;
using BBWY.Client.Models;
using BBWY.Common.Models;
using GalaSoft.MvvmLight.Command;
@ -27,9 +28,24 @@ namespace BBWY.Client.ViewModels
//private bool isShowShopOrderPanel;
private bool onlyException;
private ShopService shopService;
private PurchaseOrderService purchaseOrderService;
private Department selectedDepartment;
private DateTime startDate;
private DateTime endDate;
public Department SelectedDepartment
{
get => selectedDepartment; set
{
if (Set(ref selectedDepartment, value))
{
foreach (var s in value.ShopList)
s.IsSelected = false;
}
}
}
public Department SelectedDepartment { get => selectedDepartment; set { Set(ref selectedDepartment, value); } }
public DateTime StartDate { get => startDate; set { Set(ref startDate, value); } }
public DateTime EndDate { get => endDate; set { Set(ref endDate, value); } }
public IList<AuditFile> AuditFileList { get; set; }
@ -122,13 +138,14 @@ namespace BBWY.Client.ViewModels
public ICommand ImportJDShopOrderCommand { get; set; }
public ProcurementAuditViewModel(ShopService shopService)
public ProcurementAuditViewModel(ShopService shopService, PurchaseOrderService purchaseOrderService)
{
AuditFileList = new ObservableCollection<AuditFile>();
AuditCommand = new RelayCommand(Audit);
ClearAuditCommand = new RelayCommand(ClearAudit);
ImportAliPayBillCommand = new RelayCommand(ImportAliPayBill);
this.shopService = shopService;
this.purchaseOrderService = purchaseOrderService;
DepartmentList = new ObservableCollection<Department>();
AuditFileList = new ObservableCollection<AuditFile>();
@ -143,6 +160,8 @@ namespace BBWY.Client.ViewModels
//AuditFileList.Add(new AuditFile() { FileName = "1688采购单20220527.csv", AuditFileType = AuditFileType.采购单 });
//AuditFileList.Add(new AuditFile() { FileName = "支付宝账单20220527.csv", AuditFileType = AuditFileType.销售订单 });
LoadDepartment();
StartDate = DateTime.Now.Date;
EndDate = DateTime.Now.Date;
}
private void LoadDepartment()
@ -160,6 +179,7 @@ namespace BBWY.Client.ViewModels
{
foreach (var d in response.Data)
DepartmentList.Add(d);
SelectedDepartment = DepartmentList[0];
});
});
}
@ -168,9 +188,7 @@ namespace BBWY.Client.ViewModels
{
if (IsLoading)
return;
if (AuditPayBillList.Count() == 0)
//AuditPurchaseOrderList.Count() == 0 ||
//AuditShopOrderList.Count() == 0)
if (AuditPayBillList.Count() == 0 || !SelectedDepartment.ShopList.Any(s => s.IsSelected))
{
MessageBox.Show("审核数据不全", "提示");
return;
@ -178,13 +196,15 @@ namespace BBWY.Client.ViewModels
var waitList = new List<EventWaitHandle>()
{
new ManualResetEvent(false),
new ManualResetEvent(false)
};
IsLoading = true;
var shopList = SelectedDepartment.ShopList.Where(s => s.IsSelected).ToList();
var sDate = StartDate;
var eDate = EndDate;
Task.Factory.StartNew(() =>
{
AuditByPayBill(waitList[0]);
AuditByPayBill(waitList[0], shopList, sDate, eDate);
//AuditByPurchaseOrder(waitList[1]);
}).ContinueWith(t =>
{
@ -200,57 +220,31 @@ namespace BBWY.Client.ViewModels
}
private void AuditByPayBill(EventWaitHandle ewh)
private void AuditByPayBill(EventWaitHandle ewh, IList<SimpleShop> shopList, DateTime startDate, DateTime endDate)
{
try
{
var auditPurchaseOrderResponse = purchaseOrderService.GetAuditPurchaseOrderList(shopList.Select(s => s.Id).ToList(), startDate, endDate);
if (!auditPurchaseOrderResponse.Success)
throw new Exception($"获取采购单失败,{auditPurchaseOrderResponse.Msg}");
foreach (var payBill in AuditPayBillList)
{
//#region 匹配采购单
//var relationPurchaseOrder = AuditPurchaseOrderList.FirstOrDefault(p => p.PurchaseOrderId == payBill.MerchantOrderNo);
//if (relationPurchaseOrder == null)
//{
// //未通过商户订单号找到采购单,则通过账单金额和日期匹配
// relationPurchaseOrder = AuditPurchaseOrderList.FirstOrDefault(p => p.PayAmount == payBill.ExpenditureAmount &&
// p.PayTime != null && payBill.PayTime != null &&
// Math.Abs((payBill.PayTime.Value - p.PayTime.Value).TotalSeconds) <= 60);
//}
//if (relationPurchaseOrder == null)
//{
// payBill.ErrorMessage = "未匹配采购单";
// continue;
//}
//payBill.RelationPurchaseOrderId = relationPurchaseOrder.PurchaseOrderId;
//#endregion
//#region 匹配销售订单
//var relationShopOrder = AuditShopOrderList.FirstOrDefault(o => (!string.IsNullOrEmpty(o.VenderRemark) && o.VenderRemark.Contains(relationPurchaseOrder.PurchaseOrderId)) ||
// (o.Phone == relationPurchaseOrder.Phone &&
// o.ContactName == relationPurchaseOrder.ContactName &&
// o.PayTime != null && relationPurchaseOrder.PayTime != null &&
// (relationPurchaseOrder.PayTime.Value - o.PayTime.Value).TotalDays <= 2));
//if (relationShopOrder == null)
//{
// payBill.ErrorMessage = "未匹配销售订单";
// continue;
//}
//payBill.RelationShopOrderId = relationShopOrder.OrderId;
//#endregion
}
//var relationShoporderIds = AuditPayBillList.Where(p => !string.IsNullOrEmpty(p.RelationShopOrderId)).Select(p => p.RelationShopOrderId).ToList();
//var belongResponse = shopService.GetOrderBelongShop(relationShoporderIds);
//if (!belongResponse.Success || belongResponse.Data.Count() == 0)
// return;
#region 匹配采购单
var relationPurchaseOrder = auditPurchaseOrderResponse.Data.FirstOrDefault(p => p.PurchaseOrderId == payBill.MerchantOrderNo);
//foreach (var payBill in AuditPayBillList)
//{
// if (string.IsNullOrEmpty(payBill.RelationShopOrderId))
// continue;
// var belongShop = belongResponse.Data.FirstOrDefault(x => x.OrderIdList.Contains(payBill.RelationShopOrderId));
// if (belongShop != null)
// payBill.BelongShop = belongShop.ShopName;
//}
if (relationPurchaseOrder == null)
{
payBill.ErrorMessage = "未匹配采购单";
continue;
}
payBill.RelationPurchaseOrderId = relationPurchaseOrder.PurchaseOrderId;
payBill.RelationShopOrderId = relationPurchaseOrder.OrderId;
payBill.BelongShopId = relationPurchaseOrder.ShopId;
payBill.BelongShop = shopList.FirstOrDefault(s => s.Id == relationPurchaseOrder.ShopId)?.Name;
#endregion
}
}
catch (Exception ex)
{
@ -392,8 +386,8 @@ namespace BBWY.Client.ViewModels
#---------------------------------------------------------------------------------
+ -
*/
//for (var i = 0; i < 5; i++)
// importResult.DataTable.RemoveAt(0);
for (var i = 0; i < 5; i++)
importResult.Lines.RemoveAt(0);
//忽略后4行
/*
@ -402,44 +396,44 @@ namespace BBWY.Client.ViewModels
#8543889.26
#[20220501 10:13:45]
*/
//for (var i = 0; i < 4; i++)
//{
// importResult.Lines.RemoveAt(importResult.Lines.Count() - 1);
//}
for (var i = 0; i < 4; i++)
{
importResult.Lines.RemoveAt(importResult.Lines.Count() - 1);
}
var payBillNo = "";
try
{
//foreach (var line in importResult.Lines)
//{
// var array = line.CSVstrToArry();
// var sourceMerchantOrderNo = array[2].FormatString();
// if (!string.IsNullOrEmpty(sourceMerchantOrderNo) && sourceMerchantOrderNo.StartsWith("XP"))
// continue; //暂时不支持此类商户单号
foreach (var line in importResult.Lines)
{
var array = line.CSVstrToArry();
var sourceMerchantOrderNo = array[2].FormatString();
if (!string.IsNullOrEmpty(sourceMerchantOrderNo) && sourceMerchantOrderNo.StartsWith("XP"))
continue; //暂时不支持此类商户单号
var expenditureAmount = decimal.Parse(array[7].FormatString());
if (expenditureAmount == 0) //支出为0的账单不参与审计
continue;
payBillNo = array[0].FormatString();
if (AuditPayBillList.Any(p => p.PayBillNo == payBillNo))
continue;
var payBill = new AuditPayBill()
{
BelongFileName = importResult.FileName,
PayBillNo = payBillNo,
PayBillType = PayBillType.AliPay,
SourceMerchantOrderNo = sourceMerchantOrderNo,
ProductName = array[3].FormatString(),
PayTime = DateTime.Parse(array[4].FormatString()),
OppositeAccount = array[5].FormatString(),
ExpenditureAmount = Math.Abs(expenditureAmount)
};
payBill.MerchantOrderNo = payBill.SourceMerchantOrderNo;
if (payBill.SourceMerchantOrderNo.StartsWith("T50060NP"))
payBill.MerchantOrderNo = payBill.SourceMerchantOrderNo.Substring(8);
// var expenditureAmount = decimal.Parse(array[7].FormatString());
// if (expenditureAmount == 0) //支出为0的账单不参与审计
// continue;
// payBillNo = array[0].FormatString();
// if (AuditPayBillList.Any(p => p.PayBillNo == payBillNo))
// continue;
// var payBill = new AuditPayBill()
// {
// BelongFileName = importResult.FileName,
// PayBillNo = payBillNo,
// PayBillType = PayBillType.AliPay,
// SourceMerchantOrderNo = sourceMerchantOrderNo,
// ProductName = array[3].FormatString(),
// PayTime = DateTime.Parse(array[4].FormatString()),
// OppositeAccount = array[5].FormatString(),
// ExpenditureAmount = Math.Abs(expenditureAmount)
// };
// payBill.MerchantOrderNo = payBill.SourceMerchantOrderNo;
// if (payBill.SourceMerchantOrderNo.StartsWith("T50060NP"))
// payBill.MerchantOrderNo = payBill.SourceMerchantOrderNo.Substring(8);
// AuditPayBillList.Add(payBill);
//}
AuditPayBillList.Add(payBill);
}
}
catch (Exception ex)
{

43
BBWY.Client/Views/FinancialTerminal/ProcurementAudit.xaml

@ -10,14 +10,6 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="ProcurementAudit"
DataContext="{Binding ProcurementAudit,Source={StaticResource Locator}}">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
<Grid>
<c:RoundWaitProgress Play="{Binding IsLoading}" Panel.ZIndex="999"/>
<Grid Margin="5,0">
@ -32,13 +24,37 @@
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="{StaticResource Border.Background}" Padding="5,0">
<Border.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Border.Resources>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<ComboBox Width="100" ItemsSource="{Binding DepartmentList}"
<ComboBox Width="Auto" ItemsSource="{Binding DepartmentList}"
DisplayMemberPath="Name"
SelectedItem="{Binding SelectedDepartment,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<ComboBox Width="100" Margin="5,0,0,0"/>
<DatePicker Width="100" IsEnabled="false" Height="30" Margin="5,0,0,0"/>
<DatePicker Width="100" IsEnabled="false" Height="30" Margin="5,0,0,0"/>
<!--<ComboBox Width="100" Margin="5,0,0,0"/>-->
<hc:CheckComboBox ItemsSource="{Binding SelectedDepartment.ShopList}"
ShowClearButton="True"
MinWidth="150">
<hc:CheckComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="5,2.5">
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>
</DataTemplate>
</hc:CheckComboBox.ItemTemplate>
<hc:CheckComboBox.ItemContainerStyle>
<Style TargetType="{x:Type hc:CheckComboBoxItem}" BasedOn="{StaticResource NoBgListBoxItemStyle}">
<Setter Property="IsSelected" Value="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</Style>
</hc:CheckComboBox.ItemContainerStyle>
</hc:CheckComboBox>
<DatePicker Width="100" Height="30" Margin="5,0,0,0" SelectedDate="{Binding StartDate,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<DatePicker Width="100" Height="30" Margin="5,0,0,0" SelectedDate="{Binding EndDate,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<c:BButton Content="执行" Margin="5,0,0,0" Padding="10,0" Command="{Binding AuditCommand}"/>
<c:BButton Content="清空" Margin="5,0,0,0" Padding="10,0" Command="{Binding ClearAuditCommand}"/>
</StackPanel>
@ -132,7 +148,8 @@
FocusVisualStyle="{x:Null}"/>
<DataGrid ItemsSource="{Binding ShowAuditPayBillList}"
Grid.Row="7"
Visibility="{Binding IsShowPayBillPanel,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}">
Visibility="{Binding IsShowPayBillPanel,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}"
>
<DataGrid.Columns>
<DataGridTextColumn Header="账单流水号" Width="145" Binding="{Binding PayBillNo}" ElementStyle="{StaticResource verticalCenterTextBlock}"/>
<DataGridTextColumn Header="账单平台" Width="60" Binding="{Binding PayBillType}" ElementStyle="{StaticResource middleTextBlock}"/>

11
BBWY.Server.API/Controllers/PurchaseOrderController.cs

@ -73,6 +73,17 @@ namespace BBWY.Server.API.Controllers
purchaseOrderBusiness.NewFastCreateOrder(createOnlinePurchaseOrderRequest);
}
/// <summary>
/// 查询审核采购单
/// </summary>
/// <param name="auditOrderRequest"></param>
/// <returns></returns>
[HttpPost]
public IList<AuditPurchaseOrderResponse> GetAuditPurchaseOrderList([FromBody]AuditOrderRequest auditOrderRequest)
{
return purchaseOrderBusiness.GetAuditPurchaseOrderList(auditOrderRequest);
}
/// <summary>
/// 1688回调
/// </summary>

2
BBWY.Server.Business/PlatformSDK/JDBusiness.cs

@ -402,6 +402,8 @@ namespace BBWY.Server.Business
response.Json = JObject.Parse(response.Body);
if (platformRequest.SaveResponseLog)
logger.Info(response.Body);
var jarray = (JArray)(response.Json["jingdong_fce_alpha_getVenderCarrier_responce"]["StandardGenericResponse"]["result"]["carrierList"]);
return jarray.Select(j => new LogisticsResponse()
{

24
BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -401,6 +401,30 @@ namespace BBWY.Server.Business
});
}
/// <summary>
/// 查询审核采购单
/// <para>暂时从订单查询采购单,之后改为直接查询采购单</para>
/// </summary>
/// <param name="auditOrderRequest"></param>
/// <returns></returns>
public IList<AuditPurchaseOrderResponse> GetAuditPurchaseOrderList(AuditOrderRequest auditOrderRequest)
{
auditOrderRequest.EndDate = auditOrderRequest.EndDate.Date.AddDays(1).AddSeconds(-1);
return fsql.Select<Order, OrderDropShipping>().InnerJoin((o, ods) => o.Id == ods.OrderId)
.Where((o, ods) => o.StartTime >= auditOrderRequest.StartDate &&
o.StartTime <= auditOrderRequest.EndDate &&
auditOrderRequest.ShopIdList.Contains(o.ShopId))
.ToList((o, ods) => new AuditPurchaseOrderResponse()
{
OrderId = o.Id,
PurchaseAmount = ods.PurchaseAmount,
PurchaseOrderId = ods.PurchaseOrderId,
ShopId = o.ShopId,
PurchaseTime = ods.CreateTime
});
}
#region CallBack
#region 1688CallBack

14
BBWY.Server.Model/Dto/Request/Order/AuditOrderRequest.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{
public class AuditOrderRequest
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public IList<long> ShopIdList { get; set; }
}
}

19
BBWY.Server.Model/Dto/Response/PurchaseOrder/AuditPurchaseOrderResponse.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.Server.Model.Dto
{
public class AuditPurchaseOrderResponse
{
public string PurchaseOrderId { get; set; }
public long ShopId { get; set; }
public decimal PurchaseAmount { get; set; }
public string OrderId { get; set; }
public DateTime? PurchaseTime { get; set; }
}
}

50
BBWY.Test/Program.cs

@ -15,47 +15,21 @@ namespace BBWY.Test
{
internal class Program
{
static void Main(string[] args)
private static IJdClient GetJdClient(string appKey, string appSecret)
{
string searchFields = "orderId,venderId,orderType,payType,orderTotalPrice,orderSellerPrice,orderPayment,freightPrice,orderState,orderStateRemark,orderRemark,orderStartTime,orderEndTime,modified,consigneeInfo,itemInfoList,couponDetailList,taxFee,venderRemark,pin,waybill,storeOrder,storeId,sellerDiscount";
IJdClient jdClient = new DefaultJdClient("https://api.jd.com/routerjson", "120EA9EC65AB017567D78CC1139EEEA5", "866a9877f5f24b03b537483b4defe75d");
var str = "{\"StartDate\":\"2022-05-31 19:11:26\",\"EndDate\":\"2022-05-31 22:11:26\",\"PageIndex\":1,\"PageSize\":100,\"OrderId\":\"\",\"JDColType\":\"0\",\"OrderState\":null,\"Platform\":1,\"AppKey\":\"120EA9EC65AB017567D78CC1139EEEA5\",\"AppSecret\":\"866a9877f5f24b03b537483b4defe75d\",\"AppToken\":\"c638226881394594baed9dfc24d33c28diyn\",\"SaveResponseLog\":true}";
var searchOrderRequest = JsonConvert.DeserializeObject<SearchPlatformOrderRequest>(str);
var sopReq = new PopOrderEnSearchRequest();
if (searchOrderRequest.StartDate != null)
sopReq.startDate = searchOrderRequest.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
if (searchOrderRequest.EndDate != null)
sopReq.endDate = searchOrderRequest.EndDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
if (string.IsNullOrEmpty(searchOrderRequest.OrderState))
{
//WAIT_SELLER_STOCK_OUT,WAIT_GOODS_RECEIVE_CONFIRM,WAIT_SELLER_DELIVER,PAUSE,FINISHED_L,TRADE_CANCELED,LOCKED
sopReq.orderState = "WAIT_SELLER_STOCK_OUT,WAIT_GOODS_RECEIVE_CONFIRM,PAUSE,FINISHED_L,TRADE_CANCELED,LOCKED,NOT_PAY";
}
else
{
sopReq.orderState = searchOrderRequest.OrderState; //待转换
return new DefaultJdClient("https://api.jd.com/routerjson", appKey, appSecret);
}
sopReq.optionalFields = searchFields;
sopReq.page = searchOrderRequest.PageIndex.ToString();
sopReq.pageSize = searchOrderRequest.PageSize.ToString();
sopReq.sortType = "1";
//sopReq.dateType = "";
var sopResponse = jdClient.Execute(sopReq, searchOrderRequest.AppToken, DateTime.Now.ToLocalTime());
if (sopResponse.IsError)
throw new BusinessException($"获取SOP订单失败 {(string.IsNullOrEmpty(sopResponse.ErrorMsg) ? sopResponse.ErrMsg : sopResponse.ErrorMsg)}");
if (sopResponse.Json == null)
sopResponse.Json = JObject.Parse(sopResponse.Body);
Console.WriteLine(JsonConvert.SerializeObject(sopResponse));
static void Main(string[] args)
{
var jdClient = GetJdClient("120EA9EC65AB017567D78CC1139EEEA5", "866a9877f5f24b03b537483b4defe75d");
var response = jdClient.Execute(new FceAlphaGetVenderCarrierRequest(), "940b1e24d84843ffbbee3833984a6f0bwyjf", DateTime.Now.ToLocalTime());
if (response.IsError)
throw new BusinessException($"{response.RealErrorMsg}");
//if (response.Json == null)
// response.Json = JObject.Parse(response.Body);
Console.Write(JsonConvert.SerializeObject(response));
//orderCount = sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"].Value<int>("orderTotal");
//orderJtokens.AddRange((JArray)sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"]["orderInfoList"]);
Console.ReadKey();

Loading…
Cancel
Save