拍单功能继续优化

This commit is contained in:
wule committed 2026-06-25 02:46:02 +08:00
1 parent 29042424dc
commit 34c51c6fcd
64 files changed
+7138 -305

No files matched your search

+7 -3
View File
@@ -1,11 +1,11 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.36221.1 d17.14
# Visual Studio Version 16
VisualStudioVersion = 16.0.36128.20
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "29WxOrderAllBase", "AllBase\29WxOrderAllBase.csproj", "{6461D807-B1C8-45F0-B388-E0CA1A418DE0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "29供应链-微信小店", "29供应链-微信小店", "{1A7830FA-AC8F-40FB-A232-F0626812B8BE}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "29供应链-微信小店拍单", "29供应链-微信小店拍单", "{1A7830FA-AC8F-40FB-A232-F0626812B8BE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "29WxOrder", "29WxOrder\29WxOrder.csproj", "{D51A1BB0-17BB-44C3-9129-1F3187E82729}"
EndProject
@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "29WxOrderWork", "Work\29WxO
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "29WxOrderWpf", "29WxOrderWpf\29WxOrderWpf.csproj", "{D7884375-E42F-4B89-AA3A-D8E75508D8C7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "29供应链-BaseProject", "29供应链-BaseProject", "{4A54DC2A-B47C-4ED1-A482-EE60161DB2C3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -94,7 +96,9 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{6461D807-B1C8-45F0-B388-E0CA1A418DE0} = {4A54DC2A-B47C-4ED1-A482-EE60161DB2C3}
{D51A1BB0-17BB-44C3-9129-1F3187E82729} = {1A7830FA-AC8F-40FB-A232-F0626812B8BE}
{1AD45D66-6872-4522-ACF0-04E2C0514048} = {4A54DC2A-B47C-4ED1-A482-EE60161DB2C3}
{D7884375-E42F-4B89-AA3A-D8E75508D8C7} = {1A7830FA-AC8F-40FB-A232-F0626812B8BE}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
+1 -1
View File
@@ -65,7 +65,7 @@
<OutputPath>..\..\KJD Cef138\Bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>default</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
+1 -1
View File
@@ -352,7 +352,7 @@
this.ClientSize = new System.Drawing.Size(1184, 621);
this.Controls.Add(this.panel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IsShowMax = true;
this.IsShowMaxBox = true;
this.Name = "FactoryExportForm";
this.Padding = new System.Windows.Forms.Padding(2, 0, 2, 2);
this.Text = "指定商品订单列表";
+1 -1
View File
@@ -56,7 +56,7 @@ namespace _29WxOrder.ShopForms
this.ClientSize = new System.Drawing.Size(1255, 641);
this.Controls.Add(this.panel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IsShowMax = true;
this.IsShowMaxBox = true;
this.Name = "PddShopLoginForm";
this.Text = "拼多多批发登录";
this.TitleText = "拼多多批发登录";
+1 -1
View File
@@ -57,7 +57,7 @@ namespace _29WxOrder.ShopForms
this.ClientSize = new System.Drawing.Size(1280, 720);
this.Controls.Add(this.panel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IsShowMax = true;
this.IsShowMaxBox = true;
this.Name = "ShopBrower";
this.Text = "ShopBrower";
this.TitleText = "ShopBrower";
+1 -1
View File
@@ -91,7 +91,7 @@
this.ClientSize = new System.Drawing.Size(1280, 720);
this.Controls.Add(this.splitContainer1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IsShowMax = true;
this.IsShowMaxBox = true;
this.Name = "CefForm";
this.Text = "CefForm";
this.TitleText = "CefForm";
+1 -1
View File
@@ -20,7 +20,7 @@ namespace _29WxOrder.ToolForms
private void ProgressForm_Load(object sender, EventArgs e)
{
this.IsShowMax = false;
this.IsShowMaxBox = false;
this.pbCloseBase.Visible = false;
}
+46 -2
View File
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props')" />
<Import Project="..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props" Condition="Exists('..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props')" />
<Import Project="..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props" Condition="Exists('..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -29,9 +32,11 @@
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@@ -41,7 +46,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\KJD Cef138\Bin\</OutputPath>
@@ -53,6 +58,15 @@
<ApplicationIcon>29wx.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="CefSharp, Version=138.0.340.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Common.138.0.340\lib\net462\CefSharp.dll</HintPath>
</Reference>
<Reference Include="CefSharp.Core, Version=138.0.340.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Common.138.0.340\lib\net462\CefSharp.Core.dll</HintPath>
</Reference>
<Reference Include="CefSharp.Wpf, Version=138.0.340.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Wpf.138.0.340\lib\net462\CefSharp.Wpf.dll</HintPath>
</Reference>
<Reference Include="NaiBa.Util">
<HintPath>..\DllReference\NaiBa.Util.dll</HintPath>
</Reference>
@@ -86,8 +100,17 @@
</Compile>
<Compile Include="BaseWindows\BaseWindow.cs" />
<Compile Include="Converters\ImageUrlToBitmapImageConverter.cs" />
<Compile Include="Converters\HasValueToVisibilityConverter.cs" />
<Compile Include="Converters\StatusToColorBrushConverter.cs" />
<Compile Include="Converters\TextToVisibilityConverter.cs" />
<Compile Include="Converters\VisibleToVisibilityConverter.cs" />
<Compile Include="Converters\ValueMinus24Converter.cs" />
<Compile Include="Ctrls\BuyerCtrls\PDDBuyerOrderListCtrl.xaml.cs">
<DependentUpon>PDDBuyerOrderListCtrl.xaml</DependentUpon>
</Compile>
<Compile Include="Ctrls\BuyerCtrls\PDDBuyerSelectCtrl.xaml.cs">
<DependentUpon>PDDBuyerSelectCtrl.xaml</DependentUpon>
</Compile>
<Compile Include="Ctrls\OrderCtrls\OrderListRowCtrl.xaml.cs">
<DependentUpon>OrderListRowCtrl.xaml</DependentUpon>
</Compile>
@@ -122,6 +145,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Ctrls\BuyerCtrls\PDDBuyerOrderListCtrl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Ctrls\BuyerCtrls\PDDBuyerSelectCtrl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Ctrls\OrderCtrls\OrderListRowCtrl.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -296,5 +327,18 @@
<ItemGroup>
<Resource Include="Resources\loading_blue.gif" />
</ItemGroup>
<ItemGroup>
<Folder Include="CefHelper\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props'))" />
<Error Condition="!Exists('..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets'))" />
</Target>
<Import Project="..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets')" />
</Project>
+4
View File
@@ -6,9 +6,13 @@
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<converters:HasValueToVisibilityConverter x:Key="hasValueToVisibilityConverter" />
<converters:HasTextToVisibilityConverter x:Key="HasTextVisibility"/>
<converters:NotHasTextToVisibilityConverter x:Key="NotHasTextVisibility"/>
<converters:VisibleToVisibilityConverter x:Key="visibleToVisibilityConverter"/>
<converters:ImageUrlToBitmapImageConverter x:Key="ImageUrlToBitmapImage"/>
<converters:ValueMinus24Converter x:Key="ValueMinus24Converter"/>
<converters:StatusToColorBrushConverter x:Key="statusToColorBrushConverter"/>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles/BaseWindowStyle.xaml" />
<ResourceDictionary Source="Styles/BaseDataGridStyle.xaml" />
+33
View File
@@ -1,8 +1,11 @@
using _29WxOrderWpf.BaseWindows;
using CefSharp;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -18,6 +21,7 @@ namespace _29WxOrderWpf
/// </summary>
public partial class App : Application
{
public static int ProcessCount = 0;
public static string[] args = new List<string>().ToArray();
protected override void OnStartup(StartupEventArgs e)
{
@@ -67,6 +71,35 @@ namespace _29WxOrderWpf
//BaseMsgForm.ShowError(str, "系统错误");
BaseMsgWindow.ShowError(null, str, "系统错误");
}
#region 初始化cef
CefSharpSettings.WcfEnabled = false;
CefSharp.Wpf.CefSettings settings = new CefSharp.Wpf.CefSettings();
settings.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
settings.CefCommandLineArgs.Add("disable-gpu", "1"); // 禁止显卡加速
settings.IgnoreCertificateErrors = true;
settings.Locale = "zh-CN";
settings.LogSeverity = LogSeverity.Disable;
var pName = Process.GetCurrentProcess().ProcessName;
ProcessCount = Process.GetProcesses().Count(p => p.ProcessName == pName);
//138版cef自己不会分缓存,会因占用导致报错,手动分缓存
settings.CachePath = Path.Combine(Environment.CurrentDirectory, "Cache\\Order" + ProcessCount);
//settings.CachePath = null; //禁止缓存
//settings.CefCommandLineArgs.Add("enable-javascript", "1");
//settings.CefCommandLineArgs.Add("disable-features", "NetworkService,NetworkServiceInProcess");
settings.CefCommandLineArgs.Add("--disable-web-security", "1");
//settings.CefCommandLineArgs.Add("--disable-request-handling-for-testing", "1");
#if DEBUG
settings.LogFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cef_log_order.txt");
// 设置日志级别为详细
settings.LogSeverity = LogSeverity.Verbose;
// 捕获JavaScript异常堆栈(最多32帧)
settings.UncaughtExceptionStackSize = 32;
#endif
Cef.Initialize(settings);
#endregion
}
//static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
@@ -0,0 +1,28 @@
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
namespace _29WxOrderWpf.Converters
{
public class HasValueToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return Visibility.Collapsed;
if (value.ParseToString().IsNullOrEmpty())
return Visibility.Collapsed;
return Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException(); // 单向绑定可不实现
}
}
}
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace _29WxOrderWpf.Converters
{
public class StatusToColorBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is string status)
{
return status == "在线" ? new SolidColorBrush(Color.FromRgb(50, 180, 50)) : new SolidColorBrush(Color.FromRgb(255, 50, 50));
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException(); // 因为这是单向绑定,反向转换不实现
}
}
}
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace _29WxOrderWpf.Converters
{
public class ValueMinus24Converter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is double width)
{
return Math.Max(0, width - 24); // 确保宽度/高度不会变成负数
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException(); // 因为这是单向绑定,反向转换不实现
}
}
}
@@ -0,0 +1,12 @@
<UserControl x:Class="_29WxOrderWpf.Ctrls.BuyerCtrls.PDDBuyerOrderListCtrl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:_29WxOrderWpf.Ctrls.BuyerCtrls"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace _29WxOrderWpf.Ctrls.BuyerCtrls
{
/// <summary>
/// PDDBuyerOrderListCtrl.xaml 的交互逻辑
/// </summary>
public partial class PDDBuyerOrderListCtrl : UserControl
{
public PDDBuyerOrderListCtrl()
{
InitializeComponent();
}
}
}
@@ -0,0 +1,48 @@
<UserControl x:Class="_29WxOrderWpf.Ctrls.BuyerCtrls.PDDBuyerSelectCtrl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:_29WxOrderWpf.Ctrls.BuyerCtrls" xmlns:userctrls="clr-namespace:_29WxOrderWpf.UserControls"
mc:Ignorable="d" Loaded="UserControl_Loaded"
d:DesignHeight="30" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="1" x:Name="cmbPddBuyer" Margin="8,0,0,0" VerticalContentAlignment="Center" Style="{StaticResource RoundedComboBox}" Height="24"
MouseLeftButtonUp="cmbPddBuyer_MouseLeftButtonUp" SelectionChanged="cmbPddBuyer_SelectionChanged" SelectedIndex="0">
<ComboBox.ItemTemplate>
<DataTemplate>
<!--<Grid HorizontalAlignment="Stretch" MinWidth="{Binding RelativeSource={RelativeSource Self}, Path=ActualWidth}">-->
<Grid HorizontalAlignment="Stretch" MinWidth="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ComboBox}},
Path=ActualWidth, Converter={StaticResource ValueMinus24Converter}}" Height="auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock x:Name="tbName" Text="{Binding buyer_nick}" VerticalAlignment="Center"/>
<userctrls:UcImageButton Width="15" Height="15" ButtonImage="{StaticResource imgCloseGray}" BorderThickness="0" Cursor="Hand" Grid.Column="0" Visibility="Collapsed"
MouseOverButtonImage="{StaticResource imgCloseGray}" MousePressButtonImage="{StaticResource imgCloseGray}" Background="Transparent"
x:Name="btnDeleteItem" Tag="{Binding ElementName=tbName, Path=Text}" HorizontalAlignment="Right" VerticalAlignment="Center"
Click="btnDeleteItem_Click"/>
<TextBlock x:Name="tbStatus" Text="{Binding status}" Foreground="{Binding status, Converter={StaticResource statusToColorBrushConverter}}" Grid.Column="2"
VerticalAlignment="Center"/>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="btnDeleteItem" Property="Visibility" Value="Visible"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!--<TextBlock Text="选择买手" Grid.Column="12" Margin="12,0,0,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="LightGray"
Visibility="{Binding ElementName=cmbBuyer,Path=Text,Converter={StaticResource NotHasTextVisibility}}"></TextBlock>-->
<Button Grid.Column="2" x:Name="btnLoginPdd" Style="{StaticResource BasePageButtonStyle}" Margin="4,0,0,0"
Content="多多登录" Width="56" Height="24" Click="btnLoginPdd_Click"/>
</Grid>
</UserControl>
@@ -0,0 +1,158 @@
using _29WxOrderWpf.BaseWindows;
using AllBase;
using AllBase.Helper;
using AllBase.Model.Result;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using TemuKJD.ToolForms;
using Work;
using Work.BaseForms;
namespace _29WxOrderWpf.Ctrls.BuyerCtrls
{
/// <summary>
/// PDDBuyerSelectCtrl.xaml 的交互逻辑
/// </summary>
public partial class PDDBuyerSelectCtrl : UserControl
{
public PDDBuyerSelectCtrl()
{
InitializeComponent();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
cmbPddBuyer.ItemsSource = GlobalConfig.PDDBuyerLoginList;
}
private void btnLoginPdd_Click(object sender, RoutedEventArgs e)
{
BuyerLoginInfo buyer = null;
if (cmbPddBuyer.SelectedItem != null)
{
buyer = cmbPddBuyer.SelectedItem as BuyerLoginInfo;
}
PddMobileLoginForm pddBuyerForm = new PddMobileLoginForm(buyer);
pddBuyerForm.openType = EnumOpenType.login;
pddBuyerForm.InitUrl = "https://mobile.yangkeduo.com/login.html?from=https%3A%2F%2Fmobile.yangkeduo.com%2Fpersonal.html";
pddBuyerForm.ShowDialog();
MainWindow.Instance.GetPddBuyer();
}
private void cmbPddBuyer_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (e.GetPosition(sender as IInputElement).X > cmbPddBuyer.ActualWidth - 18)
return;
BuyerLoginInfo buyer = null;
if (cmbPddBuyer.SelectedItem != null)
{
buyer = cmbPddBuyer.SelectedItem as BuyerLoginInfo;
}
if (buyer == null)
return;
PddMobileLoginForm.CheckBuyerLogin(new List<BuyerLoginInfo> { buyer }, false);
if (buyer.status == "在线")
{
PddMobileLoginForm shopLoginForm = new PddMobileLoginForm(buyer);
shopLoginForm.openType = EnumOpenType.manage;
//shopLoginForm.WindowState = FormWindowState.Maximized;
shopLoginForm.InitUrl = "https://mobile.yangkeduo.com";
shopLoginForm.Show();
}
else
{
PddMobileLoginForm shopLoginForm = new PddMobileLoginForm(buyer);
shopLoginForm.openType = EnumOpenType.login;
shopLoginForm.InitUrl = "https://mobile.yangkeduo.com/login.html?from=https%3A%2F%2Fmobile.yangkeduo.com%2Fpersonal.html";
shopLoginForm.ShowDialog();
MainWindow.Instance.GetPddBuyer();
}
}
private void cmbPddBuyer_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
BuyerLoginInfo buyer = null;
if (cmbPddBuyer.SelectedItem != null)
{
buyer = cmbPddBuyer.SelectedItem as BuyerLoginInfo;
}
GlobalConfig.CurrentPddBuyer = buyer;
}
private void btnDeleteItem_Click(object sender, RoutedEventArgs e)
{
if (BaseMsgWindow.ShowConfirm(MainWindow.Instance, "确定删除吗?删除后不可恢复!").DialogResult != true)
return;
if (sender is Button btn)
{
if (btn.DataContext is BuyerLoginInfo buyer)
{
Task.Run(() =>
{
var url = BaseClass.Build29PDDObjString("user/del_buyer");
var data = UserLogin.GetSignaturex()
+ "&buyer_id=" + buyer.buyer_id;
var result = GetHtml.PostUtf8(url, data);
if (result.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
GlobalConfig.PDDBuyerLoginList.Remove(buyer);
this.cmbPddBuyer.SelectedIndex = 0;
}));
}
});
}
}
//var pddBuyer =
//var ids = dgvBuyer.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colSelect"].Value.ParseToBool() == true).Select(s => s.Cells["colBuyerId"].Value.ParseToString()).ToList();
//var buyers = GlobalConfig.PDDBuyerLoginList.Where(b => ids.Contains(b.buyer_id)).ToList();
//this.statusBar.pgbTaskProgress.Maximum = buyers.Count;
//pbLoading.Visible = true;
//Task.Run(() =>
//{
// int i = 0;
// foreach (var buyer in buyers)
// {
// i++;
// this.Invoke(new Action(() =>
// {
// this.statusBar.lblTaskStatus.Text = "正在删除...";
// this.statusBar.pgbTaskProgress.Value = i;
// this.statusBar.pgbTaskProgress.Text = i + "/" + buyers.Count;
// }));
// Thread.Sleep(100);
// }
// this.Invoke(new Action(() =>
// {
// this.statusBar.lblTaskStatus.Text = "删除完成";
// this.statusBar.pgbTaskProgress.Value = buyers.Count;
// this.statusBar.pgbTaskProgress.Text = buyers.Count + "/" + buyers.Count;
// }));
// GetPddBuyer();
//});
}
}
}
@@ -19,9 +19,10 @@
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
</Grid.RowDefinitions>
<Grid x:Name="gridSearch" Margin="8,0">
<Grid x:Name="gridSearch" Margin="8,0,8,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
@@ -29,67 +30,58 @@
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition x:Name="grid12" Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<usercontrols:UcWaterMarkTextBox x:Name="txtOrderId" WaterMark="111" DataContext="{Binding ElementName=txtOrderId,Path=DataContext}" Grid.Column="0" Margin="0,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1" Height="28" VerticalContentAlignment="Center"
Style="{StaticResource BaseRoundCornerTextBoxStyle}" />
<TextBlock Text="店铺单号" Grid.Column="0" Margin="4,0,4,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="LightGray" Visibility="{Binding ElementName=txtOrderId,Path=Text,Converter={StaticResource NotHasTextVisibility}}"></TextBlock>
<usercontrols:UcWaterMarkTextBox x:Name="txtOrderId" WaterMark="" DataContext="{Binding ElementName=txtOrderId,Path=DataContext}" Grid.Column="1" Margin="0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1" Height="28" VerticalContentAlignment="Center"
Style="{StaticResource BaseRoundCornerTextBoxStyle}" Grid.ColumnSpan="1" />
<TextBlock Text="店铺单号" Grid.Column="1" Margin="4,0,4,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="LightGray" Visibility="{Binding ElementName=txtOrderId,Path=Text,Converter={StaticResource NotHasTextVisibility}}" Grid.ColumnSpan="1"></TextBlock>
<usercontrols:UcWaterMarkTextBox x:Name="txtShopName" Grid.Column="1" Margin="8,0,-4,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1" Height="28" VerticalContentAlignment="Center"
Style="{StaticResource BaseRoundCornerTextBoxStyle}" />
<TextBlock Text="全部店铺" Grid.Column="1" Margin="12,0,8,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="LightGray" Visibility="{Binding ElementName=txtShopName,Path=Text,Converter={StaticResource NotHasTextVisibility}}"></TextBlock>
<Button Grid.Column="2" x:Name="btnMultiShopChoice" Style="{StaticResource BasePageButtonStyle}" Margin="-4,0,0,0" Grid.Row="4" Content=" ... " Width="28" Height="28" Click="btnMultiShopChoice_Click"></Button>
<TextBox x:Name="txtGoodsName" Grid.Column="3" Margin="8,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1" Height="28" VerticalContentAlignment="Center"
<usercontrols:UcWaterMarkTextBox x:Name="txtShopName" Grid.Column="2" Margin="8,0,20,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1" Height="28"
VerticalContentAlignment="Center" Style="{StaticResource BaseRoundCornerTextBoxStyle}"/>
<TextBlock Text="全部店铺" Grid.Column="2" Margin="12,0,24,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="LightGray"
Visibility="{Binding ElementName=txtShopName,Path=Text,Converter={StaticResource NotHasTextVisibility}}"></TextBlock>
<Button Grid.Column="2" x:Name="btnMultiShopChoice" Style="{StaticResource BasePageButtonStyle}" HorizontalAlignment="Right" Margin="0" Content=" ... " Width="28" Height="28" Click="btnMultiShopChoice_Click"/>
<TextBox x:Name="txtGoodsName" Grid.Column="4" Margin="8,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1" Height="28" VerticalContentAlignment="Center"
Style="{StaticResource BaseRoundCornerTextBoxStyle}"/>
<TextBlock Text="商品标题" Grid.Column="3" Margin="12,0,0,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="LightGray" Visibility="{Binding ElementName=txtGoodsName,Path=Text,Converter={StaticResource NotHasTextVisibility}}"></TextBlock>
<TextBlock Text="商品标题" Grid.Column="4" Margin="12,0,0,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="LightGray" Visibility="{Binding ElementName=txtGoodsName,Path=Text,Converter={StaticResource NotHasTextVisibility}}"></TextBlock>
<ComboBox Grid.Column="5" x:Name="cmbUserNameMobile" Margin="12,0,4,0" VerticalContentAlignment="Center" Style="{StaticResource BaseComboBoxStyle}" Width="70" Height="28" Text="成交时间"/>
<Border Grid.Column="5" Margin="8,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="4,0,0,4"/>
<Border Grid.Column="6" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,0,0,0"/>
<DatePicker x:Name="dateStart" Grid.Column="6" Margin="0,0,4,0" VerticalAlignment="Center" BorderThickness="0" />
<Border Grid.Column="7" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,4,4,0"/>
<DatePicker x:Name="dateEnd" Grid.Column="7" Margin="0,0,4,0" VerticalAlignment="Center" BorderThickness="0" />
<ComboBox Grid.Column="4" x:Name="cmbUserNameMobile" Margin="12,0,4,0" VerticalContentAlignment="Center" Style="{StaticResource BaseComboBoxStyle}" Width="70" Height="28" Text="成交时间"/>
<Border Grid.Column="4" Margin="8,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="4,0,0,4"/>
<Border Grid.Column="5" Margin="0,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,0,0,0"/>
<DatePicker x:Name="dateStart" Grid.Column="5" Margin="0,0,4,0" VerticalAlignment="Center" BorderThickness="0" />
<Border Grid.Column="6" Margin="0,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,4,4,0"/>
<DatePicker x:Name="dateEnd" Grid.Column="6" Margin="0,0,4,0" VerticalAlignment="Center" BorderThickness="0" />
<Button Grid.Column="11" x:Name="btnFilter" Style="{StaticResource BasePageButtonStyle}" Margin="4,0,0,0" Grid.Row="4" Content="过滤" Width="48" Height="24" Click="btnFilter_Click"></Button>
<Button Grid.Column="12" x:Name="btnSearch" Style="{StaticResource BasePageButtonStyle}" Margin="4,0,4,0" Grid.Row="4" Content="读单" Width="48" Height="24" Click="btnSearch_Click"></Button>
<Image Grid.Column="13" Source="{StaticResource loading_pic}" Width="20" Height="20">
<Button Grid.Column="8" x:Name="btnFilter" Style="{StaticResource BasePageButtonStyle}" Margin="4,0,0,0" Content="过滤" Width="48" Height="24" Click="btnFilter_Click"/>
<Button Grid.Column="9" x:Name="btnSearch" Style="{StaticResource BasePageButtonStyle}" Margin="4,0,4,0" Content="读单" Width="48" Height="24" Click="btnSearch_Click"/>
<Image x:Name="imgLoading" Grid.Column="10" Source="{StaticResource loading_pic}" Width="20" Height="20" Margin="0,15,0,15">
<!--<Image.Triggers>
<EventTrigger RoutedEvent="Image.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="myElement"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)"
To="360"
Duration="0:0:5"
RepeatBehavior="Forever"/>
<EventTrigger RoutedEvent="Image.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="myElement"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)"
To="360"
Duration="0:0:5"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>-->
</Image>
</Grid>
<Grid x:Name="gridListHeader" Margin="12,0" Grid.Row="1">
<Grid.ColumnDefinitions>
<!--<ColumnDefinition Width="40"></ColumnDefinition>
<ColumnDefinition Width="100*"></ColumnDefinition>
<ColumnDefinition Width="50*"></ColumnDefinition>
<ColumnDefinition Width="50*"></ColumnDefinition>
<ColumnDefinition Width="100*"></ColumnDefinition>
<ColumnDefinition Width="50*"></ColumnDefinition>
<ColumnDefinition Width="50*"></ColumnDefinition>
<ColumnDefinition Width="50*"></ColumnDefinition>-->
</Grid.ColumnDefinitions>
<TabControl x:Name="tabOrderType" Height="24" FontSize="16" VerticalAlignment="Bottom" SelectionChanged="tabOrderType_SelectionChanged" >
<TabItem Header="待采购">
<Grid Background="#FF33E5E5"/>
@@ -98,17 +90,17 @@
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem Header="待收货">
<Grid Background="#FFE5E5E5"/>
<Border Background="#FFE5E5E5" CornerRadius="5"/>
</TabItem>
<TabItem Header="退款单">
<TabItem Header="退款单" Foreground="#FF6666">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem Header="全部订单">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem Header="发货异常">
<!--<TabItem Header="发货异常">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabItem>-->
</TabControl>
</Grid>
<Grid x:Name="lstTitle" Grid.Row="2" Margin="12,0,16,0" Background="{StaticResource ListHeadBackColorBrush}">
@@ -168,15 +160,15 @@
<!--此处绑定将数据源传递给子自定义控件OrderListRowCtrl-->
<local:OrderListRowCtrl DataContext="{Binding}" VerticalAlignment="Center" VerticalContentAlignment="Center"></local:OrderListRowCtrl>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid x:Name="gridFooter" Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="100*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtFilterCount" Text="共计 0 条" Grid.Column="1" Grid.Row="2" Margin="8,0" VerticalAlignment="Center" Background="Transparent" IsReadOnly="True" BorderThickness="0"/>
<TextBox x:Name="txtFilterCount" Text="共计 0 条" Grid.Column="0" Grid.Row="2" Margin="8,0" VerticalAlignment="Center" Background="Transparent" IsReadOnly="True" BorderThickness="0"/>
</Grid>
</Grid>
</UserControl>
@@ -22,6 +22,7 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using TemuKJD.ToolForms;
using Work;
using Work.BLL;
@@ -32,8 +33,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
/// </summary>
public partial class OrderListCtrl : UserControl
{
public static ObservableCollection<oms_wei_order_info> lstOrder { get; set; } = new ObservableCollection<oms_wei_order_info>();
public static ObservableCollection<oms_wei_order_info> lstFilterOrder { get; set; } = new ObservableCollection<oms_wei_order_info>();
public CheckBox chkSelectAll = null;
@@ -45,6 +44,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
private void Window_Loaded(object sender, RoutedEventArgs e)
{
lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
dateStart.SelectedDate = DateTime.Now.Date.AddDays(-7);
dateEnd.SelectedDate = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
@@ -65,9 +66,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
for (int i = 0; i < 10000; i++)
{
//lstOrder.Add(new oms_wei_order_info() { id = 1, IsSelect = false, order_id = ("3737033423685556736".ParseToLong() + Randomx.GetId(0,100)).ParseToString(), shop_name = "媛卡曦工厂优选" });
lstOrder.Add(new oms_wei_order_info() { id = 1, IsSelect = false, order_id = Randomx.GetId(1000, 10000).ParseToString(), shop_name = "媛卡曦工厂优选" });
GlobalConfig.lstOrder.Add(new oms_wei_order_info() { id = 1, IsSelect = false, order_id = Randomx.GetId(1000, 10000).ParseToString(), shop_name = "媛卡曦工厂优选" });
}
lstOrder.SortDesc(o => o.order_id.ParseToLong());
GlobalConfig.lstOrder.SortDesc(o => o.order_id.ParseToLong());
}
/// <summary>
@@ -78,6 +79,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
Dispatcher.Invoke(new Action(() =>
{
imgLoading.Visibility = Visibility.Visible;
btnSearch.IsEnabled = false;
}));
Task.Run(() =>
@@ -132,10 +134,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
break;
var order_ids = string.Join(",", jArr.Select(a => a["order_id"].ParseToString()));
if (order_ids.Contains("3737210716522443776"))
{
}
// 读取订单详情
Thread.Sleep(100);
@@ -170,6 +168,47 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
List<oms_wei_refund_info> refunds = new List<oms_wei_refund_info>();
try { refunds = JsonHelper.DeserializeJsonToList<oms_wei_refund_info>(JObject.Parse(html2)["data"].ParseToString()); } catch { }
// 读取中转仓拍单订单
var url3 = BaseClass.Build29WxObjString("order/wx_get_transit_order");
var data3 = UserLogin.GetSignaturex();
data3 += "&order_no=" + order_ids;
var html3 = GetHtml.PostUtf8(url3, data3);
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
GetHtml.PostUtf8(url3, data3);
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError(MainWindow.Instance, "订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
}));
break;
}
List<oms_wei_external_procurement_log> transitOrderList = new List<oms_wei_external_procurement_log>();
try { transitOrderList = JsonHelper.DeserializeJsonToList<oms_wei_external_procurement_log>(JObject.Parse(html3)["data"].ParseToString()); } catch { }
// 读取关联拍单商品
var urlMap = BaseClass.Build29WxObjString("order/wx_get_buy_prod_map");
var dataMap = UserLogin.GetSignaturex()
+ "&spu_codes=" + string.Join(",", orderItems.Select(oi => oi.out_product_id));
dataMap += "&main_user_name=" + BaseClass.MainUserName;
var resultMap = GetHtml.PostUtf8(urlMap, dataMap);
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
GetHtml.PostUtf8(urlMap, dataMap);
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError(MainWindow.Instance, "订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
}));
break;
}
List<WXBuyMapInfo> byuMapList = new List<WXBuyMapInfo>();
try { byuMapList = JsonHelper.DeserializeJsonToList<WXBuyMapInfo>(JObject.Parse(resultMap)["data"].ParseToString()); } catch { }
foreach (JObject jObj in jArr)
{
Dispatcher.Invoke(new Action(() =>
@@ -183,6 +222,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
item.item_order = order;
order.order_items.Add(item);
item.buy_map = byuMapList.FirstOrDefault(b => b.sku_code == item.out_sku_id && b.spu_code == item.out_product_id);
item.item_transit_orders.AddRange(transitOrderList.Where(t => t.order_no == item.order_id && t.order_sku_id == item.sku_id));
}
//装载订单售后详情
order.refunds = new ObservableCollection<oms_wei_refund_info>();
@@ -191,18 +234,18 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
order.refunds.Add(item);
}
var orderExist = lstOrder.FirstOrDefault(o => o.order_id == order.order_id);
var orderExist = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == order.order_id);
if (orderExist != null)
lstOrder.Remove(orderExist);
GlobalConfig.lstOrder.Remove(orderExist);
var nextOrder = lstOrder.FirstOrDefault(o => o.create_time < order.create_time);
var nextOrder = GlobalConfig.lstOrder.FirstOrDefault(o => o.create_time < order.create_time);
if (nextOrder != null)
{
lstOrder.Insert(lstOrder.IndexOf(nextOrder), order);
GlobalConfig.lstOrder.Insert(GlobalConfig.lstOrder.IndexOf(nextOrder), order);
}
else
{
lstOrder.Add(order);
GlobalConfig.lstOrder.Add(order);
}
if (order.order_items.Count > 1)
{
@@ -216,33 +259,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}));
}
Dispatcher.Invoke(new Action(() => {
var tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("待采购"));
if (tabItem != null)
{
tabItem.Header = "待采购(" + lstOrder.Where(r => r.purchase_status == 0 && r.status == 20).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("待发货"));
if (tabItem != null)
{
tabItem.Header = "待发货(" + lstOrder.Where(r => r.purchase_status == 1 && r.status == 20).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("待收货"));
if (tabItem != null)
{
tabItem.Header = "待收货(" + lstOrder.Where(r =>/* r.purchase_status == 1 &&*/ (r.status == 30 || r.status == 100)).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("退款单"));
if (tabItem != null)
{
tabItem.Header = "退款单(" + lstOrder.Where(r => /*r.status == 200 ||*/ r.refunds?.Count > 0).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("全部订单"));
if (tabItem != null)
{
tabItem.Header = "全部订单(" + lstOrder.Count() + ")";
}
txtFilterCount.Text = "当前条件共计 " + lstFilterOrder.Count() + " 条订单记录";
Dispatcher.Invoke(new Action(() =>
{
disPlayOrderTabCount();
}));
var totalCount = BaseRegex.GetIntJson(ref html, "count");
@@ -256,28 +275,59 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
Dispatcher.Invoke(new Action(() =>
{
imgLoading.Visibility = Visibility.Collapsed;
btnSearch.IsEnabled = true;
}));
});
}
void disPlayOrderTabCount()
{
var tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("待采购"));
if (tabItem != null)
{
tabItem.Header = "待采购(" + GlobalConfig.lstOrder.Where(r => r.IsWaitBuy).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("待发货"));
if (tabItem != null)
{
tabItem.Header = "待发货(" + GlobalConfig.lstOrder.Where(r => r.IsWaitSend).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("待收货"));
if (tabItem != null)
{
tabItem.Header = "待收货(" + GlobalConfig.lstOrder.Where(r => r.IsWaitReceive).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("退款单"));
if (tabItem != null)
{
tabItem.Header = "退款单(" + GlobalConfig.lstOrder.Where(r => r.IsRefund).Count() + ")";
}
tabItem = this.tabOrderType.Items.Cast<TabItem>().FirstOrDefault(t => t.Header.ParseToString().StartsWith("全部订单"));
if (tabItem != null)
{
tabItem.Header = "全部订单(" + GlobalConfig.lstOrder.Count() + ")";
}
txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count() + " 条订单记录";
}
void FilterOrders()
{
try
{
foreach (var order in lstFilterOrder.ToList())
foreach (var order in GlobalConfig.lstFilterOrder.ToList())
{
if (GetOrderIsFilter(order))
{
lstFilterOrder.Remove(order);
GlobalConfig.lstFilterOrder.Remove(order);
}
}
foreach (var order in lstOrder.ToList())
foreach (var order in GlobalConfig.lstOrder.ToList())
{
FilterOneOrder(order);
}
Dispatcher.Invoke(new Action(() => {
txtFilterCount.Text = "当前条件共计 " + lstFilterOrder.Count().ToString() + " 条订单记录";
txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count().ToString() + " 条订单记录";
}));
}
catch (Exception ex)
@@ -285,62 +335,72 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}
}
void FilterOneOrder(oms_wei_order_info order)
public void FilterOneOrder(oms_wei_order_info order, bool updateTabCount = false)
{
if (!GetOrderIsFilter(order))
{
var orderExist = lstFilterOrder.FirstOrDefault(o => o.order_id == order.order_id);
var orderExist = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.order_id == order.order_id);
if (orderExist != null)
lstFilterOrder.Remove(orderExist);
GlobalConfig.lstFilterOrder.Remove(orderExist);
var nextOrder = lstFilterOrder.FirstOrDefault(o => o.create_time < order.create_time);
var nextOrder = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.create_time < order.create_time);
if (nextOrder != null)
{
lstFilterOrder.Insert(lstFilterOrder.IndexOf(nextOrder), order);
GlobalConfig.lstFilterOrder.Insert(GlobalConfig.lstFilterOrder.IndexOf(nextOrder), order);
}
else
{
lstFilterOrder.Add(order);
GlobalConfig.lstFilterOrder.Add(order);
}
}
if (updateTabCount)
{
Dispatcher.Invoke(new Action(() =>
{
disPlayOrderTabCount();
}));
}
}
bool GetOrderIsFilter(oms_wei_order_info order)
{
if (order.order_id == "3737234765235244032")
{
if (order == null)
return true;
}
if (order == null) return true;
var headerStr = ((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString();
// 过滤店铺名称
if (!string.IsNullOrEmpty(txtShopName.Text.Trim()) && !(";" + txtShopName.Text.Trim() + ";").Contains(";" + order.shop_name + ";"))
{
return true;
}
// 过滤商品名称
if (!string.IsNullOrEmpty(txtGoodsName.Text.Trim()) && !order.order_items.Any(it => it.title.Contains(txtGoodsName.Text.Trim())))
{
return true;
}
if (((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString().StartsWith("待采购") && (order.purchase_status != 0 || order.status != 20))
{
return true;
}
if (((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString().StartsWith("待发货") && (order.purchase_status != 1 || order.status != 20))
{
return true;
}
if (((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString().StartsWith("待收货") && (/*order.purchase_status != 1 ||*/ (order.status != 30 && order.status != 100)))
{
return true;
}
if (((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString().StartsWith("退款单") && (/*order.status != 200 &&*/ (order.refunds?.Count).ParseToInt() == 0))
{
return true;
}
// 过滤id
if (!string.IsNullOrEmpty(txtOrderId.Text.Trim()) && !(";" + txtOrderId.Text.Trim().Replace(' ', ';').Replace(',', ';') + ";").Contains(";" + order.order_id + ";"))
{
return true;
}
if (headerStr.StartsWith("待采购") && !order.IsWaitBuy)
{
return true;
}
if (headerStr.StartsWith("待发货") && !order.IsWaitSend)
{
return true;
}
if (headerStr.StartsWith("待收货") && !order.IsWaitReceive)
{
return true;
}
if (headerStr.StartsWith("退款单") && !order.IsRefund)
{
return true;
}
return false;
}
@@ -409,7 +469,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
private void ChkSelectAll_Checked(object sender, RoutedEventArgs e)
{
foreach (var order in lstOrder.ToList())
foreach (var order in GlobalConfig.lstOrder.ToList())
{
order.IsSelect = true;
}
@@ -417,7 +477,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
private void ChkSelectAll_Unchecked(object sender, RoutedEventArgs e)
{
foreach (var order in lstOrder.ToList())
foreach (var order in GlobalConfig.lstOrder.ToList())
{
order.IsSelect = false;
}
@@ -432,9 +492,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
chkSelectAll.Checked -= ChkSelectAll_Checked;
chkSelectAll.Unchecked -= ChkSelectAll_Unchecked;
if (lstFilterOrder.All(s => s.IsSelect))
if (GlobalConfig.lstFilterOrder.All(s => s.IsSelect))
chkSelectAll.IsChecked = true;
else if (lstFilterOrder.All(s => !s.IsSelect))
else if (GlobalConfig.lstFilterOrder.All(s => !s.IsSelect))
chkSelectAll.IsChecked = false;
else
chkSelectAll.IsChecked = null;
@@ -27,7 +27,7 @@
<Path Margin="0,0,0,0" Fill="#409eff" Tag="{Binding order_id}" MouseLeftButtonDown="Path_MouseLeftButtonDown" Data="M80 432a128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128h-384a128 128 0 0 1-128-128v-384z m128-64a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64h-384z M816 144h-384a64 64 0 0 0-64 64 32 32 0 0 1-64 0 128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128 32 32 0 0 1 0-64 64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64z" Stretch="Uniform" />
</Border>
<Border x:Name="borderDeadline" Grid.Column="3" Margin="8,0,0,0" Background="#e8fbf9" BorderBrush="#d0fbea" BorderThickness="1" MinWidth="30" Height="24" CornerRadius="2">
<!--<Border x:Name="borderDeadline" Grid.Column="3" Margin="8,0,0,0" Background="#e8fbf9" BorderBrush="#d0fbea" BorderThickness="1" MinWidth="30" Height="24" CornerRadius="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
@@ -40,8 +40,23 @@
<TextBox x:Name="txtDeadline" Grid.Column="1" Margin="2,0,2,1" Foreground="#0397b5" VerticalContentAlignment="Center" VerticalAlignment="Center" Background="Transparent" IsReadOnly="True" MinWidth="20"
Text="{Binding delivery_deadline_str}" BorderThickness="0" />
</Grid>
</Border>-->
<Border x:Name="borderDeadline" Grid.Column="3" Margin="8,0,0,0" Background="{Binding StatusBoxBackColor}" BorderBrush="{Binding StatusBoxBorderColor}" BorderThickness="1" MinWidth="30" Height="24" CornerRadius="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border x:Name="borderDeadlineHead" Background="{Binding StatusBoxForeColor}" CornerRadius="2,0,10,2">
<TextBox Grid.Column="0" Margin="2,0,2,1" Foreground="White" VerticalContentAlignment="Center" VerticalAlignment="Center" Background="Transparent" IsReadOnly="True" MinWidth="20"
Text="{Binding delivery_deadline_status_str}" BorderThickness="0" />
</Border>
<TextBox x:Name="txtDeadline" Grid.Column="1" Margin="2,0,2,1" Foreground="{Binding StatusBoxForeColor}" VerticalContentAlignment="Center" VerticalAlignment="Center" Background="Transparent" IsReadOnly="True" MinWidth="20"
Text="{Binding delivery_deadline_str}" BorderThickness="0" />
</Grid>
</Border>
<Image Margin="8,8,0,8" Grid.Column="4" Width="24" Height="24" Source="{StaticResource OrderWeishopIcon}"></Image>
<uc:UcWaterMarkTextBox WaterMark="店铺名称" x:Name="txtShopName" Grid.Column="5" Margin="4,8,0,8" VerticalAlignment="Center" FontSize="14" Background="Transparent" IsReadOnly="True" Text="{Binding shop_name}" BorderThickness="0" />
</Grid>
@@ -5,7 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:_29WxOrderWpf.Ctrls.OrderCtrls"
xmlns:uc="clr-namespace:_29WxOrderWpf.UserControls"
mc:Ignorable="d"
mc:Ignorable="d" DataContextChanged="UserControl_DataContextChanged"
d:DesignHeight="250" d:DesignWidth="1200">
<Grid>
@@ -154,26 +154,30 @@
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="3">
<Border x:Name="borderDeadline" Grid.Row="1" Margin="8,0,0,0" Background="{Binding OrderItemStatusBackColor}" BorderBrush="{Binding OrderItemStatusBorderColor}"
BorderThickness="1" MinWidth="30" Height="auto" CornerRadius="2" HorizontalAlignment="Center">
<TextBox x:Name="txtDeadline" Grid.Column="1" Margin="2,0,2,1" Foreground="{Binding OrderItemStatusStrColor}" VerticalContentAlignment="Center" VerticalAlignment="Center"
Background="Transparent" IsReadOnly="True" MinWidth="20" Text="{Binding OrderItemStatusStr}" BorderThickness="0" />
</Border>
<TextBox Text="{Binding item_refund.statusStr}" Grid.Column="1" Grid.Row="2" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True"
x:Name="txtStatusStr" BorderThickness="0" Foreground="{Binding item_refund.refundStatusColor}" HorizontalAlignment="Center"
Visibility="{Binding ElementName=txtStatusStr,Path=Text,Converter={StaticResource HasTextVisibility}}"/>
<TextBox Text="{Binding item_refund.reasonTextStr}" Grid.Column="1" Grid.Row="3" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True"
x:Name="txtRefundReasonTextStr" BorderThickness="0" Foreground="#f56c6c" HorizontalAlignment="Center"
Visibility="{Binding ElementName=txtRefundReasonTextStr,Path=Text,Converter={StaticResource HasTextVisibility}}"/>
<TextBox Text="{Binding refundResultStr}" Grid.Column="1" Grid.Row="4" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True"
x:Name="txtRefundResult" BorderThickness="0" Foreground="#f56c6c" HorizontalAlignment="Center"
Visibility="{Binding ElementName=txtRefundResult,Path=Text,Converter={StaticResource HasTextVisibility}}"/>
</WrapPanel>
<TextBox Text="{Binding item_refund.statusStr}" Grid.Column="1" Grid.Row="1" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True"
BorderThickness="0" Foreground="{Binding item_refund.refundStatusColor}" HorizontalAlignment="Center"/>
<TextBox Text="{Binding item_refund.reasonTextStr}" Grid.Column="1" Grid.Row="2" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True"
BorderThickness="0" Foreground="#f56c6c" HorizontalAlignment="Center"/>
<TextBox Text="{Binding refundResult}" Grid.Column="1" Grid.Row="3" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True"
BorderThickness="0" Foreground="#f56c6c" HorizontalAlignment="Center"/>
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="4">
<TextBox Text="收货地址:" Grid.Column="1" Grid.Row="1" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True" BorderThickness="0"/>
<uc:UcWaterMarkTextBox WaterMark="收货地址" Text="{Binding item_order.address_str}" Grid.Column="1" Grid.Row="1" Margin="0,2,4,2" VerticalAlignment="Top"
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="5">
<TextBox Text="收货地址:" Grid.Column="1" Grid.Row="5" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True" BorderThickness="0"/>
<uc:UcWaterMarkTextBox WaterMark="收货地址" Text="{Binding item_order.address_str}" Grid.Column="1" Grid.Row="5" Margin="0,2,4,2" VerticalAlignment="Top"
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"/>
<Button Grid.Column="10" x:Name="btnSeeAddressDetail" Background="Transparent" Foreground="#409eff" BorderBrush="Transparent"
Margin="4,0,0,0" Content="👁" Click="btnSeeAddressDetail_Click" Tag="{Binding order_id}"></Button>
</WrapPanel>
<Button Grid.Column="1" Grid.Row="5" x:Name="btnGetRefundAddress" Background="Transparent" HorizontalAlignment="Center" Foreground="#409eff" BorderBrush="Transparent"
Margin="4,0,0,0" Content="仓库退货地址:点击复制" Click="btnGetRefundAddress_Click" Tag="{Binding order_id}"></Button>
<!--<Button Grid.Column="1" Grid.Row="6" x:Name="btnGetRefundAddress" Background="Transparent" HorizontalAlignment="Center" Foreground="#409eff" BorderBrush="Transparent"
Margin="4,0,0,0" Content="仓库退货地址:点击复制" Click="btnGetRefundAddress_Click" Tag="{Binding order_id}"></Button>-->
</Grid>
<!--单号-->
@@ -249,6 +253,31 @@
Margin="4,0,0,0" Content="编辑" Click="btnCopyRemark_Click"></Button>
</WrapPanel>
</Grid>
<!--备注-->
<Grid Grid.Column="7" Background="Transparent" VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<!--<Button Grid.Column="1" Grid.Row="2" Background="Transparent" HorizontalAlignment="Center"
Foreground="#409eff" BorderBrush="Transparent" Margin="4,0,0,0" Content="核对拍单" Click=""></Button>-->
<!--<Button Grid.Column="1" Grid.Row="1" Background="Transparent" x:Name="btnBuyOrder" Click="btnBuyOrder_Click"
Visibility="{Binding item_order.IsWaitBuy, Converter={StaticResource visibleToVisibilityConverter}}"
Style="{StaticResource BasePageButtonLightStyle}" Margin="4,0,0,0" Content="关联拍单" Width="56" Height="24"/>-->
<Button Grid.Column="1" Grid.Row="1" Background="Transparent" x:Name="btnBuyOrder" Click="btnBuyOrder_Click"
Visibility="{Binding item_order.IsWaitBuy, Converter={StaticResource visibleToVisibilityConverter}}"
Style="{StaticResource BasePageButtonLightStyle}" Margin="4,0,0,0" Content="{Binding buy_map,Converter={StaticResource HasTextVisibility}}"
HorizontalAlignment="Center" MinWidth="38" Height="24"/>
</Grid>
</Grid>
</Grid>
</UserControl>
@@ -1,4 +1,8 @@
using System;
using _29WxOrderWpf.BaseWindows;
using AllBase;
using AllBase.Helper;
using AllBase.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -12,6 +16,7 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using TemuKJD.ToolForms;
namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
@@ -27,14 +32,14 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
private void btnSeeAddressDetail_Click(object sender, RoutedEventArgs e)
{
var order = this.DataContext as AllBase.Model.oms_wei_order_info;
var order = this.DataContext as AllBase.Model.oms_wei_order_item_info;
if (order == null)
return;
}
private void btnGetRefundAddress_Click(object sender, RoutedEventArgs e)
{
var order = this.DataContext as AllBase.Model.oms_wei_order_info;
var order = this.DataContext as AllBase.Model.oms_wei_order_item_info;
if (order == null)
return;
}
@@ -48,6 +53,60 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
}
private void btnBuyOrder_Click(object sender, RoutedEventArgs e)
{
var orderItem = this.DataContext as AllBase.Model.oms_wei_order_item_info;
if (orderItem == null)
{
BaseMsgWindow.ShowError(MainWindow.Instance, "订单信息为空");
return;
}
if (GlobalConfig.CurrentPddBuyer == null)
{
BaseMsgWindow.ShowError(MainWindow.Instance, "请选择买手号");
return;
}
if (GlobalConfig.CurrentPddBuyer.status == "在线")
PddMobileLoginForm.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer);
if (GlobalConfig.CurrentPddBuyer.status != "在线")
{
BaseMsgWindow.ShowError(MainWindow.Instance, "买手号掉线");
return;
}
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, orderItem, GlobalConfig.CurrentPddBuyer, orderItem.buy_map);
//所有订单页面
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/orders.html?type=0&comment_tab=1&combine_orders=1&" +
"main_orders=1&refer_page_name=personal&refer_page_id=10001_1782219035613_a9ulipk4k3&refer_page_sn=10001";
//已有拍单关联的跳的到订单确认界面
if (orderItem.buy_map != null)
{
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.buy_map.map_sku_id +
"&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.buy_map.map_goods_id + "&goods_number=" + +orderItem.sku_cnt +
"&page_from=101&detail_id=" + Randomx.GetNumber(11) + "&_oak_rcto=YW" +
Randomx.GetWordNumber("JvLXvJ8Fx9mUIW34yn103TOlATJGk5PaZshD6pY1bsVrsIjWdxWwjCoNX3IGT".Length) + "_VWkP5_q-1QNqGg" +
"&order_extra_type=1&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail" +
"&refer_page_id=10014_" + BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + Randomx.GetNumber(3) + "_tny5ifswls&refer_page_sn=10014";
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.buy_map.map_sku_id +
"&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.buy_map.map_goods_id + "&goods_number=" + +orderItem.sku_cnt +
"&page_from=101";
}
buyOrderForm.ShowDialog();
}
private void UserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
btnBuyOrder.Content = order_item.buy_map == null ? "关联拍单" : "拍单";
}
else
{
btnBuyOrder.Content = "关联拍单";
}
}
}
+5 -3
View File
@@ -6,11 +6,11 @@
xmlns:local="clr-namespace:_29WxOrderWpf"
xmlns:orderctrls="clr-namespace:_29WxOrderWpf.Ctrls.OrderCtrls"
xmlns:shopctrls="clr-namespace:_29WxOrderWpf.Ctrls.ShopCtrls"
xmlns:userctrls="clr-namespace:_29WxOrderWpf.UserControls"
mc:Ignorable="d" Style="{StaticResource BaseNoneBorderWindowStyle}"
xmlns:userctrls="clr-namespace:_29WxOrderWpf.UserControls" xmlns:buyerctrls="clr-namespace:_29WxOrderWpf.Ctrls.BuyerCtrls"
mc:Ignorable="d" Style="{StaticResource BaseNoneBorderWindowStyle}"
x:Name="mainWindow" Title="MainWindow" Height="900" Width="1600" Loaded="Window_Loaded" Closing="BaseWindow_Closing">
<Grid Background="Transparent" Margin="{Binding ElementName=mainWindow, Path=Padding}">
<Grid Background="Transparent" x:Name="mainGrid" Margin="{Binding ElementName=mainWindow, Path=Padding}">
<Grid.RowDefinitions>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
@@ -32,6 +32,8 @@
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<orderctrls:OrderListCtrl x:Name="orderListCtrl" Grid.Column="1" Visibility="Collapsed"></orderctrls:OrderListCtrl>
<buyerctrls:PDDBuyerSelectCtrl Width="240" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="8"/>
<Grid x:Name="gridUser" Visibility="Hidden" Grid.ColumnSpan="2" Background="#7F000000">
<Border CornerRadius="4" Width="500" Height="600" Background="White">
<shopctrls:ShopListCtrl x:Name="shopListCtrl" Visibility="{Binding ElementName=gridUser,Mode=TwoWay,Path=Visibility}" Margin="2"
+188 -55
View File
@@ -6,6 +6,7 @@ using AllBase.Extension;
using AllBase.Helper;
using AllBase.Model;
using AllBase.Model.Result;
using CefSharp;
using NaiBa.Util;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
@@ -71,7 +72,51 @@ namespace _29WxOrderWpf
{
GetServerShop();
});
Task.Run(() =>
{
GetPddBuyer();
});
}
//CefSharp.Wpf.ChromiumWebBrowser browser = new CefSharp.Wpf.ChromiumWebBrowser();
//browser.Address = "https://www.baidu.com";
//Grid.SetRow(browser, 1);
//this.mainGrid.Children.Add(browser);
//Task. Run(() => {
// Thread.Sleep(2000);
// Dispatcher.Invoke(new Action(() => {
// browser.Visibility = Visibility.Hidden;
// }));
// Thread.Sleep(1000);
// Dispatcher.Invoke(new Action(() => {
// browser.Address = "https://www.sina.com.cn";
// }));
// Thread.Sleep(3000);
// var jsStr = @"window.scrollTo(0, document.body.scrollHeight);";
// var client = browser.GetDevToolsClient();
// if (client != null)
// {
// var result = client.Runtime.EvaluateAsync(jsStr, null, true, null, null, true, null, true);
// //result.Wait(5000);
// //string resultStr = result.Result.Result.Value.ParseToString();
// ////if (resultStr.ParseToInt() > 0)
// //{
// // CEFBrowser.DeleteCookie(browser.GetCookieManager(null));
// // //return;
// //}
// }
// Dispatcher.Invoke(new Action(() => {
// }));
// Thread.Sleep(3000);
// Dispatcher.Invoke(new Action(() => {
// browser.Visibility = Visibility.Visible;
// }));
//});
}
#region 反抓包功能
@@ -194,72 +239,160 @@ namespace _29WxOrderWpf
e.Cancel = true;
}
public bool readShop { get; set; } = false;
#region 读取微信店铺
public bool isReadShop { get; set; } = false;
public bool hasReadShop { get; set; } = false;
public void GetServerShop()
{
if (readShop == false)
if (isReadShop)
return;
List<ShopLoginInfo> list = new List<ShopLoginInfo>();
Dispatcher.Invoke(new Action(() =>
{
List<ShopLoginInfo> list = new List<ShopLoginInfo>();
Dispatcher.Invoke(new Action(() =>
}));
isReadShop = true;
int page = 0;
while (true)
{
page++;
var url = BaseClass.Build29WxObjString("shop/get_shop_list");
var data = UserLogin.GetSignaturex() + "&page=" + page;
data += "&is_get_erp_shop_id=true";
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html)
|| !html.Contains("shop_id") || !html.Contains("shop_account") || !html.Contains("login_pass"))
{
}));
readShop = true;
int page = 0;
while (true)
{
page++;
var url = BaseClass.Build29WxObjString("shop/get_shop_list");
var data = UserLogin.GetSignaturex() + "&page=" + page;
data += "&is_get_erp_shop_id=true";
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html)
|| !html.Contains("shop_id") || !html.Contains("shop_account") || !html.Contains("login_pass"))
{
break;
}
var jArr = JObject.Parse(html)["data"];
if (jArr.Count() == 0)
break;
foreach (JObject jObj in jArr)
{
var shop = ShopBLL.DeserializationShop(jObj);
var shopExist = list.Where(l => l.ShopId == shop.ShopId).ToList();
if (shopExist != null)
shopExist.Remove(shop);
list.Add(shop);
if (!GlobalConfig.ShopLoginList.Any(s => s.ShopId == shop.ShopId && !shop.is_point_shop_expire))
{
Dispatcher.Invoke(new Action(() =>
{
GlobalConfig.ShopLoginList.Add(shop);
}));
}
}
break;
}
Dispatcher.Invoke(new Action(() =>
var jArr = JObject.Parse(html)["data"];
if (jArr.Count() == 0)
break;
foreach (JObject jObj in jArr)
{
foreach (var shop in GlobalConfig.ShopLoginList.Where(s => !list.Any(ss => ss.ShopId == s.ShopId)).ToList())
var shop = ShopBLL.DeserializationShop(jObj);
var shopExist = list.Where(l => l.ShopId == shop.ShopId).ToList();
if (shopExist != null)
shopExist.Remove(shop);
list.Add(shop);
if (!GlobalConfig.ShopLoginList.Any(s => s.ShopId == shop.ShopId && !shop.is_point_shop_expire))
{
GlobalConfig.ShopLoginList.Remove(shop);
Dispatcher.Invoke(new Action(() =>
{
GlobalConfig.ShopLoginList.Add(shop);
}));
}
foreach (var shop in GlobalConfig.ShopLoginList.Where(s => s.is_point_shop_expire).ToList())
{
GlobalConfig.ShopLoginList.Remove(shop);
}
}));
readShop = false;
hasReadShop = true;
}
}
Dispatcher.Invoke(new Action(() =>
{
foreach (var shop in GlobalConfig.ShopLoginList.Where(s => !list.Any(ss => ss.ShopId == s.ShopId)).ToList())
{
GlobalConfig.ShopLoginList.Remove(shop);
}
foreach (var shop in GlobalConfig.ShopLoginList.Where(s => s.is_point_shop_expire).ToList())
{
GlobalConfig.ShopLoginList.Remove(shop);
}
}));
isReadShop = false;
hasReadShop = true;
}
#endregion
#region 读取拼多多买手号
public bool isGetPddBuyer = false;
public bool hasGetPddBuyer = false;
/// <summary>
/// 读取拼多多买手
/// </summary>
public void GetPddBuyer()
{
if (isGetPddBuyer)
return;
isGetPddBuyer = true;
//var ids = dgvBuyer.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colSelect"].Value.ParseToBool() == true).Select(s => s.Cells["colBuyerId"].Value.ParseToString()).ToList();
//Invoke(new Action(() => { pbLoading.Visible = true; }));
try
{
var url = BaseClass.Build29PDDObjString("user/get_buyer");
var data = UserLogin.GetSignaturex();
data += "&page_size=200";
var result = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(result) || !result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(url, data);
if (result.Contains("\"code\":200"))
{
List<BuyerLoginInfo> loginInfoLst = JsonHelper.DeserializeJsonToList<BuyerLoginInfo>(JsonHelper.JObjectParse(result)["data"].ParseToString());
foreach (var buyer in GlobalConfig.PDDBuyerLoginList.Where(bu => !loginInfoLst.Any(b => b.buyer_id == bu.buyer_id)).ToList())
{
Dispatcher.Invoke(new Action(() => { GlobalConfig.PDDBuyerLoginList.Remove(buyer); }));
}
foreach (var b in loginInfoLst)
{
Dispatcher.Invoke(new Action(() =>
{
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(bu => bu.buyer_id == b.buyer_id);
if (buyer == null)
GlobalConfig.PDDBuyerLoginList.Add(b);
else
{
buyer.add_time = b.add_time;
buyer.buyer_id = b.buyer_id;
buyer.buyer_name = b.buyer_name;
buyer.buyer_nick = b.buyer_nick;
buyer.cookie = b.cookie;
buyer.mdy_time = b.mdy_time;
buyer.notes = b.notes;
buyer.status = b.status;
buyer.user_name = b.user_name;
}
}));
}
//Invoke(new Action(() =>
//{
//dgvBuyer.Rows.Clear();
//cmbBuyer.Items.Clear();
//}));
foreach (var buyer in GlobalConfig.PDDBuyerLoginList)
{
//Invoke(new Action(() =>
//{
//BindBuyer(buyer, "", ids);
//cmbBuyer.Items.Add(buyer.buyer_nick);
//}));
}
}
}
catch
{
}
//Invoke(new Action(() =>
//{
// pbLoading.Visible = false;
//}));
isGetPddBuyer = false;
hasGetPddBuyer = true;
}
#endregion
}
}
+78 -7
View File
@@ -297,13 +297,84 @@
</Style.Triggers>
</Style>
<Style x:Key="RoundedComboBox" TargetType="{x:Type ComboBox}">
<Setter Property="Width" Value="auto"></Setter>
<Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
<Setter Property="BorderBrush" Value="{DynamicResource pageColorBrush}"></Setter>
<Setter Property="BorderThickness" Value="1"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBox}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Background="Transparent">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<!--下拉箭头-->
<ToggleButton Grid.Column="1" ClickMode="Press" Focusable="False" Cursor="Hand"
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
Margin="2" MinWidth="0" MinHeight="0" Width="Auto">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="MinWidth" Value="0"/>
<Setter Property="MinHeight" Value="0"/>
<Setter Property="Width" Value="Auto"/>
<Setter Property="Height" Value="Auto"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="#00000000"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<DockPanel Background="{TemplateBinding Background}" LastChildFill="False" SnapsToDevicePixels="True">
<Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" DockPanel.Dock="Right" >
<Path Data="M0,0L3.5,4 7,0z" Fill="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</DockPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True"></Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
<!--项内容-->
<ContentPresenter IsHitTestVisible="False" Content="{TemplateBinding SelectionBoxItem}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" VerticalAlignment="Center" Margin="3" HorizontalAlignment="Stretch" />
<TextBox x:Name="PART_EditableTextBox" HorizontalAlignment="Stretch" Focusable="True" Visibility="Collapsed" IsReadOnly="False"/>
<!--下拉显示面板HorizontalOffset:设置下拉面板的相对位置-->
<Popup HorizontalOffset="-1" Width="{TemplateBinding ActualWidth}"
IsOpen="{TemplateBinding IsDropDownOpen}" Focusable="False" PopupAnimation="Slide">
<Grid SnapsToDevicePixels="True" HorizontalAlignment="Stretch">
<Border BorderThickness="1,1,1,1" BorderBrush="{TemplateBinding BorderBrush}" HorizontalAlignment="Stretch" CornerRadius="0">
<Border.Background>
<SolidColorBrush Color="White" />
</Border.Background>
</Border>
<ScrollViewer SnapsToDevicePixels="True" HorizontalAlignment="Stretch" >
<StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" HorizontalAlignment="Stretch" />
</ScrollViewer>
</Grid>
</Popup>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="ComboBoxTemplate1" TargetType="{x:Type ComboBox}">
<Border BorderBrush="Black" BorderThickness="1">
<ToggleButton x:Name="toggleButton" ClickMode="Press">
+4
View File
@@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CefSharp.Common" version="138.0.340" targetFramework="net462" />
<package id="CefSharp.Wpf" version="138.0.340" targetFramework="net462" />
<package id="chromiumembeddedframework.runtime.win-x64" version="138.0.34" targetFramework="net462" />
<package id="chromiumembeddedframework.runtime.win-x86" version="138.0.34" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
</packages>
+36 -4
View File
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props')" />
<Import Project="..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props" Condition="Exists('..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props')" />
<Import Project="..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props" Condition="Exists('..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -14,6 +17,8 @@
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
@@ -58,7 +63,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
@@ -69,7 +74,7 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
@@ -79,6 +84,19 @@
<Reference Include="BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
<HintPath>..\packages\Portable.BouncyCastle.1.8.6\lib\net40\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="CefSharp, Version=138.0.340.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Common.138.0.340\lib\net462\CefSharp.dll</HintPath>
</Reference>
<Reference Include="CefSharp.Core, Version=138.0.340.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Common.138.0.340\lib\net462\CefSharp.Core.dll</HintPath>
</Reference>
<Reference Include="CefSharp.WinForms, Version=138.0.340.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.WinForms.138.0.340\lib\net462\CefSharp.WinForms.dll</HintPath>
</Reference>
<Reference Include="CefSharp.Wpf, Version=138.0.340.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Wpf.138.0.340\lib\net462\CefSharp.Wpf.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.3.1.9, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.3.1\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
@@ -123,7 +141,10 @@
<Compile Include="DouYinModel\Param\ShopManage\DouShopSettingParam.cs" />
<Compile Include="DouYinModel\Result\DouGoodsInfo.cs" />
<Compile Include="DouYinModel\Result\DouOrderListInfo.cs" />
<Compile Include="DouYinModel\Result\ShopLoginInfo.cs" />
<Compile Include="Model\oms_wei_external_procurement_log.cs" />
<Compile Include="Model\Params\TransitWarehouseParam.cs" />
<Compile Include="Model\Params\WaybillHelper.cs" />
<Compile Include="Model\Result\ShopLoginInfo.cs" />
<Compile Include="DouYinModel\Result\DouSubAccountModel.cs" />
<Compile Include="DouYinModel\Result\DouYinAfterSaleOrderModel.cs" />
<Compile Include="DouYinModel\Result\DouYinOrderModel.cs" />
@@ -143,9 +164,10 @@
<Compile Include="Model\oms_wei_order_info.cs" />
<Compile Include="Model\oms_wei_order_item_info.cs" />
<Compile Include="Model\oms_wei_refund_info.cs" />
<Compile Include="Model\o_shop_info.cs" />
<Compile Include="Model\PddMultiBuyerInfo.cs" />
<Compile Include="Model\PddPifaShopInfo.cs" />
<Compile Include="Model\Result\BuyerLoginInfo.cs" />
<Compile Include="Model\WXBuyMapInfo.cs" />
<Compile Include="MultiThreadClient.cs" />
<Compile Include="OutExcel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -170,6 +192,16 @@
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\chromiumembeddedframework.runtime.win-x64.138.0.34\build\chromiumembeddedframework.runtime.win-x64.props'))" />
<Error Condition="!Exists('..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\chromiumembeddedframework.runtime.win-x86.138.0.34\build\chromiumembeddedframework.runtime.win-x86.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets'))" />
</Target>
<Import Project="..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.138.0.340\build\CefSharp.Common.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
+5
View File
@@ -574,6 +574,7 @@ namespace AllBase
public static string ParentAuthority { get; set; }
public static string UserAuthority { get; set; }
public static string ParentUserName { get; set; }
public static string MainUserName { get { return string.IsNullOrEmpty(ParentUserName) ? UserName : ParentUserName; } }
public static int SaLevel { get; set; }
public static bool IsLoginSuccess { get; set; }
@@ -815,6 +816,10 @@ namespace AllBase
{
return LoginApiUrl + "/wxxd_" + file + "?obj=" + BaseClass.MainPath + "/wxxd_" + file;
}
public static string Build29PDDObjString(string file, bool IsLoginDef = false)
{
return LoginApiUrl + "/bxx_" + file + "?obj=" + BaseClass.MainPath + "/bxx_" + file;
}
/// <summary>
/// 返回固定字节长度
+17 -3
View File
@@ -1,6 +1,7 @@
using AllBase.DouYinModel.Param.ConfigManage;
using AllBase.Model;
using AllBase.Model.Result;
using NaiBa.Util;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@@ -16,6 +17,19 @@ namespace AllBase.Helper
/// 店铺列表
/// </summary>
public static ObservableCollection<ShopLoginInfo> ShopLoginList { get; set; } = new ObservableCollection<ShopLoginInfo>();
/// <summary>
/// 拼多多买手列表
/// </summary>
public static ObservableCollection<BuyerLoginInfo> PDDBuyerLoginList { get; set; } = new ObservableCollection<BuyerLoginInfo>();
public static BuyerLoginInfo CurrentPddBuyer { get; set; }
/// <summary>
/// 订单列表
/// </summary>
public static ObservableCollection<oms_wei_order_info> lstOrder { get; set; } = new ObservableCollection<oms_wei_order_info>();
/// <summary>
/// 过滤的订单列表
/// </summary>
public static ObservableCollection<oms_wei_order_info> lstFilterOrder { get; set; } = new ObservableCollection<oms_wei_order_info>();
public static SystemSettings SystemSettings { get; set; }
@@ -34,9 +48,9 @@ namespace AllBase.Helper
public static System.Drawing.Color DefaultMainColorLight { get; set; } = System.Drawing.Color.FromArgb(185, 215, 255);
public static System.Drawing.Color DefaultBorderColor { get; set; } = System.Drawing.Color.FromArgb(25, 98, 200);
public static System.Drawing.Color MainColor { get; set; } = System.Drawing.Color.FromArgb(63, 126, 255);
public static System.Drawing.Color MainColorLight { get; set; } = System.Drawing.Color.FromArgb(185, 215, 255);
public static System.Drawing.Color BorderColor { get; set; } = System.Drawing.Color.FromArgb(25, 98, 200);
public static System.Drawing.Color MainColor { get; set; } = System.Drawing.Color.FromArgb(152, 99, 143);
public static System.Drawing.Color MainColorLight { get; set; } = System.Drawing.Color.FromArgb(245, 235, 255);
public static System.Drawing.Color BorderColor { get; set; } = System.Drawing.Color.FromArgb(107, 83, 147);
public static System.Drawing.Color PddMainColor { get; set; } = System.Drawing.Color.FromArgb(225, 120, 135);
public static System.Drawing.Color PddMainColorLight { get; set; } = System.Drawing.Color.FromArgb(255, 235, 245);
+13
View File
@@ -26,6 +26,19 @@ namespace AllBase
return json;
}
public static Newtonsoft.Json.Linq.JObject JObjectParse(string json)
{
try
{
Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(json);
return obj;
}
catch
{
return null;
}
}
/// <summary>
/// 解析JSON字符串生成对象实体
/// </summary>
@@ -0,0 +1,95 @@
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Params
{
public class TransitWarehouseParam
{
/// <summary>
/// 中转仓编码
/// </summary>
public string TransId { get; set; }
/// <summary>
/// 仓位
/// </summary>
public string TransName { get; set; }
/// <summary>
/// 收件人
/// </summary>
public string TransUserName { get; set; }
/// <summary>
/// 电话
/// </summary>
public string TransMobile { get; set; }
/// <summary>
/// 详细地址
/// </summary>
public string TransDetailAddress { get; set; }
public int province_id { get; set; }
public int city_id { get; set; }
public int district_id { get; set; }
}
public class TransitWarehouseData
{
public static string TransitWarehouseDataStr = @"
XDYWHC ;武汉2仓 ;杨先生 ;13044121071 ;湖北省武汉市汉阳区洲头街道汉新大道2号鲲鹏公司 ;13 ;180 ;1548
XDYSHANDC ;山东2仓 ;鸿鹄小申 ;13044121239 ;山东省临沂市费县南外环东转盘往东200米顺通快递有限公司(仓库二楼) ;22 ;292 ;2415
XDYCHONGQC ;重庆2仓 ;翁桂柱 ;18923911055 ;重庆市九龙坡区中梁山街道云飞九龙香山(二纵线东50米)重庆九龙坡区渝州公司 ;32 ;394 ;3339
XDYGZC ;广州仓 ;何外华 ;13826339849 ;广州市从化区太平镇高埔细埔街99号东门4栋3楼 ;6 ;76 ;692
XDYBJC ;北京仓 ;胡萍 ;18565773752 ;北京市顺义区光明街道滨河小区七区1号楼 ;2 ;52 ;511
XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市上海市普陀区真如镇街道真北路2653弄G区 ;25 ;321 ;2709
XDYJJC ;晋江仓 ;安群 ;19905951984 ;福建省泉州市南安市霞美镇温山村431号鸿鹄大厦 ;4 ;58 ;569
XDYHEBC ;哈尔滨仓 ;韩健 ;13044121250 ;黑龙江省哈尔滨市双城区新兴镇钱江路南侧韵达快递分拨中心发出库房84号装车口旁边电梯 ;12 ;167 ;1426
XDYXA ;西安仓 ;方先生 ;15813526665 ;陕西省西安市雁塔区田马路厨具市场内韵达超市(田马路店);24 ;311 ;2599
XDYYWC ;义乌仓 ;小田 ;19058117371 ;浙江省金华市义乌市北苑街道西站大道妈妈商贸6号库3楼中库走到底鸿鹄云仓(康诚楼上) ;31 ;386 ;3409
XDYZZC ;郑州仓 ;朱红艳 ;13044121247 ;河南省郑州市经济开发区祥云办公处润之新物流园韵达速递 ;11 ;149 ;1259
XDYGYC ;贵阳仓 ;潘小娘 ;19218546304 ;贵州省黔南州龙里县谷脚镇韵达分拨中心 综合楼一楼 食堂隔壁(不要放驿站,送到仓库) ;8 ;116 ;1017
XDYKMC ;昆明仓 ;杨源炜 ;19533700289 ;云南省昆明市宜良县北古城镇红枫路一号韵达分拨(不要放驿站,送到仓库) ;30 ;367 ;3109
XDYCDC ;成都仓 ;谢春虹 ;15828201479 ;四川省资阳市乐至县仙鹤大道桑都街15-19号仓库(不要放驿站,送到仓库) ;26 ;340 ;2898
XDYSSC ;河北仓 ;田女士 ;13382898026 ;河北省衡水市安平县兴安大道灿达创业基地韵达库房A-1 ;10 ;143 ;1180
XDYSZC ;深圳仓 ;峰峰 ;15343351331 ;广东省东莞市东莞市凤岗镇 浸校塘东良巷兔喜生活(云仓);6 ;79 ;732";
static List<TransitWarehouseParam> transitWarehouseList = null;
public static List<TransitWarehouseParam> TransitWarehouseList
{
get
{
if (transitWarehouseList == null)
{
transitWarehouseList = new List<TransitWarehouseParam>();
var strArr = TransitWarehouseDataStr.Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (var str in strArr)
{
var arr = str.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
if (arr.Length > 7)
{
TransitWarehouseParam tw = new TransitWarehouseParam()
{
TransId = arr[0].Trim(),
TransName = arr[1].Trim(),
TransUserName = arr[2].Trim(),
TransMobile = arr[3].Trim(),
TransDetailAddress = arr[4].Trim(),
province_id = arr[5].Trim().ParseToInt(),
city_id = arr[6].Trim().ParseToInt(),
district_id = arr[7].Trim().ParseToInt(),
};
transitWarehouseList.Add(tw);
}
}
}
return transitWarehouseList;
}
set
{
}
}
}
}
+27
View File
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Params
{
public class WaybillHelper
{
//中国移动‌:134、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198。
//中国联通‌:130、131、132、145、155、156、166、175、176、185、186、196。其中‌145号段‌主要用于上网卡。
//中国电信‌:133、149、153、173、177、180、181、189、190、191、193、199。
//中国广电‌:192。作为第四大运营商,其号段于2022年开始放号。
public static List<int> MobileHead { get; set; } = new List<int>()
{
134, 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 172, 178, 182, 183, 184, 187, 188, 195, 197, 198,
130, 131, 132, 155, 156, 166, 175, 176, 185, 186, 196,
133, 149, 153, 173, 177, 180, 181, 189, 190, 191, 193, 199,
};
public static List<string> LastName { get; set; } = new List<string>()
{
"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "沈", "杨", "朱", "许", "何", "张",
};
}
}
+31
View File
@@ -0,0 +1,31 @@
using AllBase.Model.MvvmBaseClasses;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace AllBase.Model.Result
{
public class BuyerLoginInfo : PropertyNotifyObject
{
public int id { get; set; }
public string user_name { get; set; }
public string buyer_id { get; set; }
public string buyer_name { get; set; }
public string buyer_nick { get; set; }
public string cookie { get; set; }
public string status
{
get { return this.GetValue(x => x.status); }
set { this.SetValue(x => x.status, value); }
}
public string verify_auth_token { get; set; }
public string notes { get; set; }
public DateTime add_time { get; set; }
public DateTime mdy_time { get; set; }
public CefSharp.Wpf.ChromiumWebBrowser wpf_browser { get; set; }
public CefSharp.WinForms.ChromiumWebBrowser browser { get; set; }
}
}
@@ -62,5 +62,29 @@ namespace AllBase.Model.Result
public bool is_point_shop_expire { get; set; }
public int expire_time { get; set; }
public string openid { get; set; }
}
public class ShopCompany
{
public string UserName { get; set; }
public string LoginName { get; set; }
public string AccountId { get; set; }
public string AccountName { get; set; }
public string LoginStatus { get; set; }
/// <summary>
/// 拼多多校验数据列表
/// </summary>
public string AntiContent { get; set; }
/// <summary>
/// 拼多多店铺信息
/// </summary>
public string MallId { get; set; }
/// <summary>
/// 微信小店开放Id信息
/// </summary>
public string openid { get; set; }
}
}
+31
View File
@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model
{
public class WXBuyMapInfo
{
public long id { get; set; }
public string user_name { get; set; }
public string spu_code { get; set; }
public string sku_code { get; set; }
public string map_url { get; set; }
public string map_goods_name { get; set; }
/// <summary>
/// sku规格名称
/// </summary>
public string map_spec_name { get; set; }
public string map_goods_id { get; set; }
public string map_sku_id { get; set; }
/// <summary>
/// 发货地(省,市)
/// </summary>
public string map_send_address { get; set; }
public string transit_warehouse_id { get; set; }
public DateTime add_time { get; set; }
public DateTime mdy_time { get; set; }
}
}
-14
View File
@@ -1,14 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model
{
public class o_shop_info
{
public bool is_select { get; set; }
public long id { get; set; }
}
}
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model
{
public class oms_wei_external_procurement_log
{
public long id { get; set; }
public string out_order_no { get; set; }
public string order_no { get; set; }
public string order_sku_id { get; set; }
public string buyer_account { get; set; }
public int? out_amount { get; set; }
public string purchaser_note { get; set; }
}
}
+95 -12
View File
@@ -10,6 +10,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
namespace AllBase.Model
{
@@ -29,16 +30,49 @@ namespace AllBase.Model
public Visibility order_item5_visibility { get { return order_item5 == null ? Visibility.Collapsed : Visibility.Visible; } }
public ObservableCollection<oms_wei_refund_info> refunds { get; set; } = new ObservableCollection<oms_wei_refund_info>();
//public oms_wei_refund_info refund
//{
// get
// {
// if (refunds.FirstOrDefault() != null)
// return refunds.FirstOrDefault();
// return new oms_wei_refund_info();
// }
//}
/// <summary>
/// 待采购
/// </summary>
public bool IsWaitBuy
{
get
{
if (order_items.All(oi => oi.item_transit_order != null)) return false;
if (purchase_status != 0) return false;
if (!out_order_no.IsNullOrEmpty()) return false;
if (status != 20 && status != 21) return false;
return true;
}
set { }
}
/// <summary>
/// 待发货
/// </summary>
public bool IsWaitSend
{
//get { return (purchase_status == 1 || !string.IsNullOrEmpty(out_order_no)) && (status == 20 || status == 21); }
get
{
if (purchase_status != 1 && string.IsNullOrEmpty(out_order_no) && !order_items.All(oi => oi.item_transit_order != null)) return false;
if (status != 20 && status != 21) return false;
return true;
}
set { }
}
/// <summary>
/// 待收货
/// </summary>
public bool IsWaitReceive
{
get { return status == 30 || status == 100; }
set { }
}
public bool IsRefund
{
get { return refunds?.Count > 0; }
set { }
}
public string orderStatusStr
{
@@ -90,7 +124,7 @@ namespace AllBase.Model
/// <summary>
/// 订单延迟发货时间状态文本
/// 订单总状态文本
/// </summary>
public string delivery_deadline_status_str
{
@@ -100,6 +134,8 @@ namespace AllBase.Model
return "退款中";
else if (this.refunds.Any(r => r.statusStr == "退款完成" || r.statusStr == "退货退款完成"))
return "退款完成";
else if (this.refunds.Any(r => !r.statusStr.IsNullOrEmpty()))
return this.refunds.FirstOrDefault(r => !r.statusStr.IsNullOrEmpty()).statusStr;
if (this.status == 20 || this.status == 21)
{
return "剩余";
@@ -108,6 +144,7 @@ namespace AllBase.Model
}
set { /*delivery_deadline_status_str = value;*/ }
}
/// <summary>
/// 延迟发货时间(微信小店:商品发货时效,超时此时间未发货即为发货超时)文本
/// </summary>
@@ -134,6 +171,54 @@ namespace AllBase.Model
set { /*delivery_deadline_str = value;*/ }
}
public SolidColorBrush StatusBoxForeColor
{
get
{
if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
return new SolidColorBrush(Color.FromRgb(250, 71, 51)); // #fa4733
else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
return new SolidColorBrush(Color.FromRgb(103, 194, 58)); // #67c23a
else
return new SolidColorBrush(Color.FromRgb(3, 151, 181)); // #0397b5
}
set { }
}
public SolidColorBrush StatusBoxBackColor
{
get
{
if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
return new SolidColorBrush(Color.FromArgb(26, 250, 71, 51)); // #fa4733 0.2
else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
return new SolidColorBrush(Color.FromArgb(26, 103, 194, 58)); // #67c23a 0.2
else
return new SolidColorBrush(Color.FromArgb(26, 3, 151, 181)); // #0397b5 0.2
}
set { }
}
public SolidColorBrush StatusBoxBorderColor
{
get
{
//if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
// return new SolidColorBrush(Color.FromRgb(246, 212, 210)); // #f6d4d2
//else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
// return new SolidColorBrush(Color.FromRgb(217, 237, 212)); // #d9edd4
//else
// return new SolidColorBrush(Color.FromRgb(232, 251, 249)); // #e8fbf9
if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
return new SolidColorBrush(Color.FromArgb(50, 250, 71, 51)); // #fa4733 0.2
else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
return new SolidColorBrush(Color.FromArgb(50, 103, 194, 58)); // #67c23a 0.2
else
return new SolidColorBrush(Color.FromArgb(50, 3, 151, 181)); // #0397b5 0.2
}
set { }
}
public string address_str
{
get { return user_name + " " + tel_number + " " + province_name + " " + city_name + " " + county_name + " " + detail_info; }
@@ -145,8 +230,6 @@ namespace AllBase.Model
///// <summary>
///// 订单中所有商品加起来的总售价文本
///// </summary>
+106 -15
View File
@@ -1,18 +1,20 @@
using NaiBa.Util.Extension;
using AllBase.Model.MvvmBaseClasses;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace AllBase.Model
{
public class oms_wei_order_item_info
public class oms_wei_order_item_info : PropertyNotifyObject
{
public oms_wei_order_info item_order { get; set; }
public oms_wei_refund_info item_refund
{
@@ -26,8 +28,92 @@ namespace AllBase.Model
}
set { }
}
/// <summary>
/// 采购关联
/// </summary>
public WXBuyMapInfo buy_map
{
get { return this.GetValue(x => x.buy_map); }
set { this.SetValue(x => x.buy_map, value); }
}
public string refundResult
public List<oms_wei_external_procurement_log> item_transit_orders { get; set; } = new List<oms_wei_external_procurement_log>();
public oms_wei_external_procurement_log item_transit_order
{
get { return item_transit_orders.FirstOrDefault(); }
set { }
}
public string OrderItemStatusStr
{
get
{
if (item_order?.status == 10)
return "待付款";
if (item_order?.status == 20)
return "待店铺发货";
if (item_order?.status == 21)
return "店铺部分发货";
if (item_order?.status == 30)
return "待买家收货";
if (item_order?.status == 100)
return "订单完成";
if (item_order?.status == 200)
return "售后完成订单取消";
if (item_order?.status == 250)
return "未付款已取消";
return "未知状态";
}
set { }
}
public SolidColorBrush OrderItemStatusStrColor
{
get
{
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 73, 73));
if ("订单完成".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(19, 206, 102));
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 186, 0));
return new SolidColorBrush(Color.FromRgb(255, 186, 0));
}
set { }
}
public SolidColorBrush OrderItemStatusBorderColor
{
get
{
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 219, 219));
if ("订单完成".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(208, 245, 224));
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 241, 204));
return new SolidColorBrush(Color.FromRgb(255, 241, 204));
}
set { }
}
public SolidColorBrush OrderItemStatusBackColor
{
get
{
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 237, 237));
if ("订单完成".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(231, 250, 240));
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 248, 230));
return new SolidColorBrush(Color.FromRgb(255, 248, 230));
}
set { }
}
/// <summary>
/// 退款状态文本
/// </summary>
public string refundResultStr
{
get
{
@@ -41,15 +127,6 @@ namespace AllBase.Model
set { }
}
///// <summary>
///// 发货信息
///// </summary>
//public string send_delivery_info
//{
// get;
// set;
//}
/// <summary>
/// 订单退款时间
/// </summary>
@@ -70,7 +147,6 @@ namespace AllBase.Model
set { }
}
/// <summary>
/// 订单中所有商品加起来的总售价文本
/// </summary>
@@ -81,6 +157,7 @@ namespace AllBase.Model
get { return "¥" + (real_price * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 订单内商品维度平台券优惠金额(利润需要计算这个金额在内)文本
/// </summary>
@@ -90,6 +167,7 @@ namespace AllBase.Model
get { return "¥" + (cash_coupon_discounted_price.ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 采购价文本
/// </summary>
@@ -99,11 +177,15 @@ namespace AllBase.Model
get { return "¥" + (purchase_price * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 采购价文本是否可见
/// </summary>
public Visibility purchase_price_visibility
{
get { if (item_order.out_amount > 0) return Visibility.Collapsed; return Visibility.Visible; }
set { }
}
/// <summary>
/// 运费文本
/// </summary>
@@ -113,11 +195,15 @@ namespace AllBase.Model
get { return "¥" + (freight * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 运费文本是否可见
/// </summary>
public Visibility freight_visibility
{
get { if (item_order.out_amount > 0) return Visibility.Collapsed; return Visibility.Visible; }
set { }
}
/// <summary>
/// 平台服务费
/// </summary>
@@ -127,6 +213,7 @@ namespace AllBase.Model
get { return "¥" + (predict_commission_fee * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 达人佣金
/// </summary>
@@ -136,6 +223,7 @@ namespace AllBase.Model
get { return "¥" + (commission_amount.ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 外采金额文本
/// </summary>
@@ -145,6 +233,7 @@ namespace AllBase.Model
get { return "¥" + (commission_amount.ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 利润文本
/// </summary>
@@ -158,7 +247,9 @@ namespace AllBase.Model
set { }
}
/// <summary>
/// sku规格名称文本
/// </summary>
public string sku_attr_str
{
get
+1 -1
View File
@@ -30,7 +30,7 @@ namespace AllBase.Model
if (status == "MERCHANT_FAIL") return "售后关闭";
if (status == "USER_WAIT_CONFIRM_UPDATE") return "待用户处理商家协商";
if (status == "USER_WAIT_HANDLE_MERCHANT_AFTER_SALE") return "待用户处理商家代发起的售后申请";
return "售后状态读取失败";
return "售后状态读取失败";
}
set { }
}
+10
View File
@@ -10,6 +10,7 @@ namespace AllBase
{
public static string WordBase = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
public static string NumberBase = "0123456789";
public static string WordNumberBase = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz01234567890123456789";
public static string SignWordBase = ".`~^*_| -#$%&?";
public static int GetId(int max)
@@ -40,6 +41,15 @@ namespace AllBase
}
return s.ToString();
}
public static string GetWordNumber(int len)
{
StringBuilder s = new StringBuilder();
for (int i = 0; i < len; i++)
{
s.Append(WordNumberBase[new Random(Guid.NewGuid().GetHashCode()).Next(WordNumberBase.Length)]);
}
return s.ToString();
}
/// <summary>
/// 获取新的属性名称
/// </summary>
+5
View File
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CefSharp.Common" version="138.0.340" targetFramework="net462" />
<package id="CefSharp.WinForms" version="138.0.340" targetFramework="net462" />
<package id="CefSharp.Wpf" version="138.0.340" targetFramework="net462" />
<package id="chromiumembeddedframework.runtime.win-x64" version="138.0.34" targetFramework="net462" />
<package id="chromiumembeddedframework.runtime.win-x86" version="138.0.34" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
<package id="NPOI" version="2.5.4" targetFramework="net452" />
<package id="Portable.BouncyCastle" version="1.8.6" targetFramework="net452" />
+27 -2
View File
@@ -29,7 +29,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -40,6 +40,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
@@ -200,7 +201,6 @@
<Compile Include="BuyUsers\PddBuyUser.cs" />
<Compile Include="BuyUsers\TaoBaoBuyUser.cs" />
<Compile Include="CheckHecker.cs" />
<Compile Include="Class1.cs" />
<Compile Include="CollectionClass.cs" />
<Compile Include="GetPostTaobaoHtml.cs" />
<Compile Include="DouYinHttpWebRequest.cs" />
@@ -238,6 +238,24 @@
<DependentUpon>TokenForm.cs</DependentUpon>
</Compile>
<Compile Include="UserLogin.cs" />
<Compile Include="_29Tools\BLL\HttpResponseBLL.cs" />
<Compile Include="_29Tools\BLL\SendBuyerOrder.cs" />
<Compile Include="_29Tools\BLL\HttpResponseWXBLL.cs" />
<Compile Include="_29Tools\BLL\HttpResponseYkdBLL.cs" />
<Compile Include="_29Tools\CefTools\CustomResourceRequestHandlerLocal.cs" />
<Compile Include="_29Tools\CefTools\LifeSpanHandlerLocal.cs" />
<Compile Include="_29Tools\Forms\PddMobileBuyOrderForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="_29Tools\Forms\PddMobileBuyOrderForm.designer.cs">
<DependentUpon>PddMobileBuyOrderForm.cs</DependentUpon>
</Compile>
<Compile Include="_29Tools\Forms\PddMobileLoginForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="_29Tools\Forms\PddMobileLoginForm.designer.cs">
<DependentUpon>PddMobileLoginForm.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AllBase\29WxOrderAllBase.csproj">
@@ -302,7 +320,14 @@
<EmbeddedResource Include="Tips\TokenForm.resx">
<DependentUpon>TokenForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="_29Tools\Forms\PddMobileBuyOrderForm.resx">
<DependentUpon>PddMobileBuyOrderForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="_29Tools\Forms\PddMobileLoginForm.resx">
<DependentUpon>PddMobileLoginForm.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
</Project>
+2 -2
View File
@@ -46,7 +46,7 @@ namespace Work.BaseForms
//
// pnlTitle
//
this.pnlTitle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(160)))), ((int)(((byte)(233)))));
this.pnlTitle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.pnlTitle.Controls.Add(this.pbMinBase);
this.pnlTitle.Controls.Add(this.pbNormalBase);
this.pnlTitle.Controls.Add(this.pbMaxBase);
@@ -145,7 +145,7 @@ namespace Work.BaseForms
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(160)))), ((int)(((byte)(233)))));
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.ClientSize = new System.Drawing.Size(386, 232);
this.Controls.Add(this.pnlTitle);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+6 -6
View File
@@ -76,7 +76,7 @@ namespace Work.BaseForms
// Iconx = Icon = BaseClass.Ico = ImageBuild.ConvertToIcon(Properties.Resources.icon);
if (this.IsShowMax)
if (this.IsShowMaxBox)
{
if (this.WindowState == FormWindowState.Maximized)
{
@@ -135,14 +135,14 @@ namespace Work.BaseForms
}
}
private bool isShowMax = false;
public bool IsShowMax
private bool isShowMaxBox = false;
public bool IsShowMaxBox
{
get { return isShowMax; }
get { return isShowMaxBox; }
set
{
isShowMax = value;
if (isShowMax)
isShowMaxBox = value;
if (isShowMaxBox)
{
if (this.WindowState == FormWindowState.Maximized)
{
+5 -5
View File
@@ -73,7 +73,7 @@ namespace Work.BaseForms
this.pnlCancel.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.pnlCancel.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.pnlCancel.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.pnlCancel.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(160)))), ((int)(((byte)(233)))));
this.pnlCancel.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.pnlCancel.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
this.pnlCancel.Style.ForeColor.Color = System.Drawing.Color.Black;
this.pnlCancel.Style.GradientAngle = 90;
@@ -92,9 +92,9 @@ namespace Work.BaseForms
this.pnlConfirm.Name = "pnlConfirm";
this.pnlConfirm.Size = new System.Drawing.Size(80, 30);
this.pnlConfirm.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pnlConfirm.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(160)))), ((int)(((byte)(233)))));
this.pnlConfirm.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(160)))), ((int)(((byte)(233)))));
this.pnlConfirm.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.pnlConfirm.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.pnlConfirm.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.pnlConfirm.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.pnlConfirm.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.pnlConfirm.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.pnlConfirm.Style.ForeColor.Color = System.Drawing.Color.White;
@@ -127,7 +127,7 @@ namespace Work.BaseForms
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(160)))), ((int)(((byte)(233)))));
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.ClientSize = new System.Drawing.Size(388, 245);
this.Controls.Add(this.panel2);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+386
View File
@@ -0,0 +1,386 @@
namespace Work.BaseForms
{
partial class PddMobileLoginForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PddMobileLoginForm));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.btnLoginAgain = new UserControls.ButtonEx();
this.label2 = new System.Windows.Forms.Label();
this.btnCopyPassword = new UserControls.ButtonEx();
this.btnCopyUserName = new UserControls.ButtonEx();
this.txtPassWord = new System.Windows.Forms.TextBox();
this.txtUserName = new System.Windows.Forms.TextBox();
this.btnStop = new UserControls.ButtonEx();
this.btnReload = new UserControls.ButtonEx();
this.chkCloseAfterLogin = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.txtAddress = new System.Windows.Forms.TextBox();
this.panel2 = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.btnSaveCookie = new DevComponents.DotNetBar.PanelEx();
this.panel3 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.panel2.SuspendLayout();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.panel3);
this.splitContainer1.Panel2.Controls.Add(this.label3);
this.splitContainer1.Panel2.Controls.Add(this.panel2);
this.splitContainer1.Panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.splitContainer1_Panel2_Paint);
this.splitContainer1.Size = new System.Drawing.Size(1022, 704);
this.splitContainer1.SplitterDistance = 484;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
// btnLoginAgain
//
this.btnLoginAgain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnLoginAgain.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnLoginAgain.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnLoginAgain.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLoginAgain.ForeColor = System.Drawing.Color.White;
this.btnLoginAgain.Location = new System.Drawing.Point(56, 163);
this.btnLoginAgain.Margin = new System.Windows.Forms.Padding(2);
this.btnLoginAgain.Name = "btnLoginAgain";
this.btnLoginAgain.Size = new System.Drawing.Size(91, 25);
this.btnLoginAgain.TabIndex = 462;
this.btnLoginAgain.Text = "重新登录";
this.btnLoginAgain.UseVisualStyleBackColor = false;
this.btnLoginAgain.Click += new System.EventHandler(this.btnLoginAgain_Click);
//
// label2
//
this.label2.Location = new System.Drawing.Point(73, 67);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(44, 17);
this.label2.TabIndex = 378;
this.label2.Text = "密码";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnCopyPassword
//
this.btnCopyPassword.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCopyPassword.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopyPassword.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCopyPassword.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCopyPassword.ForeColor = System.Drawing.Color.White;
this.btnCopyPassword.Location = new System.Drawing.Point(255, 63);
this.btnCopyPassword.Margin = new System.Windows.Forms.Padding(2);
this.btnCopyPassword.Name = "btnCopyPassword";
this.btnCopyPassword.Size = new System.Drawing.Size(57, 25);
this.btnCopyPassword.TabIndex = 376;
this.btnCopyPassword.Text = "复制";
this.btnCopyPassword.UseVisualStyleBackColor = false;
this.btnCopyPassword.Click += new System.EventHandler(this.btnCopyPassword_Click);
//
// btnCopyUserName
//
this.btnCopyUserName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCopyUserName.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopyUserName.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCopyUserName.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCopyUserName.ForeColor = System.Drawing.Color.White;
this.btnCopyUserName.Location = new System.Drawing.Point(255, 36);
this.btnCopyUserName.Margin = new System.Windows.Forms.Padding(2);
this.btnCopyUserName.Name = "btnCopyUserName";
this.btnCopyUserName.Size = new System.Drawing.Size(57, 25);
this.btnCopyUserName.TabIndex = 375;
this.btnCopyUserName.Text = "复制";
this.btnCopyUserName.UseVisualStyleBackColor = false;
this.btnCopyUserName.Click += new System.EventHandler(this.btnCopyUserName_Click);
//
// txtPassWord
//
this.txtPassWord.Location = new System.Drawing.Point(117, 64);
this.txtPassWord.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtPassWord.Name = "txtPassWord";
this.txtPassWord.PasswordChar = '●';
this.txtPassWord.ReadOnly = true;
this.txtPassWord.Size = new System.Drawing.Size(135, 23);
this.txtPassWord.TabIndex = 374;
//
// txtUserName
//
this.txtUserName.Location = new System.Drawing.Point(117, 37);
this.txtUserName.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtUserName.Name = "txtUserName";
this.txtUserName.ReadOnly = true;
this.txtUserName.Size = new System.Drawing.Size(135, 23);
this.txtUserName.TabIndex = 373;
//
// btnStop
//
this.btnStop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnStop.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStop.ForeColor = System.Drawing.Color.White;
this.btnStop.Location = new System.Drawing.Point(243, 163);
this.btnStop.Margin = new System.Windows.Forms.Padding(2);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(91, 25);
this.btnStop.TabIndex = 372;
this.btnStop.Text = "停止操作";
this.btnStop.UseVisualStyleBackColor = false;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
//
// btnReload
//
this.btnReload.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnReload.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnReload.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReload.ForeColor = System.Drawing.Color.White;
this.btnReload.Location = new System.Drawing.Point(150, 163);
this.btnReload.Margin = new System.Windows.Forms.Padding(2);
this.btnReload.Name = "btnReload";
this.btnReload.Size = new System.Drawing.Size(91, 25);
this.btnReload.TabIndex = 371;
this.btnReload.Text = "重新加载";
this.btnReload.UseVisualStyleBackColor = false;
this.btnReload.Click += new System.EventHandler(this.btnReload_Click);
//
// chkCloseAfterLogin
//
//
//
//
this.chkCloseAfterLogin.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.chkCloseAfterLogin.Checked = true;
this.chkCloseAfterLogin.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkCloseAfterLogin.CheckValue = "Y";
this.chkCloseAfterLogin.Location = new System.Drawing.Point(207, 138);
this.chkCloseAfterLogin.Name = "chkCloseAfterLogin";
this.chkCloseAfterLogin.Size = new System.Drawing.Size(135, 23);
this.chkCloseAfterLogin.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.chkCloseAfterLogin.TabIndex = 8;
this.chkCloseAfterLogin.Text = "登录成功后关闭窗口";
//
// splitContainer2
//
this.splitContainer2.BackColor = System.Drawing.Color.White;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(1, 33);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.txtAddress);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.splitContainer1);
this.splitContainer2.Size = new System.Drawing.Size(1022, 734);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 5;
//
// txtAddress
//
this.txtAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtAddress.Location = new System.Drawing.Point(3, 3);
this.txtAddress.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtAddress.Name = "txtAddress";
this.txtAddress.Size = new System.Drawing.Size(1016, 23);
this.txtAddress.TabIndex = 7;
this.txtAddress.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtAddress_KeyDown);
//
// panel2
//
this.panel2.Anchor = System.Windows.Forms.AnchorStyles.None;
this.panel2.Controls.Add(this.txtUserName);
this.panel2.Controls.Add(this.btnLoginAgain);
this.panel2.Controls.Add(this.chkCloseAfterLogin);
this.panel2.Controls.Add(this.label2);
this.panel2.Controls.Add(this.btnReload);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.btnStop);
this.panel2.Controls.Add(this.btnCopyPassword);
this.panel2.Controls.Add(this.txtPassWord);
this.panel2.Controls.Add(this.btnCopyUserName);
this.panel2.Location = new System.Drawing.Point(95, 398);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(376, 257);
this.panel2.TabIndex = 463;
this.panel2.Visible = false;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(73, 40);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 17);
this.label1.TabIndex = 377;
this.label1.Text = "用户名";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label3
//
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(128, 58);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(285, 28);
this.label3.TabIndex = 464;
this.label3.Text = "请使用拼多多手机版扫码登录";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label3.Visible = false;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(28, 44);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(144, 17);
this.label4.TabIndex = 465;
this.label4.Text = "导入PDDAccessToken:";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(31, 71);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(389, 108);
this.textBox1.TabIndex = 466;
//
// btnSaveCookie
//
this.btnSaveCookie.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnSaveCookie.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSaveCookie.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSaveCookie.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSaveCookie.Location = new System.Drawing.Point(364, 185);
this.btnSaveCookie.Name = "btnSaveCookie";
this.btnSaveCookie.Size = new System.Drawing.Size(56, 25);
this.btnSaveCookie.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnSaveCookie.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSaveCookie.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSaveCookie.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnSaveCookie.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnSaveCookie.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnSaveCookie.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnSaveCookie.Style.GradientAngle = 90;
this.btnSaveCookie.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnSaveCookie.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSaveCookie.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSaveCookie.TabIndex = 470;
this.btnSaveCookie.Text = "保存";
this.btnSaveCookie.Click += new System.EventHandler(this.btnSaveCookie_Click);
//
// panel3
//
this.panel3.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.panel3.Controls.Add(this.textBox1);
this.panel3.Controls.Add(this.btnSaveCookie);
this.panel3.Controls.Add(this.label4);
this.panel3.Location = new System.Drawing.Point(51, 135);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(452, 241);
this.panel3.TabIndex = 471;
this.panel3.Visible = false;
//
// PddMobileLoginForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1024, 768);
this.Controls.Add(this.splitContainer2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "PddMobileLoginForm";
this.IsShowMaxBox = true;
this.Text = "店铺登录";
this.TitleText = "店铺登录";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ShopLoginForm_FormClosed);
this.Load += new System.EventHandler(this.ShopLoginForm_Load);
this.Controls.SetChildIndex(this.splitContainer2, 0);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel1.PerformLayout();
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private UserControls.ButtonEx btnStop;
private UserControls.ButtonEx btnReload;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.TextBox txtAddress;
private UserControls.ButtonEx btnLoginAgain;
public DevComponents.DotNetBar.Controls.CheckBoxX chkCloseAfterLogin;
public System.Windows.Forms.TextBox txtPassWord;
public System.Windows.Forms.TextBox txtUserName;
public System.Windows.Forms.Label label2;
public UserControls.ButtonEx btnCopyPassword;
public UserControls.ButtonEx btnCopyUserName;
private System.Windows.Forms.Panel panel2;
public System.Windows.Forms.Label label3;
public System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label4;
private DevComponents.DotNetBar.PanelEx btnSaveCookie;
private System.Windows.Forms.Panel panel3;
}
}
+616
View File
@@ -0,0 +1,616 @@
using AllBase;
using AllBase.Helper;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.WinForms;
//using TemuKJD.DashBoardForms;
using Microsoft.Win32;
using NaiBa.CefHelper;
using NaiBa.CefHelper.Handler;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
//using System.Web.Hosting;
using System.Windows.Forms;
using Work;
using Work._29Tools.CefTools;
namespace Work.BaseForms
{
public enum EnumOpenType
{
login,
manage,
refresh_cookie,
order_login,
}
// temu 一个登录账号下可以有多个店铺
public class ShopCompany
{
public string UserName { get; set; }
public string LoginName { get; set; }
public string AccountId { get; set; }
public string AccountName { get; set; }
public string LoginStatus { get; set; }
/// <summary>
/// 拼多多校验数据列表
/// </summary>
public string AntiContent { get; set; }
/// <summary>
/// 拼多多店铺信息
/// </summary>
public string MallId { get; set; }
/// <summary>
/// 微信小店开放Id信息
/// </summary>
public string openid { get; set; }
}
public partial class PddMobileLoginForm : BaseGeneralForm
{
public static PddMobileLoginForm PddMobileLoginInstance { get; set; } = null;
public int CloseAfterSecond { get; set; }
public EnumOpenType openType = EnumOpenType.manage;
public string InitUrl = "";
private string shopCookieHead = "yangkeduo.com";
private string shopLoginUrl = "https://mobile.yangkeduo.com/login.html?from=https%3A%2F%2Fmobile.yangkeduo.com%2Fpersonal.html";
private string shopMainUrl = "https://mobile.yangkeduo.com/index.html";
public ChromiumWebBrowser cefWebBrowser = null;
private BuyerLoginInfo buyer = null;
private List<ShopCompany> lstShopCompany = new List<ShopCompany>();
private string currentUrl = "";
public PddMobileLoginForm(BuyerLoginInfo buyerInfo)
{
PddMobileLoginInstance = this;
InitializeComponent();
this.buyer = buyerInfo;
this.txtUserName.Text = buyerInfo?.buyer_name;
this.txtPassWord.Text = ""; //DataOpenSSL.DecryptString(buyerInfo.Password);
}
private void ShopLoginForm_Load(object sender, EventArgs e)
{
//this.splitContainer1.SplitterDistance = this.splitContainer1.Height - 62;
if (openType == EnumOpenType.login)
{
this.label3.Visible = true;
this.panel3.Visible = true;
}
if (CloseAfterSecond > 0)
{
Task.Run(() =>
{
Thread.Sleep(1000 * CloseAfterSecond);
if (this.Created)
{
Invoke(new Action(() => { this.Close(); }));
}
});
}
AutoLogin();
CheckAndSaveShop(); //判断登录是否成功,成功则保存店铺信息和店铺cookie
//ClosePopWindow(); //自动关闭弹窗
}
/// <summary>
/// 判断登录,保存店铺
/// </summary>
private void CheckAndSaveShop()
{
}
/// <summary>
/// 自动关闭弹窗
/// </summary>
private void ClosePopWindow()
{
// 关闭弹窗
Task.Run(() =>
{
var sleepTime = 2500;
int i = 0;
while (true && i++ < 50)
{
try
{
Thread.Sleep(sleepTime);
var jsStr1 = "function ClosePopWindow(txt) {\r\n" +
" var result = 'no_pop'\r\n" +
" var item = document.getElementsByClassName(txt);\r\n" +
" for(i = 0; i < item.length; i++) {\r\n" +
" item[i].click();\r\n" +
" result = 'success'\r\n" +
" }\r\n" +
" return result;\r\n" +
"}\r\n" +
"ClosePopWindow('anticon-close-circle');\r\n" +
"ClosePopWindow('ant-modal-close-x');\r\n";
var jsStr2 = "function clickPopWindow(txt) {\r\n"
+ "var child = document.body.firstElementChild;\r\n"
+ "var element1 = null;\r\n"
+ " while (child) {\r\n"
+ " if (child.innerHTML.indexOf(txt) >= 0) {\r\n"
+ " element1 = child;\r\n"
+ " if (child.firstElementChild) {\r\n"
+ " child = child.firstElementChild; continue;\r\n"
+ " } else break;\r\n"
+ " }\r\n"
+ " child = child.nextElementSibling;\r\n"
+ " }\r\n"
+ " if (element1) {\r\n"
+ " element1.click(); return 'success';\r\n"
+ " } else return 'no_pop';\r\n"
+ "}\r\n"
+ "clickPopWindow('我知道了');\r\n"
+ "clickPopWindow('知道了');\r\n";
if (cefWebBrowser != null && cefWebBrowser.IsBrowserInitialized)
{
var t1 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr1);
t1.Wait();
var t2 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr2);
t2.Wait();
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
sleepTime = Randomx.GetId(550, 650);
else
sleepTime = Randomx.GetId(1500, 2000);
}
}
catch (Exception ex) { }
}
});
}
/// <summary>
/// 自动登录店铺后台
/// </summary>
private void AutoLogin()
{
if (openType != EnumOpenType.login && buyer == null)
return;
if (cefWebBrowser == null)
{
//cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, false);
else
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(shopMainUrl, false);
CustomResourceRequestHandlerLocal resourceRequestHandler = new CustomResourceRequestHandlerLocal();
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad;
cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
cefWebBrowser.KeyboardHandler = new KeyboardHandler();
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowser.LoadError += CefWebBrowser_LoadError;
cefWebBrowser.Dock = DockStyle.Fill;
//js绑定C#对象
//PDDShopBrowserObject shopObj = new PDDShopBrowserObject();
//shopObj.OnInfoReceived += ShopObj_OnInfoReceived;
//CefSharpSettings.WcfEnabled = true;
//cefWebBrowser.JavascriptObjectRepository.Register(
// name: "shopObj",
// objectToBind: shopObj,
// isAsync: false,
// options: new BindingOptions { Binder = BindingOptions.DefaultBinder.Binder /*CamelCaseJavascriptNames = false*/ /*cef79*/ }
//);
//if (buyer.cookie == null)
// buyer.cookie = "";
List<Cookie> cookieLst = new List<Cookie>();
try
{
if (buyer != null)
{
cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(buyer?.cookie);
if (cookieLst == null)
cookieLst = new List<Cookie>();
}
}
catch
{
}
Task.Run(() =>
{
Invoke(new Action(() =>
{
splitContainer1.Panel1.Controls.Add(cefWebBrowser);
//cefWebBrowser.Load(shopMainUrl);
}));
// cef138必须init后方可设置或删除cookie
while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
Thread.Sleep(20);
CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//if (cookieLst.Any(c => c.Value.StartsWith("windows_1")))
// cefWebBrowser.ExecuteScriptAsync("navigator.__defineGetter__('userAgent', function() { return 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.5.40.8 Safari/537.36 PddWorkbench-Online PddBrowser pdd_windows_version/3.0.3.12'; });");
//cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager
//if (this.openType != EnumOpenType.login)
{
var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null));
foreach (var cook in cookieLst)
{
//var t = CEFBrowser.SetCookieAsync(cook.Domain.Trim('.'), cook.Name + "=" + cook.Value + ";", cefWebBrowser.GetCookieManager(null));
//t.Wait(5000);
//if (cook.Name == "PDDAccessToken")
//{
// var jsStr = "var date = new Date();" +
// "date.setTime(date.getTime() + (465 * 24 * 60 * 60 * 1000)); " +
// "document.cookie='PDDAccessToken=" + cook.Value + ";domain=mobile.yangkeduo.com; expires=' + date.toUTCString()";
// jsStr = "document.cookie='PDDAccessToken=" + cook.Value + ";domain=mobile.yangkeduo.com;'";
// cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr);
// //cook.Expires = DateTime.Now.AddDays(465);
// //cefWebBrowser.GetCookieManager(null).SetCookie("https://" + cook.Domain.Trim('.'), cook);
//}
////else
//// cefWebBrowser.GetCookieManager(null).SetCookie("https://" + cook.Domain, cook);
}
}
//根据登录的具体店铺设置local storage
if (!string.IsNullOrEmpty(buyer?.buyer_id))
{
//var storageJsCode = "window.localStorage.setItem('" + "mall-info-id" + "', '" + shop.ShopId + "');\r\n";
//storageJsCode += "window.localStorage.setItem('" + "agentseller-mall-info-id" + "', '" + shop.ShopId + "');\r\n";
//while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
// Thread.Sleep(20);
//cefWebBrowser.GetBrowser().MainFrame.ExecuteJavaScriptAsync(storageJsCode);
}
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser.Load(InitUrl);
else
cefWebBrowser.Load(shopMainUrl);
//不是登录的话就此返回
if (openType != EnumOpenType.login)
{
Invoke(new Action(() =>
{
chkCloseAfterLogin.Visible = false;
btnLoginAgain.Visible = false;
}));
return;
}
for (int i = 0; i < 50; i++)
{
if (cefWebBrowser.IsLoading)
Thread.Sleep(100);
}
Thread.Sleep(Randomx.GetId(1500,2000));
if (!this.Created)
return;
while (!cefWebBrowser.Address.StartsWith(shopLoginUrl))
{
Thread.Sleep(1000);
if (!this.Created)
return;
}
//CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//InputUserNameAndPassword(cefWebBrowser, shop.LoginName, DataOpenSSL.DecryptString(shop.Password));
});
}
}
private void ShopObj_OnInfoReceived(string information)
{
//BaseMsgForm.ShowInfo(information);
if (!string.IsNullOrEmpty(information))
cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync("alert('" + information + "');");
}
private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
{
}
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
if (this.Created && !this.Disposing && !this.IsDisposed)
{
Invoke(new Action(() =>
{
currentUrl = e.Address;
txtAddress.Text = e.Address;
}));
}
}
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
//js绑定C#对象 html页面内声明绑定的C#对象
StringBuilder sb = new StringBuilder();
sb.Append("(function(){");
sb.Append("CefSharp.BindObjectAsync('shopObj');");
sb.Append("})();");
cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString());
}
//public Func<object, string, string, request, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行)
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
return false;
}
static int GetAntiContentsTimes = 40;
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
//if (url.Contains("https://mobile.yangkeduo.com/personal.html?refer_page_name=login") && openType == EnumOpenType.login)
if (url.Contains("https://mobile.yangkeduo.com/index.html") && openType == EnumOpenType.login)
{
Task.Run(() => { cefWebBrowser.Load("https://mobile.yangkeduo.com/personal.html"); });
}
if (url.Contains("https://mobile.yangkeduo.com/personal.html"))
{
if (openType == EnumOpenType.login)
{
Task.Run(() =>
{
var data = responseData;
if (data.Contains("\"success\":true") || data.Contains("nickname"))
{
var uid = BaseRegex.GetStringJson(ref data, "uid");
var nickname = BaseRegex.GetStringJson(ref data, "nickname");
var username = nickname;
if (!string.IsNullOrEmpty(nickname) && !string.IsNullOrEmpty(uid))
{
Thread.Sleep(2000);
List<Cookie> cookieList = CEFBrowser.GetCookieList(shopCookieHead, cefWebBrowser.GetCookieManager(null));
var buyerUrl = BaseClass.BuildPDDObjString("user/add_buyer");
if (this.buyer == null || this.buyer.buyer_id != uid)
this.buyer = GlobalConfig.BuyerLoginList.FirstOrDefault(b => b.buyer_id == uid);
if (this.buyer != null)
{
this.buyer.user_name = username;
this.buyer.buyer_nick = nickname;
this.buyer.cookie = JsonHelper.SerializeObject(cookieList);
buyerUrl = BaseClass.BuildPDDObjString("user/mdy_buyer");
}
var buyerData = UserLogin.GetSignaturex()
+ "&buyer_id=" + uid
+ "&buyer_name=" + username
+ "&buyer_nick=" + nickname;
var result = GetHtml.PostUtf8(buyerUrl, buyerData);
if (string.IsNullOrEmpty(result) || !result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(buyerUrl, buyerData);
buyerUrl = BaseClass.BuildPDDObjString("user/mdy_buyer_cookie");
buyerData = UserLogin.GetSignaturex()
+ "&buyer_id=" + uid
+ "&status=" + "在线"
+ "&cookie=" + GetHtml.UrlEncodeUtf8(JsonHelper.SerializeObject(cookieList));
result = GetHtml.PostUtf8(buyerUrl, buyerData);
if (string.IsNullOrEmpty(result) || !result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(buyerUrl, buyerData);
Invoke(new Action(() =>
{
try
{
if (chkCloseAfterLogin.Checked)
this.Close();
}
catch (Exception ex)
{ }
}));
}
}
});
}
}
}
// 鼠标左键按下,移动,移动...左键抬起。
public static void CefMouseDragDou(ChromiumWebBrowser webBrowser, int x1, int y1, int x2, int y2)
{
Thread.Sleep(100);
var host = webBrowser.GetBrowser().GetHost();
var rx = -6 + Randomx.GetId(13);
x2 = x2 + rx;
// 随机按下点的位置(正负6像素),提高仿真性
int x = x1 + rx;
int y = y1 - 6 + Randomx.GetId(13);
// 按下鼠标左键
host.SendMouseClickEvent(x, y, MouseButtonType.Left, false, 1, CefEventFlags.None);
Thread.Sleep(100 + Randomx.GetId(300));
// 滑动光标
int times = -20;
while (x < x2 + 4 - Randomx.GetId(9))
{
times++;
x += (15 + Randomx.GetId(15)) / 8;
if (times % 5 == 0)
y = y - 1 + Randomx.GetId(3);
Thread.Sleep(6 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
}
if (x < x2 - 1)
while (x < x2)
{
times++;
x += (8 + Randomx.GetId(8)) / 8;
if (times % 5 == 0)
y = y - 1 + Randomx.GetId(3);
Thread.Sleep(6 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
}
else if (x > x2 + 1)
while (x > x2)
{
times++;
x -= (8 + Randomx.GetId(8)) / 8;
if (times % 5 == 0)
y = y - 1 + Randomx.GetId(3);
Thread.Sleep(6 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
}
// 如果最后位置偏差较多,再做一次调整
x = x2 - 1 + Randomx.GetId(3);
x = x2;
Thread.Sleep(18 + Math.Abs(times) / 5 + Randomx.GetId(16));
Thread.Sleep(18 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
// 抬起鼠标左键
Thread.Sleep(300 + Randomx.GetId(500));
host.SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
host.SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
}
private void btnStop_Click(object sender, EventArgs e)
{
}
private void btnCopyUserName_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtUserName.Text))
Clipboard.SetDataObject(txtUserName.Text);
}
private void btnCopyPassword_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtPassWord.Text))
Clipboard.SetDataObject(txtPassWord.Text);
}
private void btnReload_Click(object sender, EventArgs e)
{
if (cefWebBrowser != null)
{
if (txtAddress.Text != "about:blank")
cefWebBrowser.Load(txtAddress.Text);
else
cefWebBrowser.Load(shopMainUrl);
}
}
private void ShopLoginForm_FormClosed(object sender, FormClosedEventArgs e)
{
//OnSaveComplete(shop);
Task.Run(() => {
Thread.Sleep(500);
if (!this.Disposing && !this.IsDisposed)
{
//MainForm.instance.Invoke(new Action(() => { this.Dispose(); }));
}
});
}
private void txtAddress_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (cefWebBrowser != null)
{
cefWebBrowser.Load(txtAddress.Text);
}
}
}
string sInputValueChange { get; set; } = @"
let usernameId = document.getElementById('usernameId');
usernameId.value = '1';
var event = document.createEvent('HTMLEvents');
event.initEvent('input', true, true);
event.eventType = 'message';
usernameId.dispatchEvent(event);
";
string sInputValueChange2 { get; set; } = @"
function changeReactInputValue(inputDom,newText){
let lastValue = inputDom.value;
inputDom.value = newText;
let event = new Event('input', { bubbles: true });
event.simulated = true;
let tracker = inputDom._valueTracker;
if (tracker) {
tracker.setValue(lastValue);
}
inputDom.dispatchEvent(event);
}
";
string sGetElementWithText { get; set; } = @"
function getElementWithText(sText)
{
var elem=null;
const elements = document.querySelectorAll('*'); // 选择所有元素
elements.forEach(element => {
if (element.textContent.includes(sText)) {
// 对每个匹配的元素执行操作
//console.log(element);
elem=element;
}
});
return elem;
};
";
private void btnLoginAgain_Click(object sender, EventArgs e)
{
if (this.currentUrl != shopLoginUrl)
this.cefWebBrowser.Load(shopLoginUrl);
}
private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e)
{
}
private void btnSaveCookie_Click(object sender, EventArgs e)
{
Cookie cookie = new Cookie();
cookie.Name = "PDDAccessToken";
cookie.Domain = "mobile.yangkeduo.com";
cookie.Expires = DateTime.Now.AddDays(465);
cookie.HttpOnly = true;
cookie.Secure = true;
cookie.Value = textBox1.Text.Trim();
if (this.cefWebBrowser != null)
{
var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(new List<Cookie> { cookie }), cefWebBrowser.GetCookieManager(null));
t.Wait(2000);
cefWebBrowser.Load("https://mobile.yangkeduo.com/personal.html");
}
}
}
}
+298
View File
@@ -0,0 +1,298 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQYAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzM
zMzMzMzMzMx3d4iIiIiIiIh3fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzMzMzMzMzHeIiIiIj/////////iIiIiId8zMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzMzMzMzMeIiI/////////////////////4iIh8zMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzMzMzMzHiI////////////////////////////iIfMzMzMzMzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMzMzMx3iP///////////////////////////////4iHzMzMzMzMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMzMzMx3iP//////////////////////////////////+IfMzMzMzMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzMzMx3iP/////////////////////////////////////4h8zMzMzMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzMzMzHiP////////////////////////////////////////h3zM
zMzMzMzMzMzMzMzGAAAABMzMzMzMzMzMzMzMzHiP////////////////////////////////////////
//iHzMzMzMzMzMzMzMzMzEAAAAbMzMzMzMzMzMzMzMeI////////////////////////////////////
////////+IfMzMzMzMzMzMzMzMxgAABMzMzMzMzMzMzMzMx4////////////////////////////////
//////////////+IfMzMzMzMzMzMzMzMxAAAbMzMzMzMzMzMzMzHj///////////////////////////
/////////////////////4fMzMzMzMzMzMzMzMYAAMzMzMzMzMzMzMzMeP//////////////////////
///////////////////////////4fMzMzMzMzMzMzMzMAAbMzMzMzMzMzMzMx4//////////////////
/////////////////////////////////4fMzMzMzMzMzMzMzGAGzMzMzMzMzMzMzHj/////////////
///////////////////////////////////////4fMzMzMzMzMzMzMxgDMzMzMzMzMzMzMyI////////
/////////////////////////////////////////////4zMzMzMzMzMzMzMwEzMzMzMzMzMzMzHj///
//////////////////////////////////////////////////+HzMzMzMzMzMzMzMRszMzMzMzMzMzM
eP//////////////////////////////////////////////////////+HzMzMzMzMzMzMzGbMzMzMzM
zMzMzHj///////////////////////////////////////////////////////+MzMzMzMzMzMzMxmzM
zMzMzMzMzMyP////+IiP////////////////////////////////////////+I//////h8zMzMzMzMzM
zMZszMzMzMzMzMzHj////4iIiI//////////////////////////////////////+IiIj/////jMzMzM
zMzMzMzGbMzMzMzMzMzMyP////iIiIiI/////////////////////////////////////4iIiIj////4
fMzMzMzMzMzMxszMzMzMzMzMzHj////4iIiIiP////////////////////////////////////+IiIiI
j////4zMzMzMzMzMzMbMzMzMzMzMzMx4////iIiIiIj////////////////////////////////////4
iIiIiI////+HzMzMzMzMzMzMzMzMzMzMzMzMj////4iIiIiI//////////////+IiP//iI//////////
////+IiIiIiP////h8zMzMzMzMzMzMzMzMzMzMzMzI/////4iIiIiP/////////////4d3eIiIeIj///
//////////+IiIiIj/////jMzMzMzMzMzMzMzMzMzMzMzMyP////+IiIiIj/////////////iIiId3eI
iI//////////////iIiIiI/////4zMzMzMzMzMzMzMzMzMzMzMzHj/////+IiIiP/////////////4//
/4d4j/+P//////////////iIiIj/////+MzMzMzMzMzMzMzMzMzMzMzMx4//////+IiP////////////
///////4j///////////////////iIiP//////jMzMzMzMzMzMzMzMzMzMzMzMeP//////////+IiIj/
///////////////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzH//////////+H
fMx8eP//////////////////////////iId3iP//////////+HzMzMzMzMzMzMzMzMzMzMzMyP//////
///4fMzHh8eP////////////////////////+MzMzMd4//////////h8zMzMzMzMzMzMzMzMzMzMzMf/
////////+MzMePjMeP///////////////////////4zMzMeHx4/////////4fMzMzMzMzMzMzMzMzMzM
zMzH/////////4fMd3eHzMeP//////////////////////iMzMzIiHx4////////+HzMzMzMzMzMzMzM
zMzMzMzMx/////////+Hx4iIfMzMj//////////////////////4h3d8x4h8yP////////jMzMzMzMzM
zMzMzMzMzMzMzMeP////////+HiP+IfMzI//////////////////////+HiIiHd3zHj////////4zMzM
zMzMzMzMzMzMzMzMzMzHj/////////h4//+HzMeP//////////////////////h4//h8zMyP////////
+MzMzMzMzMzMzMzMzMzMzMzMzI/////////4iP//h8x4///////////////////////4j//4fMzHj///
//////jMzMzMzMzMzMzMzMzMzMzMzMyP///////4iIiP+IfHj///////////////////////+Ij/+HzM
eP/////////4zMzMzMzMzMzMzMzMzMzMzMzMj///////iIiIiIh3eP////////////////////////+I
j4h8x3iI////////h8zMzMzMzMzMzMzMzMzMzMzMzH//////+Hj///iIiI//////////////////////
/////4iId4iIiIj//////4zMzMzMzMzMzMzMzMzMzMzMzMx4//////iP////iP//////////////////
/////////////4iP//iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMyP//////////+I//////////////
///////////////////4eP//iP//////jMzMzMzMzMzMzMzMzMzMzMzMzMj///////////iP////////
/////////////////////////4j/////////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj///////////////
//////////////////////////////+I//////////jMzMzMzMzMzMzMzMzMzMzMzMzMzI//////////
//////////////////////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
eP///////////////////////////////////////////////////////4zMzMzMzMzMzMzMzMzMzMzM
zMzMzMj///////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzM
zMzMzMzMzMzHj//////////////////////////////////////////////////////4zMzMzMzMzMzM
zMzMzMzMzMzMzMzMzI//////////////////////////////////////////////////////h8zMzMzM
zMzMzMzMzMzMzMzMzMzMzMx4////////////////////////////////////////////////////+HzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMyI////+I////////////////////////////////////////////
//h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+Ij/////////////////////////////////////
//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+IiIiIj//////////////////////////4
////iI/////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiP/////4iIiP//////////////////////
////+IiIiIj/////iHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////////////////
///////////4iIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP////////////////////
//////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////
//////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////
///////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////
////////////////////////////////////////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI
j/////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMeP//////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMx4////////+I//////////////////////////////////////jMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMeP///////4iIj///////////////////////////iP///////4fMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMx4////////iIiIiP///////////////////////4iIiP///////4zMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIj///////+HzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIj////////////////////4iIiIiIj///////
+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIiI//
//////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiP////////////////////iIiI
iIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiIj/////iIiIiIiIj/////
/4iIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiI/////4zMzMzMzM
j/////+IiIiIiIiP//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP//////+IiIiIiIj/////+MzM
zMzMzI//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iIiIiIiI////
//jMzMzMzMyP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP///////4iIiIiI
iP/////4zMzMzMzMj//////4iIiIiIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iI
iIiIiI//////+MzMzMzMzI//////+IiIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
///4iIiIiIiP//////fMzMzMzMyP//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzH
j///////+IiIiIiI//////+HzMzMzMzMeP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzM
zMzMyP////////iIiIiIiP//////jMzMzMzMzHj///////iIiIiIiI///////4fMzMzMzMzMzMzMzMzM
zMzMzMzMzMj///////+IiIiIiI///////4zMzMzMzMzI///////4iIiIiIiI///////3zMzMzMzMzMzM
zMzMzMzMzMzMzMzI////////iIiIiIiP//////+MzMzMzMzMyP//////+IiIiIiIiP//////+MzMzMzM
zMzMzMzMzMzMzMzMzMzMeP///////4iIiIiIj///////jMzMzMzMzMj///////+IiIiIiIj///////jM
zMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiIiP//////+HzMzMzMzMzHj///////iIiIiIiI////
///4zMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIiI////////jMzMzMzMzMzI///////4iIiIiI
iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMzMj////////4iIiIiP///////4zMzMzMzMzMyP///////4
iIiIiIiP//////jMzMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiI////////h8zMzMzMzMzMeP//
/////4iIiIiIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIj////////4fMzMzMzMzM
zHj///////+IiIiIiI//////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////iIiP////////+MzMzM
zMzMzMzI////////+IiIiIiP//////h8zMzMzMzMzMzMxmzMzMzMzMzMx4/////////4iP/////////4
fMzMzMzMzMzMx4////////+IiIiIj//////4fMzMzMzMzMzMzMZszMzMzMzMzMeP////////////////
////+MzMzMzMzMzMzMyP////////iIiIiP//////+HzMzMzMzMzMzMzGbMzMzMzMzMzH////////////
//////////fMzMzMzMzMzMzMeP////////iIiIj///////98zMzMzMzMzMzMxmzMzMzMzMzMyP//////
//////////////+HzMzMzMzMzMzMzHj/////////+IiP////////jMzMzMzMzMzMzMZszMzMzMzMzMj/
////////////////////jMzMzMzMzMzMzMzIj////////////////////4zMzMzMzMzMzMzGTMzMzMzM
zMzH////////////////////+HzMzMzMzMzMzMzMx4////////////////////+MzMzMzMzMzMzMxAzM
zMzMzMzMx/////////////////////jMzMzMzMzMzMzMzMyI///////////////////4fMzMzMzMzMzM
zMAGzMzMzMzMzMeP//////////////////+HzMzMzMzMzMzMzMzMeP//////////////////+HzMzMzM
zMzMzMxgBszMzMzMzMzHj//////////////////4fMzMzMzMzMzMzMzMzMeP//////////////////h8
zMzMzMzMzMzMYADMzMzMzMzMzI//////////////////+HzMzMzMzMzMzMzMzMzHj///////////////
///4zMzMzMzMzMzMzAAAbMzMzMzMzMyP/////////////////4fMzMzMzMzMzMzMzMzMzHj/////////
////////+MzMzMzMzMzMzMYAAEzMzMzMzMzMj/////////////////+MzMzMzMzMzMzMzMzMzMzIj///
/////////////4fMzMzMzMzMzMzEAAAGzMzMzMzMzHj////////////////4fMzMzMzMzMzMzMzMzMzM
x4////////////////+MzMzMzMzMzMzMYAAABMzMzMzMzMx4////////////////h8zMzMzMzMzMzMzM
zMzMzMx4///////////////4fMzMzMzMzMzMzEAAAABszMzMzMzMx4//////////////+HzMzMzMzMzM
zMzMzMzMzMzMx4//////////////+MzMzMzMzMzMzMYAAAAATMzMzMzMzMyP/////////////4fMzMzM
zMzMzMzMzMzMzMzMzMeI/////////////4fMzMzMzMzMzMzEAAAAAAbMzMzMzMzMeP////////////h8
zMzMzMzMzMzMzMzMzMzMzMzMeI////////////h8zMzMzMzMzMzMYAAAAAAAbMzMzMzMzMeP////////
//iHzMzMzMzMzMzMzMzMzMzMzMzMzMyI//////////+HzMzMzMzMzMzMxgAAAAAAAEzMzMzMzMzMeP//
//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMx4/////////4fMzMzMzMzMzMzMQAAAAAAAAGzMzMzMzM
zMeI//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4j//////4h8zMzMzMzMzMzMxgAAAAAAAAAGzM
zMzMzMzMx4iIiIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiIj/+Ih3zMzMzMzMzMzMzGAAAAAAAA
AAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx3iId8zMzMzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
</value>
</data>
</root>
+6 -6
View File
@@ -17,23 +17,23 @@ namespace Work.UserComponents
public UcCheckBox()
{
InitializeComponent();
this.CheckBoxCheckColor = GlobalConfig.MainColor;
this.CheckBoxBorderColor = GlobalConfig.BorderColor;
this.CheckBoxCheckColor = GlobalConfig.WeiXinMainColor;
this.CheckBoxBorderColor = GlobalConfig.WeiXinBorderColor;
}
public UcCheckBox(IContainer container)
{
container.Add(this);
this.CheckBoxCheckColor = GlobalConfig.MainColor;
this.CheckBoxBorderColor = GlobalConfig.BorderColor;
this.CheckBoxCheckColor = GlobalConfig.WeiXinMainColor;
this.CheckBoxBorderColor = GlobalConfig.WeiXinBorderColor;
InitializeComponent();
}
private int checkBoxSize = 12;
public Color CheckBoxColor = Color.White;
public Color CheckBoxCheckColor = GlobalConfig.DefaultMainColor;
public Color CheckBoxBorderColor = GlobalConfig.DefaultBorderColor;
public Color CheckBoxCheckColor = GlobalConfig.WeiXinMainColor;
public Color CheckBoxBorderColor = GlobalConfig.WeiXinBorderColor;
protected override void OnPaint(PaintEventArgs e)
{
-12
View File
@@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Work
{
public class Class1
{
}
}
+64
View File
@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Work._29Tools.BLL
{
public class HttpResponseBLL
{
public static string ReadResponse(HttpWebResponse response, Encoding encoding = null)
{
using (Stream responseStream = response.GetResponseStream())
{
Stream streamToRead = responseStream;
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress);
}
else if (response.ContentEncoding.ToLower().Contains("deflate"))
{
streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress);
}
if (encoding == null) encoding = Encoding.UTF8;
using (StreamReader streamReader = new StreamReader(streamToRead, encoding))
{
return streamReader.ReadToEnd();
}
}
}
public static void WriteMultipartBodyToRequest(HttpWebRequest request, string body)
{
string[] multiparts = Regex.Split(body, @"<!>");
byte[] bytes;
using (MemoryStream ms = new MemoryStream())
{
foreach (string part in multiparts)
{
if (File.Exists(part))
{
bytes = File.ReadAllBytes(part);
}
else
{
bytes = System.Text.Encoding.UTF8.GetBytes(part.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", "\r\n"));
}
ms.Write(bytes, 0, bytes.Length);
}
request.ContentLength = ms.Length;
using (Stream stream = request.GetRequestStream())
{
ms.WriteTo(stream);
}
}
}
}
}
+693
View File
@@ -0,0 +1,693 @@
using AllBase;
using AllBase.Model.Result;
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace Work._29Tools.BLL
{
public class HttpResponseWXBLL
{
//Assistant
public static string WeiXinAssistantPostResponse(ShopLoginInfo shop, string _url, string _data, string referer)
{
string biz_magic = "";
string talent_magic = "";
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop?.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
//var bizMagicCookie = cookieLst.FirstOrDefault(c => c.Name == "biz_magic");
//if (bizMagicCookie != null)
// biz_magic = bizMagicCookie.Value;
var talentMagicCookie = cookieLst.FirstOrDefault(c => c.Name == "talent_magic");
if (talentMagicCookie != null)
talent_magic = talentMagicCookie.Value;
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("wecom_magic", @"");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("supplier_magic", @"");
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("potter-scene", @"weixinShop");
request.Headers.Add("biz_magic", "");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/plain, */*";
request.Headers.Add("talent_magic", talent_magic);
request.ContentType = "application/json";
request.Headers.Add("mcn_magic", @"");
request.Headers.Add("Origin", @"https://store.weixin.qq.com");
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string WeiXinPostResponse(ShopLoginInfo shop, string _url, string _data, string referer)
{
string biz_magic = "";
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop?.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
var bizMagicCookie = cookieLst.FirstOrDefault(c => c.Name == "biz_magic");
if (bizMagicCookie != null)
biz_magic = bizMagicCookie.Value;
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("wecom_magic", @"");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("supplier_magic", @"");
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("potter-scene", @"weixinShop");
request.Headers.Add("biz_magic", biz_magic);
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/plain, */*";
request.Headers.Add("talent_magic", @"");
request.ContentType = "application/json";
request.Headers.Add("mcn_magic", @"");
request.Headers.Add("Origin", @"https://store.weixin.qq.com");
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string WeiXinTalentOpenKfPostResponse(ShopLoginInfo shop, string _url, string _data, string referer)
{
string biz_magic = "";
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop?.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
var bizMagicCookie = cookieLst.FirstOrDefault(c => c.Name == "biz_magic");
if (bizMagicCookie != null)
biz_magic = bizMagicCookie.Value;
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("wecom_magic", @"");
request.Headers.Add("user_scene", @"1002");
request.Headers.Add("kf_scene", @"6");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("supplier_magic", @"");
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("potter-scene", @"weixinShop");
request.Headers.Add("biz_magic", biz_magic);
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/plain, */*";
request.Headers.Add("talent_magic", @"");
request.ContentType = "application/json";
request.Headers.Add("logistics_magic", @"");
request.Headers.Add("mcn_magic", @"");
request.Headers.Add("Origin", @"https://store.weixin.qq.com");
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string WeiXinImgPostResponse(ShopLoginInfo shop, string _url, string _data, string dis_k, long dis_t, string ext, string referer = "https://store.weixin.qq.com/")
{
string biz_magic = "";
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop?.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
var bizMagicCookie = cookieLst.FirstOrDefault(c => c.Name == "biz_magic");
if (bizMagicCookie != null)
biz_magic = bizMagicCookie.Value;
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
//request.Headers.Add("X-Arguments", @"dis_k=9974f70b8c9e17952a3bf6aa7b0fcfee84d976d5&dis_t=1767868679&ext=1b37ffc79cfe7&apptype=160&filetype=20304&openid=ouBgG2b2iqWytVlHHK0lhZvMBf2o&groupid=0&taskid=c9059d06-383e-460e-86e6-a0cb134016a9");
request.Headers.Add("X-Arguments", @"dis_k=" + dis_k + @"&dis_t=" + dis_t + @"&ext=" + ext + @"&apptype=160&filetype=20304&openid=" + shop.openid + @"&groupid=0&taskid=" + Guid.NewGuid().ToString());
request.Accept = "application/json, text/plain, */*";
request.ContentType = "application/json";
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Headers.Add("Origin", @"https://store.weixin.qq.com");
request.Headers.Add("Sec-Fetch-Site", @"same-site");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = Convert.FromBase64String(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string WeiXinUploadResponse(ShopLoginInfo shop, string _url, string _body, string boundaryStr, string referer)
{
string biz_magic = "";
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop?.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
if (cook.Name.StartsWith("biz"))
cookies += cook.Name + "=" + cook.Value + ";";
}
var bizMagicCookie = cookieLst.FirstOrDefault(c => c.Name == "biz_magic");
if (bizMagicCookie != null)
biz_magic = bizMagicCookie.Value;
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("wecom_magic", @"");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("supplier_magic", @"");
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("potter-scene", @"weixinShop");
request.Headers.Add("biz_magic", biz_magic);
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/plain, */*";
request.Headers.Add("talent_magic", @"");
request.ContentType = "multipart/form-data; boundary=" + boundaryStr;
request.Headers.Add("mcn_magic", @"");
request.Headers.Add("Origin", @"https://store.weixin.qq.com");
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
request.Referer = referer; //"https://store.weixin.qq.com/shop/goods/entry";
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _body;
HttpResponseBLL.WriteMultipartBodyToRequest(request, body);
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string WeiXinGetResponse(ShopLoginInfo shop, string _url, string referer = "", bool isGetDocument = false)
{
string biz_magic = "";
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop?.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
if (cook.Name.StartsWith("biz"))
cookies += cook.Name + "=" + cook.Value + ";";
}
var bizMagicCookie = cookieLst.FirstOrDefault(c => c.Name == "biz_magic");
if (bizMagicCookie != null)
biz_magic = bizMagicCookie.Value;
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
if (isGetDocument)
{
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Headers.Add("Sec-Fetch-Site", @"none");
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
request.Headers.Add("Sec-Fetch-User", @"?1");
request.Headers.Add("Sec-Fetch-Dest", @"document");
}
else
{
request.Headers.Add("wecom_magic", @"");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("supplier_magic", @"");
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("potter-scene", @"weixinShop");
request.Headers.Add("biz_magic",biz_magic);
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/plain, */*";
request.Headers.Add("talent_magic", @"");
request.Headers.Add("mcn_magic", @"");
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
}
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string kdniaoPostResponse(string _url, string _data, string referer, Dictionary<string, object> reqDic, string kdnAuth = null, string kdnAuthKey = "Auth")
{
HttpWebResponse response = null;
string result;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
//request.Headers.Add("kdnAuth", @"62993d99a28947aaadd6b79427929562");
//request.Headers.Add("kdnAuth", kdnAuth);
//request.Headers.Add("Auth", kdnAuth);
//request.Headers.Add(kdnAuthKey, kdnAuth);
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/javascript, */*; q=0.01";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("Origin", @"https://56.kdniao.com");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Headers.Add("Sec-Fetch-Site", @"same-site");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
foreach (var key in reqDic.Keys)
{
if (request.Headers.AllKeys.Contains(key))
continue;
request.Headers.Add(key, reqDic[key].ParseToString());
}
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string e57PostResponse(string _url, string _data, string referer, string Authorization = null)
{
if (string.IsNullOrEmpty(Authorization))
Authorization = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjQ3YmRlOGNlLWY5MDUtNDIzOS05M2VjLWZiN2U3MjRmOTY0NiJ9.vwxhj3t4zTDdBQTyfVjcKr-0Oma8-VtPDzE2LVkw4A4aWftncY1ikXgEhGwoYHn9E7yOnhS_Pb7FfzgecTqqHA";
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request;
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol =
ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
}
else
request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
//request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
//request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36";
request.ContentType = "application/json";
//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"; //request.Accept = "*/*";
//request.Referer = referer;
//request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
//request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.Headers.Add("Authorization", Authorization);
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
request.Headers.Add("Sec-Fetch-Site", @"none");
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
request.Headers.Add("Sec-Fetch-User", @"?1");
request.Headers.Add("Sec-Fetch-Dest", @"document");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string e57GetResponse(string _url, string referer)
{
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request;
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol =
ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
}
else
request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
request.Headers.Add("Sec-Fetch-Site", @"none");
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
request.Headers.Add("Sec-Fetch-User", @"?1");
request.Headers.Add("Sec-Fetch-Dest", @"document");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
}
}
+267
View File
@@ -0,0 +1,267 @@
using AllBase;
using AllBase.Model.Result;
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace Work._29Tools.BLL
{
public class HttpResponseYkdBLL
{
public static string YangkeduoPostResponse(BuyerLoginInfo buyer, string _url, string _data, string referer)
{
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(buyer?.cookie.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/plain, */*";
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("Origin", @"https://mobile.yangkeduo.com");
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
request.Referer = referer;
//request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string YangkeduoGetResponse(BuyerLoginInfo buyer, string _url, string referer = "")
{
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(buyer?.cookie.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "application/json, text/plain, */*";
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"cors");
request.Headers.Add("Sec-Fetch-Dest", @"empty");
//request.Referer = "https://mobile.yangkeduo.com/goods.html?goods_id=668777537796&_oak_rcto=YWKWG77VXtDidZlaaAew84Hjoi0WMIkr6Sb3iSrTsNPiwhxdCIE-1DEr&_oc_trace_mark=199&_oc_adinfo=eyJwYWdlX3NuIjoxMDAwMiwic2NlbmVfaWQiOjUwNn0%3D&_oak_gallery_token=49fa7eda1bcf57d32ea05e34565ca727&_oak_gallery=https%3A%2F%2Fimg.pddpic.com%2Fmms-material-img%2F2025-08-19%2F74364405-4d67-4d13-ad64-1712f70865db.jpeg.a.jpeg&_oc_refer_ad=1&page_from=35&thumb_url=https%3A%2F%2Fimg.pddpic.com%2Fmms-material-img%2F2025-08-19%2F74364405-4d67-4d13-ad64-1712f70865db.jpeg.a.jpeg%3FimageMogr2%2Fthumbnail%2F400x%257CimageView2%2F2%2Fw%2F400%2Fq%2F80%2Fformat%2Fwebp&refer_page_name=index&refer_page_id=10002_1775730536937_hocm3gfy6j&refer_page_sn=10002&uin=CFS2K7V47GEISCE6TLYY6HRWPI_GEXDA";
request.Referer = referer;
//request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string YangkeduoGetPageResponse(BuyerLoginInfo buyer, string _url, string referer = "")
{
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(buyer?.cookie.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Headers.Add("Sec-Fetch-Site", @"none");
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
request.Headers.Add("Sec-Fetch-User", @"?1");
request.Headers.Add("Sec-Fetch-Dest", @"document");
if (!string.IsNullOrEmpty(referer))
request.Referer = referer;
//request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string YangkeduoGetSearchOrderResponse(BuyerLoginInfo buyer, string _url, string referer = "")
{
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(buyer?.cookie.ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Headers.Add("Sec-Fetch-Site", @"same-origin");
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
request.Headers.Add("Sec-Fetch-User", @"?1");
request.Headers.Add("Sec-Fetch-Dest", @"document");
if (!string.IsNullOrEmpty(referer))
request.Referer = referer;
//request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
}
}
+36
View File
@@ -0,0 +1,36 @@
using AllBase;
using AllBase.Model;
using AllBase.Model.Params;
using CefSharp.DevTools.LayerTree;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Work._29Tools.BLL
{
public class SendBuyerOrder
{
public static string SendBuyerOrderToTransitWarehouse(oms_wei_order_item_info order_item, TransitWarehouseParam warehouseParam,
string outOrderNo, int outAmount, string buyerNick, string userNickName)
{
JObject body = new JObject();
body["orderNo"] = order_item.order_id;
body["outOrderNo"] = outOrderNo;
body["outAmount"] = outAmount.ParseToString();
body["buyerAccount"] = buyerNick;
body["purchaserNote"] = userNickName;
body["express1Company"] = ""; // 物流公司编号
body["express1Waybill"] = ""; // 物流编号
body["platform"] = warehouseParam.TransId; // 中转仓ID
body["orderPlatformCode"] = "WEISHOP";
var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate";
var dataStr = JsonHelper.SerializeObject(body);
var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
return exportRst;
}
}
}
@@ -0,0 +1,188 @@
using CefSharp;
using CefSharp.Handler;
using CefSharp.ResponseFilter;
using NaiBa.Util.Helper;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Work._29Tools.CefTools
{
public class BaseResourceRequestHandler : ResourceRequestHandler
{
public string UserAgent = string.Empty;
public Func<object, string, string, IRequest, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, true(表示取消执行)
public Action<object, string, string, string, IRequest> ResourceLoadCompleteEvent; // sender, requestUrl, postData, responseData
public Action<object, string, string, string> ResourceRedirectEvent; // sender, requestUrl, postData, redirectUrl
public string[] ResourceContentTypeRegister = new string[] { "application/json", "javascript", "application/x-www-form-urlencoded", "text/html", "text/plain", "text/event-stream" };
public string GetCharSet(string charSet)
{
if (string.IsNullOrEmpty(charSet))
{
charSet = "UTF-8";
}
return charSet;
}
public string GetPostData(IRequest request)
{
string postData = string.Empty;
if (request.PostData != null && request.PostData.Elements.Any())
{
for (int i = 0; i < request.PostData.Elements.Count; i++)
{
try
{
string charset = GetCharSet(request.GetCharSet());
if (request.PostData.Elements[i].Type != PostDataElementType.Empty)
postData += request.PostData.Elements[i].GetBody(charset);
}
catch (Exception ex)
{
LogHelper.WriteWithTime(ex);
}
}
}
return postData;
}
}
public class CustomResourceRequestHandlerLocal : BaseResourceRequestHandler
{
private ConcurrentDictionary<ulong, MemoryStream> responseDict = new ConcurrentDictionary<ulong, MemoryStream>();
protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
{
Uri url;
if (Uri.TryCreate(request.Url, UriKind.Absolute, out url) == false)
{
//If we're unable to parse the Uri then cancel the request
// avoid throwing any exceptions here as we're being called by unmanaged code
return CefReturnValue.Cancel;
}
if (!string.IsNullOrEmpty(UserAgent))
{
var headers = request.Headers;
headers["User-Agent"] = UserAgent;
request.Headers = headers;
}
//NOTE: If you do not wish to implement this method returning false is the default behaviour
// We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.
//callback.Dispose();
//return false;
//NOTE: When executing the callback in an async fashion need to check to see if it's disposed
if (!callback.IsDisposed)
{
using (callback)
{
if (request.Method == "POST")
{
try
{
string postData = GetPostData(request);
bool? result = BeforeResourceLoadEvent?.Invoke(chromiumWebBrowser, request.Url, postData, request);
}
catch (Exception ex)
{
LogHelper.WriteWithTime(ex);
}
}
}
}
return CefReturnValue.Continue;
}
protected override void OnResourceRedirect(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
{
try
{
if (ResourceRedirectEvent != null)
{
string postData = GetPostData(request);
ResourceRedirectEvent.Invoke(chromiumWebBrowser, request.Url, postData, newUrl);
}
}
catch (Exception ex)
{
LogHelper.WriteWithTime(ex);
}
}
protected override bool OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
{
return request.Url.StartsWith("mailto");
}
protected override bool OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
//NOTE: You cannot modify the response, only the request
// You can now access the headers
//var headers = response.Headers;
return false;
}
protected override IResponseFilter GetResourceResponseFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
try
{
string contentType = response.Headers["Content-Type"];
if (string.IsNullOrEmpty(contentType))
{
return null;
}
if (ResourceContentTypeRegister.Contains(contentType) || ResourceContentTypeRegister.Where(p => contentType.Contains(p)).Any())
{
if (ResourceLoadCompleteEvent != null)
{
MemoryStream memoryStream = new MemoryStream();
responseDict.TryAdd(request.Identifier, memoryStream);
return new StreamResponseFilter(memoryStream);
}
}
}
catch (Exception ex)
{
LogHelper.WriteWithTime(ex);
}
return null;
}
protected override void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
{
try
{
if (responseDict.ContainsKey(request.Identifier))
{
MemoryStream memoryStream = null;
responseDict.TryRemove(request.Identifier, out memoryStream);
if (memoryStream != null)
{
byte[] data = memoryStream.ToArray();
string charset = GetCharSet(response.Charset);
var responseData = Encoding.GetEncoding(charset).GetString(data);
string postData = GetPostData(request);
ResourceLoadCompleteEvent.Invoke(chromiumWebBrowser, request.Url, postData, responseData, request);
}
}
}
catch (Exception ex)
{
LogHelper.WriteWithTime(ex);
}
}
}
}
@@ -0,0 +1,82 @@
using CefSharp;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Work._29Tools.CefTools
{
public enum PopWindowType
{
NewWindow,
SelfWindow,
NewTitleWindow,
}
public class PopData
{
public string Url { get; set; }
}
public class LifeSpanHandlerLocal : ILifeSpanHandler
{
private PopWindowType popWindowType = PopWindowType.NewWindow;
public event EventHandler<PopData> OnPop;
public ChromiumWebBrowser parent;
public LifeSpanHandlerLocal()
{
}
public LifeSpanHandlerLocal(PopWindowType _popWindowType)
{
popWindowType = _popWindowType;
}
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
return false;
}
public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
if (!browser.IsDisposed && browser.IsPopup)
{
//GlobalFormConfig.MainFormInstance.InvokeOnUiThreadIfRequired(() =>
//{
// // 修改窗体左上角的图标
// IntPtr handle = browser.GetHost().GetWindowHandle();
// PInvokeHelper.SendMessage(handle, 0x80, IntPtr.Zero, NaiBaGlobalConfig.SoftwareConfig.LogoIcon.Handle);
//});
}
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
if (popWindowType == PopWindowType.NewWindow)
{
newBrowser = null;
return false;
}
else if (popWindowType == PopWindowType.NewTitleWindow && popupFeatures.IsPopup)
{
PopData p = new PopData() { Url = targetUrl };
if (OnPop != null)
OnPop(this, p);
newBrowser = null;
return true;
}
else
{
// 不打开新的 tab
browser.MainFrame.LoadUrl(targetUrl);
newBrowser = null;
return true;
}
}
}
}
@@ -0,0 +1,640 @@
using AllBase;
using AllBase.Helper;
using AllBase.Model;
using AllBase.Model.Params;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.WinForms;
using DevComponents.WinForms.Drawing;
//using TemuKJD.DashBoardForms;
using Microsoft.Win32;
using NaiBa.CefHelper;
using NaiBa.CefHelper.Handler;
using NaiBa.Util.Enum;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
//using System.Web.Hosting;
using System.Windows.Forms;
using Work;
using Work._29Tools.BLL;
using Work._29Tools.CefTools;
using Work.BaseForms;
namespace TemuKJD.ToolForms
{
public partial class PddMobileBuyOrderForm : BaseGeneralForm
{
private BuyerLoginInfo buyer = null;
private oms_wei_order_item_info orderItem = null;
private WXBuyMapInfo buyMap = null;
private TransitWarehouseParam transitWarehouse = null;
private Action<oms_wei_order_info, bool> filterOrderAction = null;
public int CloseAfterSecond { get; set; }
public string InitUrl = "";
private string shopCookieHead = "yangkeduo.com";
private string shopMainUrl = "https://mobile.yangkeduo.com/index.html";
public ChromiumWebBrowser cefWebBrowser = null;
private string currentUrl = "";
public PddMobileBuyOrderForm(Action<oms_wei_order_info, bool> filterOrder, oms_wei_order_item_info orderItemInfo, BuyerLoginInfo buyerInfo, WXBuyMapInfo buy_map = null)
{
InitializeComponent();
this.buyer = buyerInfo;
this.orderItem = orderItemInfo;
this.buyMap = buy_map;
filterOrderAction = filterOrder;
}
private void ShopLoginForm_Load(object sender, EventArgs e)
{
this.Height = SystemInformation.WorkingArea.Height - 80;
this.CenterToScreen();
if (CloseAfterSecond > 0)
{
Task.Run(() =>
{
Thread.Sleep(1000 * CloseAfterSecond);
if (this.Created)
{
Invoke(new Action(() => { this.Close(); }));
}
});
}
if (buyMap != null)
{
this.txtMapGoodsName.Text = buyMap.map_goods_name;
this.txtMapSkuName.Text = buyMap.map_spec_name;
this.txtMapGoodsId.Text = buyMap.map_goods_id;
this.txtMapSkuId.Text = buyMap.map_sku_id;
txtSendProvince.Text = buyMap.map_send_address;
this.transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == buyMap.transit_warehouse_id);
if (transitWarehouse != null)
{
cmbTransitWarehouse.Text = transitWarehouse?.TransName + " " + transitWarehouse?.TransDetailAddress;
}
}
pictureBox1.ImageLocation = orderItem.thumb_img;
this.txtShopSkuId.Text = orderItem.sku_id;
this.txtShopGoodsId.Text = orderItem.product_id;
this.txtUpSpuCode.Text = orderItem.out_product_id;
this.txtUpSkuCode.Text = orderItem.out_sku_id;
this.txtShopGoodsName.Text = orderItem.title;
this.txtShopSpecName.Text = orderItem.sku_attr_str;
this.txtShopOrderItemCnt.Text = orderItem.sku_cnt.ParseToString();
this.txtShopOrderItemPrice.Text = (orderItem.real_price * 0.01m).ParseToString();
foreach (var warehouse in TransitWarehouseData.TransitWarehouseList)
{
//var rb = new RadioButton
//{
// Text = warehouse.TransName + warehouse.TransDetailAddress,
// Tag = warehouse,
// AutoSize = true,
//};
//rb.CheckedChanged += Rb_CheckedChanged;
//this.flowLayoutPanel1.Controls.Add(rb);
this.cmbTransitWarehouse.Items.Add(warehouse.TransName + " " + warehouse.TransDetailAddress);
}
Task.Run(() =>
{
Invoke(new Action(() =>
{
LoadCef();
}));
});
}
private void Rb_CheckedChanged(object sender, EventArgs e)
{
transitWarehouse = (sender as RadioButton)?.Tag as TransitWarehouseParam;
}
/// <summary>
/// 自动登录店铺后台
/// </summary>
private void LoadCef()
{
if (cefWebBrowser == null)
{
//cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, false);
else
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(shopMainUrl, false);
CustomResourceRequestHandlerLocal resourceRequestHandler = new CustomResourceRequestHandlerLocal();
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad;
cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
cefWebBrowser.KeyboardHandler = new KeyboardHandler();
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowser.LoadError += CefWebBrowser_LoadError;
cefWebBrowser.Dock = DockStyle.Fill;
//js绑定C#对象
//PDDShopBrowserObject shopObj = new PDDShopBrowserObject();
//shopObj.OnInfoReceived += ShopObj_OnInfoReceived;
//CefSharpSettings.WcfEnabled = true;
//cefWebBrowser.JavascriptObjectRepository.Register(
// name: "shopObj",
// objectToBind: shopObj,
// isAsync: false,
// options: new BindingOptions { Binder = BindingOptions.DefaultBinder.Binder /*CamelCaseJavascriptNames = false*/ /*cef79*/ }
//);
//if (buyer.cookie == null)
// buyer.cookie = "";
List<Cookie> cookieLst = new List<Cookie>();
try
{
if (buyer != null)
{
cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(buyer?.cookie);
if (cookieLst == null)
cookieLst = new List<Cookie>();
}
}
catch
{
}
Task.Run(() =>
{
Invoke(new Action(() =>
{
splitContainer1.Panel1.Controls.Add(cefWebBrowser);
//cefWebBrowser.Load(shopMainUrl);
}));
// cef138必须init后方可设置或删除cookie
while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
Thread.Sleep(20);
CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//if (cookieLst.Any(c => c.Value.StartsWith("windows_1")))
// cefWebBrowser.ExecuteScriptAsync("navigator.__defineGetter__('userAgent', function() { return 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.5.40.8 Safari/537.36 PddWorkbench-Online PddBrowser pdd_windows_version/3.0.3.12'; });");
//cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager
//if (this.openType != EnumOpenType.login)
{
var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null));
}
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser.Load(InitUrl);
else
cefWebBrowser.Load(shopMainUrl);
});
}
}
private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
{
}
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
if (this.Created && !this.Disposing && !this.IsDisposed)
{
Invoke(new Action(() =>
{
currentUrl = e.Address;
txtAddress.Text = e.Address;
}));
}
}
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
//js绑定C#对象 html页面内声明绑定的C#对象
StringBuilder sb = new StringBuilder();
sb.Append("(function(){");
sb.Append("CefSharp.BindObjectAsync('shopObj');");
sb.Append("})();");
cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString());
}
//public Func<object, string, string, request, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行)
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/origenes/address_info") && chkChangeWarehouseAddress.Checked && transitWarehouse != null)
{
//var address = BaseRegex.GetStringJson(ref postData, "address");
JObject jObj = JsonHelper.JObjectParse(postData);
jObj["province_id"] = transitWarehouse.province_id;
jObj["city_id"] = transitWarehouse.city_id;
jObj["district_id"] = transitWarehouse.district_id;
jObj["address"] = transitWarehouse.TransDetailAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室";
jObj["mobile"] = WaybillHelper.MobileHead[Randomx.GetId(WaybillHelper.MobileHead.Count)] + Randomx.GetNumber(8);
jObj["name"] = WaybillHelper.LastName[Randomx.GetId(WaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士");
postData = JsonHelper.SerializeObject(jObj);
request.PostData.Elements[0].Bytes = System.Text.Encoding.UTF8.GetBytes(postData);
}
return false;
}
//static int GetAntiContentsTimes = 40;
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
// 个人页面
if (url.Contains("https://mobile.yangkeduo.com/personal.html"))
{
Task.Run(() =>
{
var data = responseData;
});
}
// 商品页面
if (url.StartsWith("https://mobile.yangkeduo.com/goods.html?goods_id="))
{
Task.Run(() =>
{
var sendProvince = "";
var data = responseData;
var sendProvinceIndex = data.IndexOf("{\"key\":\"发货地\",\"values\":[");
if (sendProvinceIndex > 0)
{
sendProvince = data.Substring(sendProvinceIndex + "{\"key\":\"发货地\",\"values\":[".Length);
sendProvince = sendProvince.Substring(0, sendProvince.IndexOf("]"));
sendProvince = sendProvince.Trim('\"');
Invoke(new Action(() => { this.txtSendProvince.Text = sendProvince; }));
}
if (!string.IsNullOrEmpty(sendProvince) && this.transitWarehouse == null)
{
MatchTransitWarehouse(sendProvince);
}
});
}
// 订单详情页面
if (url.StartsWith("https://mobile.yangkeduo.com/order.html?order_sn="))
{
Task.Run(() =>
{
var data = responseData;
var goodsId = BaseRegex.GetLongJson(ref data, "goodsId");
var skuId = BaseRegex.GetLongJson(ref data, "skuId");
var goodsName = BaseRegex.GetStringJson(ref data, "goodsName");
var spec = BaseRegex.GetStringJson(ref data, "spec");
var oneGoodsPrice = BaseRegex.GetIntJson(ref data, "goodsPrice");
var buyCnt = BaseRegex.GetIntJson(ref data, "goodsNumber");
var buyPrice = BaseRegex.GetIntJson(ref data, "payAmount");
Invoke(new Action(() =>
{
this.txtMapGoodsId.Text = goodsId.ParseToString();
this.txtMapSkuId.Text = skuId.ParseToString();
this.txtMapGoodsName.Text = goodsName;
this.txtMapSkuName.Text = spec;
}));
});
}
// 待提交订单确认界面
//"https://mobile.yangkeduo.com/proxy/api/api/morgan/confirm/render?pdduid=8161628055192"
//https://mobile.yangkeduo.com/order_checkout.html?sku_id=1917755178967&group_id=168599782729&goods_id=966934985983&goods_number=1&page_from=0&detail_id=27322663212&_oak_rcto=YWJun7Qe7qhenWIlxgKO3uhsoi0WMIkr6Sb3iSrTsNPiwo_AHzvFVWwZ36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail&refer_page_id=10014_1782220402115_blxn1wofgo&refer_page_sn=10014
//https://mobile.yangkeduo.com/order_checkout.html?sku_id=1914416497946&group_id=168211384489&goods_id=964481496910&goods_number=2&page_from=23&detail_id=27475863056&_oc_refer_ad=0&_oak_rcto=YWJQMioxuzYiHEIW34yn103Toi0WMIkr6SaYUDjBkmkvOAtI8c-ZcKMw36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&_x_query=%E4%B8%AD%E5%9B%BD%E5%8F%A4%E4%BB%A3%E7%AE%97%E6%9C%AF%E6%B3%95%E8%80%81%E7%89%88%E6%9C%AC%E6%B4%AA%E4%B8%95%E8%B0%9F%E8%91%97%E5%91%BD%E7%90%86%E5%AD%A6%E7%A0%94%E7%A9%B6%E5%85%A5%E9%97%A8%E9%A3%8E%E6%B0%B4%E5%AD%A6%E4%B9%A6%E7%B1%8D%E5%85%A5%E9%97%A8%E5%B1%85%E5%AE%B6&refer_page_name=goods_detail&refer_page_id=10014_1782275100226_pojdmxgpty&refer_page_sn=10014
if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/morgan/confirm/render?pdduid="))
{
Task.Run(() =>
{
var data = responseData;
if (data.Contains("\"goods_id\""))
{
var goodsId = BaseRegex.GetLongJson(ref data, "goods_id");
var skuId = BaseRegex.GetLongJson(ref data, "sku_id");
var goodsName = BaseRegex.GetStringJson(ref data, "goods_name");
var specifications = BaseRegex.GetMatchRegexString(ref data, @"""specifications"":\[([^']+?)\]");
var spec = "";
var specMatch = BaseRegex.GetMatchRegex(ref data, @"""spec_value"":""([^']+?)""");
foreach (var match in specMatch)
{
var matchStr = match.ParseToString();
spec += ("," + BaseRegex.GetStringJson(ref matchStr, "spec_value"));
}
spec = spec.Trim(',');
var oneGoodsPrice = BaseRegex.GetIntJson(ref data, "goodsPrice");
var buyCnt = BaseRegex.GetIntJson(ref data, "goods_number");
var buyPrice = BaseRegex.GetIntJson(ref data, "pay_price");
Invoke(new Action(() =>
{
this.txtBuyGoodsId.Text = goodsId.ParseToString();
this.txtBuySkuId.Text = skuId.ParseToString();
this.txtBuyGoodsName.Text = goodsName;
this.txtBuySkuName.Text = spec;
this.txtBuyCnt.Text = buyCnt.ParseToString();
this.txtBuyPrice.Text = (buyPrice * 0.01m).ParseToString();
}));
// 自动修改收货地址为中转仓
Invoke(new Action(() =>
{
if (cmbTransitWarehouse.Text.Trim().Length > 0 && IsChangeAddress == false && HasChangeAddress == false)
{
Task.Run(() =>
{
IsChangeAddress = true;
Thread.Sleep(1000);
ChangeAddress();
IsChangeAddress = false;
});
}
}));
}
});
}
// 订单提交接口
if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/order/prepay?pdduid="))
{
Task.Run(() =>
{
var data = postData;
Invoke(new Action(() =>
{
txtBuyOrderId.Text = BaseRegex.GetStringJson(ref data, "order_sn");
}));
});
}
}
bool IsChangeAddress = false;
bool HasChangeAddress = false;
public string ChangeAddress()
{
//var host = cefWebBrowser.GetBrowser().GetHost();
//var client = cefWebBrowser.GetDevToolsClient();
//if (host == null || client == null)
//{
// return "页面未加载";
//}
//// 点击图片搜索图标
//var jsStr1 = @"(function() { var spans = document.getElementsByTagName('span');
// for (i=0; i< spans.length;i++){
// var span = spans[i];
// if (span.outerHTML.indexOf('el_image_search_button') >= 0) {
// span.click();
// break;
// }
// }
// })();";
//var ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true);
//ts1.Wait(5000);
//Thread.Sleep(Randomx.GetId(1500, 3000));
return "";
}
private void btnManualUpdateSendProvince_Click(object sender, EventArgs e)
{
var sendProvince = txtSendProvince.Text.Trim();
MatchTransitWarehouse(sendProvince);
}
void MatchTransitWarehouse(string sendProvince)
{
bool isAutoGetWarehouse = false;
//foreach (var control in this.flowLayoutPanel1.Controls)
//{
// if (control is RadioButton rb)
// {
// if (rb.Tag is TransitWarehouseParam warehouseParam)
// {
// if (warehouseParam.TransDetailAddress.Contains(sendProvince))
// {
// Invoke(new Action(() =>
// {
// rb.Checked = true;
// }));
// isAutoGetWarehouse = true;
// break;
// }
// }
// }
//}
foreach (var item in this.cmbTransitWarehouse.Items)
{
TransitWarehouseParam warehouseParam = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransDetailAddress == item.ParseToString());
if (warehouseParam == null)
{
continue;
}
if (warehouseParam.TransDetailAddress.Contains(sendProvince))
{
Invoke(new Action(() =>
{
cmbTransitWarehouse.Text = warehouseParam.TransName + " " + warehouseParam.TransDetailAddress;
}));
transitWarehouse = warehouseParam;
isAutoGetWarehouse = true;
break;
}
}
if (!isAutoGetWarehouse)
{
//黄导家庭父母5天训练营-《父母5天成为孩子成长的引路人》+《不内卷养育》2本书
Invoke(new Action(() =>
{
cmbTransitWarehouse.Text = "";
BaseMsgForm.ShowError("匹配仓库失败,请手动选择");
}));
}
}
private void ShopLoginForm_FormClosed(object sender, FormClosedEventArgs e)
{
//OnSaveComplete(shop);
Task.Run(() => {
Thread.Sleep(500);
if (!this.Disposing && !this.IsDisposed)
{
//MainForm.instance.Invoke(new Action(() => { this.Dispose(); }));
}
});
}
private void txtAddress_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (cefWebBrowser != null)
{
cefWebBrowser.Load(txtAddress.Text);
}
}
}
private void btnManualUpdateTransitWarehouse_Click(object sender, EventArgs e)
{
if (transitWarehouse == null && !cmbTransitWarehouse.Text.Trim().IsNullOrEmpty())
{
transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransDetailAddress == cmbTransitWarehouse.Text.Trim().ParseToString());
}
if (transitWarehouse == null)
{
BaseMsgForm.ShowError("仓库不能为空");
return;
}
var url = BaseClass.Build29WxObjString("order/wx_add_mdy_buy_prod_map");
var data = UserLogin.GetSignaturex()
+ "&spu_code=" + txtUpSpuCode.Text.Trim()
+ "&sku_code=" + txtUpSkuCode.Text.Trim()
+ "&main_user_name=" + BaseClass.MainUserName
+ "&map_goods_name=" + txtMapGoodsName.Text.Trim()
+ "&map_spec_name=" + txtMapSkuName.Text.Trim()
+ "&map_goods_id=" + txtMapGoodsId.Text.Trim()
+ "&map_sku_id=" + txtMapSkuId.Text.Trim()
+ "&map_send_address=" + txtSendProvince.Text.Trim()
+ "&transit_warehouse_id=" + transitWarehouse?.TransId;
var result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("保存失败" + BaseRegex.GetStringJson(ref result, "msg"));
}
else
{
var urlMap = BaseClass.Build29WxObjString("order/wx_get_buy_prod_map");
var dataMap = UserLogin.GetSignaturex()
+ "&spu_codes=" + txtUpSpuCode.Text.Trim();
dataMap += "&sku_codes=" + txtUpSkuCode.Text.Trim();
dataMap += "&main_user_name=" + BaseClass.MainUserName;
var resultMap = GetHtml.PostUtf8(urlMap, dataMap);
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
resultMap = GetHtml.PostUtf8(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()); } catch { }
var map = buyMapList.FirstOrDefault();
if (map != null)
{
foreach (var order in GlobalConfig.lstOrder)
{
if (order.IsWaitBuy)
{
foreach (var item in order.order_items)
{
if (item.out_product_id == map.spu_code && item.out_sku_id == map.sku_code)
{
item.buy_map = map;
if (filterOrderAction != null)
{
GlobalConfig.lstFilterOrder.Remove(order);
filterOrderAction(order, false);
}
}
}
}
}
}
}
BaseMsgForm.ShowInfo("保存成功!");
this.Close();
}
}
private void btnManualUpdateBuyOrder_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtBuyOrderId.Text))
{
BaseMsgForm.ShowError("缺少拍单订单号,请拍单后再提交");
return;
}
JObject body = new JObject();
body["orderNo"] = orderItem.order_id;
body["orderSkuId"] = orderItem.sku_id;
body["outOrderNo"] = txtBuyOrderId.Text.Trim();
body["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + "";
body["buyerAccount"] = buyer.buyer_nick;
body["purchaserNote"] = BaseClass.NickName;
body["express1Company"] = ""; // 物流公司编号
body["express1Waybill"] = ""; // 物流编号
body["platform"] = transitWarehouse.TransId; // 中转仓ID
body["orderPlatformCode"] = "WEISHOP";
var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate";
var dataStr = JsonHelper.SerializeObject(body);
var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
//<AjaxResult><msg>保存成功</msg><code>200</code></AjaxResult>
if (exportRst != null && exportRst.Contains("<code>200</code>"))
{
BaseMsgForm.ShowInfo("保存成功");
orderItem.item_transit_orders.Insert(0, new oms_wei_external_procurement_log()
{
buyer_account = buyer.buyer_nick,
id = 0,
order_no = orderItem.order_id,
order_sku_id = orderItem.sku_id,
out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(),
out_order_no = txtBuyOrderId.Text.Trim(),
purchaser_note = BaseClass.NickName,
});
var order = orderItem.item_order;
if (filterOrderAction != null)
{
GlobalConfig.lstFilterOrder.Remove(order);
filterOrderAction(order, true);
}
this.Close();
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
if (pictureBox1.Size.Width == 100)
{
pictureBox1.Size = new Size(430, 430);
pictureBox1.BringToFront();
}
else
{
pictureBox1.Size = new Size(100, 100);
}
}
}
}
+812
View File
@@ -0,0 +1,812 @@
namespace TemuKJD.ToolForms
{
partial class PddMobileBuyOrderForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PddMobileBuyOrderForm));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.txtBuySkuName = new System.Windows.Forms.TextBox();
this.label21 = new System.Windows.Forms.Label();
this.txtBuySkuId = new System.Windows.Forms.TextBox();
this.label22 = new System.Windows.Forms.Label();
this.label23 = new System.Windows.Forms.Label();
this.txtBuyGoodsId = new System.Windows.Forms.TextBox();
this.txtBuyGoodsName = new System.Windows.Forms.TextBox();
this.label24 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label20 = new System.Windows.Forms.Label();
this.cmbTransitWarehouse = new System.Windows.Forms.ComboBox();
this.txtBuyPrice = new System.Windows.Forms.TextBox();
this.label18 = new System.Windows.Forms.Label();
this.txtBuyCnt = new System.Windows.Forms.TextBox();
this.label19 = new System.Windows.Forms.Label();
this.txtShopOrderItemPrice = new System.Windows.Forms.TextBox();
this.label16 = new System.Windows.Forms.Label();
this.txtShopOrderItemCnt = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.txtBuyOrderId = new System.Windows.Forms.TextBox();
this.label15 = new System.Windows.Forms.Label();
this.btnManualUpdateTransitWarehouse = new DevComponents.DotNetBar.PanelEx();
this.txtShopSpecName = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.txtUpSpuCode = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.txtUpSkuCode = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.txtShopSkuId = new System.Windows.Forms.TextBox();
this.label10 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.txtShopGoodsId = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.txtShopGoodsName = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.btnManualUpdateBuyOrder = new DevComponents.DotNetBar.PanelEx();
this.txtMapSkuName = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.btnManualUpdateSendProvince = new DevComponents.DotNetBar.PanelEx();
this.txtMapSkuId = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.txtMapGoodsId = new System.Windows.Forms.TextBox();
this.txtMapGoodsName = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.txtSendProvince = new System.Windows.Forms.TextBox();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.txtAddress = new System.Windows.Forms.TextBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.chkChangeWarehouseAddress = new Work.UserComponents.UcCheckBox(this.components);
((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// pbCloseBase
//
this.pbCloseBase.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.pbCloseBase.Location = new System.Drawing.Point(1326, 0);
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.chkChangeWarehouseAddress);
this.splitContainer1.Panel2.Controls.Add(this.pictureBox1);
this.splitContainer1.Panel2.Controls.Add(this.txtBuySkuName);
this.splitContainer1.Panel2.Controls.Add(this.label20);
this.splitContainer1.Panel2.Controls.Add(this.label6);
this.splitContainer1.Panel2.Controls.Add(this.label21);
this.splitContainer1.Panel2.Controls.Add(this.cmbTransitWarehouse);
this.splitContainer1.Panel2.Controls.Add(this.label15);
this.splitContainer1.Panel2.Controls.Add(this.txtShopOrderItemPrice);
this.splitContainer1.Panel2.Controls.Add(this.txtBuySkuId);
this.splitContainer1.Panel2.Controls.Add(this.label16);
this.splitContainer1.Panel2.Controls.Add(this.txtBuyOrderId);
this.splitContainer1.Panel2.Controls.Add(this.txtShopOrderItemCnt);
this.splitContainer1.Panel2.Controls.Add(this.label22);
this.splitContainer1.Panel2.Controls.Add(this.label17);
this.splitContainer1.Panel2.Controls.Add(this.label19);
this.splitContainer1.Panel2.Controls.Add(this.btnManualUpdateTransitWarehouse);
this.splitContainer1.Panel2.Controls.Add(this.label23);
this.splitContainer1.Panel2.Controls.Add(this.label18);
this.splitContainer1.Panel2.Controls.Add(this.txtBuyCnt);
this.splitContainer1.Panel2.Controls.Add(this.txtBuyGoodsId);
this.splitContainer1.Panel2.Controls.Add(this.txtShopSpecName);
this.splitContainer1.Panel2.Controls.Add(this.txtBuyGoodsName);
this.splitContainer1.Panel2.Controls.Add(this.label14);
this.splitContainer1.Panel2.Controls.Add(this.txtBuyPrice);
this.splitContainer1.Panel2.Controls.Add(this.label13);
this.splitContainer1.Panel2.Controls.Add(this.label24);
this.splitContainer1.Panel2.Controls.Add(this.txtUpSpuCode);
this.splitContainer1.Panel2.Controls.Add(this.label12);
this.splitContainer1.Panel2.Controls.Add(this.txtUpSkuCode);
this.splitContainer1.Panel2.Controls.Add(this.label11);
this.splitContainer1.Panel2.Controls.Add(this.txtShopSkuId);
this.splitContainer1.Panel2.Controls.Add(this.label10);
this.splitContainer1.Panel2.Controls.Add(this.label9);
this.splitContainer1.Panel2.Controls.Add(this.txtShopGoodsId);
this.splitContainer1.Panel2.Controls.Add(this.label8);
this.splitContainer1.Panel2.Controls.Add(this.txtShopGoodsName);
this.splitContainer1.Panel2.Controls.Add(this.label7);
this.splitContainer1.Panel2.Controls.Add(this.btnManualUpdateBuyOrder);
this.splitContainer1.Panel2.Controls.Add(this.txtMapSkuName);
this.splitContainer1.Panel2.Controls.Add(this.label5);
this.splitContainer1.Panel2.Controls.Add(this.btnManualUpdateSendProvince);
this.splitContainer1.Panel2.Controls.Add(this.txtMapSkuId);
this.splitContainer1.Panel2.Controls.Add(this.label4);
this.splitContainer1.Panel2.Controls.Add(this.label3);
this.splitContainer1.Panel2.Controls.Add(this.txtMapGoodsId);
this.splitContainer1.Panel2.Controls.Add(this.txtMapGoodsName);
this.splitContainer1.Panel2.Controls.Add(this.label2);
this.splitContainer1.Panel2.Controls.Add(this.label1);
this.splitContainer1.Panel2.Controls.Add(this.txtSendProvince);
this.splitContainer1.Size = new System.Drawing.Size(1358, 704);
this.splitContainer1.SplitterDistance = 868;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
// txtBuySkuName
//
this.txtBuySkuName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtBuySkuName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBuySkuName.Location = new System.Drawing.Point(83, 347);
this.txtBuySkuName.Name = "txtBuySkuName";
this.txtBuySkuName.Size = new System.Drawing.Size(388, 23);
this.txtBuySkuName.TabIndex = 848;
//
// label21
//
this.label21.AutoSize = true;
this.label21.Location = new System.Drawing.Point(27, 349);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(56, 17);
this.label21.TabIndex = 847;
this.label21.Text = "规格名称";
//
// txtBuySkuId
//
this.txtBuySkuId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtBuySkuId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBuySkuId.Location = new System.Drawing.Point(319, 376);
this.txtBuySkuId.Name = "txtBuySkuId";
this.txtBuySkuId.Size = new System.Drawing.Size(152, 23);
this.txtBuySkuId.TabIndex = 846;
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(250, 379);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(69, 17);
this.label22.TabIndex = 845;
this.label22.Text = "拍单SKUID";
//
// label23
//
this.label23.AutoSize = true;
this.label23.Location = new System.Drawing.Point(14, 379);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(69, 17);
this.label23.TabIndex = 844;
this.label23.Text = "拍单商品ID";
//
// txtBuyGoodsId
//
this.txtBuyGoodsId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBuyGoodsId.Location = new System.Drawing.Point(83, 376);
this.txtBuyGoodsId.Name = "txtBuyGoodsId";
this.txtBuyGoodsId.Size = new System.Drawing.Size(152, 23);
this.txtBuyGoodsId.TabIndex = 843;
//
// txtBuyGoodsName
//
this.txtBuyGoodsName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtBuyGoodsName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBuyGoodsName.Location = new System.Drawing.Point(83, 318);
this.txtBuyGoodsName.Name = "txtBuyGoodsName";
this.txtBuyGoodsName.Size = new System.Drawing.Size(388, 23);
this.txtBuyGoodsName.TabIndex = 842;
//
// label24
//
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(27, 321);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(56, 17);
this.label24.TabIndex = 841;
this.label24.Text = "商品标题";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(27, 294);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(68, 17);
this.label6.TabIndex = 840;
this.label6.Text = "拍单信息:";
//
// label20
//
this.label20.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label20.AutoSize = true;
this.label20.Location = new System.Drawing.Point(39, 632);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(44, 17);
this.label20.TabIndex = 839;
this.label20.Text = "中转仓";
//
// cmbTransitWarehouse
//
this.cmbTransitWarehouse.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cmbTransitWarehouse.FormattingEnabled = true;
this.cmbTransitWarehouse.Location = new System.Drawing.Point(83, 628);
this.cmbTransitWarehouse.Name = "cmbTransitWarehouse";
this.cmbTransitWarehouse.Size = new System.Drawing.Size(388, 25);
this.cmbTransitWarehouse.TabIndex = 838;
//
// txtBuyPrice
//
this.txtBuyPrice.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtBuyPrice.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBuyPrice.Location = new System.Drawing.Point(319, 405);
this.txtBuyPrice.Name = "txtBuyPrice";
this.txtBuyPrice.ReadOnly = true;
this.txtBuyPrice.Size = new System.Drawing.Size(152, 23);
this.txtBuyPrice.TabIndex = 837;
//
// label18
//
this.label18.AutoSize = true;
this.label18.Location = new System.Drawing.Point(263, 408);
this.label18.Name = "label18";
this.label18.Size = new System.Drawing.Size(56, 17);
this.label18.TabIndex = 836;
this.label18.Text = "拍单价格";
//
// txtBuyCnt
//
this.txtBuyCnt.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBuyCnt.Location = new System.Drawing.Point(83, 405);
this.txtBuyCnt.Name = "txtBuyCnt";
this.txtBuyCnt.Size = new System.Drawing.Size(152, 23);
this.txtBuyCnt.TabIndex = 835;
//
// label19
//
this.label19.AutoSize = true;
this.label19.Location = new System.Drawing.Point(27, 408);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(56, 17);
this.label19.TabIndex = 834;
this.label19.Text = "拍单数量";
//
// txtShopOrderItemPrice
//
this.txtShopOrderItemPrice.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtShopOrderItemPrice.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtShopOrderItemPrice.Location = new System.Drawing.Point(319, 254);
this.txtShopOrderItemPrice.Name = "txtShopOrderItemPrice";
this.txtShopOrderItemPrice.Size = new System.Drawing.Size(152, 23);
this.txtShopOrderItemPrice.TabIndex = 833;
//
// label16
//
this.label16.AutoSize = true;
this.label16.Location = new System.Drawing.Point(287, 257);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(32, 17);
this.label16.TabIndex = 832;
this.label16.Text = "价格";
//
// txtShopOrderItemCnt
//
this.txtShopOrderItemCnt.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtShopOrderItemCnt.Location = new System.Drawing.Point(83, 254);
this.txtShopOrderItemCnt.Name = "txtShopOrderItemCnt";
this.txtShopOrderItemCnt.Size = new System.Drawing.Size(152, 23);
this.txtShopOrderItemCnt.TabIndex = 831;
//
// label17
//
this.label17.AutoSize = true;
this.label17.Location = new System.Drawing.Point(51, 257);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(32, 17);
this.label17.TabIndex = 830;
this.label17.Text = "数量";
//
// txtBuyOrderId
//
this.txtBuyOrderId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtBuyOrderId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBuyOrderId.Location = new System.Drawing.Point(83, 434);
this.txtBuyOrderId.Name = "txtBuyOrderId";
this.txtBuyOrderId.ReadOnly = true;
this.txtBuyOrderId.Size = new System.Drawing.Size(388, 23);
this.txtBuyOrderId.TabIndex = 829;
//
// label15
//
this.label15.AutoSize = true;
this.label15.Location = new System.Drawing.Point(15, 437);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(68, 17);
this.label15.TabIndex = 828;
this.label15.Text = "拍单订单号";
//
// btnManualUpdateTransitWarehouse
//
this.btnManualUpdateTransitWarehouse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnManualUpdateTransitWarehouse.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnManualUpdateTransitWarehouse.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnManualUpdateTransitWarehouse.DisabledBackColor = System.Drawing.Color.Empty;
this.btnManualUpdateTransitWarehouse.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnManualUpdateTransitWarehouse.Location = new System.Drawing.Point(357, 659);
this.btnManualUpdateTransitWarehouse.Name = "btnManualUpdateTransitWarehouse";
this.btnManualUpdateTransitWarehouse.Size = new System.Drawing.Size(114, 23);
this.btnManualUpdateTransitWarehouse.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnManualUpdateTransitWarehouse.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnManualUpdateTransitWarehouse.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnManualUpdateTransitWarehouse.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnManualUpdateTransitWarehouse.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnManualUpdateTransitWarehouse.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnManualUpdateTransitWarehouse.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnManualUpdateTransitWarehouse.Style.GradientAngle = 90;
this.btnManualUpdateTransitWarehouse.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnManualUpdateTransitWarehouse.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnManualUpdateTransitWarehouse.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnManualUpdateTransitWarehouse.TabIndex = 827;
this.btnManualUpdateTransitWarehouse.Text = "确认商品关联";
this.btnManualUpdateTransitWarehouse.Click += new System.EventHandler(this.btnManualUpdateTransitWarehouse_Click);
//
// txtShopSpecName
//
this.txtShopSpecName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtShopSpecName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtShopSpecName.Location = new System.Drawing.Point(83, 167);
this.txtShopSpecName.Name = "txtShopSpecName";
this.txtShopSpecName.Size = new System.Drawing.Size(388, 23);
this.txtShopSpecName.TabIndex = 817;
//
// label14
//
this.label14.AutoSize = true;
this.label14.Location = new System.Drawing.Point(27, 170);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(56, 17);
this.label14.TabIndex = 816;
this.label14.Text = "店铺规格";
//
// label13
//
this.label13.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label13.AutoSize = true;
this.label13.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label13.Location = new System.Drawing.Point(27, 488);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(92, 17);
this.label13.TabIndex = 815;
this.label13.Text = "关联商品信息:";
//
// txtUpSpuCode
//
this.txtUpSpuCode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtUpSpuCode.Location = new System.Drawing.Point(83, 225);
this.txtUpSpuCode.Name = "txtUpSpuCode";
this.txtUpSpuCode.Size = new System.Drawing.Size(152, 23);
this.txtUpSpuCode.TabIndex = 814;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(239, 228);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(80, 17);
this.label12.TabIndex = 813;
this.label12.Text = "平台SKU编码";
//
// txtUpSkuCode
//
this.txtUpSkuCode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtUpSkuCode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtUpSkuCode.Location = new System.Drawing.Point(319, 225);
this.txtUpSkuCode.Name = "txtUpSkuCode";
this.txtUpSkuCode.Size = new System.Drawing.Size(152, 23);
this.txtUpSkuCode.TabIndex = 812;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(3, 228);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(80, 17);
this.label11.TabIndex = 811;
this.label11.Text = "平台商品编码";
//
// txtShopSkuId
//
this.txtShopSkuId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtShopSkuId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtShopSkuId.Location = new System.Drawing.Point(319, 196);
this.txtShopSkuId.Name = "txtShopSkuId";
this.txtShopSkuId.Size = new System.Drawing.Size(152, 23);
this.txtShopSkuId.TabIndex = 810;
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(250, 199);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(69, 17);
this.label10.TabIndex = 809;
this.label10.Text = "店铺SKUID";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(14, 199);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(69, 17);
this.label9.TabIndex = 808;
this.label9.Text = "店铺商品ID";
//
// txtShopGoodsId
//
this.txtShopGoodsId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtShopGoodsId.Location = new System.Drawing.Point(83, 196);
this.txtShopGoodsId.Name = "txtShopGoodsId";
this.txtShopGoodsId.Size = new System.Drawing.Size(152, 23);
this.txtShopGoodsId.TabIndex = 807;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.Location = new System.Drawing.Point(27, 114);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(92, 17);
this.label8.TabIndex = 806;
this.label8.Text = "店铺商品信息:";
//
// txtShopGoodsName
//
this.txtShopGoodsName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtShopGoodsName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtShopGoodsName.Location = new System.Drawing.Point(83, 138);
this.txtShopGoodsName.Name = "txtShopGoodsName";
this.txtShopGoodsName.Size = new System.Drawing.Size(388, 23);
this.txtShopGoodsName.TabIndex = 805;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(27, 141);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(56, 17);
this.label7.TabIndex = 804;
this.label7.Text = "店铺标题";
//
// btnManualUpdateBuyOrder
//
this.btnManualUpdateBuyOrder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnManualUpdateBuyOrder.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnManualUpdateBuyOrder.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnManualUpdateBuyOrder.DisabledBackColor = System.Drawing.Color.Empty;
this.btnManualUpdateBuyOrder.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnManualUpdateBuyOrder.Location = new System.Drawing.Point(357, 463);
this.btnManualUpdateBuyOrder.Name = "btnManualUpdateBuyOrder";
this.btnManualUpdateBuyOrder.Size = new System.Drawing.Size(114, 23);
this.btnManualUpdateBuyOrder.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnManualUpdateBuyOrder.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnManualUpdateBuyOrder.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnManualUpdateBuyOrder.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnManualUpdateBuyOrder.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnManualUpdateBuyOrder.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnManualUpdateBuyOrder.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnManualUpdateBuyOrder.Style.GradientAngle = 90;
this.btnManualUpdateBuyOrder.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnManualUpdateBuyOrder.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnManualUpdateBuyOrder.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnManualUpdateBuyOrder.TabIndex = 803;
this.btnManualUpdateBuyOrder.Text = "手动确认拍单";
this.btnManualUpdateBuyOrder.Click += new System.EventHandler(this.btnManualUpdateBuyOrder_Click);
//
// txtMapSkuName
//
this.txtMapSkuName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtMapSkuName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtMapSkuName.Location = new System.Drawing.Point(83, 541);
this.txtMapSkuName.Name = "txtMapSkuName";
this.txtMapSkuName.Size = new System.Drawing.Size(388, 23);
this.txtMapSkuName.TabIndex = 794;
//
// label5
//
this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(27, 543);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(56, 17);
this.label5.TabIndex = 793;
this.label5.Text = "规格名称";
//
// btnManualUpdateSendProvince
//
this.btnManualUpdateSendProvince.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnManualUpdateSendProvince.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnManualUpdateSendProvince.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnManualUpdateSendProvince.DisabledBackColor = System.Drawing.Color.Empty;
this.btnManualUpdateSendProvince.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnManualUpdateSendProvince.Location = new System.Drawing.Point(357, 599);
this.btnManualUpdateSendProvince.Name = "btnManualUpdateSendProvince";
this.btnManualUpdateSendProvince.Size = new System.Drawing.Size(114, 23);
this.btnManualUpdateSendProvince.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnManualUpdateSendProvince.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnManualUpdateSendProvince.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnManualUpdateSendProvince.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnManualUpdateSendProvince.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnManualUpdateSendProvince.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnManualUpdateSendProvince.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnManualUpdateSendProvince.Style.GradientAngle = 90;
this.btnManualUpdateSendProvince.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnManualUpdateSendProvince.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnManualUpdateSendProvince.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnManualUpdateSendProvince.TabIndex = 792;
this.btnManualUpdateSendProvince.Text = "手动更新发货地";
this.btnManualUpdateSendProvince.Click += new System.EventHandler(this.btnManualUpdateSendProvince_Click);
//
// txtMapSkuId
//
this.txtMapSkuId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtMapSkuId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtMapSkuId.Location = new System.Drawing.Point(319, 570);
this.txtMapSkuId.Name = "txtMapSkuId";
this.txtMapSkuId.Size = new System.Drawing.Size(152, 23);
this.txtMapSkuId.TabIndex = 474;
//
// label4
//
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(250, 573);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(69, 17);
this.label4.TabIndex = 473;
this.label4.Text = "关联SKUID";
//
// label3
//
this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(14, 573);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(69, 17);
this.label3.TabIndex = 472;
this.label3.Text = "关联商品ID";
//
// txtMapGoodsId
//
this.txtMapGoodsId.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.txtMapGoodsId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtMapGoodsId.Location = new System.Drawing.Point(83, 570);
this.txtMapGoodsId.Name = "txtMapGoodsId";
this.txtMapGoodsId.Size = new System.Drawing.Size(152, 23);
this.txtMapGoodsId.TabIndex = 471;
//
// txtMapGoodsName
//
this.txtMapGoodsName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtMapGoodsName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtMapGoodsName.Location = new System.Drawing.Point(83, 512);
this.txtMapGoodsName.Name = "txtMapGoodsName";
this.txtMapGoodsName.Size = new System.Drawing.Size(388, 23);
this.txtMapGoodsName.TabIndex = 470;
//
// label2
//
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(27, 515);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(56, 17);
this.label2.TabIndex = 469;
this.label2.Text = "商品标题";
//
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(39, 602);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 17);
this.label1.TabIndex = 468;
this.label1.Text = "发货地";
//
// txtSendProvince
//
this.txtSendProvince.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtSendProvince.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtSendProvince.Location = new System.Drawing.Point(83, 599);
this.txtSendProvince.Name = "txtSendProvince";
this.txtSendProvince.Size = new System.Drawing.Size(268, 23);
this.txtSendProvince.TabIndex = 467;
//
// splitContainer2
//
this.splitContainer2.BackColor = System.Drawing.Color.White;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(1, 33);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.txtAddress);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.splitContainer1);
this.splitContainer2.Size = new System.Drawing.Size(1358, 734);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 5;
//
// txtAddress
//
this.txtAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtAddress.Location = new System.Drawing.Point(3, 3);
this.txtAddress.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtAddress.Name = "txtAddress";
this.txtAddress.Size = new System.Drawing.Size(1352, 23);
this.txtAddress.TabIndex = 7;
this.txtAddress.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtAddress_KeyDown);
//
// pictureBox1
//
this.pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.pictureBox1.Location = new System.Drawing.Point(30, 7);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(100, 100);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 858;
this.pictureBox1.TabStop = false;
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
//
// chkChangeWarehouseAddress
//
this.chkChangeWarehouseAddress.AutoSize = true;
this.chkChangeWarehouseAddress.Checked = true;
this.chkChangeWarehouseAddress.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkChangeWarehouseAddress.Location = new System.Drawing.Point(307, 6);
this.chkChangeWarehouseAddress.Name = "chkChangeWarehouseAddress";
this.chkChangeWarehouseAddress.Size = new System.Drawing.Size(171, 21);
this.chkChangeWarehouseAddress.TabIndex = 859;
this.chkChangeWarehouseAddress.Text = "保存地址时替换为云仓地址";
this.chkChangeWarehouseAddress.UseVisualStyleBackColor = true;
//
// PddMobileBuyOrderForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1360, 768);
this.Controls.Add(this.splitContainer2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IsShowMaxBox = true;
this.Name = "PddMobileBuyOrderForm";
this.Padding = new System.Windows.Forms.Padding(1);
this.Text = "买手登录";
this.TitleText = "买手登录";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ShopLoginForm_FormClosed);
this.Load += new System.EventHandler(this.ShopLoginForm_Load);
this.Controls.SetChildIndex(this.splitContainer2, 0);
((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).EndInit();
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel1.PerformLayout();
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.TextBox txtAddress;
private DevComponents.DotNetBar.PanelEx btnManualUpdateSendProvince;
private System.Windows.Forms.TextBox txtMapSkuId;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtMapGoodsId;
private System.Windows.Forms.TextBox txtMapGoodsName;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtSendProvince;
private System.Windows.Forms.TextBox txtMapSkuName;
private System.Windows.Forms.Label label5;
private DevComponents.DotNetBar.PanelEx btnManualUpdateBuyOrder;
private System.Windows.Forms.TextBox txtShopSkuId;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.TextBox txtShopGoodsId;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TextBox txtShopGoodsName;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox txtUpSpuCode;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.TextBox txtUpSkuCode;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.TextBox txtShopSpecName;
private System.Windows.Forms.Label label14;
private DevComponents.DotNetBar.PanelEx btnManualUpdateTransitWarehouse;
private System.Windows.Forms.TextBox txtBuyOrderId;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.TextBox txtBuyPrice;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.TextBox txtBuyCnt;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.TextBox txtShopOrderItemPrice;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.TextBox txtShopOrderItemCnt;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.TextBox txtBuySkuName;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.TextBox txtBuySkuId;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label label23;
private System.Windows.Forms.TextBox txtBuyGoodsId;
private System.Windows.Forms.TextBox txtBuyGoodsName;
private System.Windows.Forms.Label label24;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.ComboBox cmbTransitWarehouse;
private System.Windows.Forms.PictureBox pictureBox1;
private Work.UserComponents.UcCheckBox chkChangeWarehouseAddress;
}
}
@@ -0,0 +1,298 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQYAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzM
zMzMzMzMzMx3d4iIiIiIiIh3fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzMzMzMzMzHeIiIiIj/////////iIiIiId8zMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzMzMzMzMeIiI/////////////////////4iIh8zMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzMzMzMzHiI////////////////////////////iIfMzMzMzMzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMzMzMx3iP///////////////////////////////4iHzMzMzMzMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMzMzMx3iP//////////////////////////////////+IfMzMzMzMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzMzMx3iP/////////////////////////////////////4h8zMzMzMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzMzMzHiP////////////////////////////////////////h3zM
zMzMzMzMzMzMzMzGAAAABMzMzMzMzMzMzMzMzHiP////////////////////////////////////////
//iHzMzMzMzMzMzMzMzMzEAAAAbMzMzMzMzMzMzMzMeI////////////////////////////////////
////////+IfMzMzMzMzMzMzMzMxgAABMzMzMzMzMzMzMzMx4////////////////////////////////
//////////////+IfMzMzMzMzMzMzMzMxAAAbMzMzMzMzMzMzMzHj///////////////////////////
/////////////////////4fMzMzMzMzMzMzMzMYAAMzMzMzMzMzMzMzMeP//////////////////////
///////////////////////////4fMzMzMzMzMzMzMzMAAbMzMzMzMzMzMzMx4//////////////////
/////////////////////////////////4fMzMzMzMzMzMzMzGAGzMzMzMzMzMzMzHj/////////////
///////////////////////////////////////4fMzMzMzMzMzMzMxgDMzMzMzMzMzMzMyI////////
/////////////////////////////////////////////4zMzMzMzMzMzMzMwEzMzMzMzMzMzMzHj///
//////////////////////////////////////////////////+HzMzMzMzMzMzMzMRszMzMzMzMzMzM
eP//////////////////////////////////////////////////////+HzMzMzMzMzMzMzGbMzMzMzM
zMzMzHj///////////////////////////////////////////////////////+MzMzMzMzMzMzMxmzM
zMzMzMzMzMyP////+IiP////////////////////////////////////////+I//////h8zMzMzMzMzM
zMZszMzMzMzMzMzHj////4iIiI//////////////////////////////////////+IiIj/////jMzMzM
zMzMzMzGbMzMzMzMzMzMyP////iIiIiI/////////////////////////////////////4iIiIj////4
fMzMzMzMzMzMxszMzMzMzMzMzHj////4iIiIiP////////////////////////////////////+IiIiI
j////4zMzMzMzMzMzMbMzMzMzMzMzMx4////iIiIiIj////////////////////////////////////4
iIiIiI////+HzMzMzMzMzMzMzMzMzMzMzMzMj////4iIiIiI//////////////+IiP//iI//////////
////+IiIiIiP////h8zMzMzMzMzMzMzMzMzMzMzMzI/////4iIiIiP/////////////4d3eIiIeIj///
//////////+IiIiIj/////jMzMzMzMzMzMzMzMzMzMzMzMyP////+IiIiIj/////////////iIiId3eI
iI//////////////iIiIiI/////4zMzMzMzMzMzMzMzMzMzMzMzHj/////+IiIiP/////////////4//
/4d4j/+P//////////////iIiIj/////+MzMzMzMzMzMzMzMzMzMzMzMx4//////+IiP////////////
///////4j///////////////////iIiP//////jMzMzMzMzMzMzMzMzMzMzMzMeP//////////+IiIj/
///////////////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzH//////////+H
fMx8eP//////////////////////////iId3iP//////////+HzMzMzMzMzMzMzMzMzMzMzMyP//////
///4fMzHh8eP////////////////////////+MzMzMd4//////////h8zMzMzMzMzMzMzMzMzMzMzMf/
////////+MzMePjMeP///////////////////////4zMzMeHx4/////////4fMzMzMzMzMzMzMzMzMzM
zMzH/////////4fMd3eHzMeP//////////////////////iMzMzIiHx4////////+HzMzMzMzMzMzMzM
zMzMzMzMx/////////+Hx4iIfMzMj//////////////////////4h3d8x4h8yP////////jMzMzMzMzM
zMzMzMzMzMzMzMeP////////+HiP+IfMzI//////////////////////+HiIiHd3zHj////////4zMzM
zMzMzMzMzMzMzMzMzMzHj/////////h4//+HzMeP//////////////////////h4//h8zMyP////////
+MzMzMzMzMzMzMzMzMzMzMzMzI/////////4iP//h8x4///////////////////////4j//4fMzHj///
//////jMzMzMzMzMzMzMzMzMzMzMzMyP///////4iIiP+IfHj///////////////////////+Ij/+HzM
eP/////////4zMzMzMzMzMzMzMzMzMzMzMzMj///////iIiIiIh3eP////////////////////////+I
j4h8x3iI////////h8zMzMzMzMzMzMzMzMzMzMzMzH//////+Hj///iIiI//////////////////////
/////4iId4iIiIj//////4zMzMzMzMzMzMzMzMzMzMzMzMx4//////iP////iP//////////////////
/////////////4iP//iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMyP//////////+I//////////////
///////////////////4eP//iP//////jMzMzMzMzMzMzMzMzMzMzMzMzMj///////////iP////////
/////////////////////////4j/////////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj///////////////
//////////////////////////////+I//////////jMzMzMzMzMzMzMzMzMzMzMzMzMzI//////////
//////////////////////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
eP///////////////////////////////////////////////////////4zMzMzMzMzMzMzMzMzMzMzM
zMzMzMj///////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzM
zMzMzMzMzMzHj//////////////////////////////////////////////////////4zMzMzMzMzMzM
zMzMzMzMzMzMzMzMzI//////////////////////////////////////////////////////h8zMzMzM
zMzMzMzMzMzMzMzMzMzMzMx4////////////////////////////////////////////////////+HzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMyI////+I////////////////////////////////////////////
//h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+Ij/////////////////////////////////////
//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+IiIiIj//////////////////////////4
////iI/////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiP/////4iIiP//////////////////////
////+IiIiIj/////iHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////////////////
///////////4iIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP////////////////////
//////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////
//////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////
///////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////
////////////////////////////////////////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI
j/////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMeP//////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMx4////////+I//////////////////////////////////////jMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMeP///////4iIj///////////////////////////iP///////4fMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMx4////////iIiIiP///////////////////////4iIiP///////4zMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIj///////+HzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIj////////////////////4iIiIiIj///////
+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIiI//
//////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiP////////////////////iIiI
iIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiIj/////iIiIiIiIj/////
/4iIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiI/////4zMzMzMzM
j/////+IiIiIiIiP//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP//////+IiIiIiIj/////+MzM
zMzMzI//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iIiIiIiI////
//jMzMzMzMyP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP///////4iIiIiI
iP/////4zMzMzMzMj//////4iIiIiIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iI
iIiIiI//////+MzMzMzMzI//////+IiIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
///4iIiIiIiP//////fMzMzMzMyP//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzH
j///////+IiIiIiI//////+HzMzMzMzMeP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzM
zMzMyP////////iIiIiIiP//////jMzMzMzMzHj///////iIiIiIiI///////4fMzMzMzMzMzMzMzMzM
zMzMzMzMzMj///////+IiIiIiI///////4zMzMzMzMzI///////4iIiIiIiI///////3zMzMzMzMzMzM
zMzMzMzMzMzMzMzI////////iIiIiIiP//////+MzMzMzMzMyP//////+IiIiIiIiP//////+MzMzMzM
zMzMzMzMzMzMzMzMzMzMeP///////4iIiIiIj///////jMzMzMzMzMj///////+IiIiIiIj///////jM
zMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiIiP//////+HzMzMzMzMzHj///////iIiIiIiI////
///4zMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIiI////////jMzMzMzMzMzI///////4iIiIiI
iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMzMj////////4iIiIiP///////4zMzMzMzMzMyP///////4
iIiIiIiP//////jMzMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiI////////h8zMzMzMzMzMeP//
/////4iIiIiIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIj////////4fMzMzMzMzM
zHj///////+IiIiIiI//////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////iIiP////////+MzMzM
zMzMzMzI////////+IiIiIiP//////h8zMzMzMzMzMzMxmzMzMzMzMzMx4/////////4iP/////////4
fMzMzMzMzMzMx4////////+IiIiIj//////4fMzMzMzMzMzMzMZszMzMzMzMzMeP////////////////
////+MzMzMzMzMzMzMyP////////iIiIiP//////+HzMzMzMzMzMzMzGbMzMzMzMzMzH////////////
//////////fMzMzMzMzMzMzMeP////////iIiIj///////98zMzMzMzMzMzMxmzMzMzMzMzMyP//////
//////////////+HzMzMzMzMzMzMzHj/////////+IiP////////jMzMzMzMzMzMzMZszMzMzMzMzMj/
////////////////////jMzMzMzMzMzMzMzIj////////////////////4zMzMzMzMzMzMzGTMzMzMzM
zMzH////////////////////+HzMzMzMzMzMzMzMx4////////////////////+MzMzMzMzMzMzMxAzM
zMzMzMzMx/////////////////////jMzMzMzMzMzMzMzMyI///////////////////4fMzMzMzMzMzM
zMAGzMzMzMzMzMeP//////////////////+HzMzMzMzMzMzMzMzMeP//////////////////+HzMzMzM
zMzMzMxgBszMzMzMzMzHj//////////////////4fMzMzMzMzMzMzMzMzMeP//////////////////h8
zMzMzMzMzMzMYADMzMzMzMzMzI//////////////////+HzMzMzMzMzMzMzMzMzHj///////////////
///4zMzMzMzMzMzMzAAAbMzMzMzMzMyP/////////////////4fMzMzMzMzMzMzMzMzMzHj/////////
////////+MzMzMzMzMzMzMYAAEzMzMzMzMzMj/////////////////+MzMzMzMzMzMzMzMzMzMzIj///
/////////////4fMzMzMzMzMzMzEAAAGzMzMzMzMzHj////////////////4fMzMzMzMzMzMzMzMzMzM
x4////////////////+MzMzMzMzMzMzMYAAABMzMzMzMzMx4////////////////h8zMzMzMzMzMzMzM
zMzMzMx4///////////////4fMzMzMzMzMzMzEAAAABszMzMzMzMx4//////////////+HzMzMzMzMzM
zMzMzMzMzMzMx4//////////////+MzMzMzMzMzMzMYAAAAATMzMzMzMzMyP/////////////4fMzMzM
zMzMzMzMzMzMzMzMzMeI/////////////4fMzMzMzMzMzMzEAAAAAAbMzMzMzMzMeP////////////h8
zMzMzMzMzMzMzMzMzMzMzMzMeI////////////h8zMzMzMzMzMzMYAAAAAAAbMzMzMzMzMeP////////
//iHzMzMzMzMzMzMzMzMzMzMzMzMzMyI//////////+HzMzMzMzMzMzMxgAAAAAAAEzMzMzMzMzMeP//
//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMx4/////////4fMzMzMzMzMzMzMQAAAAAAAAGzMzMzMzM
zMeI//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4j//////4h8zMzMzMzMzMzMxgAAAAAAAAAGzM
zMzMzMzMx4iIiIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiIj/+Ih3zMzMzMzMzMzMzGAAAAAAAA
AAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx3iId8zMzMzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
</value>
</data>
</root>
+501
View File
@@ -0,0 +1,501 @@
using AllBase;
using AllBase.Helper;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.WinForms;
//using TemuKJD.DashBoardForms;
using Microsoft.Win32;
using NaiBa.CefHelper;
using NaiBa.CefHelper.Handler;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
//using System.Web.Hosting;
using System.Windows.Forms;
using Work;
using Work._29Tools.BLL;
using Work._29Tools.CefTools;
using Work.BaseForms;
namespace TemuKJD.ToolForms
{
public enum EnumOpenType
{
login,
manage,
refresh_cookie,
order_login,
}
public partial class PddMobileLoginForm : BaseGeneralForm
{
public static PddMobileLoginForm PddMobileLoginInstance { get; set; } = null;
public int CloseAfterSecond { get; set; }
public EnumOpenType openType = EnumOpenType.manage;
public string InitUrl = "";
private string shopCookieHead = "yangkeduo.com";
private string shopLoginUrl = "https://mobile.yangkeduo.com/login.html?from=https%3A%2F%2Fmobile.yangkeduo.com%2Fpersonal.html";
private string shopMainUrl = "https://mobile.yangkeduo.com/index.html";
public ChromiumWebBrowser cefWebBrowser = null;
private BuyerLoginInfo buyer = null;
private List<ShopCompany> lstShopCompany = new List<ShopCompany>();
private string currentUrl = "";
public PddMobileLoginForm(BuyerLoginInfo buyerInfo)
{
PddMobileLoginInstance = this;
InitializeComponent();
this.buyer = buyerInfo;
this.txtUserName.Text = buyerInfo?.buyer_name;
this.txtPassWord.Text = ""; //DataOpenSSL.DecryptString(buyerInfo.Password);
}
private void ShopLoginForm_Load(object sender, EventArgs e)
{
//this.splitContainer1.SplitterDistance = this.splitContainer1.Height - 62;
if (openType == EnumOpenType.login)
{
this.label3.Visible = true;
this.panel3.Visible = true;
}
if (CloseAfterSecond > 0)
{
Task.Run(() =>
{
Thread.Sleep(1000 * CloseAfterSecond);
if (this.Created)
{
Invoke(new Action(() => { this.Close(); }));
}
});
}
AutoLogin();
}
/// <summary>
/// 自动登录店铺后台
/// </summary>
private void AutoLogin()
{
if (openType != EnumOpenType.login && buyer == null)
return;
if (cefWebBrowser == null)
{
//cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, false);
else
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(shopMainUrl, false);
CustomResourceRequestHandlerLocal resourceRequestHandler = new CustomResourceRequestHandlerLocal();
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad;
cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
cefWebBrowser.KeyboardHandler = new KeyboardHandler();
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowser.LoadError += CefWebBrowser_LoadError;
cefWebBrowser.Dock = DockStyle.Fill;
//js绑定C#对象
//PDDShopBrowserObject shopObj = new PDDShopBrowserObject();
//shopObj.OnInfoReceived += ShopObj_OnInfoReceived;
//CefSharpSettings.WcfEnabled = true;
//cefWebBrowser.JavascriptObjectRepository.Register(
// name: "shopObj",
// objectToBind: shopObj,
// isAsync: false,
// options: new BindingOptions { Binder = BindingOptions.DefaultBinder.Binder /*CamelCaseJavascriptNames = false*/ /*cef79*/ }
//);
//if (buyer.cookie == null)
// buyer.cookie = "";
List<Cookie> cookieLst = new List<Cookie>();
try
{
if (buyer != null)
{
cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(buyer?.cookie);
if (cookieLst == null)
cookieLst = new List<Cookie>();
}
}
catch
{
}
Task.Run(() =>
{
Invoke(new Action(() =>
{
splitContainer1.Panel1.Controls.Add(cefWebBrowser);
//cefWebBrowser.Load(shopMainUrl);
}));
// cef138必须init后方可设置或删除cookie
while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
Thread.Sleep(20);
CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//if (cookieLst.Any(c => c.Value.StartsWith("windows_1")))
// cefWebBrowser.ExecuteScriptAsync("navigator.__defineGetter__('userAgent', function() { return 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.5.40.8 Safari/537.36 PddWorkbench-Online PddBrowser pdd_windows_version/3.0.3.12'; });");
//cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager
//if (this.openType != EnumOpenType.login)
{
var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null));
foreach (var cook in cookieLst)
{
//var t = CEFBrowser.SetCookieAsync(cook.Domain.Trim('.'), cook.Name + "=" + cook.Value + ";", cefWebBrowser.GetCookieManager(null));
//t.Wait(5000);
//if (cook.Name == "PDDAccessToken")
//{
// var jsStr = "var date = new Date();" +
// "date.setTime(date.getTime() + (465 * 24 * 60 * 60 * 1000)); " +
// "document.cookie='PDDAccessToken=" + cook.Value + ";domain=mobile.yangkeduo.com; expires=' + date.toUTCString()";
// jsStr = "document.cookie='PDDAccessToken=" + cook.Value + ";domain=mobile.yangkeduo.com;'";
// cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr);
// //cook.Expires = DateTime.Now.AddDays(465);
// //cefWebBrowser.GetCookieManager(null).SetCookie("https://" + cook.Domain.Trim('.'), cook);
//}
////else
//// cefWebBrowser.GetCookieManager(null).SetCookie("https://" + cook.Domain, cook);
}
}
//根据登录的具体店铺设置local storage
if (!string.IsNullOrEmpty(buyer?.buyer_id))
{
//var storageJsCode = "window.localStorage.setItem('" + "mall-info-id" + "', '" + shop.ShopId + "');\r\n";
//storageJsCode += "window.localStorage.setItem('" + "agentseller-mall-info-id" + "', '" + shop.ShopId + "');\r\n";
//while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
// Thread.Sleep(20);
//cefWebBrowser.GetBrowser().MainFrame.ExecuteJavaScriptAsync(storageJsCode);
}
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser.Load(InitUrl);
else
cefWebBrowser.Load(shopMainUrl);
//不是登录的话就此返回
if (openType != EnumOpenType.login)
{
Invoke(new Action(() =>
{
chkCloseAfterLogin.Visible = false;
btnLoginAgain.Visible = false;
}));
return;
}
for (int i = 0; i < 50; i++)
{
if (cefWebBrowser.IsLoading)
Thread.Sleep(100);
}
Thread.Sleep(Randomx.GetId(1500,2000));
if (!this.Created)
return;
while (!cefWebBrowser.Address.StartsWith(shopLoginUrl))
{
Thread.Sleep(1000);
if (!this.Created)
return;
}
//CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//InputUserNameAndPassword(cefWebBrowser, shop.LoginName, DataOpenSSL.DecryptString(shop.Password));
});
}
}
private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
{
}
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
if (this.Created && !this.Disposing && !this.IsDisposed)
{
Invoke(new Action(() =>
{
currentUrl = e.Address;
txtAddress.Text = e.Address;
}));
}
}
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
//js绑定C#对象 html页面内声明绑定的C#对象
StringBuilder sb = new StringBuilder();
sb.Append("(function(){");
sb.Append("CefSharp.BindObjectAsync('shopObj');");
sb.Append("})();");
cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString());
}
//public Func<object, string, string, request, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行)
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
return false;
}
//static int GetAntiContentsTimes = 40;
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
if (url.Contains("https://mobile.yangkeduo.com/index.html") && openType == EnumOpenType.login)
{
Task.Run(() => { cefWebBrowser.Load("https://mobile.yangkeduo.com/personal.html"); });
}
if (url.Contains("https://mobile.yangkeduo.com/personal.html"))
{
if (openType == EnumOpenType.login)
{
Task.Run(() =>
{
var data = responseData;
if (data.Contains("\"success\":true") || data.Contains("nickname"))
{
var uid = BaseRegex.GetStringJson(ref data, "uid");
var nickname = BaseRegex.GetStringJson(ref data, "nickname");
var username = nickname;
if (!string.IsNullOrEmpty(nickname) && !string.IsNullOrEmpty(uid))
{
Thread.Sleep(2000);
List<Cookie> cookieList = CEFBrowser.GetCookieList(shopCookieHead, cefWebBrowser.GetCookieManager(null));
var buyerUrl = BaseClass.Build29PDDObjString("user/add_buyer");
if (this.buyer == null || this.buyer.buyer_id != uid)
this.buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_id == uid);
if (this.buyer != null)
{
this.buyer.user_name = username;
this.buyer.buyer_nick = nickname;
this.buyer.cookie = JsonHelper.SerializeObject(cookieList);
buyerUrl = BaseClass.Build29PDDObjString("user/mdy_buyer");
}
var buyerData = UserLogin.GetSignaturex()
+ "&buyer_id=" + uid
+ "&buyer_name=" + username
+ "&buyer_nick=" + nickname;
var result = GetHtml.PostUtf8(buyerUrl, buyerData);
if (string.IsNullOrEmpty(result) || !result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(buyerUrl, buyerData);
buyerUrl = BaseClass.Build29PDDObjString("user/mdy_buyer_cookie");
buyerData = UserLogin.GetSignaturex()
+ "&buyer_id=" + uid
+ "&status=" + "在线"
+ "&cookie=" + GetHtml.UrlEncodeUtf8(JsonHelper.SerializeObject(cookieList));
result = GetHtml.PostUtf8(buyerUrl, buyerData);
if (string.IsNullOrEmpty(result) || !result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(buyerUrl, buyerData);
Invoke(new Action(() =>
{
try
{
if (chkCloseAfterLogin.Checked)
this.Close();
}
catch (Exception ex)
{ }
}));
}
}
});
}
}
}
private void btnStop_Click(object sender, EventArgs e)
{
}
private void btnCopyUserName_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtUserName.Text))
Clipboard.SetDataObject(txtUserName.Text);
}
private void btnCopyPassword_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtPassWord.Text))
Clipboard.SetDataObject(txtPassWord.Text);
}
private void btnReload_Click(object sender, EventArgs e)
{
if (cefWebBrowser != null)
{
if (txtAddress.Text != "about:blank")
cefWebBrowser.Load(txtAddress.Text);
else
cefWebBrowser.Load(shopMainUrl);
}
}
private void ShopLoginForm_FormClosed(object sender, FormClosedEventArgs e)
{
//OnSaveComplete(shop);
Task.Run(() => {
Thread.Sleep(500);
if (!this.Disposing && !this.IsDisposed)
{
//MainForm.instance.Invoke(new Action(() => { this.Dispose(); }));
}
});
}
private void txtAddress_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (cefWebBrowser != null)
{
cefWebBrowser.Load(txtAddress.Text);
}
}
}
private void btnLoginAgain_Click(object sender, EventArgs e)
{
if (this.currentUrl != shopLoginUrl)
this.cefWebBrowser.Load(shopLoginUrl);
}
private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e)
{
}
private void btnSaveCookie_Click(object sender, EventArgs e)
{
Cookie cookie = new Cookie();
cookie.Name = "PDDAccessToken";
cookie.Domain = "mobile.yangkeduo.com";
cookie.Expires = DateTime.Now.AddDays(465);
cookie.HttpOnly = true;
cookie.Secure = true;
cookie.Value = textBox1.Text.Trim();
if (this.cefWebBrowser != null)
{
var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(new List<Cookie> { cookie }), cefWebBrowser.GetCookieManager(null));
t.Wait(2000);
cefWebBrowser.Load("https://mobile.yangkeduo.com/personal.html");
}
}
public static void CheckBuyerLogin(List<BuyerLoginInfo> checkBuyers, bool isShowProgress = true)
{
for (int i = 0; i < checkBuyers.Count; i++)
{
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(v => v.buyer_id == checkBuyers[i].buyer_id);
var buys = GlobalConfig.PDDBuyerLoginList.Where(v => v.buyer_id == checkBuyers[i].buyer_id).ToList();
if (buyer == null)
continue;
// 先从服务端取最新cookie
var url = BaseClass.Build29PDDObjString("user/get_buyer");
var data = UserLogin.GetSignaturex();
data += "&buyer_ids=" + buyer.buyer_id;
data += "&page_size=1";
var result = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(result) || !result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
continue;
List<BuyerLoginInfo> loginInfoLst = JsonHelper.DeserializeJsonToList<BuyerLoginInfo>(JsonHelper.JObjectParse(result)["data"].ParseToString());
var serverBuyer = loginInfoLst.FirstOrDefault();
if (buyer != null && serverBuyer != null)
{
buyer.cookie = serverBuyer.cookie;
foreach (var buy in buys)
{
buy.cookie = serverBuyer.cookie;
}
}
if (buyer != null)
{
var loginResult = CheckBuyerLogin(buyer);
if (!loginResult.Contains("\"success\":true") && !loginResult.Contains("\"login\":true") && !loginResult.Contains("\"nickname\""))
{
buyer.cookie = "[]";
foreach (var buy in buys)
{
buy.status = "掉线";
buy.cookie = "[]";
}
}
else
{
foreach (var buy in buys)
{
buy.status = "在线";
}
}
UpdateServerBuyerCookies(buyer); // 店铺cookie和状态写入服务端
}
//if (this.Created && isShowProgress)
//{
//this.Invoke(new Action(() =>
//{
// this.statusBar.lblTaskStatus.Text = "正在检测...";
// this.statusBar.pgbTaskProgress.Value = (i + 1);
// this.statusBar.pgbTaskProgress.Text = (i + 1) + "/" + checkBuyers.Count;
// BindBuyer(buyer);
//}));
//}
}
}
public static string CheckBuyerLogin(BuyerLoginInfo buyer, string refere = "https://mobile.yangkeduo.com/goods.html")
{
string url = "https://mobile.yangkeduo.com/proxy/api/api/apollo/v3/user/me?pdduid=" + buyer.buyer_id;
return HttpResponseYkdBLL.YangkeduoGetResponse(buyer, url, refere);
}
public static string UpdateServerBuyerCookies(BuyerLoginInfo buyer, string fromTool = null)
{
var url = BaseClass.Build29PDDObjString("user/mdy_buyer_cookie");
var data = UserLogin.GetSignaturex()
+ "&status=" + buyer.status
+ "&cookie=" + GetHtml.UrlEncodeUtf8(buyer.cookie)
+ "&buyer_id=" + buyer.buyer_id;
var result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(url, data);
return result;
}
}
}
+396
View File
@@ -0,0 +1,396 @@
namespace TemuKJD.ToolForms
{
partial class PddMobileLoginForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PddMobileLoginForm));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.panel3 = new System.Windows.Forms.Panel();
this.textBox1 = new System.Windows.Forms.TextBox();
this.btnSaveCookie = new DevComponents.DotNetBar.PanelEx();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.panel2 = new System.Windows.Forms.Panel();
this.txtUserName = new System.Windows.Forms.TextBox();
this.btnLoginAgain = new Work.UserControls.ButtonEx();
this.chkCloseAfterLogin = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.label2 = new System.Windows.Forms.Label();
this.btnReload = new Work.UserControls.ButtonEx();
this.label1 = new System.Windows.Forms.Label();
this.btnStop = new Work.UserControls.ButtonEx();
this.btnCopyPassword = new Work.UserControls.ButtonEx();
this.txtPassWord = new System.Windows.Forms.TextBox();
this.btnCopyUserName = new Work.UserControls.ButtonEx();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.txtAddress = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.panel3.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.SuspendLayout();
//
// pbCloseBase
//
this.pbCloseBase.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.pbCloseBase.Location = new System.Drawing.Point(990, 0);
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.panel3);
this.splitContainer1.Panel2.Controls.Add(this.label3);
this.splitContainer1.Panel2.Controls.Add(this.panel2);
this.splitContainer1.Panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.splitContainer1_Panel2_Paint);
this.splitContainer1.Size = new System.Drawing.Size(1022, 704);
this.splitContainer1.SplitterDistance = 486;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
// panel3
//
this.panel3.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.panel3.Controls.Add(this.textBox1);
this.panel3.Controls.Add(this.btnSaveCookie);
this.panel3.Controls.Add(this.label4);
this.panel3.Location = new System.Drawing.Point(51, 135);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(452, 241);
this.panel3.TabIndex = 471;
this.panel3.Visible = false;
//
// textBox1
//
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.textBox1.Location = new System.Drawing.Point(31, 71);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(389, 108);
this.textBox1.TabIndex = 466;
//
// btnSaveCookie
//
this.btnSaveCookie.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnSaveCookie.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSaveCookie.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSaveCookie.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSaveCookie.Location = new System.Drawing.Point(364, 185);
this.btnSaveCookie.Name = "btnSaveCookie";
this.btnSaveCookie.Size = new System.Drawing.Size(56, 25);
this.btnSaveCookie.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnSaveCookie.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSaveCookie.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSaveCookie.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnSaveCookie.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnSaveCookie.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnSaveCookie.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnSaveCookie.Style.GradientAngle = 90;
this.btnSaveCookie.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnSaveCookie.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSaveCookie.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSaveCookie.TabIndex = 470;
this.btnSaveCookie.Text = "保存";
this.btnSaveCookie.Click += new System.EventHandler(this.btnSaveCookie_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(28, 44);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(144, 17);
this.label4.TabIndex = 465;
this.label4.Text = "导入PDDAccessToken:";
//
// label3
//
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(128, 58);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(285, 28);
this.label3.TabIndex = 464;
this.label3.Text = "请使用拼多多手机版扫码登录";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label3.Visible = false;
//
// panel2
//
this.panel2.Anchor = System.Windows.Forms.AnchorStyles.None;
this.panel2.Controls.Add(this.txtUserName);
this.panel2.Controls.Add(this.btnLoginAgain);
this.panel2.Controls.Add(this.chkCloseAfterLogin);
this.panel2.Controls.Add(this.label2);
this.panel2.Controls.Add(this.btnReload);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.btnStop);
this.panel2.Controls.Add(this.btnCopyPassword);
this.panel2.Controls.Add(this.txtPassWord);
this.panel2.Controls.Add(this.btnCopyUserName);
this.panel2.Location = new System.Drawing.Point(95, 398);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(376, 257);
this.panel2.TabIndex = 463;
this.panel2.Visible = false;
//
// txtUserName
//
this.txtUserName.Location = new System.Drawing.Point(117, 37);
this.txtUserName.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtUserName.Name = "txtUserName";
this.txtUserName.ReadOnly = true;
this.txtUserName.Size = new System.Drawing.Size(135, 23);
this.txtUserName.TabIndex = 373;
//
// btnLoginAgain
//
this.btnLoginAgain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnLoginAgain.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnLoginAgain.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnLoginAgain.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLoginAgain.ForeColor = System.Drawing.Color.White;
this.btnLoginAgain.Location = new System.Drawing.Point(56, 163);
this.btnLoginAgain.Margin = new System.Windows.Forms.Padding(2);
this.btnLoginAgain.Name = "btnLoginAgain";
this.btnLoginAgain.Size = new System.Drawing.Size(91, 25);
this.btnLoginAgain.TabIndex = 462;
this.btnLoginAgain.Text = "重新登录";
this.btnLoginAgain.UseVisualStyleBackColor = false;
this.btnLoginAgain.Click += new System.EventHandler(this.btnLoginAgain_Click);
//
// chkCloseAfterLogin
//
//
//
//
this.chkCloseAfterLogin.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.chkCloseAfterLogin.Checked = true;
this.chkCloseAfterLogin.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkCloseAfterLogin.CheckValue = "Y";
this.chkCloseAfterLogin.Location = new System.Drawing.Point(207, 138);
this.chkCloseAfterLogin.Name = "chkCloseAfterLogin";
this.chkCloseAfterLogin.Size = new System.Drawing.Size(135, 23);
this.chkCloseAfterLogin.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.chkCloseAfterLogin.TabIndex = 8;
this.chkCloseAfterLogin.Text = "登录成功后关闭窗口";
//
// label2
//
this.label2.Location = new System.Drawing.Point(73, 67);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(44, 17);
this.label2.TabIndex = 378;
this.label2.Text = "密码";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnReload
//
this.btnReload.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnReload.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnReload.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReload.ForeColor = System.Drawing.Color.White;
this.btnReload.Location = new System.Drawing.Point(150, 163);
this.btnReload.Margin = new System.Windows.Forms.Padding(2);
this.btnReload.Name = "btnReload";
this.btnReload.Size = new System.Drawing.Size(91, 25);
this.btnReload.TabIndex = 371;
this.btnReload.Text = "重新加载";
this.btnReload.UseVisualStyleBackColor = false;
this.btnReload.Click += new System.EventHandler(this.btnReload_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(73, 40);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 17);
this.label1.TabIndex = 377;
this.label1.Text = "用户名";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnStop
//
this.btnStop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnStop.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStop.ForeColor = System.Drawing.Color.White;
this.btnStop.Location = new System.Drawing.Point(243, 163);
this.btnStop.Margin = new System.Windows.Forms.Padding(2);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(91, 25);
this.btnStop.TabIndex = 372;
this.btnStop.Text = "停止操作";
this.btnStop.UseVisualStyleBackColor = false;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
//
// btnCopyPassword
//
this.btnCopyPassword.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCopyPassword.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopyPassword.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCopyPassword.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCopyPassword.ForeColor = System.Drawing.Color.White;
this.btnCopyPassword.Location = new System.Drawing.Point(255, 63);
this.btnCopyPassword.Margin = new System.Windows.Forms.Padding(2);
this.btnCopyPassword.Name = "btnCopyPassword";
this.btnCopyPassword.Size = new System.Drawing.Size(57, 25);
this.btnCopyPassword.TabIndex = 376;
this.btnCopyPassword.Text = "复制";
this.btnCopyPassword.UseVisualStyleBackColor = false;
this.btnCopyPassword.Click += new System.EventHandler(this.btnCopyPassword_Click);
//
// txtPassWord
//
this.txtPassWord.Location = new System.Drawing.Point(117, 64);
this.txtPassWord.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtPassWord.Name = "txtPassWord";
this.txtPassWord.PasswordChar = '●';
this.txtPassWord.ReadOnly = true;
this.txtPassWord.Size = new System.Drawing.Size(135, 23);
this.txtPassWord.TabIndex = 374;
//
// btnCopyUserName
//
this.btnCopyUserName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCopyUserName.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopyUserName.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCopyUserName.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCopyUserName.ForeColor = System.Drawing.Color.White;
this.btnCopyUserName.Location = new System.Drawing.Point(255, 36);
this.btnCopyUserName.Margin = new System.Windows.Forms.Padding(2);
this.btnCopyUserName.Name = "btnCopyUserName";
this.btnCopyUserName.Size = new System.Drawing.Size(57, 25);
this.btnCopyUserName.TabIndex = 375;
this.btnCopyUserName.Text = "复制";
this.btnCopyUserName.UseVisualStyleBackColor = false;
this.btnCopyUserName.Click += new System.EventHandler(this.btnCopyUserName_Click);
//
// splitContainer2
//
this.splitContainer2.BackColor = System.Drawing.Color.White;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(1, 33);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.txtAddress);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.splitContainer1);
this.splitContainer2.Size = new System.Drawing.Size(1022, 734);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 5;
//
// txtAddress
//
this.txtAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtAddress.Location = new System.Drawing.Point(3, 3);
this.txtAddress.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtAddress.Name = "txtAddress";
this.txtAddress.Size = new System.Drawing.Size(1016, 23);
this.txtAddress.TabIndex = 7;
this.txtAddress.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtAddress_KeyDown);
//
// PddMobileLoginForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1024, 768);
this.Controls.Add(this.splitContainer2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IsShowMaxBox = true;
this.Name = "PddMobileLoginForm";
this.Padding = new System.Windows.Forms.Padding(1);
this.Text = "买手登录";
this.TitleText = "买手登录";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ShopLoginForm_FormClosed);
this.Load += new System.EventHandler(this.ShopLoginForm_Load);
this.Controls.SetChildIndex(this.splitContainer2, 0);
((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).EndInit();
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel1.PerformLayout();
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private Work.UserControls.ButtonEx btnStop;
private Work.UserControls.ButtonEx btnReload;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.TextBox txtAddress;
private Work.UserControls.ButtonEx btnLoginAgain;
public DevComponents.DotNetBar.Controls.CheckBoxX chkCloseAfterLogin;
public System.Windows.Forms.TextBox txtPassWord;
public System.Windows.Forms.TextBox txtUserName;
public System.Windows.Forms.Label label2;
public Work.UserControls.ButtonEx btnCopyPassword;
public Work.UserControls.ButtonEx btnCopyUserName;
private System.Windows.Forms.Panel panel2;
public System.Windows.Forms.Label label3;
public System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label4;
private DevComponents.DotNetBar.PanelEx btnSaveCookie;
private System.Windows.Forms.Panel panel3;
}
}
+298
View File
@@ -0,0 +1,298 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQYAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzM
zMzMzMzMzMx3d4iIiIiIiIh3fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzMzMzMzMzHeIiIiIj/////////iIiIiId8zMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzMzMzMzMeIiI/////////////////////4iIh8zMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzMzMzMzHiI////////////////////////////iIfMzMzMzMzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMzMzMx3iP///////////////////////////////4iHzMzMzMzMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMzMzMx3iP//////////////////////////////////+IfMzMzMzMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzMzMx3iP/////////////////////////////////////4h8zMzMzMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzMzMzHiP////////////////////////////////////////h3zM
zMzMzMzMzMzMzMzGAAAABMzMzMzMzMzMzMzMzHiP////////////////////////////////////////
//iHzMzMzMzMzMzMzMzMzEAAAAbMzMzMzMzMzMzMzMeI////////////////////////////////////
////////+IfMzMzMzMzMzMzMzMxgAABMzMzMzMzMzMzMzMx4////////////////////////////////
//////////////+IfMzMzMzMzMzMzMzMxAAAbMzMzMzMzMzMzMzHj///////////////////////////
/////////////////////4fMzMzMzMzMzMzMzMYAAMzMzMzMzMzMzMzMeP//////////////////////
///////////////////////////4fMzMzMzMzMzMzMzMAAbMzMzMzMzMzMzMx4//////////////////
/////////////////////////////////4fMzMzMzMzMzMzMzGAGzMzMzMzMzMzMzHj/////////////
///////////////////////////////////////4fMzMzMzMzMzMzMxgDMzMzMzMzMzMzMyI////////
/////////////////////////////////////////////4zMzMzMzMzMzMzMwEzMzMzMzMzMzMzHj///
//////////////////////////////////////////////////+HzMzMzMzMzMzMzMRszMzMzMzMzMzM
eP//////////////////////////////////////////////////////+HzMzMzMzMzMzMzGbMzMzMzM
zMzMzHj///////////////////////////////////////////////////////+MzMzMzMzMzMzMxmzM
zMzMzMzMzMyP////+IiP////////////////////////////////////////+I//////h8zMzMzMzMzM
zMZszMzMzMzMzMzHj////4iIiI//////////////////////////////////////+IiIj/////jMzMzM
zMzMzMzGbMzMzMzMzMzMyP////iIiIiI/////////////////////////////////////4iIiIj////4
fMzMzMzMzMzMxszMzMzMzMzMzHj////4iIiIiP////////////////////////////////////+IiIiI
j////4zMzMzMzMzMzMbMzMzMzMzMzMx4////iIiIiIj////////////////////////////////////4
iIiIiI////+HzMzMzMzMzMzMzMzMzMzMzMzMj////4iIiIiI//////////////+IiP//iI//////////
////+IiIiIiP////h8zMzMzMzMzMzMzMzMzMzMzMzI/////4iIiIiP/////////////4d3eIiIeIj///
//////////+IiIiIj/////jMzMzMzMzMzMzMzMzMzMzMzMyP////+IiIiIj/////////////iIiId3eI
iI//////////////iIiIiI/////4zMzMzMzMzMzMzMzMzMzMzMzHj/////+IiIiP/////////////4//
/4d4j/+P//////////////iIiIj/////+MzMzMzMzMzMzMzMzMzMzMzMx4//////+IiP////////////
///////4j///////////////////iIiP//////jMzMzMzMzMzMzMzMzMzMzMzMeP//////////+IiIj/
///////////////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzH//////////+H
fMx8eP//////////////////////////iId3iP//////////+HzMzMzMzMzMzMzMzMzMzMzMyP//////
///4fMzHh8eP////////////////////////+MzMzMd4//////////h8zMzMzMzMzMzMzMzMzMzMzMf/
////////+MzMePjMeP///////////////////////4zMzMeHx4/////////4fMzMzMzMzMzMzMzMzMzM
zMzH/////////4fMd3eHzMeP//////////////////////iMzMzIiHx4////////+HzMzMzMzMzMzMzM
zMzMzMzMx/////////+Hx4iIfMzMj//////////////////////4h3d8x4h8yP////////jMzMzMzMzM
zMzMzMzMzMzMzMeP////////+HiP+IfMzI//////////////////////+HiIiHd3zHj////////4zMzM
zMzMzMzMzMzMzMzMzMzHj/////////h4//+HzMeP//////////////////////h4//h8zMyP////////
+MzMzMzMzMzMzMzMzMzMzMzMzI/////////4iP//h8x4///////////////////////4j//4fMzHj///
//////jMzMzMzMzMzMzMzMzMzMzMzMyP///////4iIiP+IfHj///////////////////////+Ij/+HzM
eP/////////4zMzMzMzMzMzMzMzMzMzMzMzMj///////iIiIiIh3eP////////////////////////+I
j4h8x3iI////////h8zMzMzMzMzMzMzMzMzMzMzMzH//////+Hj///iIiI//////////////////////
/////4iId4iIiIj//////4zMzMzMzMzMzMzMzMzMzMzMzMx4//////iP////iP//////////////////
/////////////4iP//iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMyP//////////+I//////////////
///////////////////4eP//iP//////jMzMzMzMzMzMzMzMzMzMzMzMzMj///////////iP////////
/////////////////////////4j/////////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj///////////////
//////////////////////////////+I//////////jMzMzMzMzMzMzMzMzMzMzMzMzMzI//////////
//////////////////////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
eP///////////////////////////////////////////////////////4zMzMzMzMzMzMzMzMzMzMzM
zMzMzMj///////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzM
zMzMzMzMzMzHj//////////////////////////////////////////////////////4zMzMzMzMzMzM
zMzMzMzMzMzMzMzMzI//////////////////////////////////////////////////////h8zMzMzM
zMzMzMzMzMzMzMzMzMzMzMx4////////////////////////////////////////////////////+HzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMyI////+I////////////////////////////////////////////
//h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+Ij/////////////////////////////////////
//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+IiIiIj//////////////////////////4
////iI/////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiP/////4iIiP//////////////////////
////+IiIiIj/////iHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////////////////
///////////4iIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP////////////////////
//////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////
//////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////
///////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////
////////////////////////////////////////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI
j/////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMeP//////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMx4////////+I//////////////////////////////////////jMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMeP///////4iIj///////////////////////////iP///////4fMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMx4////////iIiIiP///////////////////////4iIiP///////4zMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIj///////+HzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIj////////////////////4iIiIiIj///////
+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIiI//
//////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiP////////////////////iIiI
iIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiIj/////iIiIiIiIj/////
/4iIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiI/////4zMzMzMzM
j/////+IiIiIiIiP//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP//////+IiIiIiIj/////+MzM
zMzMzI//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iIiIiIiI////
//jMzMzMzMyP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP///////4iIiIiI
iP/////4zMzMzMzMj//////4iIiIiIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iI
iIiIiI//////+MzMzMzMzI//////+IiIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
///4iIiIiIiP//////fMzMzMzMyP//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzH
j///////+IiIiIiI//////+HzMzMzMzMeP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzM
zMzMyP////////iIiIiIiP//////jMzMzMzMzHj///////iIiIiIiI///////4fMzMzMzMzMzMzMzMzM
zMzMzMzMzMj///////+IiIiIiI///////4zMzMzMzMzI///////4iIiIiIiI///////3zMzMzMzMzMzM
zMzMzMzMzMzMzMzI////////iIiIiIiP//////+MzMzMzMzMyP//////+IiIiIiIiP//////+MzMzMzM
zMzMzMzMzMzMzMzMzMzMeP///////4iIiIiIj///////jMzMzMzMzMj///////+IiIiIiIj///////jM
zMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiIiP//////+HzMzMzMzMzHj///////iIiIiIiI////
///4zMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIiI////////jMzMzMzMzMzI///////4iIiIiI
iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMzMj////////4iIiIiP///////4zMzMzMzMzMyP///////4
iIiIiIiP//////jMzMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiI////////h8zMzMzMzMzMeP//
/////4iIiIiIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIj////////4fMzMzMzMzM
zHj///////+IiIiIiI//////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////iIiP////////+MzMzM
zMzMzMzI////////+IiIiIiP//////h8zMzMzMzMzMzMxmzMzMzMzMzMx4/////////4iP/////////4
fMzMzMzMzMzMx4////////+IiIiIj//////4fMzMzMzMzMzMzMZszMzMzMzMzMeP////////////////
////+MzMzMzMzMzMzMyP////////iIiIiP//////+HzMzMzMzMzMzMzGbMzMzMzMzMzH////////////
//////////fMzMzMzMzMzMzMeP////////iIiIj///////98zMzMzMzMzMzMxmzMzMzMzMzMyP//////
//////////////+HzMzMzMzMzMzMzHj/////////+IiP////////jMzMzMzMzMzMzMZszMzMzMzMzMj/
////////////////////jMzMzMzMzMzMzMzIj////////////////////4zMzMzMzMzMzMzGTMzMzMzM
zMzH////////////////////+HzMzMzMzMzMzMzMx4////////////////////+MzMzMzMzMzMzMxAzM
zMzMzMzMx/////////////////////jMzMzMzMzMzMzMzMyI///////////////////4fMzMzMzMzMzM
zMAGzMzMzMzMzMeP//////////////////+HzMzMzMzMzMzMzMzMeP//////////////////+HzMzMzM
zMzMzMxgBszMzMzMzMzHj//////////////////4fMzMzMzMzMzMzMzMzMeP//////////////////h8
zMzMzMzMzMzMYADMzMzMzMzMzI//////////////////+HzMzMzMzMzMzMzMzMzHj///////////////
///4zMzMzMzMzMzMzAAAbMzMzMzMzMyP/////////////////4fMzMzMzMzMzMzMzMzMzHj/////////
////////+MzMzMzMzMzMzMYAAEzMzMzMzMzMj/////////////////+MzMzMzMzMzMzMzMzMzMzIj///
/////////////4fMzMzMzMzMzMzEAAAGzMzMzMzMzHj////////////////4fMzMzMzMzMzMzMzMzMzM
x4////////////////+MzMzMzMzMzMzMYAAABMzMzMzMzMx4////////////////h8zMzMzMzMzMzMzM
zMzMzMx4///////////////4fMzMzMzMzMzMzEAAAABszMzMzMzMx4//////////////+HzMzMzMzMzM
zMzMzMzMzMzMx4//////////////+MzMzMzMzMzMzMYAAAAATMzMzMzMzMyP/////////////4fMzMzM
zMzMzMzMzMzMzMzMzMeI/////////////4fMzMzMzMzMzMzEAAAAAAbMzMzMzMzMeP////////////h8
zMzMzMzMzMzMzMzMzMzMzMzMeI////////////h8zMzMzMzMzMzMYAAAAAAAbMzMzMzMzMeP////////
//iHzMzMzMzMzMzMzMzMzMzMzMzMzMyI//////////+HzMzMzMzMzMzMxgAAAAAAAEzMzMzMzMzMeP//
//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMx4/////////4fMzMzMzMzMzMzMQAAAAAAAAGzMzMzMzM
zMeI//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4j//////4h8zMzMzMzMzMzMxgAAAAAAAAAGzM
zMzMzMzMx4iIiIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiIj/+Ih3zMzMzMzMzMzMzGAAAAAAAA
AAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx3iId8zMzMzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
</value>
</data>
</root>