分离KJD WebService
This commit is contained in:
1 parent
b512ee992f
commit
c7bcae3565
1479 files changed
+376
-595675
No files matched your search
@@ -1,88 +0,0 @@
|
||||
using System.Diagnostics;
|
||||
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class AdslHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 宽带名称
|
||||
/// </summary>
|
||||
public static string Name;
|
||||
/// <summary>
|
||||
/// 宽带名称
|
||||
/// </summary>
|
||||
public static string User;
|
||||
/// <summary>
|
||||
/// 宽带名称
|
||||
/// </summary>
|
||||
public static string Pass;
|
||||
/// <summary>
|
||||
/// 宽带名称
|
||||
/// </summary>
|
||||
public AdslHelper()
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// 初始化
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="user"></param>
|
||||
/// <param name="pass"></param>
|
||||
public AdslHelper(string name, string user, string pass)
|
||||
{
|
||||
Name = name;
|
||||
User = user;
|
||||
Pass = pass;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 链接
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <param name="pass"></param>
|
||||
public void Connect(string user, string pass)
|
||||
{
|
||||
string arg = string.Format("rasdial \"{0}\" {1} {2}", Name, user, pass);
|
||||
InvokeCmd(arg);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 链接
|
||||
/// </summary>
|
||||
public bool Connect()
|
||||
{
|
||||
string arg = string.Format("rasdial \"{0}\" {1} {2}", Name, User, Pass);
|
||||
string result = InvokeCmd(arg);
|
||||
if (result.Contains("已连接")|| result.Contains("已经连接"))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// 关闭链接
|
||||
/// </summary>
|
||||
public bool Disconnect()
|
||||
{
|
||||
string arg = string.Format("rasdial \"{0}\" /disconnect", Name);
|
||||
string result=InvokeCmd(arg);
|
||||
if (result.Contains("命令已完成"))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
public static string InvokeCmd(string cmdArgs)
|
||||
{
|
||||
Process p = new Process();
|
||||
p.StartInfo.FileName = "cmd.exe";
|
||||
p.StartInfo.UseShellExecute = false;
|
||||
p.StartInfo.RedirectStandardInput = true;
|
||||
p.StartInfo.RedirectStandardOutput = true;
|
||||
p.StartInfo.RedirectStandardError = true;
|
||||
p.StartInfo.CreateNoWindow = true;
|
||||
p.Start();
|
||||
p.StandardInput.WriteLine(cmdArgs);
|
||||
p.StandardInput.WriteLine("exit");
|
||||
return p.StandardOutput.ReadToEnd();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,383 +0,0 @@
|
||||
<?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>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{6461D807-B1C8-45F0-B388-E0CA1A418DE0}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>AllBase</RootNamespace>
|
||||
<AssemblyName>AllBase</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<CodeAnalysisLogFile>..\bin\AllBase.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSetDirectories>;D:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
||||
<CodeAnalysisRuleDirectories>;D:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<CodeAnalysisLogFile>..\bin\AllBase.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSetDirectories>;D:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
||||
<CodeAnalysisRuleDirectories>;D:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DefineConstants>
|
||||
</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
</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.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>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="NaiBa.Util, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\DllReference\NaiBa.Util.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.109.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\DllReference\System.Data.SQLite.DLL</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="zxing, Version=0.12.0.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\DllReference\zxing.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AdslHelper.cs" />
|
||||
<Compile Include="AutoSizeFormClass.cs" />
|
||||
<Compile Include="Base64Encode.cs" />
|
||||
<Compile Include="BaseClass.cs">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Compile>
|
||||
<Compile Include="BaseEncrypt.cs" />
|
||||
<Compile Include="BaseRegex.cs" />
|
||||
<Compile Include="BaseWork.cs" />
|
||||
<Compile Include="CacheHelper.cs" />
|
||||
<Compile Include="CollectBase.cs" />
|
||||
<Compile Include="CommonPassword.cs" />
|
||||
<Compile Include="ConvertExtension.cs" />
|
||||
<Compile Include="EnumHelper.cs" />
|
||||
<Compile Include="Extension\Extensions.cs" />
|
||||
<Compile Include="Extension\JTokenExtension.cs" />
|
||||
<Compile Include="Extension\LinqExtension.cs" />
|
||||
<Compile Include="FileBase.cs" />
|
||||
<Compile Include="GetHtml.cs" />
|
||||
<Compile Include="GetProxyHtml.cs" />
|
||||
<Compile Include="Helper\CommonSimRequest.cs" />
|
||||
<Compile Include="Helper\DataOpenSSL.cs" />
|
||||
<Compile Include="Helper\FissionDataBaseConfig.cs" />
|
||||
<Compile Include="Helper\GB18030EncodingProvider.cs" />
|
||||
<Compile Include="Helper\GlobalConfig.cs" />
|
||||
<Compile Include="Helper\UDE.cs" />
|
||||
<Compile Include="HttpUtility.cs" />
|
||||
<Compile Include="IECookies.cs" />
|
||||
<Compile Include="ImageBuild.cs" />
|
||||
<Compile Include="ImageCut.cs" />
|
||||
<Compile Include="ImageErWeiMa.cs" />
|
||||
<Compile Include="IPLocationSearch.cs" />
|
||||
<Compile Include="JsonHelper.cs" />
|
||||
<Compile Include="LogSave.cs" />
|
||||
<Compile Include="Md5Base.cs" />
|
||||
<Compile Include="Model\Config\WxTalkFormShopMainInfo.cs" />
|
||||
<Compile Include="Model\Config\WxShopKfStatistics.cs" />
|
||||
<Compile Include="Model\Config\WxShopMainStatistics.cs" />
|
||||
<Compile Include="Model\Config\WxShopUploadInfo.cs" />
|
||||
<Compile Include="Model\Data\WXBuyUrlNotesInfo.cs" />
|
||||
<Compile Include="Model\Data\WXOrderDecryptAddressInfo.cs" />
|
||||
<Compile Include="Model\DBModel\oem.cs" />
|
||||
<Compile Include="Model\DBModel\oms_wei_external_procurement_log.cs" />
|
||||
<Compile Include="Model\DBModel\oms_wei_order.cs" />
|
||||
<Compile Include="Model\DBModel\user_payment_record.cs" />
|
||||
<Compile Include="Model\DBModel\user_points_record_info.cs" />
|
||||
<Compile Include="Model\DBModel\wx_qualification_image_info.cs" />
|
||||
<Compile Include="Model\Param\CollectManage\FissionSettingParam.cs" />
|
||||
<Compile Include="Model\Param\OrderManage\FreightTemplateParam.cs" />
|
||||
<Compile Include="Model\Param\DyProductManage\DyCategoryParam.cs" />
|
||||
<Compile Include="Model\Param\FissionManage\FissionData.cs" />
|
||||
<Compile Include="Model\Param\FissionManage\FissionDataModel.cs" />
|
||||
<Compile Include="Model\Param\FissionManage\FissionRoot.cs" />
|
||||
<Compile Include="Model\Param\DyProductManage\SameProductCheckParam.cs" />
|
||||
<Compile Include="Model\Param\DyProductManage\ViolateParam.cs" />
|
||||
<Compile Include="Model\Param\DyProductManage\QualificationConfig.cs" />
|
||||
<Compile Include="Model\Param\DyProductManage\ViolateRuleParam.cs" />
|
||||
<Compile Include="Model\Param\PDDCouponParam\PDDActivityMarketingParam.cs" />
|
||||
<Compile Include="Model\Param\PDDCouponParam\PDDCouponParam.cs" />
|
||||
<Compile Include="Model\Param\OutServerGoodsParam.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PDDActivitySubmitParamV2.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PddEditProdStockQuantity.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PddRelationParam.cs" />
|
||||
<Compile Include="Model\Param\ToolsManage\ADSLAccountParam.cs" />
|
||||
<Compile Include="Model\Param\ToolsManage\ProductMappingExportInfo.cs" />
|
||||
<Compile Include="Model\Param\ToolsManage\ProductMappingImportParam.cs" />
|
||||
<Compile Include="Model\Param\VDianManage\VDianParam.cs" />
|
||||
<Compile Include="Model\Param\VDianManage\VDianUploadSettingParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXCateAuthParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXCoupon.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXPreCreateOrderWaybillOnlineParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXUploadProductInfoRecommendParam.cs" />
|
||||
<Compile Include="Model\Result\1688\_1688ClientProductInfo.cs" />
|
||||
<Compile Include="Model\Result\1688\_1688OneProductListInfo.cs" />
|
||||
<Compile Include="Model\Result\1688\_1688OutProductInfo.cs" />
|
||||
<Compile Include="Model\Result\BuyerLoginInfo.cs" />
|
||||
<Compile Include="Model\Result\JST\JSTOrderInfo.cs" />
|
||||
<Compile Include="Model\Result\JST\JSTListProductSkuInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\ApiPddGoodsCatRuleInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDActivityResult\ActivityListProdInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDActivityResult\ActEnrollV3GoodsRuleInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PddBuyerAfterSaleLiteInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PddBuyerOrderLiteInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PddCatInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PddClientInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDFrontProductInfo2.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDFrontProductInfo3.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDFrontProductInfo5.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDFrontProductInfo4.cs" />
|
||||
<Compile Include="Model\Result\PlatformType.cs" />
|
||||
<Compile Include="Model\Result\VDianShopLoginInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\DSRShopScoreInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxActivityData.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WXAddressInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WXClientProductInfoLite.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxConsignmentOrderInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WXFinderTalentInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WXGetEditProductInfoLite.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXGetShortTitleParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXUploadProductInitParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXUploadProductParam.cs" />
|
||||
<Compile Include="Model\Result\JitCardCodeInfo.cs" />
|
||||
<Compile Include="Model\Result\JSTDownProdSkuInfo.cs" />
|
||||
<Compile Include="Model\Result\JSTListProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDCouponResult\PDDActivityToolGoodsListInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDCouponResult\PDDActivityToolSkuDiscountListInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDCouponResult\PDDActivityToolGoodsSkuListInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDCouponResult\PDDCouponGoodsListInfo.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PDDActivityPriceCheckParam.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PDDActivitySubmitParam.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PDDActivitySubmitParam20981.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PDDProdDecorationCommitParam.cs" />
|
||||
<Compile Include="Model\Param\PDDProdParam\PDDProductUploadParam.cs" />
|
||||
<Compile Include="Model\Param\SalesManage\PromotionAddParam.cs" />
|
||||
<Compile Include="Model\Param\SalesManage\TemuActivityParam.cs" />
|
||||
<Compile Include="Model\Param\ShopManage\TemuShopSettingParam.cs" />
|
||||
<Compile Include="Model\Param\TemuProductManage\TemuProductWords.cs" />
|
||||
<Compile Include="Model\Param\TemuProductManage\TemuSizeSpecParam.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDActivitiInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDActivityRuleInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDActivitySuggestPriceInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDChanceProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDFrontProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDPropRefPidNameMap.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDShopListProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDMaterialInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDProductDecorationInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDProductDetailInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDProductPropertyInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDProductTemplateInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDSizeSpecInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuActivityInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuActivityMatchProductInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuCategoryTemplateInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuDBProdMapResult.cs" />
|
||||
<Compile Include="Model\Result\TemuForChainProductInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuDBExtCodePriceInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuDBProductPurchasePriceInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuDBProductSelect.cs" />
|
||||
<Compile Include="Model\Result\TemuGoodsQualityInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuListProductInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuDBOrderInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuPriceAdjustInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuDetailProductInfo.cs" />
|
||||
<Compile Include="Model\Param\TemuProductManage\TemuProductParam.cs" />
|
||||
<Compile Include="Model\Result\KJDDBProduct.cs" />
|
||||
<Compile Include="Model\Result\TemuResult\AdsDetailInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuResult\AdsMallGoodsInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuResult\AiSkuImgInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuResult\TemuSizeConfigResult\TemuSizeConfigInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuResult\TemuWebClientProductInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuReturnPackageDetailInfo.cs" />
|
||||
<Compile Include="Model\Result\TemuStockInfo.cs" />
|
||||
<Compile Include="Model\Param\UploadManage\UploadCommissionParam.cs" />
|
||||
<Compile Include="Model\Param\UploadManage\UploadErrorParam.cs" />
|
||||
<Compile Include="Model\Result\AddressAreaInfo.cs" />
|
||||
<Compile Include="Model\Result\ShopLoginInfo.cs" />
|
||||
<Compile Include="Model\Result\CatePropertyResponseInfo.cs" />
|
||||
<Compile Include="Model\Result\FreightTemplateInfo.cs" />
|
||||
<Compile Include="Model\Result\ViolateInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\GetCateOnShelfInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\GetProdCateInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxCatInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WXLiveObjectInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOnlineWaybillDeliveryInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOptimizeExpressInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOptimizeFeedbackOrderInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOptimizeOrderAfterSaleInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOptimizeProductEvaluationInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOptimizeLinerCgiInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOrderExpressInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOrderInfoLite.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxOptimizeOrderWayBillInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WXShopDefaultAddressInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WXShopTokenInfo.cs" />
|
||||
<Compile Include="Model\Result\WXResult\WxTaxMoneyInfo.cs" />
|
||||
<Compile Include="MultiThreadClient.cs" />
|
||||
<Compile Include="OutExcel.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Randomx.cs" />
|
||||
<Compile Include="RsaBase.cs" />
|
||||
<Compile Include="Segment.cs" />
|
||||
<Compile Include="ShopInfo.cs" />
|
||||
<Compile Include="SignHelper.cs" />
|
||||
<Compile Include="BaseSpecialConfig.cs" />
|
||||
<Compile Include="SqlHelper.cs" />
|
||||
<Compile Include="SqliteHelper.cs" />
|
||||
<Compile Include="TempFileReadWrite.cs" />
|
||||
<Compile Include="Threadx.cs" />
|
||||
<Compile Include="TreadTime.cs" />
|
||||
<Compile Include="WebClientx.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ZipHelper.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<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">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ProjectView>ProjectFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,112 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class AutoSizeFormClass
|
||||
{
|
||||
//(1).声明结构,只记录窗体和其控件的初始位置和大小。
|
||||
public struct controlRect
|
||||
{
|
||||
public int Left;
|
||||
public int Top;
|
||||
public int Width;
|
||||
public int Height;
|
||||
}
|
||||
//(2).声明 1个对象
|
||||
//注意这里不能使用控件列表记录 List nCtrl;,因为控件的关联性,记录的始终是当前的大小。
|
||||
// public List oldCtrl= new List();//这里将西文的大于小于号都过滤掉了,只能改为中文的,使用中要改回西文
|
||||
public List<controlRect> oldCtrl = new List<controlRect>();
|
||||
int ctrlNo = 0;//1;
|
||||
//(3). 创建两个函数
|
||||
//(3.1)记录窗体和其控件的初始位置和大小,
|
||||
public void controllInitializeSize(Control mForm)
|
||||
{
|
||||
controlRect cR;
|
||||
cR.Left = mForm.Left; cR.Top = mForm.Top; cR.Width = mForm.Width; cR.Height = mForm.Height;
|
||||
oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可
|
||||
AddControl(mForm);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
|
||||
//this.WindowState = (System.Windows.Forms.FormWindowState)(2);//记录完控件的初始位置和大小后,再最大化
|
||||
//0 - Normalize , 1 - Minimize,2- Maximize
|
||||
}
|
||||
private void AddControl(Control ctl)
|
||||
{
|
||||
foreach (Control c in ctl.Controls)
|
||||
{ //**放在这里,是先记录控件的子控件,后记录控件本身
|
||||
//if (c.Controls.Count > 0)
|
||||
// AddControl(c);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
|
||||
controlRect objCtrl;
|
||||
objCtrl.Left = c.Left; objCtrl.Top = c.Top; objCtrl.Width = c.Width; objCtrl.Height = c.Height;
|
||||
oldCtrl.Add(objCtrl);
|
||||
//**放在这里,是先记录控件本身,后记录控件的子控件
|
||||
if (c.Controls.Count > 0)
|
||||
AddControl(c);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
|
||||
}
|
||||
}
|
||||
//(3.2)控件自适应大小,
|
||||
public void controlAutoSize(Control mForm)
|
||||
{
|
||||
if (ctrlNo == 0)
|
||||
{ //*如果在窗体的Form1_Load中,记录控件原始的大小和位置,正常没有问题,但要加入皮肤就会出现问题,因为有些控件如dataGridView的的子控件还没有完成,个数少
|
||||
//*要在窗体的Form1_SizeChanged中,第一次改变大小时,记录控件原始的大小和位置,这里所有控件的子控件都已经形成
|
||||
controlRect cR;
|
||||
// cR.Left = mForm.Left; cR.Top = mForm.Top; cR.Width = mForm.Width; cR.Height = mForm.Height;
|
||||
cR.Left = 0; cR.Top = 0; cR.Width = mForm.PreferredSize.Width; cR.Height = mForm.PreferredSize.Height;
|
||||
|
||||
oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可
|
||||
AddControl(mForm);//窗体内其余控件可能嵌套其它控件(比如panel),故单独抽出以便递归调用
|
||||
}
|
||||
float wScale = (float)mForm.Width / (float)oldCtrl[0].Width;//新旧窗体之间的比例,与最早的旧窗体
|
||||
float hScale = (float)mForm.Height / (float)oldCtrl[0].Height;//.Height;
|
||||
ctrlNo = 1;//进入=1,第0个为窗体本身,窗体内的控件,从序号1开始
|
||||
AutoScaleControl(mForm, wScale, hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
|
||||
}
|
||||
private void AutoScaleControl(Control ctl, float wScale, float hScale)
|
||||
{
|
||||
int ctrLeft0, ctrTop0, ctrWidth0, ctrHeight0;
|
||||
//int ctrlNo = 1;//第1个是窗体自身的 Left,Top,Width,Height,所以窗体控件从ctrlNo=1开始
|
||||
foreach (Control c in ctl.Controls)
|
||||
{ //**放在这里,是先缩放控件的子控件,后缩放控件本身
|
||||
//if (c.Controls.Count > 0)
|
||||
// AutoScaleControl(c, wScale, hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
|
||||
ctrLeft0 = oldCtrl[ctrlNo].Left;
|
||||
ctrTop0 = oldCtrl[ctrlNo].Top;
|
||||
ctrWidth0 = oldCtrl[ctrlNo].Width;
|
||||
ctrHeight0 = oldCtrl[ctrlNo].Height;
|
||||
//c.Left = (int)((ctrLeft0 - wLeft0) * wScale) + wLeft1;//新旧控件之间的线性比例
|
||||
//c.Top = (int)((ctrTop0 - wTop0) * h) + wTop1;
|
||||
c.Left = (int)((ctrLeft0) * wScale);//新旧控件之间的线性比例。控件位置只相对于窗体,所以不能加 + wLeft1
|
||||
c.Top = (int)((ctrTop0) * hScale);//
|
||||
c.Width = (int)(ctrWidth0 * wScale);//只与最初的大小相关,所以不能与现在的宽度相乘 (int)(c.Width * w);
|
||||
c.Height = (int)(ctrHeight0 * hScale);//
|
||||
ctrlNo++;//累加序号
|
||||
//**放在这里,是先缩放控件本身,后缩放控件的子控件
|
||||
if (c.Controls.Count > 0)
|
||||
AutoScaleControl(c, wScale, hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
|
||||
|
||||
if (ctl is DataGridView)
|
||||
{
|
||||
DataGridView dgv = ctl as DataGridView;
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
|
||||
int widths = 0;
|
||||
for (int i = 0; i < dgv.Columns.Count; i++)
|
||||
{
|
||||
dgv.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells); // 自动调整列宽
|
||||
widths += dgv.Columns[i].Width; // 计算调整列后单元列的宽度和
|
||||
}
|
||||
if (widths >= ctl.Size.Width) // 如果调整列的宽度大于设定列宽
|
||||
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; // 调整列的模式 自动
|
||||
else
|
||||
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; // 如果小于 则填充
|
||||
|
||||
Cursor.Current = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 实现Base64加密解密
|
||||
/// 作者:周公
|
||||
/// 时间:2007
|
||||
/// </summary>
|
||||
public static class Base64Encode
|
||||
{
|
||||
/// <summary>
|
||||
/// Base64加密
|
||||
/// </summary>
|
||||
/// <param name="codeName">加密采用的编码方式</param>
|
||||
/// <param name="source">待加密的明文</param>
|
||||
/// <returns></returns>
|
||||
public static string EncodeBase64(Encoding encode, string source)
|
||||
{
|
||||
byte[] bytes = encode.GetBytes(source);
|
||||
try
|
||||
{
|
||||
string code = Convert.ToBase64String(bytes);
|
||||
return code;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Base64加密,采用utf8编码方式加密
|
||||
/// </summary>
|
||||
/// <param name="source">待加密的明文</param>
|
||||
/// <returns>加密后的字符串</returns>
|
||||
public static string EncodeBase64(string source)
|
||||
{
|
||||
return EncodeBase64(Encoding.UTF8, source);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Base64解密
|
||||
/// </summary>
|
||||
/// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param>
|
||||
/// <param name="result">待解密的密文</param>
|
||||
/// <returns>解密后的字符串</returns>
|
||||
public static string DecodeBase64(Encoding encode, string result)
|
||||
{
|
||||
string decode = "";
|
||||
byte[] bytes = Convert.FromBase64String(result);
|
||||
try
|
||||
{
|
||||
decode = encode.GetString(bytes);
|
||||
}
|
||||
catch
|
||||
{
|
||||
decode = result;
|
||||
}
|
||||
return decode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Base64解密,采用utf8编码方式解密
|
||||
/// </summary>
|
||||
/// <param name="result">待解密的密文</param>
|
||||
/// <returns>解密后的字符串</returns>
|
||||
public static string DecodeBase64(string result)
|
||||
{
|
||||
return DecodeBase64(Encoding.UTF8, result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 文件转Base64编码
|
||||
/// </summary>
|
||||
/// <param name="fileName">文件全路径</param>
|
||||
/// <returns></returns>
|
||||
public static string DocumentToBase64Str(string fileName)
|
||||
{
|
||||
FileStream filestream = new FileStream(fileName, FileMode.Open);
|
||||
|
||||
byte[] bt = new byte[filestream.Length];
|
||||
//调用read读取方法
|
||||
filestream.Read(bt, 0, bt.Length);
|
||||
string base64Str = Convert.ToBase64String(bt);
|
||||
filestream.Close();
|
||||
return base64Str;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Base64字符串转文件并保存
|
||||
/// </summary>
|
||||
/// <param name="base64String">base64字符串</param>
|
||||
/// /// <param name="fileFullPath">保存的文件路径 </param>
|
||||
/// <param name="fileName">保存的文件名</param>
|
||||
/// <returns>是否转换并保存成功</returns>
|
||||
public static bool Base64StringToFile(string base64String, string fileFullPath, string fileName)
|
||||
{
|
||||
bool opResult = false;
|
||||
try
|
||||
{
|
||||
|
||||
if (!Directory.Exists(fileFullPath))
|
||||
{
|
||||
Directory.CreateDirectory(fileFullPath);
|
||||
}
|
||||
MemoryStream stream = new MemoryStream(Convert.FromBase64String(base64String));
|
||||
FileStream fs = new FileStream(fileFullPath + "\\" + fileName, FileMode.OpenOrCreate, FileAccess.Write);
|
||||
byte[] b = stream.ToArray();
|
||||
fs.Write(b, 0, b.Length);
|
||||
fs.Close();
|
||||
|
||||
opResult = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
return opResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,254 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class BaseEncrypt
|
||||
{
|
||||
#region EBFB8THEA 加密
|
||||
public static string _KEY = "XNNRSAA1"; //密钥
|
||||
public static string _IV = "RSABPDD2"; //向量
|
||||
|
||||
/// <summary>
|
||||
/// 加密
|
||||
/// </summary>
|
||||
/// <param name="data">需要加密的文本</param>
|
||||
/// <returns></returns>
|
||||
public static string EncryptEncode(string data, string _key = "", string _iv = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(_key))
|
||||
_key = _KEY;
|
||||
if (string.IsNullOrEmpty(_iv))
|
||||
_iv = _IV;
|
||||
|
||||
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(_key);
|
||||
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(_iv);
|
||||
|
||||
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
|
||||
int i = cryptoProvider.KeySize;
|
||||
MemoryStream ms = new MemoryStream();
|
||||
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
|
||||
|
||||
StreamWriter sw = new StreamWriter(cst);
|
||||
sw.Write(data);
|
||||
sw.Flush();
|
||||
cst.FlushFinalBlock();
|
||||
sw.Flush();
|
||||
string strRet = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
|
||||
|
||||
sw.Dispose();
|
||||
sw.Close();
|
||||
cst.Dispose();
|
||||
cst.Close();
|
||||
ms.Dispose();
|
||||
ms.Close();
|
||||
return strRet;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解密
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string EncryptDecode(string data, string _key = "", string _iv = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(_key))
|
||||
_key = _KEY;
|
||||
if (string.IsNullOrEmpty(_iv))
|
||||
_iv = _IV;
|
||||
|
||||
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(_key);
|
||||
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(_iv);
|
||||
byte[] byEnc;
|
||||
|
||||
try
|
||||
{
|
||||
data.Replace("_%_", "/");
|
||||
data.Replace("-%-", "#");
|
||||
byEnc = Convert.FromBase64String(data);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
|
||||
MemoryStream ms = new MemoryStream(byEnc);
|
||||
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
|
||||
StreamReader sr = new StreamReader(cst);
|
||||
var result = sr.ReadToEnd();
|
||||
|
||||
sr.Dispose();
|
||||
sr.Close();
|
||||
cst.Dispose();
|
||||
cst.Close();
|
||||
ms.Dispose();
|
||||
ms.Close();
|
||||
|
||||
return result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 数字签名校验
|
||||
public static string sPrivateKey = "<RSAKeyValue><Modulus>oOS7iOYBmFdhSPYmae8Vav6DNvzFqEp08UWzNr6Jq3WetYNrVriB7EGcmSWpK4b+vu+NPhFuXRt4WMo06kJLll7kDeVBYJooXCQQaNQT1Gv4l2zcWgutCBtzIAs8YGwUgjkFdnIN8bIGOdGbQAaxIJpnifCzX5Iw2qd2YaBQMjM=</Modulus><Exponent>AQAB</Exponent><P>3w7I1TzMMt7d9fYkQINQamyqVT+Ke/WU8Z+RMFpfiYmzu+EorIxeRe5yEG1TMYD2uHPX7K8K9IwxoTF2SxcXmQ==</P><Q>uKevEc6B4LTwebVcE8UYk4ZjRW2ADDe223ajc9yZKguboXTrv1euPEnEoWibKANZ7a6ktW+ok7M30T7+6hhHqw==</Q><DP>a0JWvIMhxgx5Oz8DK6p5TtO2DIwjcXwkBRQv4spySlbXAK9CucY9xu7kFpYbfSCAgy3hVMTPRczsSJDaSz1tcQ==</DP><DQ>Oc1r1RQivdeGC2NFLn8dIVkJDDupwKlUGUD7C5K7c1js38682Um2JfMllS0snIroBKoNryoDyDBqwZqJq3fsPw==</DQ><InverseQ>nOsce/v2jCJKY1/SeOsLiwa7n5fLIKEdIBBeLURLYuELI/9RyElBM5KwNUCXWylCkVc5DRGyoExOWzZgdUk5Kw==</InverseQ><D>H2lov6qAJzjwEmmUSFxYJyJ3hbXF9TxMJorAGXELucDl8nQs8apmGzUYGMJEi+34MFjej36huGXTkiowOIgm724PlVgjQGyr9hqBFO9WTKwXQrgZaoG235HBDGh5oq1fkBNZ415msYsqwmtif7a6qAL9tEJiPlBWpg5/EJA9wVE=</D></RSAKeyValue>";
|
||||
public static string sPublicKey = "<RSAKeyValue><Modulus>oOS7iOYBmFdhSPYmae8Vav6DNvzFqEp08UWzNr6Jq3WetYNrVriB7EGcmSWpK4b+vu+NPhFuXRt4WMo06kJLll7kDeVBYJooXCQQaNQT1Gv4l2zcWgutCBtzIAs8YGwUgjkFdnIN8bIGOdGbQAaxIJpnifCzX5Iw2qd2YaBQMjM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
|
||||
|
||||
/// <summary>
|
||||
/// 数字签名
|
||||
/// </summary>
|
||||
/// <param name="plaintext">原文</param>
|
||||
/// <param name="privateKey">私钥</param>
|
||||
/// <returns>签名</returns>
|
||||
public static string DataSign(string plaintext, string privateKey = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(privateKey))
|
||||
privateKey = sPrivateKey;
|
||||
|
||||
UnicodeEncoding ByteConverter = new UnicodeEncoding();
|
||||
byte[] dataToEncrypt = ByteConverter.GetBytes(plaintext);
|
||||
|
||||
using (RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider())
|
||||
{
|
||||
RSAalg.FromXmlString(privateKey);
|
||||
//使用SHA1进行摘要算法,生成签名
|
||||
byte[] encryptedData = RSAalg.SignData(dataToEncrypt, new SHA1CryptoServiceProvider());
|
||||
return Convert.ToBase64String(encryptedData);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 验证签名
|
||||
/// </summary>
|
||||
/// <param name="plaintext">原文</param>
|
||||
/// <param name="signedData">签名</param>
|
||||
/// <param name="publicKey">公钥</param>
|
||||
/// <returns></returns>
|
||||
public static bool DataVerify(string plaintext, string signedData, string publicKey = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(publicKey))
|
||||
publicKey = sPublicKey;
|
||||
|
||||
using (RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider())
|
||||
{
|
||||
RSAalg.FromXmlString(publicKey);
|
||||
UnicodeEncoding ByteConverter = new UnicodeEncoding();
|
||||
byte[] dataToVerifyBytes = ByteConverter.GetBytes(plaintext);
|
||||
byte[] signedDataBytes = Convert.FromBase64String(signedData);
|
||||
return RSAalg.VerifyData(dataToVerifyBytes, new SHA1CryptoServiceProvider(), signedDataBytes);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 获取非对程加密Key
|
||||
/// 键为公钥,值为私钥
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static KeyValuePair<string, string> CreateRSAKey()
|
||||
{
|
||||
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
|
||||
string privateKey = RSA.ToXmlString(true);
|
||||
string publicKey = RSA.ToXmlString(false);
|
||||
|
||||
return new KeyValuePair<string, string>(publicKey, privateKey);
|
||||
}
|
||||
|
||||
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
|
||||
/// <summary>
|
||||
/// 进行DES解密。
|
||||
/// </summary>
|
||||
/// <param name="pToDecrypt">要解密的base64串</param>
|
||||
/// <param name="sKey">密钥,且必须为8位。</param>
|
||||
/// <returns>已解密的字符串。</returns>
|
||||
public static string DESDecode(string source, string sKey)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// byte[] rgbKey = Encoding.UTF8.GetBytes(sKey);
|
||||
// byte[] rgbIV = Keys;
|
||||
// byte[] inputByteArray = Convert.FromBase64String(source);
|
||||
// DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
|
||||
// MemoryStream mStream = new MemoryStream();
|
||||
// CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
|
||||
// cStream.Write(inputByteArray, 0, inputByteArray.Length);
|
||||
// cStream.FlushFinalBlock();
|
||||
// return Encoding.UTF8.GetString(mStream.ToArray());
|
||||
//}
|
||||
//catch
|
||||
//{
|
||||
// return source;
|
||||
//}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
byte[] inputByteArray = System.Convert.FromBase64String(source);//Encoding.UTF8.GetBytes(source);
|
||||
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
|
||||
{
|
||||
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
|
||||
des.IV = Keys;
|
||||
System.IO.MemoryStream ms = new System.IO.MemoryStream();
|
||||
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
|
||||
{
|
||||
cs.Write(inputByteArray, 0, inputByteArray.Length);
|
||||
cs.FlushFinalBlock();
|
||||
cs.Close();
|
||||
}
|
||||
string str = Encoding.UTF8.GetString(ms.ToArray());
|
||||
ms.Close();
|
||||
return str;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DES加密方法
|
||||
/// </summary>
|
||||
/// <param name="encryptedValue">要加密的字符串</param>
|
||||
/// <param name="key">密钥</param>
|
||||
/// <returns>加密后的字符串</returns>
|
||||
public static string DESEncrypt(string originalValue, string key)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (DESCryptoServiceProvider sa = new DESCryptoServiceProvider { Key = Encoding.UTF8.GetBytes(key), IV = Keys })
|
||||
{
|
||||
using (ICryptoTransform ct = sa.CreateEncryptor())
|
||||
{
|
||||
byte[] by = Encoding.UTF8.GetBytes(originalValue);
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
using (var cs = new CryptoStream(ms, ct, CryptoStreamMode.Write))
|
||||
{
|
||||
cs.Write(by, 0, by.Length);
|
||||
cs.FlushFinalBlock();
|
||||
}
|
||||
return Convert.ToBase64String(ms.ToArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogSave.Add("DES Encrypt Exception:" + ex.Message);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,915 +0,0 @@
|
||||
/*
|
||||
* 常用正则表达式
|
||||
* 肖俊
|
||||
* 2013-5-2
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 基础正则表达式类
|
||||
/// </summary>
|
||||
public static class BaseRegex
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回正则对象所有结果
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static MatchCollection GetMatchRegex(string HtmlString, string RegexString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + RegexString);
|
||||
return null;
|
||||
}
|
||||
return Regex.Matches(HtmlString, RegexString, RegexOptions.IgnoreCase);
|
||||
}
|
||||
/// <summary>
|
||||
/// 返回正则对象所有结果
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static MatchCollection GetMatchRegex(ref string HtmlString, string RegexString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + RegexString);
|
||||
return null;
|
||||
}
|
||||
return Regex.Matches(HtmlString, RegexString, RegexOptions.IgnoreCase);
|
||||
}
|
||||
/// <summary>
|
||||
/// 返回单个正则分析结果
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetMatchRegexString(ref string HtmlString, string RegexString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + RegexString);
|
||||
return null;
|
||||
}
|
||||
MatchCollection mc = Regex.Matches(HtmlString, RegexString, RegexOptions.IgnoreCase);
|
||||
if (mc.Count > 0)
|
||||
{
|
||||
return mc[0].Groups[1].Value.ToString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 返回单个正则分析结果
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetMatchMaxRegexString(ref string HtmlString, string RegexString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + RegexString);
|
||||
return null;
|
||||
}
|
||||
MatchCollection mc = Regex.Matches(HtmlString, RegexString, RegexOptions.IgnoreCase);
|
||||
if (mc.Count > 0)
|
||||
{
|
||||
return mc[mc.Count - 1].Groups[1].Value.ToString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 返回匹配的数值
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetMatchInt(ref string HtmlString, string RegexString)
|
||||
{
|
||||
string id = GetMatchRegexString(ref HtmlString, RegexString);
|
||||
int i;
|
||||
int.TryParse(id, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回单个正则分析结果
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetMatchRegexString(string HtmlString, string RegexString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + RegexString);
|
||||
return null;
|
||||
}
|
||||
MatchCollection mc = Regex.Matches(HtmlString, RegexString, RegexOptions.IgnoreCase);
|
||||
if (mc.Count > 0)
|
||||
{
|
||||
return mc[0].Groups[1].ToString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否存在匹配
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static bool MatchRegex(string HtmlString, string RegexString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + RegexString);
|
||||
return false;
|
||||
}
|
||||
return Regex.IsMatch(HtmlString, RegexString, RegexOptions.IgnoreCase);
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据正则删除表达式所匹配的内容
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static string Clear(string HtmlString, string RegexString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + RegexString);
|
||||
return null;
|
||||
}
|
||||
return Regex.Replace(HtmlString, RegexString, "", RegexOptions.IgnoreCase);
|
||||
}
|
||||
/// <summary>
|
||||
/// 清除HTML代码
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <returns>返回文字内容</returns>
|
||||
public static string ClearHtml(string HtmlString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空");
|
||||
return null;
|
||||
}
|
||||
return Regex.Replace(Regex.Replace(HtmlString,
|
||||
@"(<head[\w\W]*?</head>|<script[\w\W]*?</script>|<style[\w\W]*?</style>|<!--[\w\W]*?-->)", ""), "(<[^>]*?>)", "").Trim();
|
||||
}
|
||||
/// <summary>
|
||||
/// 清除HTML代码
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <returns>返回文字内容</returns>
|
||||
public static string ClearHtml(ref string HtmlString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空");
|
||||
return null;
|
||||
}
|
||||
return Regex.Replace(Regex.Replace(HtmlString,
|
||||
@"(<head[\w\W]*?</head>|<script[\w\W]*?</script>|<style[\w\W]*?</style>|<!--[\w\W]*?-->)", ""), "(<[^>]*?>)", "").Trim();
|
||||
}
|
||||
/// <summary>
|
||||
/// 清除HTML代码
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <returns>返回文字内容</returns>
|
||||
public static void ClearHtmlX(ref string HtmlString)
|
||||
{
|
||||
if (string.IsNullOrEmpty(HtmlString))
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空");
|
||||
return;
|
||||
}
|
||||
HtmlString = Regex.Replace(Regex.Replace(HtmlString,
|
||||
@"(<head[\w\W]*?</head>|<script[\w\W]*?</script>|<style[\w\W]*?</style>|<!--[\w\W]*?-->)", ""), "(<[^>]*?>)", "");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清除HTML代码A标签
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <returns>返回文字内容</returns>
|
||||
public static string ClearA(string HtmlString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空");
|
||||
return null;
|
||||
}
|
||||
HtmlString = Regex.Replace(HtmlString, "(</?a[^>]*>)", "", RegexOptions.IgnoreCase);
|
||||
return HtmlString.Trim();
|
||||
}
|
||||
/// <summary>
|
||||
/// 去除空格和特殊空白
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <returns></returns>
|
||||
public static string Trim(string text)
|
||||
{
|
||||
if (string.IsNullOrEmpty(text))
|
||||
return "";
|
||||
return text.Replace("\t", " ").Replace("\r\n", " ").Replace("\r", " ").Replace("\n", " ").Trim();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清除HTML代码A标签
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <returns>返回文字内容</returns>
|
||||
public static string ClearTitle(string HtmlString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空");
|
||||
return null;
|
||||
}
|
||||
HtmlString = Regex.Replace(HtmlString, "(title=\"[^\"]*\")", "");
|
||||
return HtmlString.Trim();
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetValue(string html, string reg)
|
||||
{
|
||||
return GetMatchRegexString(html, "<" + reg + ">([^<]+)</" + reg + ">");
|
||||
}
|
||||
/// <summary>
|
||||
/// 清理多余的HTML元素
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <returns></returns>
|
||||
public static string ClearNone(string html)
|
||||
{
|
||||
if (string.IsNullOrEmpty(html))
|
||||
return null;
|
||||
if (html.Contains("\0") && html.IndexOf("\0") > 0)
|
||||
html = html.Substring(0, html.IndexOf("\0"));
|
||||
string h = Clear(html, @"(<\!doctype[^>]*?>)");
|
||||
h = Clear(h, @"(<html[^>]*?>)");
|
||||
h = Clear(h, @"(<head[\w\W]*?</head>)");
|
||||
h = Clear(h, @"(<script[\w\W]*?</script>)");
|
||||
h = Clear(h, @"(<style[\w\W]*?</style>)");
|
||||
h = Clear(h, @"(<input[^>]*?>)");
|
||||
h = Clear(h, @"(<!--[\w\W]*?-->)");
|
||||
h = Clear(h, @"(<link[^>]*?>)");
|
||||
h = Clear(h, @"(\s*alt\s*=[""'\s]*[^>]*?['""]+)");
|
||||
h = Clear(h, @"(\s*style\s*=[""'\s]*[^>]*?['""]+)");
|
||||
h = Clear(h, @"(\s*title\s*=[""'\s]*[^>]*?['""]+)");
|
||||
h = Clear(h, @"(\s*id\s*=[""'\s]*[^>]*?['""]+)");
|
||||
h = Clear(h, @"(\s*class\s*=[""'\s]*[^>]*?['""]+)");
|
||||
h = Clear(h, @"(\s*align\s*=[""'\s]*[^>]*?['""]+)");
|
||||
h = h.Replace("\r\n", " ");
|
||||
h = h.Replace("\n", " ").Replace("\r", " ").Replace("\t", " ");
|
||||
h = h.Replace(" ", " ");
|
||||
h = h.Replace(" ", " ");
|
||||
h = h.Replace(" ", " ");
|
||||
h = h.Replace(" ", " ");
|
||||
return h.Replace(" ", " ").Replace(" ", " ");
|
||||
}
|
||||
/// <summary>
|
||||
/// 返回执行结果数
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="regex"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetRegexCount(string html, string regex)
|
||||
{
|
||||
if (html == null)
|
||||
{
|
||||
LogSave.Add("匹配正则发生错误:原始字符串为空,正则:" + regex);
|
||||
return 0;
|
||||
}
|
||||
return Regex.Matches(html, regex, RegexOptions.IgnoreCase).Count;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据正则删除表达式所匹配的内容
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static string Relpace(string HtmlString, string RegexString, string NewString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
return null;
|
||||
return Regex.Replace(HtmlString, RegexString, NewString, RegexOptions.IgnoreCase);
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据正则删除表达式所匹配的内容
|
||||
/// </summary>
|
||||
/// <param name="HtmlString"></param>
|
||||
/// <param name="RegexString"></param>
|
||||
/// <returns></returns>
|
||||
public static void Relpace(ref string HtmlString, string RegexString, string NewString)
|
||||
{
|
||||
if (HtmlString == null)
|
||||
return;
|
||||
HtmlString = Regex.Replace(HtmlString, RegexString, NewString, RegexOptions.IgnoreCase);
|
||||
}
|
||||
/// <summary>
|
||||
/// 关键词在文本中出现的次数
|
||||
/// </summary>
|
||||
/// <param name="b"></param>
|
||||
/// <param name="keyword"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetStringCount(ref byte[] b, string keyword)
|
||||
{
|
||||
if (string.IsNullOrEmpty(keyword))
|
||||
return 0;
|
||||
int c = 0;
|
||||
bool had;
|
||||
byte[] b1 = Encoding.UTF8.GetBytes(keyword);
|
||||
for (int i = 0; i < b.Length - b1.Length; i++)
|
||||
{
|
||||
had = false;
|
||||
for (int j = 0; j < b1.Length; j++)
|
||||
{
|
||||
if (b[i + j] != b1[j])
|
||||
{
|
||||
had = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (had)
|
||||
{
|
||||
c++;
|
||||
i += b1.Length - 1;
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否存在
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static bool Exists(string html, string reg)
|
||||
{
|
||||
if (string.IsNullOrEmpty(html) || string.IsNullOrEmpty(reg))
|
||||
return false;
|
||||
return new Regex(reg).IsMatch(html);
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否是数字
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsNumber(string str)
|
||||
{
|
||||
System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[0-9\.]+$");
|
||||
return reg1.IsMatch(str);
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否是字母
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsChar(string str)
|
||||
{
|
||||
System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[A-Za-z]+$");
|
||||
return reg1.IsMatch(str);
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否是字母
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsCharOrNumber(string str)
|
||||
{
|
||||
System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[A-Za-z0-9]+$");
|
||||
return reg1.IsMatch(str);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否是中文字符串列
|
||||
/// </summary>
|
||||
/// <param name="word"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsWordList(string word)
|
||||
{
|
||||
char[] xj = word.ToCharArray();
|
||||
for (int j = 0; j < xj.Length; j++)
|
||||
if (!IsWord(xj[j]))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否是字符
|
||||
/// </summary>
|
||||
/// <param name="ascii"></param>
|
||||
/// <returns></returns>
|
||||
private static bool IsWord(int ascii)
|
||||
{
|
||||
if (ascii == 32 || ascii == 35) //空格
|
||||
return true;
|
||||
if (ascii < 58 && ascii > 47) //数字
|
||||
return true;
|
||||
if (ascii < 48 && ascii > 31) //符号
|
||||
return true;
|
||||
if (ascii < 91 && ascii > 64) //小写字母
|
||||
return true;
|
||||
if (ascii < 123 && ascii > 96) //大写字母
|
||||
return true;
|
||||
if (ascii < 40892 && ascii > 13311) //中文字符串
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static bool GetBoolValue(string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, "<" + reg + ">([^<]+)</" + reg + ">");
|
||||
if (!string.IsNullOrEmpty(temp) && (temp.ToLower() == "true" || temp == "1"))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetIntValue(string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, "<" + reg + ">([^<]+)</" + reg + ">");
|
||||
int i;
|
||||
if (int.TryParse(temp, out i))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static long GetLongValue(string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, "<" + reg + ">([^<]+)</" + reg + ">");
|
||||
long i;
|
||||
if (long.TryParse(temp, out i))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static double GetDoubleValue(string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, "<" + reg + ">([^<]+)</" + reg + ">");
|
||||
double i;
|
||||
if (double.TryParse(temp, out i))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static DateTime GetDateValue(string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, "<" + reg + ">([^<]+)</" + reg + ">");
|
||||
DateTime i;
|
||||
if (DateTime.TryParse(temp, out i))
|
||||
return i;
|
||||
return DateTime.MinValue;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static decimal GetDecimalValue(string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, "<" + reg + ">([^<]+)</" + reg + ">");
|
||||
decimal i = 0;
|
||||
if (decimal.TryParse(temp, out i))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static decimal GetDecimalJson(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*['""]([^']+?)['""]");
|
||||
if (string.IsNullOrEmpty(temp))
|
||||
temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*([\d-\.]+)");
|
||||
decimal i = 0;
|
||||
if (decimal.TryParse(temp, out i))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static decimal? GetNullableDecimalJson(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*['""]([^']+?)['""]");
|
||||
if (string.IsNullOrEmpty(temp))
|
||||
temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*([\d-\.]+)");
|
||||
decimal i = 0;
|
||||
if (decimal.TryParse(temp, out i))
|
||||
return i;
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetIntJson(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*['""]([^']+?)['""]");
|
||||
if (string.IsNullOrEmpty(temp))
|
||||
temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*([\d-]+)");
|
||||
int i;
|
||||
if (int.TryParse(temp, out i))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static int? GetNullableIntJson(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*['""]([^']+?)['""]");
|
||||
if (string.IsNullOrEmpty(temp))
|
||||
temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*([\d-]+)");
|
||||
int i;
|
||||
if (int.TryParse(temp, out i))
|
||||
return i;
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static bool GetBoolJson(ref string html, string reg)
|
||||
{
|
||||
var temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*(true|false)");
|
||||
bool res;
|
||||
if (bool.TryParse(temp, out res))
|
||||
return res;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static bool? GetNullableBoolJson(ref string html, string reg)
|
||||
{
|
||||
var temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*(true|false)");
|
||||
bool res;
|
||||
if (bool.TryParse(temp, out res))
|
||||
return res;
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳转字符串时间
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetIntTimeToString(ref string html, string reg)
|
||||
{
|
||||
return GetIntTimeToString(ref html, reg, 0);
|
||||
}
|
||||
/// <summary>
|
||||
/// 时间戳转字符串时间
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <param name="addTime">添加时间</param>
|
||||
/// <returns></returns>
|
||||
public static string GetIntTimeToString(ref string html, string reg, int addTime)
|
||||
{
|
||||
int time = GetIntJson(ref html, reg) + addTime;
|
||||
DateTime dt = BaseClass.StampToDateTime(time);
|
||||
return dt.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static long GetLongJson(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*['""]([^']+?)['""]");
|
||||
if (string.IsNullOrEmpty(temp))
|
||||
temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*([\d]+)");
|
||||
long i;
|
||||
if (long.TryParse(temp, out i))
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetStringJson(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"[""]" + reg + @"[""][\s]*:[\s]*[""]([^""]+?)[""]");
|
||||
if (temp == null)
|
||||
temp = GetMatchRegexString(html, @"[""]" + reg + @"[""][\s]*:[\s]*[""]([^""]*?)[""]");
|
||||
if (temp == null)
|
||||
temp = GetMatchRegexString(html, @"[']" + reg + @"['][\s]*:[\s]*[']([^']*?)[']");
|
||||
if (temp == null)
|
||||
temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*([\d]+)");
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取字符串值,多个参数,返回第一个匹配的
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetStringJsonByRegs(ref string html, string defaultValue, params string[] regs)
|
||||
{
|
||||
foreach (var reg in regs)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"[""]" + reg + @"[""][\s]*:[\s]*[""]([^""]+?)[""]");
|
||||
if (temp != null)
|
||||
return temp;
|
||||
temp = GetMatchRegexString(html, @"[""]" + reg + @"[""][\s]*:[\s]*[""]([^""]*?)[""]");
|
||||
if (temp != null)
|
||||
return temp;
|
||||
temp = GetMatchRegexString(html, @"[']" + reg + @"['][\s]*:[\s]*[']([^']*?)[']");
|
||||
if (temp != null)
|
||||
return temp;
|
||||
temp = GetMatchRegexString(html, @"['""]" + reg + @"['""][\s]*:[\s]*([\d]+)");
|
||||
if (temp != null)
|
||||
return temp;
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetStringXml(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"<" + reg + ">([^']+?)</" + reg + ">");
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetStringXml(ref string html, string reg, string defaultValue)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"<" + reg + ">([^']+?)</" + reg + ">");
|
||||
if (string.IsNullOrEmpty(temp))
|
||||
return defaultValue;
|
||||
return temp;
|
||||
}
|
||||
|
||||
public static string GetOneJsonObjStrJson(ref string html, string reg)
|
||||
{
|
||||
return GetJsonObjStrJson(ref html, reg).FirstOrDefault();
|
||||
}
|
||||
|
||||
public static System.Collections.Generic.List<string> GetJsonObjStrJson(ref string html, string reg, int level = 0)
|
||||
{
|
||||
var startTime = DateTime.Now;
|
||||
|
||||
System.Collections.Generic.List<string> rstLst = new System.Collections.Generic.List<string>();
|
||||
if (html == null)
|
||||
return rstLst;
|
||||
|
||||
string htmlTmp = html.Replace("\\{", "\\这里是正花括号占位符").Replace("\\}", "\\这里是反花括号占位符").Replace("\"" + reg + "\": {", "\"" + reg + "\":{");
|
||||
|
||||
retry:
|
||||
string lvStr = "";
|
||||
if (level == 1)
|
||||
{
|
||||
lvStr += "\"";
|
||||
}
|
||||
var index1 = htmlTmp.IndexOf("\"" + reg + "\":" + lvStr + "{");
|
||||
if (index1 < 0)
|
||||
return rstLst;
|
||||
|
||||
htmlTmp = htmlTmp.Substring(index1 + ("\"" + reg + "\":" + lvStr + "{").Length - 1);
|
||||
// 括号计数
|
||||
int braceNum = 0;
|
||||
//string rst = "{";
|
||||
//while (htmlTmp.Length > 0)
|
||||
for (int i = 0; i < htmlTmp.Length; i++)
|
||||
{
|
||||
//rst += htmlTmp.Substring(0, 1);
|
||||
//if (htmlTmp.StartsWith("{"))
|
||||
// braceNum++;
|
||||
//else if (htmlTmp.StartsWith("}"))
|
||||
// braceNum--;
|
||||
if (htmlTmp[i] == '{')
|
||||
braceNum++;
|
||||
else if (htmlTmp[i] == '}')
|
||||
braceNum--;
|
||||
//htmlTmp = htmlTmp.Substring(1);
|
||||
if (braceNum == 0)
|
||||
{
|
||||
var endTime1 = DateTime.Now;
|
||||
if ((endTime1 - startTime).TotalSeconds > 1)
|
||||
{
|
||||
}
|
||||
rstLst.Add(htmlTmp.Substring(0, i + 1).Replace("\\这里是正花括号占位符", "\\{").Replace("\\这里是反花括号占位符", "\\}"));
|
||||
htmlTmp = htmlTmp.Substring(i + 1);
|
||||
//rstLst.Add(rst.Replace("\\这里是正花括号占位符", "\\{").Replace("\\这里是反花括号占位符", "\\}"));
|
||||
break;
|
||||
}
|
||||
|
||||
// 循环完了还没结果返回空列表
|
||||
if (i == htmlTmp.Length - 1)
|
||||
return rstLst;
|
||||
}
|
||||
if (htmlTmp.Length > 0)
|
||||
goto retry;
|
||||
|
||||
var endTime2 = DateTime.Now;
|
||||
if ((endTime2 - startTime).TotalSeconds > 1)
|
||||
{
|
||||
}
|
||||
return rstLst;
|
||||
}
|
||||
|
||||
public static System.Collections.Generic.List<string> GetJsonArrStrJson(ref string html, string reg)
|
||||
{
|
||||
var startTime = DateTime.Now;
|
||||
System.Collections.Generic.List<string> rstLst = new System.Collections.Generic.List<string>();
|
||||
if (html == null)
|
||||
return rstLst;
|
||||
|
||||
string htmlTmp = html.Replace("\\[", "\\这里是正方括号占位符").Replace("\\]", "\\这里是反方括号占位符").Replace("\"" + reg + "\": [", "\"" + reg + "\":[");
|
||||
|
||||
retry:
|
||||
var index1 = htmlTmp.IndexOf("\"" + reg + "\":[");
|
||||
if (index1 < 0)
|
||||
return rstLst;
|
||||
|
||||
htmlTmp = htmlTmp.Substring(index1 + ("\"" + reg + "\":[").Length);
|
||||
// 括号计数
|
||||
int braceNum = 1;
|
||||
string rst = "[";
|
||||
while (htmlTmp.Length > 0)
|
||||
{
|
||||
rst += htmlTmp.Substring(0, 1);
|
||||
if (htmlTmp.StartsWith("["))
|
||||
braceNum++;
|
||||
else if (htmlTmp.StartsWith("]"))
|
||||
braceNum--;
|
||||
htmlTmp = htmlTmp.Substring(1);
|
||||
if (braceNum == 0)
|
||||
{
|
||||
rstLst.Add(rst.Replace("\\这里是正方括号占位符", "\\[").Replace("\\这里是反方括号占位符", "\\]"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (htmlTmp.Length > 0)
|
||||
goto retry;
|
||||
|
||||
var endTime = DateTime.Now;
|
||||
if ((endTime - startTime).TotalSeconds > 1)
|
||||
{
|
||||
}
|
||||
return rstLst;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="reg"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetStringInput(ref string html, string reg)
|
||||
{
|
||||
string temp = GetMatchRegexString(html, @"<input [^>]*?name=['""]" + reg + @"[""'][^>]+?value=[""']([^>]+)[""'][^>]*>");
|
||||
if (string.IsNullOrEmpty(temp))
|
||||
temp = GetMatchRegexString(html, @"<input [^>]*?value=[""']([^>]+)[""'][^>]+?name=['""]" + reg + @"[""'][^>]*>");
|
||||
return temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetStringQuery(ref string queryString, string key)
|
||||
{
|
||||
var queryStringTmp = "&" + queryString;
|
||||
int nIndex = queryStringTmp.IndexOf(key + "=");
|
||||
if (nIndex == -1)
|
||||
return null;
|
||||
|
||||
string temp = queryStringTmp.Substring(nIndex).Replace(key + "=", "");
|
||||
nIndex = temp.IndexOf('&');
|
||||
if (nIndex > -1)
|
||||
temp = temp.Substring(0, nIndex);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取值
|
||||
/// </summary>
|
||||
/// <param name="html"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetStringCookie(ref string cookieStr, string key)
|
||||
{
|
||||
int nIndex = cookieStr.IndexOf(key + "=");
|
||||
if (nIndex == -1)
|
||||
return null;
|
||||
|
||||
string temp = cookieStr.Substring(nIndex).Replace(key + "=", "");
|
||||
nIndex = temp.IndexOf(';');
|
||||
if (nIndex > -1)
|
||||
temp = temp.Substring(0, nIndex);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
public static string FliterHtmlTag(string htmlStr)
|
||||
{
|
||||
if (String.IsNullOrEmpty(htmlStr))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
string regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式
|
||||
string regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; //定义script的正则表达式
|
||||
string regEx_html = "<[^>]+>"; //定义HTML标签的正则表达式
|
||||
htmlStr = Regex.Replace(htmlStr, regEx_style, "");//删除css
|
||||
htmlStr = Regex.Replace(htmlStr, regEx_script, "");//删除js
|
||||
htmlStr = Regex.Replace(htmlStr, regEx_html, "");//删除html标记
|
||||
htmlStr = Regex.Replace(htmlStr, "\\s*|\t|\r|\n", "");//去除tab、空格、空行
|
||||
htmlStr = htmlStr.Replace("\"", "");//去除异常的引号
|
||||
|
||||
return htmlStr.Trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class BaseSpecialConfig
|
||||
{
|
||||
public const string ToolClientId = "f4a3e3bb0253448d8272537726299621";
|
||||
public const string ToolName = "奶爸助理";
|
||||
}
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
/*
|
||||
* 基本处理
|
||||
* 肖俊
|
||||
* 2015-4-2
|
||||
*/
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public static class BaseWork
|
||||
{
|
||||
/// <summary>
|
||||
/// 两个数组是否相同
|
||||
/// </summary>
|
||||
/// <param name="b1"></param>
|
||||
/// <param name="b2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsSame(ref byte[] b1, ref byte[] b2)
|
||||
{
|
||||
if (b1.Length != b2.Length)
|
||||
return false;
|
||||
for (int i = 0; i < b1.Length; i++)
|
||||
if (b1[i] != b2[i])
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// 取得一个数组在另一个数组中的位置
|
||||
/// </summary>
|
||||
/// <param name="b1">主数组</param>
|
||||
/// <param name="b2">查找数组</param>
|
||||
/// <param name="start">起点</param>
|
||||
/// <returns></returns>
|
||||
public static int GetIndexFirst(ref byte[] b1, ref byte[] b2, int start)
|
||||
{
|
||||
if (b1.Length < b2.Length || start > b1.Length - 1)
|
||||
return -1;
|
||||
int j;
|
||||
for (int i = start; i < b1.Length - b2.Length+1; i++)
|
||||
{
|
||||
if (b1[i] != b2[0])
|
||||
continue;
|
||||
for (j = 1; j < b2.Length; j++)
|
||||
if (b1[i + j] != b2[j])
|
||||
break;
|
||||
if (j == b2.Length)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
/// <summary>
|
||||
/// 一个数组是否在另一个数组的结尾
|
||||
/// </summary>
|
||||
/// <param name="getByte">主数据</param>
|
||||
/// <param name="end">结尾数组</param>
|
||||
/// <returns></returns>
|
||||
public static bool IsEndByte(ref byte[] getByte, ref byte[] end)
|
||||
{
|
||||
if (end.Length > getByte.Length)
|
||||
return false;
|
||||
int i, c = getByte.Length - end.Length;
|
||||
for (i = 0; i < end.Length; i++)
|
||||
if (end[i] != getByte[c + i])
|
||||
break;
|
||||
if (i == end.Length)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得一个数组在另一个数组中的位置
|
||||
/// </summary>
|
||||
/// <param name="b1">主数组</param>
|
||||
/// <param name="b2">查找数组</param>
|
||||
/// <returns></returns>
|
||||
public static int GetIndexLast(ref byte[] b1, ref byte[] b2)
|
||||
{
|
||||
if (b1.Length < b2.Length)
|
||||
return -1;
|
||||
int j, end = b2.Length - 1;
|
||||
for (int i = b1.Length - 1; i >= end; i--)
|
||||
{
|
||||
if (b1[i] != b2[end])
|
||||
continue;
|
||||
for (j = 1; j < b2.Length; j++)
|
||||
if (b1[i - j] != b2[end - j])
|
||||
break;
|
||||
if (j == b2.Length)
|
||||
return i - end;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Web.Caching;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class CacheHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取数据缓存
|
||||
/// </summary>
|
||||
/// <param name="cacheKey">键</param>
|
||||
public static object GetCache(string cacheKey)
|
||||
{
|
||||
var objCache = HttpRuntime.Cache.Get(cacheKey);
|
||||
return objCache;
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置数据缓存
|
||||
/// </summary>
|
||||
public static void SetCache(string cacheKey, object objObject)
|
||||
{
|
||||
var objCache = HttpRuntime.Cache;
|
||||
objCache.Insert(cacheKey, objObject);
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置数据缓存
|
||||
/// </summary>
|
||||
public static void SetCache(string cacheKey, object objObject, int timeout = 7200)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (objObject == null) return;
|
||||
var objCache = HttpRuntime.Cache;
|
||||
//相对过期
|
||||
//objCache.Insert(cacheKey, objObject, null, DateTime.MaxValue, timeout, CacheItemPriority.NotRemovable, null);
|
||||
//绝对过期时间
|
||||
objCache.Insert(cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), TimeSpan.Zero, CacheItemPriority.High, null);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//throw;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 移除指定数据缓存
|
||||
/// </summary>
|
||||
public static void RemoveAllCache(string cacheKey)
|
||||
{
|
||||
var cache = HttpRuntime.Cache;
|
||||
cache.Remove(cacheKey);
|
||||
}
|
||||
/// <summary>
|
||||
/// 移除全部缓存
|
||||
/// </summary>
|
||||
public static void RemoveAllCache()
|
||||
{
|
||||
var cache = HttpRuntime.Cache;
|
||||
var cacheEnum = cache.GetEnumerator();
|
||||
while (cacheEnum.MoveNext())
|
||||
{
|
||||
cache.Remove(cacheEnum.Key.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,157 +0,0 @@
|
||||
/*
|
||||
* 浏览器基础类
|
||||
* 2013-7-24
|
||||
* 肖俊
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public static class CollectBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化浏览器标识列表
|
||||
/// </summary>
|
||||
public static void Initialization()
|
||||
{
|
||||
try
|
||||
{
|
||||
WebCoockies.Coockies.Clear();
|
||||
WebCoockies.MobileCoockies.Clear();
|
||||
string[] u = UserAgent.Split('\n');
|
||||
foreach (string s in u)
|
||||
{
|
||||
if(string.IsNullOrEmpty(s))
|
||||
continue;
|
||||
WebBrowserCoockies w = new WebBrowserCoockies();
|
||||
w.UserAgent = s.Trim();
|
||||
WebCoockies.Coockies.Add(w);
|
||||
}
|
||||
u = MobileUserAgent.Split('\n');
|
||||
foreach (string s in u)
|
||||
{
|
||||
if (string.IsNullOrEmpty(s))
|
||||
continue;
|
||||
WebBrowserCoockies w = new WebBrowserCoockies();
|
||||
w.UserAgent = s.Trim();
|
||||
WebCoockies.MobileCoockies.Add(w);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 浏览器标识
|
||||
/// </summary>
|
||||
private static string UserAgent = @"Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/54.0.2840.99+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+5.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/31.0.1650.63+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+5.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+6.3;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko
|
||||
Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.1+(KHTML,+like+Gecko)+Chrome/21.0.1180.89+Safari/537.1
|
||||
Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36
|
||||
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400";
|
||||
/// <summary>
|
||||
/// 浏览器标识
|
||||
/// </summary>
|
||||
// private static string UserAgent = @"Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
//Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
//Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/54.0.2840.99+Safari/537.36
|
||||
//Mozilla/5.0+(Windows+NT+5.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/31.0.1650.63+Safari/537.36
|
||||
//Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Win64;+x64;+Trident/5.0)
|
||||
//Mozilla/5.0+(Windows+NT+5.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36
|
||||
//Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36
|
||||
//Mozilla/5.0+(Windows+NT+6.3;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko
|
||||
//Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
//Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+WOW64;+Trident/5.0)
|
||||
//Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.133+Safari/537.36
|
||||
//Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.1+(KHTML,+like+Gecko)+Chrome/21.0.1180.89+Safari/537.1
|
||||
//Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36
|
||||
//Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400";
|
||||
/// <summary>
|
||||
/// 手机端浏览器标识
|
||||
/// </summary>
|
||||
private static string MobileUserAgent = @"Mozilla/5.0+(Linux;+Android+5.0.2;+vivo+X5Pro+D+Build/LRX21M;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/48.0.2564.116+Mobile+Safari/537.36+baidubrowser/7.10.12.0+(Baidu;+P1+5.0.2)
|
||||
Mozilla/5.0+(Linux;+Android+6.0;+vivo+1601+Build/MRA58K)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.132+Mobile+Safari/537.36
|
||||
Mozilla/5.0+(iPhone;+CPU+iPhone+OS+10_2_1+like+Mac+OS+X)+AppleWebKit/602.4.6+(KHTML,+like+Gecko)+Version/10.0+Mobile/14D27+Safari/602.1
|
||||
Mozilla/5.0+(Linux;+Android+5.0.1;+ALE-L02+Build/HuaweiALE-L02)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/57.0.2987.132+Mobile+Safari/537.36
|
||||
Mozilla/5.0+(iPhone;+CPU+iPhone+OS+10_3+like+Mac+OS+X)+AppleWebKit/603.1.30+(KHTML,+like+Gecko)+Version/10.0+Mobile/14E277+Safari/602.1";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 浏览器cookies存放类
|
||||
/// </summary>
|
||||
public static class WebCoockies
|
||||
{
|
||||
/// <summary>
|
||||
/// Cookies列
|
||||
/// </summary>
|
||||
public static List<WebBrowserCoockies> Coockies = new List<WebBrowserCoockies>();
|
||||
/// <summary>
|
||||
/// Cookies列
|
||||
/// </summary>
|
||||
public static List<WebBrowserCoockies> MobileCoockies = new List<WebBrowserCoockies>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 浏览器基础列
|
||||
/// </summary>
|
||||
public class WebBrowserCoockies
|
||||
{
|
||||
/// <summary>
|
||||
/// 列ID
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// 浏览器标识
|
||||
/// </summary>
|
||||
public string UserAgent { get; set; }
|
||||
/// <summary>
|
||||
/// 来路
|
||||
/// </summary>
|
||||
public string Referer { get; set; }
|
||||
/// <summary>
|
||||
/// Cookies
|
||||
/// </summary>
|
||||
public List<CoockiesBase> Coockies = new List<CoockiesBase>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 域名对应Coockies
|
||||
/// </summary>
|
||||
public class CoockiesBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 域名
|
||||
/// </summary>
|
||||
public string Domain { get; set; }
|
||||
/// <summary>
|
||||
/// cookies
|
||||
/// </summary>
|
||||
public string Cookies { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// cookies值
|
||||
/// </summary>
|
||||
public class CoockiesValue
|
||||
{
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
/// <summary>
|
||||
/// 值
|
||||
/// </summary>
|
||||
public string Value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class CommonPassword
|
||||
{
|
||||
private string CommonPasswordStr = "";
|
||||
private void Init()
|
||||
{
|
||||
try
|
||||
{
|
||||
string filePath = AppDomain.CurrentDomain.BaseDirectory + "temp/simplepwd.txt";
|
||||
CommonPasswordStr = FileBase.ReadAllText(filePath);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
public bool GetCommonPassword(string password)
|
||||
{
|
||||
if (string.IsNullOrEmpty(CommonPasswordStr))
|
||||
{
|
||||
Init();
|
||||
}
|
||||
List<string> PasswordList = CommonPasswordStr.Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToList();
|
||||
bool isHas = PasswordList.Exists(p => p == password);
|
||||
return isHas;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public static class ConvertExtension
|
||||
{
|
||||
/// <summary>
|
||||
/// 删除特殊字符 by ttzhao 2020.6.20
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <param name="characters"></param>
|
||||
/// <returns></returns>
|
||||
public static string RemoveSpecialChar(this string text, params string[] characters)
|
||||
{
|
||||
//{ ":", ":", "/", "\\", "\"", "?", "✅", "◆", "‼️" }
|
||||
string str = text;
|
||||
List<string> specialCharacters = new List<string>(characters);
|
||||
specialCharacters.ForEach(c =>
|
||||
{
|
||||
if (c.Length > 0)
|
||||
str = str.Replace(c, "");
|
||||
});
|
||||
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class EnumHelper
|
||||
{
|
||||
public static List<EnumMember> GetEnumMember(Type type)
|
||||
{
|
||||
List<EnumMember> list = new List<EnumMember>();
|
||||
foreach (var d in Enum.GetValues(type))
|
||||
{
|
||||
string desc = (d.GetType().GetField(d.ToString()).GetCustomAttribute(typeof(EnumDescriptionAttribute)) as EnumDescriptionAttribute).Description;
|
||||
list.Add(new EnumMember(d.ToString(), (int)d, desc));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
public class EnumMember
|
||||
{
|
||||
public string Name;
|
||||
public int Value;
|
||||
public string Description;
|
||||
public EnumMember(string name, int value, string description)
|
||||
{
|
||||
this.Name = name;
|
||||
this.Value = value;
|
||||
this.Description = description;
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Description;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 枚举注释的自定义属性类
|
||||
/// </summary>
|
||||
public class EnumDescriptionAttribute : Attribute
|
||||
{
|
||||
private string m_strDescription;
|
||||
public EnumDescriptionAttribute(string strPrinterName)
|
||||
{
|
||||
m_strDescription = strPrinterName;
|
||||
}
|
||||
public string Description
|
||||
{
|
||||
get { return m_strDescription; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Extension
|
||||
{
|
||||
public static class Extensions
|
||||
{
|
||||
public static long? ParseToNullableLong(this object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
return null;
|
||||
|
||||
try
|
||||
{
|
||||
string str = obj.ParseToString();
|
||||
if (string.IsNullOrEmpty(str))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return long.Parse(str);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static int? ParseToNullableInt(this object str)
|
||||
{
|
||||
if (str == null)
|
||||
return null;
|
||||
|
||||
try
|
||||
{
|
||||
return Convert.ToInt32(str);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static decimal? ParseToNullableDecimal(this object str)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (str == null)
|
||||
return null;
|
||||
return decimal.Parse(str.ToString());
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static DateTime? ParseToNullableDateTime(this string str)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(str))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
try
|
||||
{
|
||||
return DateTime.Parse(str);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
if (str.Contains("年") && str.Contains("月") && str.Contains("日") && !str.Contains("周"))
|
||||
str = str.Replace("年", "-").Replace("月", "-").Replace("日", "").Replace("时", ":").Replace("分", ":").Replace("秒", "").Trim(' ', ':');
|
||||
if (str.Contains("-") || str.Contains("/"))
|
||||
{
|
||||
return DateTime.Parse(str);
|
||||
}
|
||||
else
|
||||
{
|
||||
int length = str.Length;
|
||||
switch (length)
|
||||
{
|
||||
case 4:
|
||||
return DateTime.ParseExact(str, "yyyy", System.Globalization.CultureInfo.CurrentCulture);
|
||||
case 6:
|
||||
return DateTime.ParseExact(str, "yyyyMM", System.Globalization.CultureInfo.CurrentCulture);
|
||||
case 8:
|
||||
return DateTime.ParseExact(str, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
|
||||
case 10:
|
||||
return DateTime.ParseExact(str, "yyyyMMddHH", System.Globalization.CultureInfo.CurrentCulture);
|
||||
case 12:
|
||||
return DateTime.ParseExact(str, "yyyyMMddHHmm", System.Globalization.CultureInfo.CurrentCulture);
|
||||
case 14:
|
||||
return DateTime.ParseExact(str, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
|
||||
default:
|
||||
return DateTime.ParseExact(str, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Extension
|
||||
{
|
||||
public static class JTokenExtension
|
||||
{
|
||||
public static T ToValue<T>(this JToken token, T defValue = default(T))
|
||||
{
|
||||
string tempvalue = token.ToString();
|
||||
if (string.IsNullOrEmpty(tempvalue))
|
||||
return defValue;
|
||||
|
||||
Type type = typeof(T);
|
||||
var typeName = type.Name.ToLower();
|
||||
try
|
||||
{
|
||||
if (typeName == "string")
|
||||
return (T)(object)tempvalue;
|
||||
if (tempvalue is IConvertible)
|
||||
return (T)System.Convert.ChangeType(tempvalue, type);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return default(T);
|
||||
}
|
||||
|
||||
return defValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Extension
|
||||
{
|
||||
public static class LinqExtension
|
||||
{
|
||||
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
|
||||
{
|
||||
HashSet<TKey> seenKeys = new HashSet<TKey>();
|
||||
foreach (TSource element in source)
|
||||
{
|
||||
if (seenKeys.Add(keySelector(element)))
|
||||
{
|
||||
yield return element;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,273 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public static class FileBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 文件是否存在
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public static bool Exists(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
return File.Exists(path);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 读取文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public static string ReadAllText(string path)
|
||||
{
|
||||
return ReadAllText(path, Encoding.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <param name="encoding"></param>
|
||||
/// <returns></returns>
|
||||
public static string ReadAllText(string path, Encoding encoding)
|
||||
{
|
||||
try
|
||||
{
|
||||
return File.ReadAllText(path, encoding);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public static string[] ReadAllLines(string path, Encoding encoding)
|
||||
{
|
||||
try
|
||||
{
|
||||
return File.ReadAllLines(path, encoding);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public static string[] ReadAllLines(string path)
|
||||
{
|
||||
return ReadAllLines(path, Encoding.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写入文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <param name="encoding"></param>
|
||||
/// <returns></returns>
|
||||
public static bool WriteAllText(string path, string content, Encoding encoding)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.WriteAllText(path, content, encoding);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static byte[] ReadBytes(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
return File.ReadAllBytes(path);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static bool WriteAllText(string path, string content)
|
||||
{
|
||||
return WriteAllText(path, content, Encoding.Default);
|
||||
}
|
||||
public static bool WriteBytes(string path, byte[] content)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.WriteAllBytes(path, content);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 写入文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <param name="encoding"></param>
|
||||
/// <returns></returns>
|
||||
public static bool AppendAllText(string path, string content, Encoding encoding)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.AppendAllText(path, content, encoding);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool AppendAllText(string path, string content)
|
||||
{
|
||||
return AppendAllText(path, content, Encoding.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public static bool Delete(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(path);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 创建目录
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public static bool DirectoryCreate(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(path))
|
||||
{
|
||||
Directory.CreateDirectory(path);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool Move(string oldFile, string newFile)
|
||||
{
|
||||
try
|
||||
{
|
||||
Delete(newFile);
|
||||
File.Move(oldFile, newFile);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将CSV文件的一行转换为列表,进行逗号分隔(字段内容中的逗号不参与分隔)
|
||||
/// </summary>
|
||||
/// <param name="strLine"></param>
|
||||
/// <returns></returns>
|
||||
public static List<string> CsvStrToList(string csvLine)
|
||||
{
|
||||
var newStr = string.Empty;
|
||||
List<string> sList = new List<string>();
|
||||
|
||||
bool isSplice = false;
|
||||
string[] array = csvLine.Split(new char[] { ',' });
|
||||
foreach (var str in array)
|
||||
{
|
||||
var strTemp = str.Trim();
|
||||
if (!string.IsNullOrEmpty(strTemp) && strTemp.IndexOf('"') > -1)
|
||||
{
|
||||
if (strTemp.StartsWith("\"") && !strTemp.StartsWith("\"\"") && !strTemp.EndsWith("\""))
|
||||
{
|
||||
isSplice = true;
|
||||
}
|
||||
if (strTemp.EndsWith("\"") && !strTemp.EndsWith("\"\""))
|
||||
{
|
||||
if (!isSplice)
|
||||
newStr += strTemp;
|
||||
else
|
||||
newStr = newStr + "," + strTemp;
|
||||
|
||||
isSplice = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(newStr))
|
||||
newStr += strTemp;
|
||||
}
|
||||
|
||||
if (isSplice)
|
||||
{
|
||||
//添加因拆分时丢失的逗号
|
||||
if (string.IsNullOrEmpty(newStr))
|
||||
newStr += strTemp;
|
||||
else
|
||||
newStr = newStr + "," + strTemp;
|
||||
}
|
||||
else
|
||||
{
|
||||
sList.Add(newStr.Replace("\"\"", "#@%*^^*%@#").Replace("\"", "").Trim(' ', '\t').Replace("#@%*^^*%@#", "\"")); // 去除字符中的双引号和首尾空格
|
||||
newStr = string.Empty;
|
||||
}
|
||||
}
|
||||
return sList;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
-2064
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,216 +0,0 @@
|
||||
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 AllBase.Helper
|
||||
{
|
||||
public class CommonSimRequest
|
||||
{
|
||||
public string Accept { get; set; } = "application/json, text/plain, */*";
|
||||
public string ContentType { get; set; } = "application/x-www-form-urlencoded";
|
||||
public string UserAgent { get; set; } = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36";
|
||||
public Encoding Encoding { get; set; } = Encoding.UTF8;
|
||||
|
||||
public string Request_Get(string url, string referer, Dictionary<string, string> headers, string cookies)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string responseText = "";
|
||||
if (headers == null)
|
||||
headers = new Dictionary<string, string>();
|
||||
|
||||
try
|
||||
{
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.KeepAlive = true;
|
||||
request.Accept = Accept;
|
||||
request.UserAgent = UserAgent;
|
||||
request.ContentType = ContentType;
|
||||
foreach (var key in headers.Keys)
|
||||
{
|
||||
request.Headers.Add(key, headers[key]);
|
||||
}
|
||||
request.Referer = referer;
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.9");
|
||||
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException e)
|
||||
{
|
||||
if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
|
||||
else responseText = "error," + e.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responseText = "error," + ex.Message;
|
||||
}
|
||||
if (response != null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(responseText))
|
||||
responseText = ReadResponse(response, this.Encoding);
|
||||
response.Close();
|
||||
}
|
||||
|
||||
return responseText;
|
||||
}
|
||||
|
||||
public string Request_Post(string url, string referer, Dictionary<string, string> headers, string cookies, string data, bool isSetCommonHeaders = true)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string responseText = "";
|
||||
if (headers == null)
|
||||
headers = new Dictionary<string, string>();
|
||||
|
||||
try
|
||||
{
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.KeepAlive = true;
|
||||
request.Accept = Accept;
|
||||
request.UserAgent = UserAgent;
|
||||
request.ContentType = ContentType;
|
||||
if (isSetCommonHeaders)
|
||||
{
|
||||
if (!headers.Keys.Contains("Origin"))
|
||||
request.Headers.Add("Origin", @"https://fxg.jinritemai.com/");
|
||||
}
|
||||
foreach (var key in headers.Keys)
|
||||
{
|
||||
request.Headers.Add(key, headers[key]);
|
||||
}
|
||||
request.Referer = referer;
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.9");
|
||||
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
|
||||
|
||||
request.Method = "POST";
|
||||
request.ServicePoint.Expect100Continue = false;
|
||||
|
||||
string body = data;
|
||||
byte[] postBytes = 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 e)
|
||||
{
|
||||
if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
|
||||
else responseText = "error," + e.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responseText = "error," + ex.Message;
|
||||
}
|
||||
if (response != null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(responseText))
|
||||
responseText = ReadResponse(response, this.Encoding);
|
||||
response.Close();
|
||||
}
|
||||
|
||||
return responseText;
|
||||
}
|
||||
|
||||
public string Request_PostByBigLength(string url, string referer, Dictionary<string, string> headers, string cookies, string data, bool AcceptEncoding = true, bool isSetCommonHeaders = true)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string responseText = "";
|
||||
if (headers == null)
|
||||
headers = new Dictionary<string, string>();
|
||||
|
||||
try
|
||||
{
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.KeepAlive = true;
|
||||
request.Accept = Accept;
|
||||
request.UserAgent = UserAgent;
|
||||
request.UserAgent = AllBase.BaseClass.ChromeUserAgent;
|
||||
request.ContentType = ContentType;
|
||||
if (isSetCommonHeaders)
|
||||
{
|
||||
if (!headers.Keys.Contains("Origin"))
|
||||
request.Headers.Add("Origin", @"https://fxg.jinritemai.com");
|
||||
}
|
||||
foreach (var key in headers.Keys)
|
||||
{
|
||||
request.Headers.Add(key, headers[key]);
|
||||
}
|
||||
request.Referer = referer;
|
||||
if (AcceptEncoding)
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "deflate");
|
||||
else
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
||||
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
|
||||
|
||||
request.Method = "POST";
|
||||
request.ServicePoint.Expect100Continue = false;
|
||||
|
||||
string body = data;
|
||||
byte[] postBytes = 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 e)
|
||||
{
|
||||
if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
|
||||
else responseText = "error," + e.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responseText = "error," + ex.Message;
|
||||
}
|
||||
if (response != null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(responseText))
|
||||
responseText = ReadResponse(response, this.Encoding);
|
||||
response.Close();
|
||||
}
|
||||
|
||||
return responseText;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取返回值
|
||||
/// </summary>
|
||||
/// <param name="response"></param>
|
||||
/// <returns></returns>
|
||||
public static string ReadResponse(HttpWebResponse response, Encoding encoding = null)
|
||||
{
|
||||
if (encoding == null)
|
||||
encoding = Encoding.UTF8;
|
||||
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);
|
||||
}
|
||||
|
||||
using (StreamReader streamReader = new StreamReader(streamToRead, encoding))
|
||||
{
|
||||
return streamReader.ReadToEnd();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,145 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Helper
|
||||
{
|
||||
|
||||
public class DataOpenSSL
|
||||
{
|
||||
public static byte[] key = new byte[32] { 145, 232, 156, 201, 201, 0, 42, 184, 222, 111, 109, 49, 226, 169, 9, 44, 151, 148, 143, 120, 62, 84, 30, 170, 127, 242, 20, 141, 231, 33, 230, 6 };
|
||||
public static byte[] iv = new byte[16] { 113, 6, 75, 177, 160, 112, 73, 39, 178, 147, 82, 107, 186, 58, 144, 187 };
|
||||
|
||||
public static string EncryptString(string plainText)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
// Instantiate a new Aes object to perform string symmetric encryption
|
||||
Aes encryptor = Aes.Create();
|
||||
|
||||
encryptor.Mode = CipherMode.CBC;
|
||||
|
||||
// Set key and IV
|
||||
byte[] aesKey = new byte[32];
|
||||
Array.Copy(key, 0, aesKey, 0, 32);
|
||||
encryptor.Key = aesKey;
|
||||
encryptor.IV = iv;
|
||||
|
||||
// Instantiate a new MemoryStream object to contain the encrypted bytes
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
|
||||
// Instantiate a new encryptor from our Aes object
|
||||
ICryptoTransform aesEncryptor = encryptor.CreateEncryptor();
|
||||
|
||||
// Instantiate a new CryptoStream object to process the data and write it to the
|
||||
// memory stream
|
||||
CryptoStream cryptoStream = new CryptoStream(memoryStream, aesEncryptor, CryptoStreamMode.Write);
|
||||
|
||||
// Convert the plainText string into a byte array
|
||||
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
|
||||
|
||||
// Encrypt the input plaintext string
|
||||
cryptoStream.Write(plainBytes, 0, plainBytes.Length);
|
||||
|
||||
// Complete the encryption process
|
||||
cryptoStream.FlushFinalBlock();
|
||||
|
||||
// Convert the encrypted data from a MemoryStream to a byte array
|
||||
byte[] cipherBytes = memoryStream.ToArray();
|
||||
|
||||
// Close both the MemoryStream and the CryptoStream
|
||||
memoryStream.Close();
|
||||
cryptoStream.Close();
|
||||
|
||||
// Convert the encrypted byte array to a base64 encoded string
|
||||
string cipherText = Convert.ToBase64String(cipherBytes, 0, cipherBytes.Length);
|
||||
|
||||
|
||||
cipherText = cipherText.Replace("+", "-").Replace("/", "_").Replace("=", "");
|
||||
|
||||
// Return the encrypted data as a string
|
||||
return cipherText;
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
//throw;
|
||||
}
|
||||
return plainText;
|
||||
}
|
||||
|
||||
public static string DecryptString(string cipherText)
|
||||
{
|
||||
if (cipherText == null)
|
||||
return null;
|
||||
|
||||
cipherText = cipherText.Replace("-", "+").Replace("_", "/");
|
||||
var x1 = cipherText.Length % 4;
|
||||
if (x1 > 0)
|
||||
{
|
||||
cipherText = cipherText + "====".Substring(x1);
|
||||
}
|
||||
// Instantiate a new Aes object to perform string symmetric encryption
|
||||
Aes encryptor = Aes.Create();
|
||||
|
||||
encryptor.Mode = CipherMode.CBC;
|
||||
|
||||
// Set key and IV
|
||||
byte[] aesKey = new byte[32];
|
||||
Array.Copy(key, 0, aesKey, 0, 32);
|
||||
encryptor.Key = aesKey;
|
||||
encryptor.IV = iv;
|
||||
|
||||
// Instantiate a new MemoryStream object to contain the encrypted bytes
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
|
||||
// Instantiate a new encryptor from our Aes object
|
||||
ICryptoTransform aesDecryptor = encryptor.CreateDecryptor();
|
||||
|
||||
// Instantiate a new CryptoStream object to process the data and write it to the
|
||||
// memory stream
|
||||
CryptoStream cryptoStream = new CryptoStream(memoryStream, aesDecryptor, CryptoStreamMode.Write);
|
||||
|
||||
// Will contain decrypted plaintext
|
||||
string plainText = String.Empty;
|
||||
|
||||
try
|
||||
{
|
||||
// Convert the ciphertext string into a byte array
|
||||
byte[] cipherBytes = Convert.FromBase64String(cipherText);
|
||||
|
||||
// Decrypt the input ciphertext string
|
||||
cryptoStream.Write(cipherBytes, 0, cipherBytes.Length);
|
||||
|
||||
// Complete the decryption process
|
||||
cryptoStream.FlushFinalBlock();
|
||||
|
||||
// Convert the decrypted data from a MemoryStream to a byte array
|
||||
byte[] plainBytes = memoryStream.ToArray();
|
||||
|
||||
// Convert the decrypted byte array to string
|
||||
plainText = Encoding.UTF8.GetString(plainBytes, 0, plainBytes.Length);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
//throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Close both the MemoryStream and the CryptoStream
|
||||
memoryStream.Close();
|
||||
cryptoStream.Close();
|
||||
}
|
||||
|
||||
// Return the decrypted data as a string
|
||||
return plainText;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Helper
|
||||
{
|
||||
public class FissionDataBaseConfig
|
||||
{
|
||||
public static List<string> CateList = new List<string>(); // 产品数据库分组名称列表
|
||||
public static List<string> MainCateList = new List<string>(); // 主类目列表
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,137 +0,0 @@
|
||||
using AllBase.Model.Config;
|
||||
using AllBase.Model.Param.CollectManage;
|
||||
using AllBase.Model.Param.ProductManage;
|
||||
using AllBase.Model.Param.ShopManage;
|
||||
using AllBase.Model.Param.TemuProductManage;
|
||||
using AllBase.Model.Result;
|
||||
using AllBase.Model.Result.PDDResult;
|
||||
using AllBase.Model.Result.WXResult;
|
||||
using LittleCow.Model.Param.WeiDianManage;
|
||||
using NaiBa.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Helper
|
||||
{
|
||||
public class GlobalConfig
|
||||
{
|
||||
public static GlobalSettings GlobalSettings { get; set; } = new GlobalSettings();
|
||||
|
||||
/// <summary>
|
||||
/// 店铺列表
|
||||
/// </summary>
|
||||
public static ConcurrentList<ShopLoginInfo> ShopLoginList { get; set; } = new ConcurrentList<ShopLoginInfo>();
|
||||
public static ConcurrentList<ShopLoginInfo> ValidShopLoginList
|
||||
{
|
||||
get
|
||||
{
|
||||
var list = new ConcurrentList<ShopLoginInfo>();
|
||||
list.AddRange(ShopLoginList.Where(s => !s.is_point_shop_expire));
|
||||
return list;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 微信小店用户拼多多机会商品采集的拼多多店铺列表
|
||||
/// </summary>
|
||||
public static ConcurrentList<ShopLoginInfo> _29WxPddShopLoginList { get; set; } = new ConcurrentList<ShopLoginInfo>();
|
||||
/// <summary>
|
||||
/// 店铺默认地址
|
||||
/// </summary>
|
||||
public static ConcurrentList<WXShopDefaultAddressInfo> WXShopDefaultAddressList = new ConcurrentList<WXShopDefaultAddressInfo>();
|
||||
/// <summary>
|
||||
/// 拼多多买手列表
|
||||
/// </summary>
|
||||
public static ConcurrentList<BuyerLoginInfo> BuyerLoginList { get; set; } = new ConcurrentList<BuyerLoginInfo>();
|
||||
/// <summary>
|
||||
/// 微信店铺授权信息
|
||||
/// </summary>
|
||||
public static ConcurrentList<AuthInfo> lstWxShopAuthInfo { get; set; } = new ConcurrentList<AuthInfo>();
|
||||
/// <summary>
|
||||
/// 微信全局token(上传图片用)
|
||||
/// </summary>
|
||||
public static ConcurrentList<WXShopTokenInfo> WxGlobalTokenList { get; set; } = new ConcurrentList<WXShopTokenInfo>();
|
||||
|
||||
public static Dictionary<string, WxShopUploadInfo> dicWxShopUploadInfo { get; set; } = new Dictionary<string, WxShopUploadInfo>();
|
||||
|
||||
public static ConcurrentList<PddCatInfo> PddCatList { get; set; } = new ConcurrentList<PddCatInfo>();
|
||||
public static ConcurrentList<WxCatInfo> WxCatList { get; set; } = new ConcurrentList<WxCatInfo>();
|
||||
public static ConcurrentList<WxCatBoundInfo> WxCatBoundList { get; set; } = new ConcurrentList<WxCatBoundInfo>();
|
||||
|
||||
/// <summary>
|
||||
/// 店铺设置参数
|
||||
/// </summary>
|
||||
public static TemuShopSettingParam TemuShopSettingParam { get; set; } = new TemuShopSettingParam();
|
||||
|
||||
public static TemuProductWords ProductWords { get; set; }
|
||||
|
||||
public static string cAgentIpCode { get; } = "AFZ94w3a";
|
||||
|
||||
public static List<SameProductCheckParam> SameProductCheckParamList { get; set; }
|
||||
|
||||
//public static string UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36";
|
||||
public static string UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
|
||||
|
||||
/// <summary>
|
||||
/// 微店店铺列表
|
||||
/// </summary>
|
||||
public static ConcurrentList<VDianShopLoginInfo> VDianShopLoginList { get; set; } = new ConcurrentList<VDianShopLoginInfo>();
|
||||
/// <summary>
|
||||
/// 微店上货参数
|
||||
/// </summary>
|
||||
public static WeiDianSettingParam WeiDianUploadParam { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 拼多多api列表
|
||||
/// </summary>
|
||||
public static ConcurrentList<PddClientInfo> PddClientInfoList = new ConcurrentList<PddClientInfo>();
|
||||
|
||||
public static System.Drawing.Color DefaultMainColor { get; set; } = System.Drawing.Color.FromArgb(63, 126, 255);
|
||||
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 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);
|
||||
public static System.Drawing.Color PddBorderColor { get; set; } = System.Drawing.Color.FromArgb(195, 112, 135);
|
||||
|
||||
public static System.Drawing.Color WeiXinMainColor { get; set; } = System.Drawing.Color.FromArgb(152, 99, 143);
|
||||
public static System.Drawing.Color WeiXinMainColorLight { get; set; } = System.Drawing.Color.FromArgb(245, 235, 255);
|
||||
public static System.Drawing.Color WeiXinBorderColor { get; set; } = System.Drawing.Color.FromArgb(107, 83, 147);
|
||||
}
|
||||
|
||||
public enum ShopPlatform
|
||||
{
|
||||
[Description("淘宝")]
|
||||
TaoBao = 1,
|
||||
|
||||
[Description("拼多多")]
|
||||
PinDuoDuo = 2,
|
||||
|
||||
[Description("爆单王")]
|
||||
BaoDanWang = 3,
|
||||
|
||||
[Description("苏宁")]
|
||||
SuNing = 4,
|
||||
|
||||
[Description("微店")]
|
||||
WeiDian = 5,
|
||||
|
||||
[Description("阿里巴巴")]
|
||||
Alibaba = 6,
|
||||
}
|
||||
|
||||
public class GlobalSettings
|
||||
{
|
||||
/// <summary>
|
||||
/// 微信使用软件设置的默认上货地址
|
||||
/// </summary>
|
||||
public bool IsWxUseSoftwareDefaultAddress { get; set; } = true;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,489 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class HttpUtility
|
||||
{
|
||||
// Fields
|
||||
private static char[] _htmlEntityEndingChars = new char[] { ';', '&' };
|
||||
|
||||
//Methods
|
||||
public static string UrlEncode(string str, Encoding e)
|
||||
{
|
||||
if (str == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return Encoding.ASCII.GetString(UrlEncodeToBytes(str, e));
|
||||
}
|
||||
|
||||
public static byte[] UrlEncodeToBytes(string str, Encoding e)
|
||||
{
|
||||
if (str == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
byte[] bytes = e.GetBytes(str);
|
||||
return UrlEncode(bytes, 0, bytes.Length);
|
||||
}
|
||||
|
||||
static byte[] UrlEncode(byte[] bytes, int offset, int count)
|
||||
{
|
||||
int num = 0;
|
||||
int num2 = 0;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
char ch = (char)bytes[offset + i];
|
||||
if (ch == ' ')
|
||||
{
|
||||
num++;
|
||||
}
|
||||
else if (!IsUrlSafeChar(ch))
|
||||
{
|
||||
num2++;
|
||||
}
|
||||
}
|
||||
if ((num == 0) && (num2 == 0))
|
||||
{
|
||||
return bytes;
|
||||
}
|
||||
byte[] buffer = new byte[count + (num2 * 2)];
|
||||
int num4 = 0;
|
||||
for (int j = 0; j < count; j++)
|
||||
{
|
||||
byte num6 = bytes[offset + j];
|
||||
char ch2 = (char)num6;
|
||||
if (IsUrlSafeChar(ch2))
|
||||
{
|
||||
buffer[num4++] = num6;
|
||||
}
|
||||
else if (ch2 == ' ')
|
||||
{
|
||||
buffer[num4++] = 0x2b;
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer[num4++] = 0x25;
|
||||
buffer[num4++] = (byte)IntToHex((num6 >> 4) & 15);
|
||||
buffer[num4++] = (byte)IntToHex(num6 & 15);
|
||||
}
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static bool IsUrlSafeChar(char ch)
|
||||
{
|
||||
if ((((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))) || ((ch >= '0') && (ch <= '9')))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
switch (ch)
|
||||
{
|
||||
case '(':
|
||||
case ')':
|
||||
case '*':
|
||||
case '-':
|
||||
case '.':
|
||||
case '_':
|
||||
case '!':
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static char IntToHex(int n)
|
||||
{
|
||||
if (n <= 9)
|
||||
{
|
||||
return (char)(n + 0x30);
|
||||
}
|
||||
return (char)((n - 10) + 0x61);
|
||||
}
|
||||
static public string UrlDecode(string value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
Encoding encoding = Encoding.UTF8;//你的编码 也可能是GBK
|
||||
int length = value.Length;
|
||||
UrlDecoder decoder = new UrlDecoder(length, encoding);
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
char ch = value[i];
|
||||
if (ch == '+')
|
||||
{
|
||||
ch = ' ';
|
||||
}
|
||||
else if ((ch == '%') && (i < (length - 2)))
|
||||
{
|
||||
if ((value[i + 1] == 'u') && (i < (length - 5)))
|
||||
{
|
||||
int num3 = HexToInt(value[i + 2]);
|
||||
int num4 = HexToInt(value[i + 3]);
|
||||
int num5 = HexToInt(value[i + 4]);
|
||||
int num6 = HexToInt(value[i + 5]);
|
||||
if (((num3 < 0) || (num4 < 0)) || ((num5 < 0) || (num6 < 0)))
|
||||
{
|
||||
goto Label_010B;
|
||||
}
|
||||
ch = (char)((((num3 << 12) | (num4 << 8)) | (num5 << 4)) | num6);
|
||||
i += 5;
|
||||
decoder.AddChar(ch);
|
||||
continue;
|
||||
}
|
||||
int num7 = HexToInt(value[i + 1]);
|
||||
int num8 = HexToInt(value[i + 2]);
|
||||
if ((num7 >= 0) && (num8 >= 0))
|
||||
{
|
||||
byte b = (byte)((num7 << 4) | num8);
|
||||
i += 2;
|
||||
decoder.AddByte(b);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Label_010B:
|
||||
if ((ch & 0xff80) == 0)
|
||||
{
|
||||
decoder.AddByte((byte)ch);
|
||||
}
|
||||
else
|
||||
{
|
||||
decoder.AddChar(ch);
|
||||
}
|
||||
}
|
||||
return decoder.GetString();
|
||||
}
|
||||
|
||||
public static int HexToInt(char h)
|
||||
{
|
||||
if ((h >= '0') && (h <= '9'))
|
||||
{
|
||||
return (h - '0');
|
||||
}
|
||||
if ((h >= 'a') && (h <= 'f'))
|
||||
{
|
||||
return ((h - 'a') + 10);
|
||||
}
|
||||
if ((h >= 'A') && (h <= 'F'))
|
||||
{
|
||||
return ((h - 'A') + 10);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
///////////////////////////
|
||||
public static string HtmlEncode(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
StringWriter output = new StringWriter(CultureInfo.InvariantCulture);
|
||||
HtmlEncode(value, output);
|
||||
return output.ToString();
|
||||
}
|
||||
|
||||
public static unsafe void HtmlEncode(string value, TextWriter output)
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
if (output == null)
|
||||
{
|
||||
throw new ArgumentNullException("output");
|
||||
}
|
||||
int num = IndexOfHtmlEncodingChars(value, 0);
|
||||
if (num == -1)
|
||||
{
|
||||
output.Write(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
int num2 = value.Length - num;
|
||||
fixed (char* str = (value.ToCharArray()))
|
||||
{
|
||||
char* chPtr = str;
|
||||
char* chPtr2 = chPtr;
|
||||
while (num-- > 0)
|
||||
{
|
||||
chPtr2++;
|
||||
output.Write(chPtr2[0]);
|
||||
}
|
||||
while (num2-- > 0)
|
||||
{
|
||||
chPtr2++;
|
||||
char ch = chPtr2[0];
|
||||
if (ch <= '>')
|
||||
{
|
||||
switch (ch)
|
||||
{
|
||||
case '&':
|
||||
{
|
||||
output.Write("&");
|
||||
continue;
|
||||
}
|
||||
case '\'':
|
||||
{
|
||||
output.Write("'");
|
||||
continue;
|
||||
}
|
||||
case '"':
|
||||
{
|
||||
output.Write(""");
|
||||
continue;
|
||||
}
|
||||
case '<':
|
||||
{
|
||||
output.Write("<");
|
||||
continue;
|
||||
}
|
||||
case '>':
|
||||
{
|
||||
output.Write(">");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
output.Write(ch);
|
||||
continue;
|
||||
}
|
||||
if ((ch >= '\x00a0') && (ch < 'Ā'))
|
||||
{
|
||||
output.Write("&#");
|
||||
output.Write(ch.ToString(NumberFormatInfo.InvariantInfo));
|
||||
output.Write(';');
|
||||
}
|
||||
else
|
||||
{
|
||||
output.Write(ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public static string HtmlDecode(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
StringWriter output = new StringWriter(CultureInfo.InvariantCulture);
|
||||
HtmlDecode(value, output);
|
||||
return output.ToString();
|
||||
}
|
||||
|
||||
public static void HtmlDecode(string value, TextWriter output)
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
if (output == null)
|
||||
{
|
||||
throw new ArgumentNullException("output");
|
||||
}
|
||||
if (value.IndexOf('&') < 0)
|
||||
{
|
||||
output.Write(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
int length = value.Length;
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
char ch = value[i];
|
||||
if (ch == '&')
|
||||
{
|
||||
int num3 = value.IndexOfAny(_htmlEntityEndingChars, i + 1);
|
||||
if ((num3 > 0) && (value[num3] == ';'))
|
||||
{
|
||||
string entity = value.Substring(i + 1, (num3 - i) - 1);
|
||||
if ((entity.Length > 1) && (entity[0] == '#'))
|
||||
{
|
||||
ushort num4;
|
||||
if ((entity[1] == 'x') || (entity[1] == 'X'))
|
||||
{
|
||||
ushort.TryParse(entity.Substring(2), NumberStyles.AllowHexSpecifier, (IFormatProvider)NumberFormatInfo.InvariantInfo, out num4);
|
||||
}
|
||||
else
|
||||
{
|
||||
ushort.TryParse(entity.Substring(1), NumberStyles.Integer, (IFormatProvider)NumberFormatInfo.InvariantInfo, out num4);
|
||||
}
|
||||
if (num4 != 0)
|
||||
{
|
||||
ch = (char)num4;
|
||||
i = num3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
i = num3;
|
||||
char ch2 = HtmlEntities.Lookup(entity);
|
||||
if (ch2 != '\0')
|
||||
{
|
||||
ch = ch2;
|
||||
}
|
||||
else
|
||||
{
|
||||
output.Write('&');
|
||||
output.Write(entity);
|
||||
output.Write(';');
|
||||
goto Label_0117;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
output.Write(ch);
|
||||
Label_0117: ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static unsafe int IndexOfHtmlEncodingChars(string s, int startPos)
|
||||
{
|
||||
int num = s.Length - startPos;
|
||||
fixed (char* str = (s.ToCharArray()))
|
||||
{
|
||||
char* chPtr = str;
|
||||
char* chPtr2 = chPtr + startPos;
|
||||
while (num > 0)
|
||||
{
|
||||
char ch = chPtr2[0];
|
||||
if (ch <= '>')
|
||||
{
|
||||
switch (ch)
|
||||
{
|
||||
case '&':
|
||||
case '\'':
|
||||
case '"':
|
||||
case '<':
|
||||
case '>':
|
||||
return (s.Length - num);
|
||||
|
||||
case '=':
|
||||
goto Label_0086;
|
||||
}
|
||||
}
|
||||
else if ((ch >= '\x00a0') && (ch < 'Ā'))
|
||||
{
|
||||
return (s.Length - num);
|
||||
}
|
||||
Label_0086:
|
||||
chPtr2++;
|
||||
num--;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// class UrlDecoder
|
||||
/// </summary>
|
||||
class UrlDecoder
|
||||
{
|
||||
// Fields
|
||||
private int _bufferSize;
|
||||
private byte[] _byteBuffer;
|
||||
private char[] _charBuffer;
|
||||
private Encoding _encoding;
|
||||
private int _numBytes;
|
||||
private int _numChars;
|
||||
|
||||
// Methods
|
||||
internal UrlDecoder(int bufferSize, Encoding encoding)
|
||||
{
|
||||
this._bufferSize = bufferSize;
|
||||
this._encoding = encoding;
|
||||
this._charBuffer = new char[bufferSize];
|
||||
}
|
||||
|
||||
internal void AddByte(byte b)
|
||||
{
|
||||
if (this._byteBuffer == null)
|
||||
{
|
||||
this._byteBuffer = new byte[this._bufferSize];
|
||||
}
|
||||
this._byteBuffer[this._numBytes++] = b;
|
||||
}
|
||||
|
||||
internal void AddChar(char ch)
|
||||
{
|
||||
if (this._numBytes > 0)
|
||||
{
|
||||
this.FlushBytes();
|
||||
}
|
||||
this._charBuffer[this._numChars++] = ch;
|
||||
}
|
||||
|
||||
private void FlushBytes()
|
||||
{
|
||||
if (this._numBytes > 0)
|
||||
{
|
||||
this._numChars += this._encoding.GetChars(this._byteBuffer, 0, this._numBytes, this._charBuffer, this._numChars);
|
||||
this._numBytes = 0;
|
||||
}
|
||||
}
|
||||
|
||||
internal string GetString()
|
||||
{
|
||||
if (this._numBytes > 0)
|
||||
{
|
||||
this.FlushBytes();
|
||||
}
|
||||
if (this._numChars > 0)
|
||||
{
|
||||
return new string(this._charBuffer, 0, this._numChars);
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// class HtmlEntities
|
||||
/// </summary>
|
||||
static class HtmlEntities
|
||||
{
|
||||
// Fields
|
||||
private static string[] _entitiesList = new string[] {
|
||||
"\"-quot", "&-amp", "'-apos", "<-lt", ">-gt", "\x00a0-nbsp", "\x00a1-iexcl", "\x00a2-cent", "\x00a3-pound", "\x00a4-curren", "\x00a5-yen", "\x00a6-brvbar", "\x00a7-sect", "\x00a8-uml", "\x00a9-copy", "\x00aa-ordf",
|
||||
"\x00ab-laquo", "\x00ac-not", "\x00ad-shy", "\x00ae-reg", "\x00af-macr", "\x00b0-deg", "\x00b1-plusmn", "\x00b2-sup2", "\x00b3-sup3", "\x00b4-acute", "\x00b5-micro", "\x00b6-para", "\x00b7-middot", "\x00b8-cedil", "\x00b9-sup1", "\x00ba-ordm",
|
||||
"\x00bb-raquo", "\x00bc-frac14", "\x00bd-frac12", "\x00be-frac34", "\x00bf-iquest", "\x00c0-Agrave", "\x00c1-Aacute", "\x00c2-Acirc", "\x00c3-Atilde", "\x00c4-Auml", "\x00c5-Aring", "\x00c6-AElig", "\x00c7-Ccedil", "\x00c8-Egrave", "\x00c9-Eacute", "\x00ca-Ecirc",
|
||||
"\x00cb-Euml", "\x00cc-Igrave", "\x00cd-Iacute", "\x00ce-Icirc", "\x00cf-Iuml", "\x00d0-ETH", "\x00d1-Ntilde", "\x00d2-Ograve", "\x00d3-Oacute", "\x00d4-Ocirc", "\x00d5-Otilde", "\x00d6-Ouml", "\x00d7-times", "\x00d8-Oslash", "\x00d9-Ugrave", "\x00da-Uacute",
|
||||
"\x00db-Ucirc", "\x00dc-Uuml", "\x00dd-Yacute", "\x00de-THORN", "\x00df-szlig", "\x00e0-agrave", "\x00e1-aacute", "\x00e2-acirc", "\x00e3-atilde", "\x00e4-auml", "\x00e5-aring", "\x00e6-aelig", "\x00e7-ccedil", "\x00e8-egrave", "\x00e9-eacute", "\x00ea-ecirc",
|
||||
"\x00eb-euml", "\x00ec-igrave", "\x00ed-iacute", "\x00ee-icirc", "\x00ef-iuml", "\x00f0-eth", "\x00f1-ntilde", "\x00f2-ograve", "\x00f3-oacute", "\x00f4-ocirc", "\x00f5-otilde", "\x00f6-ouml", "\x00f7-divide", "\x00f8-oslash", "\x00f9-ugrave", "\x00fa-uacute",
|
||||
"\x00fb-ucirc", "\x00fc-uuml", "\x00fd-yacute", "\x00fe-thorn", "\x00ff-yuml", "Œ-OElig", "œ-oelig", "Š-Scaron", "š-scaron", "Ÿ-Yuml", "ƒ-fnof", "ˆ-circ", "˜-tilde", "Α-Alpha", "Β-Beta", "Γ-Gamma",
|
||||
"Δ-Delta", "Ε-Epsilon", "Ζ-Zeta", "Η-Eta", "Θ-Theta", "Ι-Iota", "Κ-Kappa", "Λ-Lambda", "Μ-Mu", "Ν-Nu", "Ξ-Xi", "Ο-Omicron", "Π-Pi", "Ρ-Rho", "Σ-Sigma", "Τ-Tau",
|
||||
"Υ-Upsilon", "Φ-Phi", "Χ-Chi", "Ψ-Psi", "Ω-Omega", "α-alpha", "β-beta", "γ-gamma", "δ-delta", "ε-epsilon", "ζ-zeta", "η-eta", "θ-theta", "ι-iota", "κ-kappa", "λ-lambda",
|
||||
"μ-mu", "ν-nu", "ξ-xi", "ο-omicron", "π-pi", "ρ-rho", "ς-sigmaf", "σ-sigma", "τ-tau", "υ-upsilon", "φ-phi", "χ-chi", "ψ-psi", "ω-omega", "ϑ-thetasym", "ϒ-upsih",
|
||||
"ϖ-piv", " -ensp", " -emsp", " -thinsp", "-zwnj", "-zwj", "-lrm", "-rlm", "–-ndash", "—-mdash", "‘-lsquo", "’-rsquo", "‚-sbquo", "“-ldquo", "”-rdquo", "„-bdquo",
|
||||
"†-dagger", "‡-Dagger", "•-bull", "…-hellip", "‰-permil", "′-prime", "″-Prime", "‹-lsaquo", "›-rsaquo", "‾-oline", "⁄-frasl", "€-euro", "ℑ-image", "℘-weierp", "ℜ-real", "™-trade",
|
||||
"ℵ-alefsym", "←-larr", "↑-uarr", "→-rarr", "↓-darr", "↔-harr", "↵-crarr", "⇐-lArr", "⇑-uArr", "⇒-rArr", "⇓-dArr", "⇔-hArr", "∀-forall", "∂-part", "∃-exist", "∅-empty",
|
||||
"∇-nabla", "∈-isin", "∉-notin", "∋-ni", "∏-prod", "∑-sum", "−-minus", "∗-lowast", "√-radic", "∝-prop", "∞-infin", "∠-ang", "∧-and", "∨-or", "∩-cap", "∪-cup",
|
||||
"∫-int", "∴-there4", "∼-sim", "≅-cong", "≈-asymp", "≠-ne", "≡-equiv", "≤-le", "≥-ge", "⊂-sub", "⊃-sup", "⊄-nsub", "⊆-sube", "⊇-supe", "⊕-oplus", "⊗-otimes",
|
||||
"⊥-perp", "⋅-sdot", "⌈-lceil", "⌉-rceil", "⌊-lfloor", "⌋-rfloor", "〈-lang", "〉-rang", "◊-loz", "♠-spades", "♣-clubs", "♥-hearts", "♦-diams"
|
||||
};
|
||||
private static Dictionary<string, char> _lookupTable = GenerateLookupTable();
|
||||
|
||||
// Methods
|
||||
private static Dictionary<string, char> GenerateLookupTable()
|
||||
{
|
||||
Dictionary<string, char> dictionary = new Dictionary<string, char>(StringComparer.Ordinal);
|
||||
foreach (string str in _entitiesList)
|
||||
{
|
||||
dictionary.Add(str.Substring(2), str[0]);
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
public static char Lookup(string entity)
|
||||
{
|
||||
char ch;
|
||||
_lookupTable.TryGetValue(entity, out ch);
|
||||
return ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,193 +0,0 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.Win32;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
/// <summary>
|
||||
/// IE清理程序
|
||||
/// </summary>
|
||||
public static class IECookies
|
||||
{
|
||||
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
private static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData,
|
||||
ref System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved);
|
||||
|
||||
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
private static extern int InternetSetCookieEx(string lpszURL, string lpszCookieName, string lpszCookieData,
|
||||
int dwFlags, IntPtr dwReserved);
|
||||
|
||||
[DllImport("shell32.dll")]
|
||||
static extern IntPtr ShellExecute(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, ShowCommands nShowCmd);
|
||||
|
||||
|
||||
private const int INTERNET_COOKIE_HTTPONLY = 0x00002000;
|
||||
|
||||
|
||||
[DllImport("wininet.dll", SetLastError = true)]
|
||||
private static extern bool InternetGetCookieEx(
|
||||
string url,
|
||||
string cookieName,
|
||||
StringBuilder cookieData,
|
||||
ref int size,
|
||||
int flags,
|
||||
IntPtr pReserved);
|
||||
/// <summary>
|
||||
/// 获取当前webbrowser 下的cookies
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetCookieByWebBrowser(string url)
|
||||
{
|
||||
int size = 512;
|
||||
StringBuilder sb = new StringBuilder(size);
|
||||
if (!InternetGetCookieEx(url, null, sb, ref size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero))
|
||||
{
|
||||
if (size < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
sb = new StringBuilder(size);
|
||||
if (!InternetGetCookieEx(url, null, sb, ref size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取webbrowser UserAgent
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetUserAgent()
|
||||
{
|
||||
WebBrowser wb = new WebBrowser();
|
||||
wb.Navigate("about:blank");
|
||||
while (wb.IsBusy) Application.DoEvents();
|
||||
object window = wb.Document.Window.DomWindow;
|
||||
Type wt = window.GetType();
|
||||
object navigator = wt.InvokeMember("navigator", BindingFlags.GetProperty, null, window, new object[] { });
|
||||
Type nt = navigator.GetType();
|
||||
object userAgent = nt.InvokeMember("userAgent", BindingFlags.GetProperty, null, navigator, new object[] { });
|
||||
return userAgent.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用IE打开网页
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
public static void OpenUrlByIE(string url)
|
||||
{
|
||||
Process.Start("iexplore.exe", url);
|
||||
}
|
||||
/// <summary>
|
||||
/// 关闭所有IE浏览器
|
||||
/// </summary>
|
||||
public static void CloseIE()
|
||||
{
|
||||
foreach (Process thisproc in Process.GetProcesses())
|
||||
{
|
||||
if (thisproc.ProcessName.ToLower() == "iexplore")
|
||||
thisproc.Kill();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取IE下的cookies
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetCookies(string url)
|
||||
{
|
||||
uint datasize = 256;
|
||||
StringBuilder cookieData = new StringBuilder((int)datasize);
|
||||
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero))
|
||||
{
|
||||
if (datasize < 0)
|
||||
return null;
|
||||
cookieData = new StringBuilder((int)datasize);
|
||||
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero))
|
||||
return null;
|
||||
}
|
||||
return cookieData.ToString();
|
||||
}
|
||||
/// <summary>
|
||||
/// 清除IE所有缓存
|
||||
/// </summary>
|
||||
public static void ClearAll()
|
||||
{
|
||||
ShellExecute(IntPtr.Zero, "open", "rundll32.exe", " InetCpl.cpl,ClearMyTracksByProcess 8", "", ShowCommands.SW_HIDE);
|
||||
}
|
||||
|
||||
|
||||
public enum ShowCommands : int
|
||||
{
|
||||
SW_HIDE = 0,
|
||||
SW_SHOWNOrmAL = 1,
|
||||
SW_NOrmAL = 1,
|
||||
SW_SHOWMINIMIZED = 2,
|
||||
SW_SHOWMAXIMIZED = 3,
|
||||
SW_MAXIMIZE = 3,
|
||||
SW_SHOWNOACTIVATE = 4,
|
||||
SW_SHOW = 5,
|
||||
SW_MINIMIZE = 6,
|
||||
SW_SHOWMINNOACTIVE = 7,
|
||||
SW_SHOWNA = 8,
|
||||
SW_RESTORE = 9,
|
||||
SW_SHOWDEFAULT = 10,
|
||||
SW_FORCEMINIMIZE = 11,
|
||||
SW_MAX = 11
|
||||
}
|
||||
/// <summary>
|
||||
/// 通过注册表获取IE版本
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static int GetIeVerson()
|
||||
{
|
||||
int mainVer = (new WebBrowser()).Version.Major;
|
||||
return mainVer;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置WebBrower IE默认版本
|
||||
/// </summary>
|
||||
/// <param name="version"></param>
|
||||
public static void SetWebBrowerIe(int version)
|
||||
{
|
||||
int de = 0x1B58;
|
||||
if (version == 8)
|
||||
de = 0x1F40;
|
||||
if (version == 9)
|
||||
de = 0x2328;
|
||||
if (version == 10)
|
||||
de = 0x2710;
|
||||
if (version == 11)
|
||||
de = 0x2af8;
|
||||
|
||||
bool type = Environment.Is64BitOperatingSystem;//系统是否是64位
|
||||
var exeName = Process.GetCurrentProcess().ProcessName + ".exe";
|
||||
var hklm = Registry.LocalMachine;
|
||||
string key = type
|
||||
? @"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"
|
||||
: @"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";
|
||||
|
||||
try
|
||||
{
|
||||
var lmRun = hklm.OpenSubKey(key, true);
|
||||
if (lmRun == null)
|
||||
return;
|
||||
lmRun.SetValue(exeName, de); //设置webbrowser调用IE最高版本内核打开
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,505 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class IPLocationSearch
|
||||
{
|
||||
private static readonly QQWry qq = new QQWry("qqwry.dat");
|
||||
|
||||
public static IPLocation GetIPLocation(string ip)
|
||||
{
|
||||
return qq.SearchIPLocation(ip);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
使用方法:
|
||||
|
||||
例子:
|
||||
BDQQ.Data.QQWry qq=new BDQQ.Data.QQWry("d:\\QQWry.Dat");
|
||||
BDQQ.Data.IPLocation ip=qq.SearchIPLocation("127.0.0.1");//这里添写IP地址
|
||||
Console.WriteLine(ip.country);//国家
|
||||
Console.WriteLine(ip.area);//地区
|
||||
*/
|
||||
|
||||
//以下是类文件
|
||||
//根据LumaQQ改写而成.
|
||||
|
||||
/**/
|
||||
///<summary>
|
||||
/// QQWry 的摘要说明。
|
||||
///</summary>
|
||||
public class QQWry
|
||||
{
|
||||
//第一种模式
|
||||
#region 第一种模式
|
||||
/**/
|
||||
///<summary>
|
||||
///第一种模式
|
||||
///</summary>
|
||||
#endregion
|
||||
private const byte REDIRECT_MODE_1 = 0x01;
|
||||
|
||||
//第二种模式
|
||||
#region 第二种模式
|
||||
/**/
|
||||
///<summary>
|
||||
///第二种模式
|
||||
///</summary>
|
||||
#endregion
|
||||
private const byte REDIRECT_MODE_2 = 0x02;
|
||||
|
||||
//每条记录长度
|
||||
#region 每条记录长度
|
||||
/**/
|
||||
///<summary>
|
||||
///每条记录长度
|
||||
///</summary>
|
||||
#endregion
|
||||
private const int IP_RECORD_LENGTH = 7;
|
||||
|
||||
//数据库文件
|
||||
#region 数据库文件
|
||||
/**/
|
||||
///<summary>
|
||||
///文件对象
|
||||
///</summary>
|
||||
#endregion
|
||||
private FileStream ipFile;
|
||||
|
||||
private const string unCountry = "未知国家";
|
||||
private const string unArea = "未知地区";
|
||||
|
||||
//索引开始位置
|
||||
#region 索引开始位置
|
||||
/**/
|
||||
///<summary>
|
||||
///索引开始位置
|
||||
///</summary>
|
||||
#endregion
|
||||
private long ipBegin;
|
||||
|
||||
//索引结束位置
|
||||
#region 索引结束位置
|
||||
/**/
|
||||
///<summary>
|
||||
///索引结束位置
|
||||
///</summary>
|
||||
#endregion
|
||||
private long ipEnd;
|
||||
|
||||
//IP地址对象
|
||||
#region IP地址对象
|
||||
/**/
|
||||
///<summary>
|
||||
/// IP对象
|
||||
///</summary>
|
||||
#endregion
|
||||
private IPLocation loc;
|
||||
|
||||
//存储文本内容
|
||||
#region 存储文本内容
|
||||
/**/
|
||||
///<summary>
|
||||
///存储文本内容
|
||||
///</summary>
|
||||
#endregion
|
||||
private byte[] buf;
|
||||
|
||||
//存储3字节
|
||||
#region 存储3字节
|
||||
/**/
|
||||
///<summary>
|
||||
///存储3字节
|
||||
///</summary>
|
||||
#endregion
|
||||
private byte[] b3;
|
||||
|
||||
//存储4字节
|
||||
#region 存储4字节
|
||||
/**/
|
||||
///<summary>
|
||||
///存储4字节IP地址
|
||||
///</summary>
|
||||
#endregion
|
||||
private byte[] b4;
|
||||
|
||||
//构造函数
|
||||
#region 构造函数
|
||||
/**/
|
||||
///<summary>
|
||||
///构造函数
|
||||
///</summary>
|
||||
///<param name="ipfile">IP数据库文件绝对路径</param>
|
||||
#endregion
|
||||
public QQWry(string ipfile)
|
||||
{
|
||||
|
||||
buf = new byte[100];
|
||||
b3 = new byte[3];
|
||||
b4 = new byte[4];
|
||||
try
|
||||
{
|
||||
ipFile = new FileStream(ipfile, FileMode.Open);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception(ex.Message);
|
||||
}
|
||||
ipBegin = readLong4(0);
|
||||
ipEnd = readLong4(4);
|
||||
loc = new IPLocation();
|
||||
}
|
||||
|
||||
//根据IP地址搜索
|
||||
#region 根据IP地址搜索
|
||||
/**/
|
||||
///<summary>
|
||||
///搜索IP地址搜索
|
||||
///</summary>
|
||||
///<param name="ip"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
public IPLocation SearchIPLocation(string ip)
|
||||
{
|
||||
//将字符IP转换为字节
|
||||
string[] ipSp = ip.Split('.');
|
||||
if (ipSp.Length != 4)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("不是合法的IP地址!");
|
||||
}
|
||||
byte[] IP = new byte[4];
|
||||
for (int i = 0; i < IP.Length; i++)
|
||||
{
|
||||
IP[i] = (byte)(Int32.Parse(ipSp[i]) & 0xFF);
|
||||
}
|
||||
|
||||
IPLocation local = null;
|
||||
long offset = locateIP(IP);
|
||||
|
||||
if (offset != -1)
|
||||
{
|
||||
local = getIPLocation(offset);
|
||||
}
|
||||
|
||||
if (local == null)
|
||||
{
|
||||
local = new IPLocation();
|
||||
local.area = unArea;
|
||||
local.country = unCountry;
|
||||
}
|
||||
return local;
|
||||
}
|
||||
|
||||
//取得具体信息
|
||||
#region 取得具体信息
|
||||
/**/
|
||||
///<summary>
|
||||
///取得具体信息
|
||||
///</summary>
|
||||
///<param name="offset"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private IPLocation getIPLocation(long offset)
|
||||
{
|
||||
ipFile.Position = offset + 4;
|
||||
//读取第一个字节判断是否是标志字节
|
||||
byte one = (byte)ipFile.ReadByte();
|
||||
if (one == REDIRECT_MODE_1)
|
||||
{
|
||||
//第一种模式
|
||||
//读取国家偏移
|
||||
long countryOffset = readLong3();
|
||||
//转至偏移处
|
||||
ipFile.Position = countryOffset;
|
||||
//再次检查标志字节
|
||||
byte b = (byte)ipFile.ReadByte();
|
||||
if (b == REDIRECT_MODE_2)
|
||||
{
|
||||
loc.country = readString(readLong3());
|
||||
ipFile.Position = countryOffset + 4;
|
||||
}
|
||||
else
|
||||
loc.country = readString(countryOffset);
|
||||
|
||||
//读取地区标志
|
||||
loc.area = readArea(ipFile.Position);
|
||||
|
||||
}
|
||||
else if (one == REDIRECT_MODE_2)
|
||||
{
|
||||
//第二种模式
|
||||
loc.country = readString(readLong3());
|
||||
loc.area = readArea(offset + 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
//普通模式
|
||||
loc.country = readString(--ipFile.Position);
|
||||
loc.area = readString(ipFile.Position);
|
||||
}
|
||||
return loc;
|
||||
}
|
||||
|
||||
//取得地区信息
|
||||
#region 取得地区信息
|
||||
/**/
|
||||
///<summary>
|
||||
///读取地区名称
|
||||
///</summary>
|
||||
///<param name="offset"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private string readArea(long offset)
|
||||
{
|
||||
ipFile.Position = offset;
|
||||
byte one = (byte)ipFile.ReadByte();
|
||||
if (one == REDIRECT_MODE_1 || one == REDIRECT_MODE_2)
|
||||
{
|
||||
long areaOffset = readLong3(offset + 1);
|
||||
if (areaOffset == 0)
|
||||
return unArea;
|
||||
else
|
||||
{
|
||||
return readString(areaOffset);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return readString(offset);
|
||||
}
|
||||
}
|
||||
|
||||
//读取字符串
|
||||
#region 读取字符串
|
||||
/**/
|
||||
///<summary>
|
||||
///读取字符串
|
||||
///</summary>
|
||||
///<param name="offset"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private string readString(long offset)
|
||||
{
|
||||
ipFile.Position = offset;
|
||||
int i = 0;
|
||||
for (i = 0, buf[i] = (byte)ipFile.ReadByte(); buf[i] != (byte)(0); buf[++i] = (byte)ipFile.ReadByte()) ;
|
||||
|
||||
if (i > 0)
|
||||
return Encoding.Default.GetString(buf, 0, i);
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
//查找IP地址所在的绝对偏移量
|
||||
#region 查找IP地址所在的绝对偏移量
|
||||
/**/
|
||||
///<summary>
|
||||
///查找IP地址所在的绝对偏移量
|
||||
///</summary>
|
||||
///<param name="ip"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private long locateIP(byte[] ip)
|
||||
{
|
||||
long m = 0;
|
||||
int r;
|
||||
|
||||
//比较第一个IP项
|
||||
readIP(ipBegin, b4);
|
||||
r = compareIP(ip, b4);
|
||||
if (r == 0)
|
||||
return ipBegin;
|
||||
else if (r < 0)
|
||||
return -1;
|
||||
//开始二分搜索
|
||||
for (long i = ipBegin, j = ipEnd; i < j; )
|
||||
{
|
||||
m = this.getMiddleOffset(i, j);
|
||||
readIP(m, b4);
|
||||
r = compareIP(ip, b4);
|
||||
if (r > 0)
|
||||
i = m;
|
||||
else if (r < 0)
|
||||
{
|
||||
if (m == j)
|
||||
{
|
||||
j -= IP_RECORD_LENGTH;
|
||||
m = j;
|
||||
}
|
||||
else
|
||||
{
|
||||
j = m;
|
||||
}
|
||||
}
|
||||
else
|
||||
return readLong3(m + 4);
|
||||
}
|
||||
m = readLong3(m + 4);
|
||||
readIP(m, b4);
|
||||
r = compareIP(ip, b4);
|
||||
if (r <= 0)
|
||||
return m;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
//读出4字节的IP地址
|
||||
#region 读出4字节的IP地址
|
||||
/**/
|
||||
///<summary>
|
||||
///从当前位置读取四字节,此四字节是IP地址
|
||||
///</summary>
|
||||
///<param name="offset"></param>
|
||||
///<param name="ip"></param>
|
||||
#endregion
|
||||
private void readIP(long offset, byte[] ip)
|
||||
{
|
||||
ipFile.Position = offset;
|
||||
ipFile.Read(ip, 0, ip.Length);
|
||||
byte tmp = ip[0];
|
||||
ip[0] = ip[3];
|
||||
ip[3] = tmp;
|
||||
tmp = ip[1];
|
||||
ip[1] = ip[2];
|
||||
ip[2] = tmp;
|
||||
}
|
||||
|
||||
//比较IP地址是否相同
|
||||
#region 比较IP地址是否相同
|
||||
/**/
|
||||
///<summary>
|
||||
///比较IP地址是否相同
|
||||
///</summary>
|
||||
///<param name="ip"></param>
|
||||
///<param name="beginIP"></param>
|
||||
///<returns>0:相等,1:ip大于beginIP,-1:小于</returns>
|
||||
#endregion
|
||||
private int compareIP(byte[] ip, byte[] beginIP)
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
int r = compareByte(ip[i], beginIP[i]);
|
||||
if (r != 0)
|
||||
return r;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//比较两个字节是否相等
|
||||
#region 比较两个字节是否相等
|
||||
/**/
|
||||
///<summary>
|
||||
///比较两个字节是否相等
|
||||
///</summary>
|
||||
///<param name="bsrc"></param>
|
||||
///<param name="bdst"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private int compareByte(byte bsrc, byte bdst)
|
||||
{
|
||||
if ((bsrc & 0xFF) > (bdst & 0xFF))
|
||||
return 1;
|
||||
else if ((bsrc ^ bdst) == 0)
|
||||
return 0;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
//根据当前位置读取4字节
|
||||
#region 根据当前位置读取4字节
|
||||
/**/
|
||||
///<summary>
|
||||
///从当前位置读取4字节,转换为长整型
|
||||
///</summary>
|
||||
///<param name="offset"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private long readLong4(long offset)
|
||||
{
|
||||
long ret = 0;
|
||||
ipFile.Position = offset;
|
||||
ret |= (ipFile.ReadByte() & 0xFF);
|
||||
ret |= ((ipFile.ReadByte() << 8) & 0xFF00);
|
||||
ret |= ((ipFile.ReadByte() << 16) & 0xFF0000);
|
||||
ret |= ((ipFile.ReadByte() << 24) & 0xFF000000);
|
||||
return ret;
|
||||
}
|
||||
|
||||
//根据当前位置,读取3字节
|
||||
#region 根据当前位置,读取3字节
|
||||
/**/
|
||||
///<summary>
|
||||
///根据当前位置,读取3字节
|
||||
///</summary>
|
||||
///<param name="offset"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private long readLong3(long offset)
|
||||
{
|
||||
long ret = 0;
|
||||
ipFile.Position = offset;
|
||||
ret |= (ipFile.ReadByte() & 0xFF);
|
||||
ret |= ((ipFile.ReadByte() << 8) & 0xFF00);
|
||||
ret |= ((ipFile.ReadByte() << 16) & 0xFF0000);
|
||||
return ret;
|
||||
}
|
||||
|
||||
//从当前位置读取3字节
|
||||
#region 从当前位置读取3字节
|
||||
/**/
|
||||
///<summary>
|
||||
///从当前位置读取3字节
|
||||
///</summary>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private long readLong3()
|
||||
{
|
||||
long ret = 0;
|
||||
ret |= (ipFile.ReadByte() & 0xFF);
|
||||
ret |= ((ipFile.ReadByte() << 8) & 0xFF00);
|
||||
ret |= ((ipFile.ReadByte() << 16) & 0xFF0000);
|
||||
return ret;
|
||||
}
|
||||
|
||||
//取得begin和end之间的偏移量
|
||||
#region 取得begin和end之间的偏移量
|
||||
/**/
|
||||
///<summary>
|
||||
///取得begin和end中间的偏移
|
||||
///</summary>
|
||||
///<param name="begin"></param>
|
||||
///<param name="end"></param>
|
||||
///<returns></returns>
|
||||
#endregion
|
||||
private long getMiddleOffset(long begin, long end)
|
||||
{
|
||||
long records = (end - begin) / IP_RECORD_LENGTH;
|
||||
records >>= 1;
|
||||
if (records == 0)
|
||||
records = 1;
|
||||
return begin + records * IP_RECORD_LENGTH;
|
||||
}
|
||||
} //class QQWry
|
||||
|
||||
public class IPLocation
|
||||
{
|
||||
public String country;
|
||||
public String area;
|
||||
|
||||
public IPLocation()
|
||||
{
|
||||
country = area = "";
|
||||
}
|
||||
|
||||
public IPLocation getCopy()
|
||||
{
|
||||
IPLocation ret = new IPLocation();
|
||||
ret.country = country;
|
||||
ret.area = area;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,685 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class ImageBuild
|
||||
{
|
||||
public byte[] Img;
|
||||
public int Width = 0, Height = 0;
|
||||
public Image InitImage = null;
|
||||
public Bitmap InitImagex = null;
|
||||
public string format = "";
|
||||
public bool CanUser
|
||||
{
|
||||
get { return format == ".jpg" || format == ".png"; }
|
||||
}
|
||||
|
||||
public ImageBuild(byte[] image)
|
||||
{
|
||||
if (image == null || image.Length == 0)
|
||||
return;
|
||||
Img = image;
|
||||
try
|
||||
{
|
||||
MemoryStream ms = new MemoryStream(Img);
|
||||
InitImage = Image.FromStream(ms);
|
||||
var f = GetImageFormat(InitImage, out format);
|
||||
ms.Close();
|
||||
Width = InitImage.Width;
|
||||
Height = InitImage.Height;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] ImageSheild()
|
||||
{
|
||||
if (Width > 700 || Height > 700)
|
||||
{
|
||||
CutToSize(700, 700);
|
||||
}
|
||||
InitImagex = (Bitmap)InitImage;
|
||||
long r = 0, g = 0, b = 0;
|
||||
|
||||
|
||||
for (int i = 0; i < InitImagex.Height - 3; i++)
|
||||
{
|
||||
for (int j = 0; j < InitImagex.Width - 3;)
|
||||
{
|
||||
Color c = InitImagex.GetPixel(i, j);
|
||||
int rr = c.R, bb = c.B, gg = c.G;
|
||||
for (int k = 0; k < 3; k++)
|
||||
{
|
||||
for (int l = 0; l < 3; l++)
|
||||
{
|
||||
if (k == 1 && l == 1 || k == 0 && l == 0)
|
||||
continue;
|
||||
var cc = InitImagex.GetPixel(i + k, j + l);
|
||||
if (Math.Abs(cc.R - c.R) > 15 || Math.Abs(cc.B - c.B) > 15 || Math.Abs(cc.G - c.G) > 15)
|
||||
goto End;
|
||||
rr += cc.R;
|
||||
bb += cc.B;
|
||||
gg += cc.G;
|
||||
}
|
||||
}
|
||||
c = Color.FromArgb(rr / 8, gg / 8, bb / 8);
|
||||
InitImagex.SetPixel(i + 1, j + 1, c);
|
||||
End:
|
||||
j++;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < InitImagex.Height; i++)
|
||||
{
|
||||
for (int j = 0; j < InitImagex.Width; j++)
|
||||
{
|
||||
Color c = InitImagex.GetPixel(i, j);
|
||||
r += c.R;
|
||||
g += c.G;
|
||||
b += c.B;
|
||||
}
|
||||
}
|
||||
int avgR = (int)(r / InitImagex.Height / InitImagex.Width);
|
||||
int avgG = (int)(g / InitImagex.Height / InitImagex.Width);
|
||||
int avgB = (int)(b / InitImagex.Height / InitImagex.Width);
|
||||
int avg = avgB + avgR + avgG;
|
||||
for (int i = 0; i < InitImagex.Height; i++)
|
||||
{
|
||||
for (int j = 0; j < InitImagex.Width; j++)
|
||||
{
|
||||
Color c = InitImagex.GetPixel(i, j);
|
||||
bool add = c.R + c.B + c.G > avg;
|
||||
int rr = add ? c.R < 240 ? c.R + 10 : 255 : c.R > 15 ? c.R - 15 : 0;
|
||||
int gg = add ? c.G < 240 ? c.G + 10 : 255 : c.G > 15 ? c.G - 15 : 0;
|
||||
int bb = add ? c.B < 240 ? c.B + 10 : 255 : c.B > 15 ? c.B - 15 : 0;
|
||||
c = Color.FromArgb(rr, gg, bb);
|
||||
InitImagex.SetPixel(i, j, c);
|
||||
}
|
||||
}
|
||||
InitImagex.Save("1.jpg", ImageFormat.Jpeg);
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 裁剪为指定大小,不符合则返回null
|
||||
/// </summary>
|
||||
/// <param name="width"></param>
|
||||
/// <param name="height"></param>
|
||||
/// <returns></returns>
|
||||
public byte[] CutToSize(int width, int height)
|
||||
{
|
||||
if (InitImage == null)
|
||||
return null;
|
||||
int w = InitImage.Width;
|
||||
int h = InitImage.Height;
|
||||
if (w < width || h < height)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
int x = 0, y = 0, nw = w, nh = h;
|
||||
int tx = 0, ty = 0, tw = width, th = height;
|
||||
double f = w * 1.0 / width;
|
||||
double t = h * 1.0 / height;
|
||||
if (f == t)//无需变化
|
||||
{
|
||||
}
|
||||
else if (f > t)//宽度较大
|
||||
{
|
||||
x = (int)(((f - t) / 2) * width);
|
||||
nw = w - x * 2;
|
||||
}
|
||||
else//高度较大
|
||||
{
|
||||
y = (int)((t - f) / 2 * height);
|
||||
nh = h - y * 2;
|
||||
}
|
||||
Rectangle fromR = new Rectangle(x, y, nw, nh);
|
||||
Rectangle toR = new Rectangle(tx, ty, tw, th);
|
||||
Bitmap pickedImage = new Bitmap(width, height);
|
||||
|
||||
Graphics pickedG = Graphics.FromImage(pickedImage);
|
||||
pickedG.InterpolationMode = InterpolationMode.Low;
|
||||
pickedG.SmoothingMode = SmoothingMode.HighSpeed;
|
||||
pickedG.DrawImage(InitImage, toR, fromR, GraphicsUnit.Pixel);
|
||||
//转图片后转二进制数组
|
||||
InitImage = (Image)pickedImage.Clone();
|
||||
MemoryStream ms = new MemoryStream();
|
||||
ImageCodecInfo icc = GetCodeInfo("1.jpg");
|
||||
long quality = 80;
|
||||
EncoderParameters ep = new EncoderParameters(1);
|
||||
ep.Param[0] = new EncoderParameter(Encoder.Quality, quality);
|
||||
InitImage.Save(ms, icc, ep);
|
||||
byte[] bytes = ms.ToArray();
|
||||
return bytes;
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加线条
|
||||
/// </summary>
|
||||
/// <param name="img"></param>
|
||||
public void AddLineToImage(ref byte[] img)
|
||||
{
|
||||
MemoryStream ms = new MemoryStream(img);
|
||||
var image = (Bitmap)Image.FromStream(ms);
|
||||
ms.Close();
|
||||
int width = image.Width;
|
||||
int height = image.Height;
|
||||
if (width < 100 || height < 100)
|
||||
return;
|
||||
int r = Randomx.GetId(100, 256);
|
||||
int b = Randomx.GetId(100, 256);
|
||||
int g = Randomx.GetId(100, 256);
|
||||
int h = Randomx.GetId(1, 10);
|
||||
var c = Color.FromArgb(r, g, b);
|
||||
for (int i = 0; i < h; i++)
|
||||
{
|
||||
for (int j = 0; j < height; j++)
|
||||
image.SetPixel(i, j, c);
|
||||
for (int j = 0; j < width; j++)
|
||||
image.SetPixel(j, i, c);
|
||||
}
|
||||
for (int i = height - h; i < height; i++)
|
||||
{
|
||||
for (int j = 0; j < width; j++)
|
||||
image.SetPixel(j, i, c);
|
||||
}
|
||||
for (int i = width - h; i < width; i++)
|
||||
{
|
||||
for (int j = 0; j < height; j++)
|
||||
image.SetPixel(i, j, c);
|
||||
}
|
||||
ImageCodecInfo icc = GetCodeInfo("1.jpg");
|
||||
long quality = 75;
|
||||
ms = new MemoryStream();
|
||||
EncoderParameters ep = new EncoderParameters(1);
|
||||
ep.Param[0] = new EncoderParameter(Encoder.Quality, quality);
|
||||
image.Save(ms, icc, ep);
|
||||
img = ms.ToArray();
|
||||
//FileBase.WriteBytes("1.jpg", bytes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 输出固定大小图片,背景白色填充,返回JPG格式二进制代码
|
||||
/// </summary>
|
||||
/// <param name="width"></param>
|
||||
/// <param name="height"></param>
|
||||
/// <param name="maxSize">最大尺寸KB</param>
|
||||
/// <param name="qu">图片质量</param>
|
||||
/// <returns></returns>
|
||||
public byte[] BuildNewSize(int width, int height, int maxSize, long qu=85l)
|
||||
{
|
||||
if (InitImage == null)
|
||||
return null;
|
||||
int w = InitImage.Width;
|
||||
int h = InitImage.Height;
|
||||
int x = 0, y = 0, nw = w, nh = h;
|
||||
int tx = 0, ty = 0, tw = width, th = height;
|
||||
//先缩放
|
||||
if (w <= width && h <= height)//无需缩放
|
||||
{
|
||||
tx = (width - w) / 2;
|
||||
tw = w;
|
||||
ty = (height - h) / 2;
|
||||
th = h;
|
||||
}
|
||||
else if (w < width && h > height)
|
||||
{
|
||||
tx = (width - w) / 2;
|
||||
tw = w;
|
||||
y = (h - height) / 2;
|
||||
nh = height;
|
||||
}
|
||||
else if (w > width && h < height)
|
||||
{
|
||||
ty = (height - h) / 2;
|
||||
th = h;
|
||||
x = (w - width) / 2;
|
||||
nw = width;
|
||||
}
|
||||
else
|
||||
{
|
||||
double f = w * 1.0 / width;
|
||||
double t = h * 1.0 / height;
|
||||
if (f == t)//无需变化
|
||||
{
|
||||
}
|
||||
else if (f > t)//宽度较大
|
||||
{
|
||||
x = (int)(((f - t) / 2) * width);
|
||||
nw = w - x * 2;
|
||||
}
|
||||
else//高度较大
|
||||
{
|
||||
y = (int)((t - f) / 2 * height);
|
||||
nh = h - y * 2;
|
||||
}
|
||||
}
|
||||
Rectangle fromR = new Rectangle(x, y, nw, nh);
|
||||
Rectangle toR = new Rectangle(tx, ty, tw, th);
|
||||
Bitmap pickedImage = new Bitmap(width, height);
|
||||
for (int i = 0; i < pickedImage.Width; i++)
|
||||
{
|
||||
for (int j = 0; j < pickedImage.Height; j++)
|
||||
{
|
||||
Color color = Color.FromArgb(255, 255, 255);
|
||||
pickedImage.SetPixel(i, j, color);
|
||||
}
|
||||
}
|
||||
Graphics pickedG = Graphics.FromImage(pickedImage);
|
||||
pickedG.InterpolationMode = InterpolationMode.Low;
|
||||
pickedG.SmoothingMode = SmoothingMode.HighSpeed;
|
||||
pickedG.DrawImage(InitImage, toR, fromR, GraphicsUnit.Pixel);
|
||||
//转图片后转二进制数组
|
||||
Image initImagex = (Image)pickedImage.Clone();
|
||||
MemoryStream ms = new MemoryStream();
|
||||
ImageCodecInfo icc = GetCodeInfo("1.jpg");
|
||||
|
||||
long quality = maxSize == 1024 ? 75l : 85;
|
||||
if (qu > quality)
|
||||
quality = qu;
|
||||
EncoderParameters ep = new EncoderParameters(1);
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
|
||||
initImagex.Save(ms, icc, ep);
|
||||
|
||||
if (ms.Length > maxSize * 1024)
|
||||
{
|
||||
ms = new MemoryStream();
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75l);
|
||||
initImagex.Save(ms, icc, ep);
|
||||
return ms.ToArray();
|
||||
}
|
||||
if (ms.Length > maxSize * 1024)
|
||||
{
|
||||
ms = new MemoryStream();
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 55l);
|
||||
initImagex.Save(ms, icc, ep);
|
||||
return ms.ToArray();
|
||||
}
|
||||
if (ms.Length > maxSize * 1024)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
//ImageCodecInfo icc = GetCodeInfo("1.jpg");
|
||||
//initImagex.Save("22.jpg", icc, ep);
|
||||
return ms.ToArray();
|
||||
}
|
||||
public byte[] BuildNewSizeCut(int width, int height, int maxSize, long qu = 85l)
|
||||
{
|
||||
if (InitImage == null)
|
||||
return null;
|
||||
int w = InitImage.Width;
|
||||
int h = InitImage.Height;
|
||||
int x = 0, y = 0, nw = w, nh = h;
|
||||
int tx = 0, ty = 0, tw = width, th = height;
|
||||
Rectangle fromR = new Rectangle(x, y, nw, nh);
|
||||
Rectangle toR = new Rectangle(tx, ty, tw, th);
|
||||
Bitmap pickedImage = new Bitmap(width, height);
|
||||
for (int i = 0; i < pickedImage.Width; i++)
|
||||
{
|
||||
for (int j = 0; j < pickedImage.Height; j++)
|
||||
{
|
||||
Color color = Color.FromArgb(255, 255, 255);
|
||||
pickedImage.SetPixel(i, j, color);
|
||||
}
|
||||
}
|
||||
Graphics pickedG = Graphics.FromImage(pickedImage);
|
||||
pickedG.InterpolationMode = InterpolationMode.Low;
|
||||
pickedG.SmoothingMode = SmoothingMode.HighSpeed;
|
||||
pickedG.DrawImage(InitImage, toR, fromR, GraphicsUnit.Pixel);
|
||||
//转图片后转二进制数组
|
||||
Image initImagex = (Image)pickedImage.Clone();
|
||||
MemoryStream ms = new MemoryStream();
|
||||
ImageCodecInfo icc = GetCodeInfo("1.jpg");
|
||||
|
||||
long quality = maxSize == 1024 ? 75l : 85;
|
||||
if (qu > quality)
|
||||
quality = qu;
|
||||
EncoderParameters ep = new EncoderParameters(1);
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
|
||||
initImagex.Save(ms, icc, ep);
|
||||
|
||||
if (ms.Length > maxSize * 1024)
|
||||
{
|
||||
ms = new MemoryStream();
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75l);
|
||||
initImagex.Save(ms, icc, ep);
|
||||
return ms.ToArray();
|
||||
}
|
||||
if (ms.Length > maxSize * 1024)
|
||||
{
|
||||
ms = new MemoryStream();
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 55l);
|
||||
initImagex.Save(ms, icc, ep);
|
||||
return ms.ToArray();
|
||||
}
|
||||
if (ms.Length > maxSize * 1024)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
//ImageCodecInfo icc = GetCodeInfo("1.jpg");
|
||||
//initImagex.Save("22.jpg", icc, ep);
|
||||
return ms.ToArray();
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据路径得出图片编码信息
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public ImageCodecInfo GetCodeInfo(string path)
|
||||
{
|
||||
string exe = path.Split('.')[path.Split('.').Length - 1].ToLower();
|
||||
ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
|
||||
ImageCodecInfo ici = null, defCodecInfo = null;
|
||||
foreach (ImageCodecInfo i in icis)
|
||||
{
|
||||
if (i.MimeType == "image/jpeg")
|
||||
defCodecInfo = i;
|
||||
if ((exe == "jpg" || exe == "jpeg") && i.MimeType == "image/jpeg")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
if (exe == "bmp" && i.MimeType == "image/bmp")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
if (exe == "png" && i.MimeType == "image/png")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
if (exe == "gif" && i.MimeType == "image/gif")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
}
|
||||
if (ici == null)
|
||||
ici = defCodecInfo;
|
||||
return ici;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取Image图片格式
|
||||
/// </summary>
|
||||
/// <param name="_img"></param>
|
||||
/// <param name="format"></param>
|
||||
/// <returns></returns>
|
||||
private System.Drawing.Imaging.ImageFormat GetImageFormat(Image _img, out string format)
|
||||
{
|
||||
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
|
||||
{
|
||||
format = ".jpg";
|
||||
return System.Drawing.Imaging.ImageFormat.Jpeg;
|
||||
}
|
||||
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
|
||||
{
|
||||
format = ".gif";
|
||||
return System.Drawing.Imaging.ImageFormat.Gif;
|
||||
}
|
||||
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
|
||||
{
|
||||
format = ".png";
|
||||
return System.Drawing.Imaging.ImageFormat.Png;
|
||||
}
|
||||
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
|
||||
{
|
||||
format = ".bmp";
|
||||
return System.Drawing.Imaging.ImageFormat.Bmp;
|
||||
}
|
||||
format = string.Empty;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 图像缩略图处理
|
||||
/// </summary>
|
||||
/// <param name="bytes">图像源数据</param>
|
||||
/// <param name="compression">压缩质量 1-100</param>
|
||||
/// <param name="thumbWidth">缩略图的宽</param>
|
||||
/// <param name="thumbHeight">缩略图的高</param>
|
||||
/// <returns></returns>
|
||||
public static byte[] ConvertToThumbnail(byte[] bytes, int compression = 100, int thumbWidth = 0, int thumbHeight = 0)
|
||||
{
|
||||
byte[] bs = null;
|
||||
|
||||
if (bytes != null)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream(bytes))
|
||||
{
|
||||
using (Bitmap srcimg = new Bitmap(ms))
|
||||
{
|
||||
if (thumbWidth == 0 && thumbHeight == 0)
|
||||
{
|
||||
thumbWidth = srcimg.Width;
|
||||
thumbHeight = srcimg.Height;
|
||||
}
|
||||
using (Bitmap dstimg = new Bitmap(thumbWidth, thumbHeight))//图片压缩质量
|
||||
{
|
||||
//从Bitmap创建一个System.Drawing.Graphics对象,用来绘制高质量的缩小图。
|
||||
using (Graphics gr = Graphics.FromImage(dstimg))
|
||||
{
|
||||
//把原始图像绘制成上面所设置宽高的缩小图
|
||||
Rectangle rectDestination = new Rectangle(0, 0, thumbWidth, thumbHeight);
|
||||
gr.Clear(Color.White);
|
||||
gr.CompositingQuality = CompositingQuality.HighQuality;
|
||||
gr.SmoothingMode = SmoothingMode.HighQuality;
|
||||
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||
gr.DrawImage(srcimg, rectDestination, 0, 0, srcimg.Width, srcimg.Height, GraphicsUnit.Pixel);
|
||||
|
||||
EncoderParameters ep = new EncoderParameters(1);
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compression);//设置压缩的比例1-100
|
||||
ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
|
||||
ImageCodecInfo jpegICIinfo = arrayICI.FirstOrDefault(t => t.FormatID == System.Drawing.Imaging.ImageFormat.Jpeg.Guid);
|
||||
using (MemoryStream dstms = new MemoryStream())
|
||||
{
|
||||
if (jpegICIinfo != null)
|
||||
{
|
||||
dstimg.Save(dstms, jpegICIinfo, ep);
|
||||
}
|
||||
else
|
||||
{
|
||||
dstimg.Save(dstms, System.Drawing.Imaging.ImageFormat.Jpeg);//保存到内存里
|
||||
}
|
||||
bs = new Byte[dstms.Length];
|
||||
dstms.Position = 0;
|
||||
dstms.Read(bs, 0, bs.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return bs;
|
||||
}
|
||||
|
||||
[DllImport("gdi32.dll")]
|
||||
public static extern bool DeleteObject(IntPtr hObject);
|
||||
/// <summary>
|
||||
/// 将Image转换为Ico
|
||||
/// </summary>
|
||||
/// <param name="image"></param>
|
||||
/// <param name="nullTonull"></param>
|
||||
/// <returns></returns>
|
||||
public static Icon ConvertToIcon(Image image)
|
||||
{
|
||||
Bitmap bmp = new Bitmap(image);
|
||||
IntPtr h = bmp.GetHicon();
|
||||
Icon icon = Icon.FromHandle(h);
|
||||
DeleteObject(h);
|
||||
return icon;
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<ImagePiex> AllList = new List<ImagePiex>();
|
||||
List<ImagePiex> AllColorList = new List<ImagePiex>();
|
||||
Dictionary<string, ImagePiex> AllPoint = new Dictionary<string, ImagePiex>();
|
||||
|
||||
public bool ImageCuteNoLogo()
|
||||
{
|
||||
var image = (Bitmap)InitImage;
|
||||
int width = image.Width;
|
||||
int height = image.Height;
|
||||
Color cp1 = image.GetPixel(5, 5);
|
||||
Color cp2 = image.GetPixel(5, width - 5);
|
||||
Color cp3 = image.GetPixel(height - 5, 5);
|
||||
Color cp4 = image.GetPixel(height - 5, width - 5);
|
||||
if (cp1.R < 250 || cp1.B < 250 || cp1.G < 250
|
||||
|| cp2.R < 250 || cp2.B < 250 || cp2.G < 250
|
||||
|| cp3.R < 250 || cp3.B < 250 || cp3.G < 250)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static byte[] BitmapToBytes(Bitmap Bitmap)
|
||||
{
|
||||
MemoryStream ms = null;
|
||||
try
|
||||
{
|
||||
ms = new MemoryStream();
|
||||
Bitmap.Save(ms, Bitmap.RawFormat);
|
||||
byte[] byteImage = new Byte[ms.Length];
|
||||
byteImage = ms.ToArray();
|
||||
return byteImage;
|
||||
}
|
||||
catch (ArgumentNullException ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
ms.Close();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 字节数组转换为图片
|
||||
/// </summary>
|
||||
/// <param name="buffer">字节数组</param>
|
||||
/// <returns>图片</returns>
|
||||
public static Image BytesToImage(byte[] buffer)
|
||||
{
|
||||
var ms = new MemoryStream(buffer, 0, buffer.Length);
|
||||
Image img = Image.FromStream(ms);
|
||||
ms.Dispose();
|
||||
return img;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图片对象转字节数组
|
||||
/// </summary>
|
||||
/// <param name="imagePath">图片路径</param>
|
||||
/// <returns>图片字节数组</returns>
|
||||
private byte[] ImageToBytes(string imagePath)
|
||||
{
|
||||
var fs = new FileStream(imagePath, FileMode.Open);
|
||||
byte[] imgBytes = new byte[fs.Length];
|
||||
fs.Read(imgBytes, 0, imgBytes.Length);
|
||||
fs.Close();
|
||||
return imgBytes;
|
||||
}
|
||||
|
||||
public static Image LoadBitmapLoadBitmipImageFromUrl(string url, out string error)
|
||||
{
|
||||
try
|
||||
{
|
||||
BitmapImage bi = LoadBitmipImageFromUrl(url, out error);
|
||||
return BitmapImageToSystemDrawingImage(bi);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
error = e.Message;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static Image BitmapImageToSystemDrawingImage(BitmapImage bitmapImage)
|
||||
{
|
||||
// 方法1 会乱码花屏
|
||||
//int width = bitmapImage.PixelWidth;
|
||||
//int height = bitmapImage.PixelHeight;
|
||||
//int stride = width * ((bitmapImage.Format.BitsPerPixel + 7) / 8);
|
||||
|
||||
//byte[] pixels = new byte[stride * height];
|
||||
//bitmapImage.CopyPixels(pixels, stride, 0);
|
||||
|
||||
//Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
|
||||
//BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, bitmap.PixelFormat);
|
||||
|
||||
//Marshal.Copy(pixels, 0, bmpData.Scan0, pixels.Length);
|
||||
//bitmap.UnlockBits(bmpData);
|
||||
|
||||
//return bitmap;
|
||||
|
||||
// 方法2
|
||||
using (MemoryStream stream = new MemoryStream())
|
||||
{
|
||||
BitmapEncoder encoder = new BmpBitmapEncoder();
|
||||
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
|
||||
encoder.Save(stream);
|
||||
stream.Position = 0;
|
||||
Bitmap bitmap = new Bitmap(stream);
|
||||
stream.Close();
|
||||
|
||||
//// 现在你可以将这个Bitmap对象用于Windows Forms的PictureBox或其他图像显示控件
|
||||
//PictureBox pictureBox = new PictureBox();
|
||||
//pictureBox.Image = bitmap; // 或者如果你已经有了一个PictureBox控件,直接设置其Image属性
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
|
||||
public static BitmapImage LoadBitmipImageFromUrl(string url, out string error)
|
||||
{
|
||||
BitmapImage bitmap = new BitmapImage();
|
||||
error = "";
|
||||
|
||||
try
|
||||
{
|
||||
using (WebClient webClient = new WebClient())
|
||||
{
|
||||
// 下载图片数据到内存流
|
||||
using (MemoryStream stream = new MemoryStream(webClient.DownloadData(url)))
|
||||
{
|
||||
stream.Position = 0; // 重置流的位置到开始处
|
||||
bitmap.BeginInit();
|
||||
bitmap.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
|
||||
bitmap.CacheOption = BitmapCacheOption.OnLoad; // 或者使用 BitmapCacheOption.OnLoad 以减少内存使用
|
||||
bitmap.UriSource = null; // 清除可能的旧UriSource,防止缓存问题
|
||||
bitmap.StreamSource = stream;
|
||||
bitmap.EndInit();
|
||||
bitmap.Freeze(); // 防止后续更改,提高性能
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 处理异常,例如打印错误信息或设置一个默认图片等
|
||||
//Console.WriteLine("Error loading image: " + ex.Message);
|
||||
error = ex.Message;
|
||||
return null;
|
||||
}
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
public class ImagePiex
|
||||
{
|
||||
public Point point { get; set; }
|
||||
public Color color { get; set; }
|
||||
public bool Pval = false;
|
||||
public bool Used = false;
|
||||
public int imgCount = 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,499 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using ZXing;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class ImageCut
|
||||
{
|
||||
/// <summary>
|
||||
/// 正方型裁剪
|
||||
/// 以图片中心为轴心,截取正方型,然后等比缩放
|
||||
/// 用于头像处理
|
||||
/// </summary>
|
||||
/// <remarks>吴剑 2010-11-23</remarks>
|
||||
/// <param name="path">原图HttpPostedFile对象</param>
|
||||
/// <param name="fileSaveUrl">缩略图存放地址</param>
|
||||
/// <param name="side">指定的边长(正方型)</param>
|
||||
/// <param name="quality">质量(范围0-100)</param>
|
||||
public static void CutForSquare(string path, string fileSaveUrl, int side, int quality, out int width,
|
||||
out int height)
|
||||
{
|
||||
|
||||
string exe = path.Split('.')[path.Split('.').Length - 1].ToLower();
|
||||
Image initImage = null;
|
||||
width = 0;
|
||||
height = 0;
|
||||
try
|
||||
{
|
||||
FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
|
||||
initImage = Image.FromStream(fileStream);
|
||||
fileStream.Close();
|
||||
fileStream.Dispose();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
return;
|
||||
}
|
||||
width = initImage.Width;
|
||||
height = initImage.Height;
|
||||
//原图宽高均小于模版,不作处理,直接保存
|
||||
if (initImage.Width <= side || initImage.Height <= side)
|
||||
{
|
||||
return;
|
||||
//initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||
}
|
||||
|
||||
//关键质量控制
|
||||
//获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff
|
||||
ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
|
||||
ImageCodecInfo ici = null, defCodecInfo = null;
|
||||
foreach (ImageCodecInfo i in icis)
|
||||
{
|
||||
if (i.MimeType == "image/jpeg")
|
||||
defCodecInfo = i;
|
||||
if ((exe == "jpg" || exe == "jpeg") && i.MimeType == "image/jpeg")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
if (exe == "bmp" && i.MimeType == "image/bmp")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
if (exe == "png" && i.MimeType == "image/png")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
if (exe == "gif" && i.MimeType == "image/gif")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
}
|
||||
if (ici == null)
|
||||
ici = defCodecInfo;
|
||||
EncoderParameters ep = new EncoderParameters(1);
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);
|
||||
|
||||
|
||||
//原始图片的宽、高
|
||||
int initWidth = initImage.Width;
|
||||
int initHeight = initImage.Height;
|
||||
int sizeW = 50, sizeH = 50;
|
||||
if (initWidth > initHeight)
|
||||
sizeW = 70;
|
||||
else
|
||||
sizeH = 70;
|
||||
width = initWidth - sizeW * 2;
|
||||
height = initHeight - sizeH * 2;
|
||||
|
||||
//FileBase.Delete(path);
|
||||
Image pickedImage = new Bitmap(width, height);
|
||||
Graphics pickedG = Graphics.FromImage(pickedImage);
|
||||
pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low;
|
||||
pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
|
||||
//定位
|
||||
Rectangle fromR = new Rectangle(sizeW - 20, sizeH, width, height);
|
||||
Rectangle toR = new Rectangle(0, 0, width, height);
|
||||
//画图
|
||||
pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
|
||||
//将截图对象赋给原图
|
||||
Image initImagex = (System.Drawing.Image)pickedImage.Clone();
|
||||
//释放截图资源
|
||||
pickedG.Dispose();
|
||||
pickedImage.Dispose();
|
||||
initImage.Clone();
|
||||
initImage.Dispose();
|
||||
try
|
||||
{
|
||||
initImagex.Save(fileSaveUrl, ici, ep);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add(e.Message);
|
||||
}
|
||||
//释放关键质量控制所用资源
|
||||
ep.Dispose();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否二维码
|
||||
/// </summary>
|
||||
/// <param name="strSavePath"></param>
|
||||
/// <returns></returns>
|
||||
public static bool GetErWeiMa(string strSavePath)
|
||||
{
|
||||
BarcodeReader reader = new BarcodeReader();
|
||||
FileStream fileStream = new FileStream(strSavePath, FileMode.Open, FileAccess.Read);
|
||||
try
|
||||
{
|
||||
Image initImage = Image.FromStream(fileStream);
|
||||
fileStream.Close();
|
||||
fileStream.Dispose();
|
||||
if (initImage.Width < 10 || initImage.Height < 10)
|
||||
return false;
|
||||
|
||||
Result result = reader.Decode((Bitmap)initImage);
|
||||
if (result == null || string.IsNullOrEmpty(result.Text))
|
||||
return false;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
FileBase.Delete(strSavePath);
|
||||
return true;
|
||||
//return result.Text;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否二维码
|
||||
/// </summary>
|
||||
/// <param name="strSavePath"></param>
|
||||
/// <returns></returns>
|
||||
public static bool GetErWeiMa(byte[] file, out int width, out int height)
|
||||
{
|
||||
|
||||
width = 0;
|
||||
height = 0;
|
||||
try
|
||||
{
|
||||
MemoryStream ms = new MemoryStream(file);
|
||||
Image initImage = Image.FromStream(ms);
|
||||
ms.Close();
|
||||
width = initImage.Width;
|
||||
height = initImage.Height;
|
||||
if (initImage.Width < 10 || initImage.Height < 10)
|
||||
{
|
||||
initImage = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
BarcodeReader reader = new BarcodeReader();
|
||||
Result result = reader.Decode((Bitmap)initImage);
|
||||
if (result == null || string.IsNullOrEmpty(result.Text))
|
||||
{
|
||||
reader = null;
|
||||
result = null;
|
||||
initImage = null;
|
||||
return false;
|
||||
}
|
||||
reader = null;
|
||||
result = null;
|
||||
initImage = null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
//return result.Text;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 正方型裁剪
|
||||
/// 以图片中心为轴心,截取正方型,然后等比缩放
|
||||
/// 用于头像处理
|
||||
/// </summary>
|
||||
/// <remarks>吴剑 2010-11-23</remarks>
|
||||
/// <param name="postedFile">原图HttpPostedFile对象</param>
|
||||
/// <param name="fileSaveUrl">缩略图存放地址</param>
|
||||
/// <param name="side">指定的边长(正方型)</param>
|
||||
/// <param name="quality">质量(范围0-100)</param>
|
||||
public static void CutForSquare(System.IO.Stream fromFile, string fileSaveUrl, int side, int quality)
|
||||
{
|
||||
//创建目录
|
||||
string dir = Path.GetDirectoryName(fileSaveUrl);
|
||||
if (!Directory.Exists(dir))
|
||||
Directory.CreateDirectory(dir);
|
||||
|
||||
//原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)
|
||||
System.Drawing.Image initImage = System.Drawing.Image.FromStream(fromFile, true);
|
||||
|
||||
//原图宽高均小于模版,不作处理,直接保存
|
||||
if (initImage.Width <= side && initImage.Height <= side)
|
||||
{
|
||||
initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||
}
|
||||
else
|
||||
{
|
||||
//原始图片的宽、高
|
||||
int initWidth = initImage.Width;
|
||||
int initHeight = initImage.Height;
|
||||
|
||||
//非正方型先裁剪为正方型
|
||||
if (initWidth != initHeight)
|
||||
{
|
||||
//截图对象
|
||||
System.Drawing.Image pickedImage = null;
|
||||
System.Drawing.Graphics pickedG = null;
|
||||
|
||||
//宽大于高的横图
|
||||
if (initWidth > initHeight)
|
||||
{
|
||||
//对象实例化
|
||||
pickedImage = new System.Drawing.Bitmap(initHeight, initHeight);
|
||||
pickedG = System.Drawing.Graphics.FromImage(pickedImage);
|
||||
//设置质量
|
||||
pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
||||
pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||
//定位
|
||||
Rectangle fromR = new Rectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight);
|
||||
Rectangle toR = new Rectangle(0, 0, initHeight, initHeight);
|
||||
//画图
|
||||
pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
|
||||
//重置宽
|
||||
initWidth = initHeight;
|
||||
}
|
||||
//高大于宽的竖图
|
||||
else
|
||||
{
|
||||
//对象实例化
|
||||
pickedImage = new System.Drawing.Bitmap(initWidth, initWidth);
|
||||
pickedG = System.Drawing.Graphics.FromImage(pickedImage);
|
||||
//设置质量
|
||||
pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
||||
pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||
//定位
|
||||
Rectangle fromR = new Rectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth);
|
||||
Rectangle toR = new Rectangle(0, 0, initWidth, initWidth);
|
||||
//画图
|
||||
pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
|
||||
//重置高
|
||||
initHeight = initWidth;
|
||||
}
|
||||
|
||||
//将截图对象赋给原图
|
||||
initImage = (System.Drawing.Image)pickedImage.Clone();
|
||||
//释放截图资源
|
||||
pickedG.Dispose();
|
||||
pickedImage.Dispose();
|
||||
}
|
||||
|
||||
//缩略图对象
|
||||
System.Drawing.Image resultImage = new System.Drawing.Bitmap(side, side);
|
||||
System.Drawing.Graphics resultG = System.Drawing.Graphics.FromImage(resultImage);
|
||||
//设置质量
|
||||
resultG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
||||
resultG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||
//用指定背景色清空画布
|
||||
resultG.Clear(Color.White);
|
||||
//绘制缩略图
|
||||
resultG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, side, side), new System.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel);
|
||||
|
||||
//关键质量控制
|
||||
//获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff
|
||||
ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
|
||||
ImageCodecInfo ici = null;
|
||||
foreach (ImageCodecInfo i in icis)
|
||||
{
|
||||
if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")
|
||||
{
|
||||
ici = i;
|
||||
}
|
||||
}
|
||||
EncoderParameters ep = new EncoderParameters(1);
|
||||
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);
|
||||
|
||||
//保存缩略图
|
||||
resultImage.Save(fileSaveUrl, ici, ep);
|
||||
|
||||
//释放关键质量控制所用资源
|
||||
ep.Dispose();
|
||||
|
||||
//释放缩略图资源
|
||||
resultG.Dispose();
|
||||
resultImage.Dispose();
|
||||
|
||||
//释放原始图片资源
|
||||
initImage.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 判断文件类型是否为WEB格式图片
|
||||
/// (注:JPG,GIF,BMP,PNG)
|
||||
/// </summary>
|
||||
/// <param name="contentType">HttpPostedFile.ContentType</param>
|
||||
/// <returns></returns>
|
||||
public static bool IsWebImage(string contentType)
|
||||
{
|
||||
if (contentType == "image/pjpeg" || contentType == "image/jpeg" || contentType == "image/gif" || contentType == "image/bmp" || contentType == "image/png")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 压缩图片获得图片MD5 32位指纹
|
||||
/// </summary>
|
||||
/// <param name="imgToResize"></param>
|
||||
/// <param name="width"></param>
|
||||
/// <param name="height"></param>
|
||||
/// <returns></returns>
|
||||
public static long ResizeImage(Image imgToResize, int width, int height)
|
||||
{
|
||||
try
|
||||
{
|
||||
int sourceWidth = imgToResize.Width;
|
||||
int sourceHeight = imgToResize.Height;
|
||||
float nPercent = 0;
|
||||
float nPercentW = 0;
|
||||
float nPercentH = 0;
|
||||
nPercentW = ((float)width / (float)sourceWidth);
|
||||
nPercentH = ((float)height / (float)sourceHeight);
|
||||
if (nPercentH < nPercentW)
|
||||
nPercent = nPercentH;
|
||||
else
|
||||
nPercent = nPercentW;
|
||||
int destWidth = (int)(sourceWidth * nPercent);
|
||||
int destHeight = (int)(sourceHeight * nPercent);
|
||||
Bitmap b = new Bitmap(destWidth, destHeight);
|
||||
Graphics g = Graphics.FromImage(b);
|
||||
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||
g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
|
||||
g.Dispose();
|
||||
imgToResize.Dispose();
|
||||
long md5 = ToGray(ref b, width, height);
|
||||
return md5;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add("计算图片指纹失败:"+e.Message);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图像灰度化,并计算指纹
|
||||
/// </summary>
|
||||
/// <param name="bmp"></param>
|
||||
/// <returns></returns>
|
||||
public static long ToGray(ref Bitmap bmp, int width, int height)
|
||||
{
|
||||
byte[] b = new byte[width * height];
|
||||
for (int i = 0; i < bmp.Width; i++)
|
||||
{
|
||||
for (int j = 0; j < bmp.Height; j++)
|
||||
{
|
||||
Color color = bmp.GetPixel(i, j);
|
||||
int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
|
||||
gray = gray / 16;
|
||||
b[i * bmp.Width + j] = (byte)gray;
|
||||
}
|
||||
}
|
||||
return BaseClass.GetLong(b);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理图片(四边裁剪+水印)
|
||||
/// </summary>
|
||||
/// <param name="bytesOld"></param>
|
||||
/// <param name="sWaterMark"></param>
|
||||
/// <returns></returns>
|
||||
public static void HandleImage(ref byte[] bytesOld,bool flag)
|
||||
{
|
||||
try
|
||||
{
|
||||
Image img = BytesToImage(ref bytesOld);
|
||||
int iniWidth = img.Width;
|
||||
int iniHeight = img.Height;
|
||||
|
||||
Random random = new Random();
|
||||
|
||||
int cutPixl = random.Next(1, 50); //左边切除的像素
|
||||
int cutPixr = random.Next(1, 50); //右边切除的像素
|
||||
int cutPixt = random.Next(1, 50); //顶部切除的像素
|
||||
int cutPixb = random.Next(1, 50); //底部切除的像素
|
||||
|
||||
if (!flag)
|
||||
{
|
||||
cutPixl = 0; //左边切除的像素
|
||||
cutPixr = 0; //右边切除的像素
|
||||
cutPixt = 0; //顶部切除的像素
|
||||
cutPixb = 0; //底部切除的像素
|
||||
}
|
||||
|
||||
Bitmap bitmap = CutImage(ref bytesOld, cutPixl, cutPixr, iniWidth - cutPixl - cutPixt, iniHeight - cutPixr - cutPixb);
|
||||
if(bitmap==null)
|
||||
return;
|
||||
MemoryStream ms = new MemoryStream();
|
||||
ImageCodecInfo icc = GetEncoderInfo("image/jpeg");
|
||||
EncoderParameters ep = new EncoderParameters(1)
|
||||
{
|
||||
Param = { [0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75l) }
|
||||
};
|
||||
bitmap.Save(ms, icc, ep);
|
||||
bytesOld = ms.ToArray();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 字节数组转换为图片
|
||||
/// </summary>
|
||||
/// <param name="buffer">字节数组</param>
|
||||
/// <returns>图片</returns>
|
||||
public static Image BytesToImage(ref byte[] buffer)
|
||||
{
|
||||
var ms = new MemoryStream(buffer, 0, buffer.Length);
|
||||
return Image.FromStream(ms);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 裁剪图片四边
|
||||
/// </summary>
|
||||
/// <param name="bytes">原始图片字节流</param>
|
||||
/// <param name="iStartX">裁剪开始x坐标</param>
|
||||
/// <param name="iStartY">裁剪开始y坐标</param>
|
||||
/// <param name="iWidth">裁剪宽度</param>
|
||||
/// <param name="iHeight">裁剪高度</param>
|
||||
/// <returns></returns>
|
||||
public static Bitmap CutImage(ref byte[] bytes, int iStartX, int iStartY, int iWidth, int iHeight)
|
||||
{
|
||||
try
|
||||
{
|
||||
Image image = BytesToImage(ref bytes);
|
||||
Bitmap b = new Bitmap(image);
|
||||
if (bytes == null) return null;
|
||||
Bitmap bmpOut = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb);
|
||||
Graphics g = Graphics.FromImage(bmpOut);
|
||||
g.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(iStartX, iStartY, iWidth, iHeight), GraphicsUnit.Pixel);
|
||||
g.Dispose();
|
||||
return bmpOut;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static ImageCodecInfo GetEncoderInfo(string mimeType)
|
||||
{
|
||||
int j;
|
||||
ImageCodecInfo[] encoders;
|
||||
encoders = ImageCodecInfo.GetImageEncoders();
|
||||
for (j = 0; j < encoders.Length; ++j)
|
||||
{
|
||||
if (encoders[j].MimeType == mimeType)
|
||||
return encoders[j];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using ZXing;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class ImageErWeiMa
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否二维码
|
||||
/// </summary>
|
||||
/// <param name="strSavePath"></param>
|
||||
/// <returns></returns>
|
||||
public bool GetErWeiMa(byte[] file, out int width, out int height, out Image initImage)
|
||||
{
|
||||
initImage = null;
|
||||
width = 0;
|
||||
height = 0;
|
||||
try
|
||||
{
|
||||
MemoryStream ms = new MemoryStream(file);
|
||||
initImage = Image.FromStream(ms);
|
||||
ms.Close();
|
||||
width = initImage.Width;
|
||||
height = initImage.Height;
|
||||
if (initImage.Width < 10 || initImage.Height < 10)
|
||||
{
|
||||
initImage = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
BarcodeReader reader = new BarcodeReader();
|
||||
Result result = reader.Decode((Bitmap)initImage);
|
||||
if (result == null || string.IsNullOrEmpty(result.Text))
|
||||
{
|
||||
reader = null;
|
||||
result = null;
|
||||
//initImage = null;
|
||||
return false;
|
||||
}
|
||||
reader = null;
|
||||
result = null;
|
||||
initImage = null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
/*
|
||||
* json 帮助类
|
||||
* 肖俊
|
||||
* 2017-7-11
|
||||
*
|
||||
*/
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Json帮助类
|
||||
/// </summary>
|
||||
public static class JsonHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 将对象序列化为JSON格式
|
||||
/// </summary>
|
||||
/// <param name="o">对象</param>
|
||||
/// <returns>json字符串</returns>
|
||||
public static string SerializeObject(object o)
|
||||
{
|
||||
//if (o == null)
|
||||
// return "{}";
|
||||
string json = JsonConvert.SerializeObject(o);
|
||||
return json;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解析JSON字符串生成对象实体
|
||||
/// </summary>
|
||||
/// <typeparam name="T">对象类型</typeparam>
|
||||
/// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param>
|
||||
/// <returns>对象实体</returns>
|
||||
public static T DeserializeJsonToObject<T>(string json) where T : class
|
||||
{
|
||||
JsonSerializer serializer = new JsonSerializer();
|
||||
StringReader sr = new StringReader(json);
|
||||
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
|
||||
T t = o as T;
|
||||
return t;
|
||||
}
|
||||
|
||||
public static T DeserializeJsonToObjectNullable<T>(string json) where T : class
|
||||
{
|
||||
try
|
||||
{
|
||||
JsonSerializer serializer = new JsonSerializer();
|
||||
StringReader sr = new StringReader(json);
|
||||
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
|
||||
T t = o as T;
|
||||
return t;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static JObject JObjectParse(string json)
|
||||
{
|
||||
try
|
||||
{
|
||||
JObject obj = JObject.Parse(json);
|
||||
return obj;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解析JSON数组生成对象实体集合
|
||||
/// </summary>
|
||||
/// <typeparam name="T">对象类型</typeparam>
|
||||
/// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param>
|
||||
/// <returns>对象实体集合</returns>
|
||||
public static List<T> DeserializeJsonToList<T>(string json) where T : class
|
||||
{
|
||||
JsonSerializer serializer = new JsonSerializer();
|
||||
StringReader sr = new StringReader(json);
|
||||
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));
|
||||
List<T> list = o as List<T>;
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List<T> DeserializeJsonToListNullable<T>(string json) where T : class
|
||||
{
|
||||
try
|
||||
{
|
||||
JsonSerializer serializer = new JsonSerializer();
|
||||
StringReader sr = new StringReader(json);
|
||||
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));
|
||||
List<T> list = o as List<T>;
|
||||
return list;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 反序列化JSON到给定的匿名对象.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">匿名对象类型</typeparam>
|
||||
/// <param name="json">json字符串</param>
|
||||
/// <param name="anonymousTypeObject">匿名对象</param>
|
||||
/// <returns>匿名对象</returns>
|
||||
public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)
|
||||
{
|
||||
T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,253 +0,0 @@
|
||||
/*
|
||||
* 日志记录
|
||||
* 肖俊
|
||||
* 2015-3-13
|
||||
*/
|
||||
|
||||
using NaiBa.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public class LogSave
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息日志
|
||||
/// </summary>
|
||||
public static Dictionary<string, List<string>> Messages = new Dictionary<string, List<string>>();
|
||||
|
||||
/// <summary>
|
||||
/// 日志队列
|
||||
/// </summary>
|
||||
private static ConcurrentList<string> Logs = new ConcurrentList<string>();
|
||||
|
||||
/// <summary>
|
||||
/// 准备写入文件
|
||||
/// </summary>
|
||||
public static List<string> ImageTemp = new List<string>();
|
||||
/// <summary>
|
||||
/// 初始化
|
||||
/// </summary>
|
||||
public LogSave()
|
||||
{
|
||||
FileBase.DirectoryCreate(Application.StartupPath + "\\log\\");
|
||||
FileBase.DirectoryCreate(Application.StartupPath + "\\temp\\");
|
||||
FileBase.DirectoryCreate(Application.StartupPath + "\\temp\\content\\");
|
||||
FileBase.DirectoryCreate(Application.StartupPath + "\\temp\\desc\\");
|
||||
|
||||
string[] l = Directory.GetFiles(Application.StartupPath + "\\log\\");
|
||||
for (int i = 0; i < l.Length; i++)
|
||||
{
|
||||
string name = Path.GetFileName(l[i]);
|
||||
string date = BaseRegex.GetMatchRegexString(ref name, @"([\d]{4}-[\d]{1,2}-[\d]{1,2})");
|
||||
DateTime d;
|
||||
if (DateTime.TryParse(date, out d))
|
||||
{
|
||||
if (d<DateTime.Now.AddDays(-7))
|
||||
{
|
||||
FileBase.Delete(l[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void AddFile(string message)
|
||||
{
|
||||
string patch = "log\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
|
||||
try
|
||||
{
|
||||
File.AppendAllText(patch, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n" + message + "\r\n");
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
public static void ClearFile()
|
||||
{
|
||||
FileBase.DirectoryCreate(Application.StartupPath + "\\log\\");
|
||||
string[] l = Directory.GetFiles(Application.StartupPath + "\\log\\");
|
||||
for (int i = 0; i < l.Length; i++)
|
||||
{
|
||||
string name = Path.GetFileName(l[i]);
|
||||
string date = BaseRegex.GetMatchRegexString(ref name, @"([\d]{4}-[\d]{1,2}-[\d]{1,2})");
|
||||
DateTime d;
|
||||
if (DateTime.TryParse(date, out d))
|
||||
{
|
||||
if (d < DateTime.Now.AddDays(-7))
|
||||
{
|
||||
FileBase.Delete(l[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 服务
|
||||
/// </summary>
|
||||
public void Get()
|
||||
{
|
||||
string temp;
|
||||
while (true)
|
||||
{
|
||||
if (Logs.Count == 0 && ImageTemp.Count==0)
|
||||
{
|
||||
Thread.Sleep(10000);
|
||||
continue;
|
||||
}
|
||||
StringBuilder s = new StringBuilder();
|
||||
while (ImageTemp.Count>0)
|
||||
{
|
||||
string it = ImageTemp[0];
|
||||
ImageTemp.RemoveAt(0);
|
||||
if (string.IsNullOrEmpty(it))
|
||||
continue;
|
||||
s.AppendLine(it);
|
||||
}
|
||||
string image = s.ToString();
|
||||
if (image.Length > 0)
|
||||
FileBase.AppendAllText("image/" + BaseClass.ShopName+".tjm", image, Encoding.Default);
|
||||
temp = "";
|
||||
while (Logs.Count>0)
|
||||
{
|
||||
try
|
||||
{
|
||||
temp += Logs[0] + "\r\n";
|
||||
Logs.RemoveAt(0);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
if(string.IsNullOrEmpty(temp))
|
||||
continue;
|
||||
string patch = "log\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
|
||||
try
|
||||
{
|
||||
File.AppendAllText(patch, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") +"\r\n"+ temp);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if(e.Message.Contains("空间"))
|
||||
return;
|
||||
Thread.Sleep(500);//重试一次
|
||||
try
|
||||
{
|
||||
File.AppendAllText(patch, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n" + temp);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
BaseClass.ViewCode += "写入IIS日志:" + patch + " 发生错误:"+e.Message+"\r\n";
|
||||
}
|
||||
}
|
||||
Thread.Sleep(120*1000);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加日志
|
||||
/// </summary>
|
||||
/// <param name="message">日志</param>
|
||||
public static void Add(string message)
|
||||
{
|
||||
BaseClass.ViewCode += message + "\r\n";
|
||||
if (Logs.Count > 5000)
|
||||
{
|
||||
//BaseClass.ViewCode += "日志队列超长,请检查日志处理\r\n";
|
||||
Logs.Clear();
|
||||
return;
|
||||
}
|
||||
Logs.Add(message);
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加日志
|
||||
/// </summary>
|
||||
/// <param name="Name">名称</param>
|
||||
/// <param name="message">日志</param>
|
||||
public static void Add(string Name,string message)
|
||||
{
|
||||
if (string.IsNullOrEmpty(Name))
|
||||
{
|
||||
Logs.Add(message);
|
||||
return;
|
||||
}
|
||||
if (!Messages.ContainsKey(Name))
|
||||
{
|
||||
try
|
||||
{
|
||||
Messages.Add(Name, new List<string>());
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
Logs.Add(message);
|
||||
Messages[Name].Add(message);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加到显示
|
||||
/// </summary>
|
||||
/// <param name="message">日志</param>
|
||||
public static void AddView(string message)
|
||||
{
|
||||
BaseClass.ViewCode += message + "\r\n";
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置最大值
|
||||
/// </summary>
|
||||
/// <param name="name">名称</param>
|
||||
/// <param name="max">最大值</param>
|
||||
public static void SetProccessMax(string name, int max)
|
||||
{
|
||||
if (!BaseClass.ProcessList.ContainsKey(name))
|
||||
{
|
||||
try
|
||||
{
|
||||
BaseClass.ProcessList.Add(name,new ProcessBase());
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
BaseClass.ProcessList[name].Max = max;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置当前值
|
||||
/// </summary>
|
||||
/// <param name="name">名称</param>
|
||||
/// <param name="value">当前值</param>
|
||||
public static void SetProccessValue(string name, int value)
|
||||
{
|
||||
if (!BaseClass.ProcessList.ContainsKey(name))
|
||||
{
|
||||
try
|
||||
{
|
||||
BaseClass.ProcessList.Add(name, new ProcessBase());
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
BaseClass.ProcessList[name].Value = value;
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置为最大值,完成
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
public static void SetProccessFinish(string name)
|
||||
{
|
||||
BaseClass.ProcessList[name].Value = BaseClass.ProcessList[name].Max;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,215 +0,0 @@
|
||||
/*
|
||||
* MD5加密
|
||||
* 肖俊
|
||||
* 2013-6-7
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace AllBase
|
||||
{
|
||||
public static class Md5Base
|
||||
{
|
||||
/// <summary>
|
||||
/// MD5加密
|
||||
/// </summary>
|
||||
/// <param name="instring"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetMd5(string instring)
|
||||
{
|
||||
byte[] result = Encoding.UTF8.GetBytes(string.IsNullOrEmpty(instring)?"": instring.Trim());
|
||||
MD5 md5 = new MD5CryptoServiceProvider();
|
||||
byte[] output = md5.ComputeHash(result);
|
||||
return BitConverter.ToString(output).Replace("-", "");
|
||||
}
|
||||
/// <summary>
|
||||
/// MD5加密
|
||||
/// </summary>
|
||||
/// <param name="instring"></param>
|
||||
/// <returns></returns>
|
||||
//public static string GetMd5X16(string instring)
|
||||
//{
|
||||
// string temp = GetMd5(instring);
|
||||
// return temp.Substring(8, 16);
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// MD5加密
|
||||
/// </summary>
|
||||
/// <param name="instring"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetMd5X15(string instring)
|
||||
{
|
||||
string temp = GetMd5(instring);
|
||||
return temp.Substring(8, 15);
|
||||
}
|
||||
/// <summary>
|
||||
/// 解码
|
||||
/// </summary>
|
||||
/// <param name="code"></param>
|
||||
/// <returns></returns>
|
||||
public static string DecodeString(string code)
|
||||
{
|
||||
try
|
||||
{
|
||||
string code1 =
|
||||
code.Trim().Replace("_1/", "c")
|
||||
.Replace("_2/", "Y")
|
||||
.Replace("_3/", "A")
|
||||
.Replace("_4/", "Z")
|
||||
.Replace("_5/", "h")
|
||||
.Replace("_6/", "n")
|
||||
.Replace("_7/", "I")
|
||||
.Replace("_8/", "l")
|
||||
.Replace("_9/", "t")
|
||||
.Replace("_10/", "e")
|
||||
.Replace("_11/", "K")
|
||||
.Replace("_12/", "r")
|
||||
.Replace("_13/", "o")
|
||||
.Replace("_14/", "q")
|
||||
.Replace("_15/", "W")
|
||||
.Replace("_16/", "+")
|
||||
.Replace("_17/", "H")
|
||||
.Replace("_18/", "m")
|
||||
.Replace("_19/", "F")
|
||||
.Replace("_20/", "x")
|
||||
.Replace("_21/", "v")
|
||||
.Replace("_22/", "B")
|
||||
.Replace("_23/", "=")
|
||||
.Replace("_0/", "_");
|
||||
byte[] inArray = Convert.FromBase64String(code1);
|
||||
string html = Encoding.UTF8.GetString(inArray);
|
||||
html =
|
||||
html.Replace("_1_", "=")
|
||||
.Replace("_2_", "?")
|
||||
.Replace("_3_", "/")
|
||||
.Replace("_4_", ".")
|
||||
.Replace("_5_", "&")
|
||||
.Replace("_6_", "<")
|
||||
.Replace("_7_", ">")
|
||||
.Replace("_8_", "'")
|
||||
.Replace("_9_", "\"")
|
||||
.Replace("_", "_0");
|
||||
return html;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogSave.Add("解码数据错误:"+code);
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加密返回数据
|
||||
/// </summary>
|
||||
/// <param name="html">密文</param>
|
||||
/// <returns></returns>
|
||||
public static string EncodeString(string html)
|
||||
{
|
||||
if (string.IsNullOrEmpty(html))
|
||||
return "";
|
||||
html =
|
||||
html.Replace("_0", "_")
|
||||
.Replace("=", "_1_")
|
||||
.Replace("?", "_2_")
|
||||
.Replace("/", "_3_")
|
||||
.Replace(".", "_4_")
|
||||
.Replace("&", "_5_")
|
||||
.Replace("\\", "_6_")
|
||||
.Replace(">", "_7_")
|
||||
.Replace("'", "_8_")
|
||||
.Replace("\"", "_9_");
|
||||
string code = Base64Encode.EncodeBase64(html);
|
||||
code =
|
||||
code.Replace("c", "_1_")
|
||||
.Replace("Y", "_2_")
|
||||
.Replace("A", "_3_")
|
||||
.Replace("Z", "_4_")
|
||||
.Replace("h", "_5_")
|
||||
.Replace("n", "_6_")
|
||||
.Replace("I", "_7_")
|
||||
.Replace("o", "_8_")
|
||||
.Replace("t", "_9_")
|
||||
.Replace("=", "_0_");
|
||||
return code;
|
||||
}
|
||||
|
||||
|
||||
#region EBFB8THEA 加密
|
||||
public static string _KEY = "XNNRSAA1"; //密钥
|
||||
public static string _IV = "RSABPDD2"; //向量
|
||||
|
||||
/// <summary>
|
||||
/// 加密
|
||||
/// </summary>
|
||||
/// <param name="data">需要加密的文本</param>
|
||||
/// <returns></returns>
|
||||
public static string EncryptEncode(string data)
|
||||
{
|
||||
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(_KEY);
|
||||
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(_IV);
|
||||
|
||||
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
|
||||
int i = cryptoProvider.KeySize;
|
||||
MemoryStream ms = new MemoryStream();
|
||||
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
|
||||
|
||||
StreamWriter sw = new StreamWriter(cst);
|
||||
sw.Write(data);
|
||||
sw.Flush();
|
||||
cst.FlushFinalBlock();
|
||||
sw.Flush();
|
||||
string strRet = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
|
||||
|
||||
sw.Dispose();
|
||||
sw.Close();
|
||||
cst.Dispose();
|
||||
cst.Close();
|
||||
ms.Dispose();
|
||||
ms.Close();
|
||||
return strRet;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解密
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string EncryptDecode(string data)
|
||||
{
|
||||
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(_KEY);
|
||||
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(_IV);
|
||||
byte[] byEnc;
|
||||
|
||||
try
|
||||
{
|
||||
data.Replace("_%_", "/");
|
||||
data.Replace("-%-", "#");
|
||||
byEnc = Convert.FromBase64String(data);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
|
||||
MemoryStream ms = new MemoryStream(byEnc);
|
||||
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
|
||||
StreamReader sr = new StreamReader(cst);
|
||||
var result = sr.ReadToEnd();
|
||||
|
||||
sr.Dispose();
|
||||
sr.Close();
|
||||
cst.Dispose();
|
||||
cst.Close();
|
||||
ms.Dispose();
|
||||
ms.Close();
|
||||
|
||||
return result;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Config
|
||||
{
|
||||
public class WxShopKfStatistics
|
||||
{
|
||||
public string ShopId { get; set; }
|
||||
//public List
|
||||
|
||||
/// <summary>
|
||||
/// 咨询用户数
|
||||
/// </summary>
|
||||
public int? user_cnt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 咨询会话数
|
||||
/// </summary>
|
||||
public int? sesseion_cnt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 不回复率
|
||||
/// </summary>
|
||||
public decimal? service_noreply_ratio { get; set; }
|
||||
|
||||
public decimal? service_reply_ratio { get { return 1m - service_noreply_ratio; } }
|
||||
|
||||
/// <summary>
|
||||
/// 回复数量 不准
|
||||
/// </summary>
|
||||
public int? replyUserCount { get { return user_cnt - (user_cnt * service_noreply_ratio + 0.1m).ParseToInt(); } }
|
||||
|
||||
//cardResp {
|
||||
// ...
|
||||
// objects {
|
||||
// tableValueLine [
|
||||
// {
|
||||
// "columnValue": [
|
||||
// 1769011200, // 开始时间
|
||||
// "3", // 咨询用户数
|
||||
// "5", // 咨询会话数
|
||||
// "0.5", // 3分钟人工回复率
|
||||
// "4429", // 平均回复时长
|
||||
// "0.333333", // 不回复率
|
||||
// "1" // 用户满意率
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -1,168 +0,0 @@
|
||||
using AllBase.Model.Result.WXResult;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Config
|
||||
{
|
||||
public class WxShopMainStatisticsInfo
|
||||
{
|
||||
public int? code { get; set; } // 0,
|
||||
/// <summary>
|
||||
/// 待发货
|
||||
/// </summary>
|
||||
public MainStatisticsInfoRet orderNumRet { get; set; }
|
||||
/// <summary>
|
||||
/// 物流异常
|
||||
/// </summary>
|
||||
public MainStatisticsInfoRet waybillErrorRet { get; set; }
|
||||
/// <summary>
|
||||
/// 售后
|
||||
/// </summary>
|
||||
public MainStatisticsInfoRet aftersaleAllRet { get; set; }
|
||||
/// <summary>
|
||||
/// 服务保障
|
||||
/// </summary>
|
||||
public MainStatisticsInfoRet guaranteeRet { get; set; }
|
||||
/// <summary>
|
||||
/// 店铺预警
|
||||
/// </summary>
|
||||
public MainStatisticsInfoRet prewarnRet { get; set; }
|
||||
/// <summary>
|
||||
/// 店铺违规
|
||||
/// </summary>
|
||||
public MainStatisticsInfoRet punishRet { get; set; }
|
||||
/// <summary>
|
||||
/// 工单
|
||||
/// </summary>
|
||||
public MainStatisticsInfoRet mchUndealRet { get; set; }
|
||||
|
||||
public DateTime LastRefreshDate { get; set; }
|
||||
}
|
||||
|
||||
public class MainStatisticsInfoRet
|
||||
{
|
||||
//orderNumRet-pendingShipNum待发货 waybillErrorRet物流异常 aftersaleAllRet售后 guaranteeRet服务保障 prewarnRet店铺预警 punishRet店铺违规 mchUndealRet工单
|
||||
public int? code { get; set; } // 0
|
||||
public int? totalNum { get; set; } // 0
|
||||
public int? pendingNum { get; set; } // 1
|
||||
public int? pendingShipNum { get; set; } // 1
|
||||
public int? waitStatusCount { get; set; } // 0
|
||||
public int? num
|
||||
{
|
||||
get
|
||||
{
|
||||
if (totalNum != null)
|
||||
return totalNum;
|
||||
if (pendingNum != null)
|
||||
return pendingNum;
|
||||
if (pendingShipNum != null)
|
||||
return pendingShipNum;
|
||||
if (waitStatusCount != null)
|
||||
return waitStatusCount;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class WxShopSaleStatisticsGroup
|
||||
{
|
||||
public string ShopId { get; set; }
|
||||
public string ShopAccount { get; set; }
|
||||
public string Notes { get; set; }
|
||||
public string GroupName { get; set; }
|
||||
|
||||
public int? ProdCount { get; set; }
|
||||
public decimal? curScoreValue {get;set;}
|
||||
public DSRShopScoreRetInfo scoreRetInfo { get; set; } = new DSRShopScoreRetInfo();
|
||||
public DateTime lastRefreshDate { get; set; } = DateTime.MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// 主页店铺信息
|
||||
/// </summary>
|
||||
public WxShopMainStatisticsInfo WxShopMainInfo { get; set; } = new WxShopMainStatisticsInfo();
|
||||
/// <summary>
|
||||
/// 主页今日店铺经营信息
|
||||
/// </summary>
|
||||
public WxShopSaleStatisticsInfo WxShopSaleInfoToday { get; set; } = new WxShopSaleStatisticsInfo();
|
||||
/// <summary>
|
||||
/// 主页昨日店铺经营信息
|
||||
/// </summary>
|
||||
public WxShopSaleStatisticsInfo WxShopSaleInfo1Day { get; set; } = new WxShopSaleStatisticsInfo();
|
||||
/// <summary>
|
||||
/// 主页近7日店铺经营信息
|
||||
/// </summary>
|
||||
public WxShopSaleStatisticsInfo WxShopSaleInfo7Day { get; set; } = new WxShopSaleStatisticsInfo();
|
||||
/// <summary>
|
||||
/// 主页近30日店铺经营信息
|
||||
/// </summary>
|
||||
public WxShopSaleStatisticsInfo WxShopSaleInfo30Day { get; set; } = new WxShopSaleStatisticsInfo();
|
||||
|
||||
public WxAmount WxShopAmount { get; set; } = new WxAmount();
|
||||
|
||||
public string err_msg;
|
||||
}
|
||||
|
||||
public class WxShopSaleStatisticsInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 成交金额
|
||||
/// </summary>
|
||||
public string pay_gmv { get; set; } // "118574",
|
||||
public string pay_gmv_tb { get; set; } // "",
|
||||
public string pay_gmv_ind { get; set; } // "0.461936",
|
||||
/// <summary>
|
||||
/// 成交人数
|
||||
/// </summary>
|
||||
public string pay_uv { get; set; } // "47",
|
||||
public string pay_uv_tb { get; set; } // "",
|
||||
public string pay_uv_ind { get; set; } // "0.583592",
|
||||
/// <summary>
|
||||
/// 成交订单数
|
||||
/// </summary>
|
||||
public string pay_order_cnt { get; set; } // "50",
|
||||
public string pay_order_cnt_tb { get; set; } // "",
|
||||
public string pay_order_cnt_ind { get; set; } // "0.57901",
|
||||
/// <summary>
|
||||
/// 成交退款金额
|
||||
/// </summary>
|
||||
public string pay_refund_gmv { get; set; } // "6272",
|
||||
public string pay_refund_gmv_tb { get; set; } // "",
|
||||
public string pay_refund_gmv_ind { get; set; } // "0.411973",
|
||||
/// <summary>
|
||||
/// 商品点击人数
|
||||
/// </summary>
|
||||
public string product_click_uv { get; set; } // "368",
|
||||
public string product_click_uv_tb { get; set; } // "",
|
||||
public string product_click_uv_ind { get; set; } // "0.56263"
|
||||
|
||||
public DateTime LastRefreshDate { get; set; }
|
||||
}
|
||||
|
||||
public class WxAmount
|
||||
{
|
||||
/// <summary>
|
||||
/// 总货款
|
||||
/// </summary>
|
||||
public int? totalAmount { get; set; }
|
||||
/// <summary>
|
||||
/// 可提现
|
||||
/// </summary>
|
||||
public int? availableAmount { get; set; }
|
||||
/// <summary>
|
||||
/// 待结算
|
||||
/// </summary>
|
||||
public int? pendingAmount { get; set; }
|
||||
|
||||
public int? tempFrozenAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 保证金,在另一个接口获取
|
||||
/// </summary>
|
||||
public int? DepositBalance { get; set; }
|
||||
|
||||
public DateTime LastRefreshDate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Config
|
||||
{
|
||||
public class WxShopUploadInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 日提审数量
|
||||
/// </summary>
|
||||
public Dictionary<int, int> DicDaySubmitCount { get; set; } = new Dictionary<int, int>();
|
||||
/// <summary>
|
||||
/// 日上货数量
|
||||
/// </summary>
|
||||
public Dictionary<int, int> DicDayUploadCount
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!dicDayUploadCount.ContainsKey(DateTime.Now.ToString("yyyyMMdd").ParseToInt()))
|
||||
dicDayUploadCount[DateTime.Now.ToString("yyyyMMdd").ParseToInt()] = 0;
|
||||
return dicDayUploadCount;
|
||||
}
|
||||
set { dicDayUploadCount = value; }
|
||||
}
|
||||
Dictionary<int, int> dicDayUploadCount = new Dictionary<int, int>();
|
||||
|
||||
/// <summary>
|
||||
/// 在售商品数
|
||||
/// </summary>
|
||||
public int OnSaleCount { get { return OnSaleRefreshDay == DateTime.Now.ToString("yyyyMMdd").ParseToInt() ? onSaleCount : 0; } set { onSaleCount = value; } }
|
||||
int onSaleCount = 0;
|
||||
/// <summary>
|
||||
/// 刷新在售商品时间
|
||||
/// </summary>
|
||||
|
||||
public int OnSaleRefreshDay { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Config
|
||||
{
|
||||
public class WxTalkFormShopMainInfo
|
||||
{
|
||||
// waybillErrorRet物流异常
|
||||
public string ShopId { get; set; }
|
||||
/// <summary>
|
||||
/// 待发货 orderNumRet.pendingShipNum
|
||||
/// </summary>
|
||||
public int? WaitSendCount { get; set; }
|
||||
/// <summary>
|
||||
/// 物流异常 waybillErrorRet.totalNum
|
||||
/// </summary>
|
||||
public int? WaybillError { get; set; }
|
||||
/// <summary>
|
||||
/// 售后 aftersaleAllRet.totalNum
|
||||
/// </summary>
|
||||
public int? AfterSaleCount { get; set; }
|
||||
/// <summary>
|
||||
/// 店铺违规 punishRet.pendingNum
|
||||
/// </summary>
|
||||
public int? PunishCount { get; set; }
|
||||
|
||||
public decimal? ShopScore { get; set; }
|
||||
public string err_msg { get; set; }
|
||||
public DateTime RefreshTime { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.DBModel
|
||||
{
|
||||
public class oem
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string oem_id { get; set; }
|
||||
public string oem_name { get; set; }
|
||||
public string oem_owner { get; set; }
|
||||
public string oem_icon { get; set; }
|
||||
public string oem_img { get; set; }
|
||||
public DateTime add_time { get; set; }
|
||||
public DateTime mdy_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.DBModel
|
||||
{
|
||||
|
||||
public class oms_wei_external_procurement_log
|
||||
{
|
||||
public oms_wei_order oms_Wei_Order { get; set; }
|
||||
|
||||
public string OutOrderNumStr
|
||||
{
|
||||
get { return "采购单号:" + out_order_no; }
|
||||
set { }
|
||||
}
|
||||
public string OutOrderBuyerStr
|
||||
{
|
||||
get { return "采购账户:" + buyer_account; }
|
||||
set { }
|
||||
}
|
||||
|
||||
|
||||
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; }
|
||||
public string express_1_company { get; set; }
|
||||
public string express_1_waybill { get; set; }
|
||||
public string express_2_company { get; set; }
|
||||
public string express_2_waybill { get; set; }
|
||||
public string refund_status { get; set; }
|
||||
public DateTime pickup_time { get; set; }
|
||||
/// <summary>
|
||||
/// 中转仓状态:0 未使用,1 已创建,2 创建失败,3 处理中(业务方根据此字段处理中转流程)
|
||||
/// 使用此字段判断中转仓库是否已取号
|
||||
/// </summary>
|
||||
public int? transfer_warehouse_status { get; set; }
|
||||
public string raw_message { get; set; }
|
||||
public DateTime created_time { get; set; }
|
||||
public DateTime updated_time { get; set; }
|
||||
public string platform { get; set; }
|
||||
public string order_platform_code { get; set; }
|
||||
/// <summary>
|
||||
/// 唯一值编码,一般为外采单号
|
||||
/// </summary>
|
||||
public string order_code { get; set; }
|
||||
/// <summary>
|
||||
/// 取号状态 1 正常取号 2提前取号 3已更正 (已修改提前取号为正常取号)
|
||||
/// 使用此字段判断取号状态,如果是提前取号,需要修改新的物流单号,此时服务端状态将替换为已更正
|
||||
/// </summary>
|
||||
public int? pre_allocated_order_no { get; set; }
|
||||
public int? is_transfer_ship { get; set; }
|
||||
public string random_code { get; set; }
|
||||
public int has_reject { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,246 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.DBModel
|
||||
{
|
||||
public class oms_wei_order
|
||||
{
|
||||
public long id { get; set; }
|
||||
public long shop_id { get; set; }
|
||||
public string shop_name { get; set; }
|
||||
/// <summary>
|
||||
/// 商户ID
|
||||
/// </summary>
|
||||
public long merchant_id { get; set; }
|
||||
public string order_id { get; set; }
|
||||
/// <summary>
|
||||
/// 买家身份标识
|
||||
/// </summary>
|
||||
public string openid { get; set; }
|
||||
public int create_time { get; set; }
|
||||
public int update_time { get; set; }
|
||||
public string unionid { get; set; }
|
||||
/// <summary>
|
||||
/// 状态10 待付款;20 待发货;21 部分发货;30 待收货;100 完成;200 全部商品售后之后,订单取消;250 未付款用户主动取消或超时未付款订单自动取消;
|
||||
/// </summary>
|
||||
public int? status { get; set; }
|
||||
/// <summary>
|
||||
/// 售后信息json
|
||||
/// </summary>
|
||||
public string aftersale_detail { get; set; }
|
||||
/// <summary>
|
||||
/// 支付信息
|
||||
/// </summary>
|
||||
public string pay_info { get; set; }
|
||||
/// <summary>
|
||||
/// 额外信息
|
||||
/// </summary>
|
||||
public string ext_info { get; set; }
|
||||
/// <summary>
|
||||
/// 商品总价
|
||||
/// </summary>
|
||||
public int? product_price { get; set; }
|
||||
/// <summary>
|
||||
/// 订单金额,单位为分,order_price=original_order_price-discounted_price-deduction_price-change_down_price
|
||||
/// </summary>
|
||||
public int? order_price { get; set; }
|
||||
/// <summary>
|
||||
/// 采购价,单位为分
|
||||
/// </summary>
|
||||
public int? purchase_price { get; set; }
|
||||
/// <summary>
|
||||
/// 采购时间
|
||||
/// </summary>
|
||||
public int? purchase_time { get; set; }
|
||||
/// <summary>
|
||||
/// 运费,单位为分
|
||||
/// </summary>
|
||||
public int? freight { get; set; }
|
||||
/// <summary>
|
||||
/// 平台服务费(微信小店:预计技术服务费),单位为分
|
||||
/// </summary>
|
||||
public int? predict_commission_fee { get; set; }
|
||||
/// <summary>
|
||||
/// 达人佣金(微信小店:分账金额),单位为分
|
||||
/// </summary>
|
||||
public int? commission_amount { get; set; }
|
||||
/// <summary>
|
||||
/// 优惠券优惠金额,单位为分
|
||||
/// </summary>
|
||||
public int? discounted_price { get; set; }
|
||||
/// <summary>
|
||||
/// 利润(实付金额-采购价-平台服务费-达人佣金,达人佣金、采购价为空值则为0)
|
||||
/// </summary>
|
||||
public int? profit { get; set; }
|
||||
/// <summary>
|
||||
/// 采购状态,默认值为:0未采购,推送仓库时修改为1采购
|
||||
/// </summary>
|
||||
public int? purchase_status { get; set; }
|
||||
/// <summary>
|
||||
/// 延迟发货时间(微信小店:商品发货时效,超时此时间未发货即为发货超时)
|
||||
/// </summary>
|
||||
public int? delivery_deadline { get; set; }
|
||||
/// <summary>
|
||||
/// 发货时间
|
||||
/// </summary>
|
||||
public int? delivery_time { get; set; }
|
||||
/// <summary>
|
||||
/// 收货人姓名
|
||||
/// </summary>
|
||||
public string user_name { get; set; }
|
||||
/// <summary>
|
||||
/// 邮编
|
||||
/// </summary>
|
||||
public string postal_code { get; set; }
|
||||
public string province_name { get; set; }
|
||||
public string city_name { get; set; }
|
||||
/// <summary>
|
||||
/// 区
|
||||
/// </summary>
|
||||
public string county_name { get; set; }
|
||||
/// <summary>
|
||||
/// 详细地址
|
||||
/// </summary>
|
||||
public string detail_info { get; set; }
|
||||
public string tel_number { get; set; }
|
||||
/// <summary>
|
||||
/// 门牌号码
|
||||
/// </summary>
|
||||
public string house_number { get; set; }
|
||||
/// <summary>
|
||||
/// 虚拟发货订单联系方式(deliver_method=1时返回)
|
||||
/// </summary>
|
||||
public string virtual_order_tel_number { get; set; }
|
||||
/// <summary>
|
||||
/// 额外的联系方式信息(虚拟号码相关)
|
||||
/// </summary>
|
||||
public string tel_number_ext_info { get; set; }
|
||||
/// <summary>
|
||||
/// 0:不使用虚拟号码,1:使用虚拟号码
|
||||
/// </summary>
|
||||
public int? use_tel_number { get; set; }
|
||||
/// <summary>
|
||||
/// 标识当前店铺下一个唯一的用户收货地址
|
||||
/// </summary>
|
||||
public string hash_code { get; set; }
|
||||
/// <summary>
|
||||
/// 发货物流信息JSON
|
||||
/// </summary>
|
||||
public string delivery_product_info { get; set; }
|
||||
/// <summary>
|
||||
/// 发货完成时间,秒级时间戳
|
||||
/// </summary>
|
||||
public int? ship_done_time { get; set; }
|
||||
/// <summary>
|
||||
/// 电子面单代发时的订单密文
|
||||
/// </summary>
|
||||
public string ewaybill_order_code { get; set; }
|
||||
/// <summary>
|
||||
/// 结算信息json
|
||||
/// </summary>
|
||||
public string settle_info { get; set; }
|
||||
/// <summary>
|
||||
/// 订单审核状态(0待审核1已审核)
|
||||
/// </summary>
|
||||
public int? audit_status { get; set; }
|
||||
/// <summary>
|
||||
/// 订单审核时间
|
||||
/// </summary>
|
||||
public DateTime audit_time { get; set; }
|
||||
/// <summary>
|
||||
/// erp发货快递公司
|
||||
/// </summary>
|
||||
public string erp_send_company { get; set; }
|
||||
/// <summary>
|
||||
/// erp发货快递单号
|
||||
/// </summary>
|
||||
public string erp_send_code { get; set; }
|
||||
/// <summary>
|
||||
/// erp发货状态
|
||||
/// </summary>
|
||||
public int? erp_send_status { get; set; }
|
||||
/// <summary>
|
||||
/// erp发货时间
|
||||
/// </summary>
|
||||
public DateTime erp_send_time { get; set; }
|
||||
/// <summary>
|
||||
/// 旗帜颜色备注,1:灰旗,2:红旗,3:橙旗,4:绿旗,5:天蓝旗,6:紫旗
|
||||
/// </summary>
|
||||
public int? colour_flag { get; set; }
|
||||
/// <summary>
|
||||
/// 旗帜备注时间
|
||||
/// </summary>
|
||||
public DateTime colour_flag_update_time { get; set; }
|
||||
/// <summary>
|
||||
/// 供应商备注异常单
|
||||
/// </summary>
|
||||
public string supplier_remark_exception { get; set; }
|
||||
/// <summary>
|
||||
/// 礼物单状态,默认值0:不存在礼物单,1:礼物单已发货,2:礼物单信息已更正 3:礼物单发货失败
|
||||
/// </summary>
|
||||
public int? gift_order_status { get; set; }
|
||||
/// <summary>
|
||||
/// 店铺备注:取微信ext_info.merchant_notes
|
||||
/// </summary>
|
||||
public string shop_remark { get; set; }
|
||||
/// <summary>
|
||||
/// 软件备注
|
||||
/// </summary>
|
||||
public string soft_remark { get; set; }
|
||||
/// <summary>
|
||||
/// 外采金额(单位:分,整数存储)
|
||||
/// </summary>
|
||||
public int? out_amount { get; set; }
|
||||
/// <summary>
|
||||
/// 外采账户
|
||||
/// </summary>
|
||||
public string out_account { get; set; }
|
||||
/// <summary>
|
||||
/// 外采订单号
|
||||
/// </summary>
|
||||
public string out_order_no { get; set; }
|
||||
/// <summary>
|
||||
/// 外采快递公司
|
||||
/// </summary>
|
||||
public string out_express_company { get; set; }
|
||||
/// <summary>
|
||||
/// 外采快递单号
|
||||
/// </summary>
|
||||
public string out_express_no { get; set; }
|
||||
/// <summary>
|
||||
/// 外采是否发货(0 未发货,1 已发货)
|
||||
/// </summary>
|
||||
public int? out_shipped { get; set; }
|
||||
/// <summary>
|
||||
/// 判断是否优化过发货0 未优化, 1已优化
|
||||
/// </summary>
|
||||
public int? is_shipment_optimized { get; set; }
|
||||
/// <summary>
|
||||
/// 判断是否优随机使用快递单号0 未使用, 1已使用
|
||||
/// </summary>
|
||||
public int? is_express_no_used { get; set; }
|
||||
/// <summary>
|
||||
/// 外采订单售后状态
|
||||
/// </summary>
|
||||
public string out_after_sale_status { get; set; }
|
||||
/// <summary>
|
||||
/// 是否支持运费险:0-不支持,1-支持
|
||||
/// </summary>
|
||||
public int? has_freight_insurance { get; set; }
|
||||
/// <summary>
|
||||
/// 运费险金额(单位:元)
|
||||
/// </summary>
|
||||
public decimal? freight_insurance_amount { get; set; }
|
||||
/// <summary>
|
||||
/// 是否外采礼物单:0-否,1-是(外采订单)
|
||||
/// </summary>
|
||||
public int? external_gift { get; set; }
|
||||
/// <summary>
|
||||
/// 中转仓的状态 0未使用,1已创建,2创建失败(购买失败),3已创建未有上游快递单号,4已创建有上游快递单号
|
||||
/// </summary>
|
||||
public decimal? transfer_warehouse_status { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.DBModel
|
||||
{
|
||||
public class user_payment_record
|
||||
{
|
||||
public long id { get; set; }
|
||||
/// <summary>
|
||||
/// 变动类型,1:充值,2:采购花费,3:产品退款到账,4:运费退款到账,5:采购收款,6:产品退款扣除,7:运费退款扣除,16:礼物单话费,20:中转运费,23:作废运费返还 26退货包裹扣费
|
||||
/// </summary>
|
||||
public int? type { get; set; }
|
||||
/// <summary>
|
||||
/// 充值或花费的金额(元)
|
||||
/// </summary>
|
||||
public decimal amount { get; set; }
|
||||
/// <summary>
|
||||
/// 充值或花费后的当前账户余额(元)
|
||||
/// </summary>
|
||||
public decimal balance { get; set; }
|
||||
/// <summary>
|
||||
/// 账户名
|
||||
/// </summary>
|
||||
public string user_name { get; set; }
|
||||
/// <summary>
|
||||
/// 平台编码
|
||||
/// </summary>
|
||||
public string platform_code { get; set; }
|
||||
/// <summary>
|
||||
/// 订单id
|
||||
/// </summary>
|
||||
public string order_id { get; set; }
|
||||
/// <summary>
|
||||
/// 售后单id
|
||||
/// </summary>
|
||||
public long? after_sale_id { get; set; }
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public string create_by { get; set; }
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime create_time { get; set; }
|
||||
/// <summary>
|
||||
/// 修改人
|
||||
/// </summary>
|
||||
public string update_by { get; set; }
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime update_time { get; set; }
|
||||
/// <summary>
|
||||
/// 是否已删除
|
||||
/// </summary>
|
||||
public int? is_deleted { get; set; }
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string remark { get; set; }
|
||||
/// <summary>
|
||||
/// 扣款的对方账户名称
|
||||
/// </summary>
|
||||
public string counterparty_account_name { get; set; }
|
||||
}
|
||||
|
||||
public enum EnumOrderPaymentType
|
||||
{
|
||||
充值 = 1,
|
||||
//采购花费 = 2,
|
||||
//产品退款到账 = 3,
|
||||
//运费退款到账 = 4,
|
||||
//采购收款 = 5,
|
||||
//产品退款扣除 = 6,
|
||||
//运费退款扣除 = 7,
|
||||
礼物单支出 = 16,
|
||||
中转仓扣费支出 = 20,
|
||||
中转仓作废返还收入 = 23,
|
||||
中转仓超重支出 = 24,
|
||||
退货包裹扣费支出 = 26,
|
||||
支付宝在线充值 = 30,
|
||||
云仓退货支出 = 31,
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.DBModel
|
||||
{
|
||||
public class user_points_record_info
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string user_name { get; set; }
|
||||
public string user_nick { get; set; }
|
||||
public int delta_points { get; set; }
|
||||
public int? new_points { get; set; }
|
||||
public string option_type { get; set; }
|
||||
public string operator_type { get; set; }
|
||||
public string operator_name { get; set; }
|
||||
public string shop_id { get; set; }
|
||||
public string shop_account { get; set; }
|
||||
public string remark { get; set; }
|
||||
public DateTime add_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.DBModel
|
||||
{
|
||||
public class wx_qualification_image_info
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string cat_name { get; set; }
|
||||
public string img_md5 { get; set; }
|
||||
public string img_base64 { get; set; }
|
||||
public string img_thumb_base64 { get; set; }
|
||||
public string txt_margin { get; set; }
|
||||
public DateTime add_time { get; set; }
|
||||
public DateTime mdy_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Data
|
||||
{
|
||||
public class WXBuyUrlNotesInfo
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string spu_code { get; set; }
|
||||
public string user_name { get; set; }
|
||||
public string buy_url_notes { get; set; }
|
||||
public DateTime add_time { get; set; }
|
||||
public DateTime mdy_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Data
|
||||
{
|
||||
public class WXOrderDecryptAddressInfo
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string shop_id { get; set; }
|
||||
public string order_id { get; set; }
|
||||
public string order_address { get; set; }
|
||||
public DateTime add_time { get; set; }
|
||||
public DateTime mdy_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.CollectManage
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据净化设置选项
|
||||
/// </summary>
|
||||
public class FissionSettingParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否使用代理ip
|
||||
/// </summary>
|
||||
public bool IsUseProxyIp { get; set; } = false;
|
||||
/// <summary>
|
||||
/// 是否使用资源包打码
|
||||
/// </summary>
|
||||
public bool IsUseResourcePack { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ProductManage
|
||||
{
|
||||
public class DyCategoryParam
|
||||
{
|
||||
public static string DyCategorys = "";
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ProductManage
|
||||
{
|
||||
public class QualificationConfig
|
||||
{
|
||||
public bool is_required { get; set; }
|
||||
public string key { get; set; }
|
||||
public string name { get; set; }
|
||||
public string support_web_url_type { get; set; }
|
||||
public List<string> text_list { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ProductManage
|
||||
{
|
||||
public class SameProductCheckParam
|
||||
{
|
||||
public string ShopName { get; set; }
|
||||
public string ShopId { get; set; }
|
||||
// 2022年4月25日前上货的商品,外部id为随机数,无法查询,故建立列表,一次性查询出所有对应商品
|
||||
public List<ShopOurterProductItemParam> ShopSamePrpductItemList { get; set; }
|
||||
|
||||
public bool IsGetSuccess { get; set; } = false;
|
||||
}
|
||||
|
||||
public class ShopOurterProductItemParam
|
||||
{
|
||||
public string outer_product_id { get; set; }
|
||||
public string product_id { get; set; }
|
||||
public string create_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ProductManage
|
||||
{
|
||||
public class ViolateParam
|
||||
{
|
||||
public string UpId { get; set; }
|
||||
public long UpIdNumber
|
||||
{
|
||||
get
|
||||
{
|
||||
var upId = UpId;
|
||||
if (string.IsNullOrWhiteSpace(upId))
|
||||
upId = "0";
|
||||
string upIdNumber = BaseRegex.GetMatchRegex(ref upId, "\\d{5,20}")[0]?.Groups[0]?.Value;
|
||||
if (!string.IsNullOrEmpty(upIdNumber))
|
||||
{
|
||||
return upIdNumber.ParseToLong();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public string From
|
||||
{
|
||||
get
|
||||
{
|
||||
string from = "";
|
||||
if (string.IsNullOrEmpty(UpId))
|
||||
from = "";
|
||||
else if (UpId.StartsWith("pd"))
|
||||
from = "拼多多";
|
||||
else if (UpId.StartsWith("tb"))
|
||||
from = "淘宝";
|
||||
else if (UpId.StartsWith("al"))
|
||||
from = "阿里巴巴";
|
||||
else if (UpId.StartsWith("jx"))
|
||||
from = "京喜";
|
||||
else if (UpId.StartsWith("dy"))
|
||||
from = "抖音";
|
||||
return from;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 抖音商品Id
|
||||
/// </summary>
|
||||
public string DouProductId { get; set; }
|
||||
/// <summary>
|
||||
/// 抖音店铺Id
|
||||
/// </summary>
|
||||
public string DouShopId { get; set; }
|
||||
public string RuleNames { get; set; }
|
||||
/// <summary>
|
||||
/// 数据来源 1.产品数据库 2.店铺在售商品 3.店铺仓库商品
|
||||
/// </summary>
|
||||
public int DataFrom { get; set; }
|
||||
/// <summary>
|
||||
/// 校验时间
|
||||
/// </summary>
|
||||
public DateTime CheckTime { get; set; }
|
||||
/// <summary>
|
||||
/// 处理(删除)结果
|
||||
/// </summary>
|
||||
public string HandleResult { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ProductManage
|
||||
{
|
||||
public class ViolateRuleParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 严重违规信息规则名称列表
|
||||
/// </summary>
|
||||
public static List<string> LstSeriousViolateRuleName = new List<string> {
|
||||
"虚假宣传-虚构或夸大产品功效",
|
||||
"虚构商品信息",
|
||||
"虚构商品信息(商品信息与商品实物不一致)",
|
||||
"商家出售商品或提供服务时侵犯他人专利权.",
|
||||
"滥发信息-在店铺页面、商品详情页、推广页面、聊天工具场景中发布第三方信息",
|
||||
"发布违禁商品/信息-中危禁售",
|
||||
"出售假冒注册商标商品或仿制品/出售盗版商品",
|
||||
"商品疑似或涉嫌质量不合格",
|
||||
"商家出售商品或提供服务时侵犯他人版权。",
|
||||
"出售假冒商品",
|
||||
"滥发信息-商品页面引人不适",
|
||||
"商家出售商品或提供服务时不当使用他人商标权",
|
||||
"页面信息引人不适",
|
||||
"侵犯他人知识产权-商家出售商品或提供服务时侵犯他人商标权、版权、专利权",
|
||||
"发布违禁商品/信息-高危禁售",
|
||||
"商家出售商品或提供服务时侵犯他人专利权",
|
||||
"虚构或夸大产品功效.",
|
||||
"感官质量不合格(商品封禁)",
|
||||
"违规使用极限词",
|
||||
"商家出售商品或提供服务时侵犯他人版权.",
|
||||
"虚构、夸大产品功效(情节轻微-首次违规)",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权(情节一般)",
|
||||
|
||||
"发布违禁信息",
|
||||
"发布违禁商品/信息——违规信息(商品封禁)",
|
||||
"发布禁售商品/信息(商品封禁)",
|
||||
"商品经营资质不符(进口商品需提供报关单、特殊化妆品需提供特化证)",
|
||||
"不当使用热点信息",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权",
|
||||
"发布违禁商品(情节轻微)",
|
||||
"发布违禁商品/信息——违规商品(情节一般)",
|
||||
"虚假宣传-广告禁用词",
|
||||
"虚构或夸大产品功效",
|
||||
"功效虚假-普通食品宣称医疗/保健功效",
|
||||
"商家出售商品或提供服务时侵犯他人版权(情节一般)",
|
||||
"功效虚假-化妆品宣称医疗/保健功效",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权(商品封禁)",
|
||||
"发布违禁商品/信息(情节一般)",
|
||||
"功效虚假-化妆品宣称可食用",
|
||||
"功效虚假-食品宣称医疗/保健功效",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权。",
|
||||
"发布非约定商品——需经定向招商的商品(情节特别严重,冻结货款)",
|
||||
"消费者负反馈(CCR)指标异常",
|
||||
"功效虚假-保证产品效果",
|
||||
"商品经营资质不符(特殊材质商品需提供质检报告、进口商品需提供报关单、特殊化妆品需提供特化证)",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权.",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权 .",
|
||||
"发布违禁商品/信息(情节轻微)",
|
||||
"商家在出售商品或提供服务的过程中严重侵犯他人商标权(情节严重)",
|
||||
"发布违禁信息(情节轻微)",
|
||||
"功效虚假-化妆品宣称医美功效",
|
||||
"虚构产品荣誉(情节轻微-首次违规)",
|
||||
};
|
||||
/// <summary>
|
||||
/// 所有违规信息规则名称列表
|
||||
/// </summary>
|
||||
public static List<string> LstViolateRuleName = null;
|
||||
/// <summary>
|
||||
/// 当前选中的要排查的违规信息
|
||||
/// </summary>
|
||||
public static List<string> LstViolateRuleNameSelect = new List<string>() {
|
||||
"虚假宣传-虚构或夸大产品功效",
|
||||
"虚构商品信息",
|
||||
"虚构商品信息(商品信息与商品实物不一致)",
|
||||
"商家出售商品或提供服务时侵犯他人专利权.",
|
||||
"滥发信息-在店铺页面、商品详情页、推广页面、聊天工具场景中发布第三方信息",
|
||||
"发布违禁商品/信息-中危禁售",
|
||||
"出售假冒注册商标商品或仿制品/出售盗版商品",
|
||||
"商品疑似或涉嫌质量不合格",
|
||||
"商家出售商品或提供服务时侵犯他人版权。",
|
||||
"出售假冒商品",
|
||||
"滥发信息-商品页面引人不适",
|
||||
"商家出售商品或提供服务时不当使用他人商标权",
|
||||
"页面信息引人不适",
|
||||
"侵犯他人知识产权-商家出售商品或提供服务时侵犯他人商标权、版权、专利权",
|
||||
"发布违禁商品/信息-高危禁售",
|
||||
"商家出售商品或提供服务时侵犯他人专利权",
|
||||
"虚构或夸大产品功效.",
|
||||
"感官质量不合格(商品封禁)",
|
||||
"违规使用极限词",
|
||||
"商家出售商品或提供服务时侵犯他人版权.",
|
||||
"虚构、夸大产品功效(情节轻微-首次违规)",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权(情节一般)",
|
||||
|
||||
"发布违禁信息",
|
||||
"发布违禁商品/信息——违规信息(商品封禁)",
|
||||
"发布禁售商品/信息(商品封禁)",
|
||||
"商品经营资质不符(进口商品需提供报关单、特殊化妆品需提供特化证)",
|
||||
"不当使用热点信息",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权",
|
||||
"发布违禁商品(情节轻微)",
|
||||
"发布违禁商品/信息——违规商品(情节一般)",
|
||||
"虚假宣传-广告禁用词",
|
||||
"虚构或夸大产品功效",
|
||||
"功效虚假-普通食品宣称医疗/保健功效",
|
||||
"商家出售商品或提供服务时侵犯他人版权(情节一般)",
|
||||
"功效虚假-化妆品宣称医疗/保健功效",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权(商品封禁)",
|
||||
"发布违禁商品/信息(情节一般)",
|
||||
"功效虚假-化妆品宣称可食用",
|
||||
"功效虚假-食品宣称医疗/保健功效",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权。",
|
||||
"发布非约定商品——需经定向招商的商品(情节特别严重,冻结货款)",
|
||||
"消费者负反馈(CCR)指标异常",
|
||||
"功效虚假-保证产品效果",
|
||||
"商品经营资质不符(特殊材质商品需提供质检报告、进口商品需提供报关单、特殊化妆品需提供特化证)",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权.",
|
||||
"商家在出售商品或提供服务的过程中侵犯他人商标权 .",
|
||||
"发布违禁商品/信息(情节轻微)",
|
||||
"商家在出售商品或提供服务的过程中严重侵犯他人商标权(情节严重)",
|
||||
"发布违禁信息(情节轻微)",
|
||||
"功效虚假-化妆品宣称医美功效",
|
||||
"虚构产品荣誉(情节轻微-首次违规)",
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,170 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.FissionManage
|
||||
{
|
||||
public class FissionData
|
||||
{
|
||||
/// <summary>
|
||||
/// 分词数据库编号
|
||||
/// </summary>
|
||||
public int id { get; set; }
|
||||
/// <summary>
|
||||
/// 商品id 575431121218
|
||||
/// </summary>
|
||||
public string fession_id { get; set; }
|
||||
/// <summary>
|
||||
/// 销量 2103
|
||||
/// </summary>
|
||||
public string sales { get; set; }
|
||||
/// <summary>
|
||||
/// 价格 299.00
|
||||
/// </summary>
|
||||
public string price { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string title { get; set; }
|
||||
/// <summary>
|
||||
/// 分词标题
|
||||
/// </summary>
|
||||
public string fession_title { get; set; }
|
||||
/// <summary>
|
||||
/// 裂变数量
|
||||
/// </summary>
|
||||
public string fession_count { get; set; }
|
||||
/// <summary>
|
||||
/// 主词
|
||||
/// </summary>
|
||||
public string mainWord { get; set; }
|
||||
/// <summary>
|
||||
/// 副词
|
||||
/// </summary>
|
||||
public string viceword { get; set; }
|
||||
/// <summary>
|
||||
/// 分组
|
||||
/// </summary>
|
||||
public string category { get; set; }
|
||||
/// <summary>
|
||||
/// 来源 淘宝、拼多多
|
||||
/// </summary>
|
||||
public string source { get; set; }
|
||||
/// <summary>
|
||||
/// 商品属性
|
||||
/// </summary>
|
||||
public string prop { get; set; }
|
||||
/// <summary>
|
||||
/// 属性列表,List<PropBase>类型的json
|
||||
/// </summary>
|
||||
public string props { get; set; }
|
||||
/// <summary>
|
||||
/// 产品sku信息
|
||||
/// </summary>
|
||||
public string skus { get; set; }
|
||||
/// <summary>
|
||||
/// 主图
|
||||
/// </summary>
|
||||
public string main_pic { get; set; }
|
||||
/// <summary>
|
||||
/// 属性图
|
||||
/// </summary>
|
||||
public string prop_pic { get; set; }
|
||||
/// <summary>
|
||||
/// 详情图/内容图
|
||||
/// </summary>
|
||||
public string container_info { get; set; }
|
||||
/// <summary>
|
||||
/// 子分类id
|
||||
/// </summary>
|
||||
public string cate_id { get; set; }
|
||||
/// <summary>
|
||||
/// 子分类名称
|
||||
/// </summary>
|
||||
public string second_cate { get; set; }
|
||||
/// <summary>
|
||||
/// 主分类id
|
||||
/// </summary>
|
||||
public string main_cateid { get; set; }
|
||||
/// <summary>
|
||||
/// 主分类名称
|
||||
/// </summary>
|
||||
public string main_cate { get; set; }
|
||||
/// <summary>
|
||||
/// 完整分类名称
|
||||
/// </summary>
|
||||
public string full_category_name { get; set; }
|
||||
/// <summary>
|
||||
/// 二级类目名称
|
||||
/// </summary>
|
||||
public string cat2_name { get; set; }
|
||||
/// <summary>
|
||||
/// 三级类目名称
|
||||
/// </summary>
|
||||
public string cat3_name { get; set; }
|
||||
/// <summary>
|
||||
/// 是否已经单独加价
|
||||
/// </summary>
|
||||
public string is_changeprice { get; set; }
|
||||
/// <summary>
|
||||
/// 加价比例
|
||||
/// </summary>
|
||||
public int? add_pricepercent { get; set; }
|
||||
/// <summary>
|
||||
/// 基础额外加价
|
||||
/// </summary>
|
||||
public int? base_addprice { get; set; }
|
||||
/// <summary>
|
||||
/// 邮费价格
|
||||
/// </summary>
|
||||
public string postFree { get; set; }
|
||||
/// <summary>
|
||||
/// 折扣
|
||||
/// </summary>
|
||||
public decimal discount { get; set; }
|
||||
/// <summary>
|
||||
/// 标题数量
|
||||
/// </summary>
|
||||
public int TitleNum { get; set; }
|
||||
/// <summary>
|
||||
/// 是否试水上货标记
|
||||
/// </summary>
|
||||
public string try_upload { get; set; }
|
||||
/// <summary>
|
||||
/// 入库时间
|
||||
/// </summary>
|
||||
public string addtime { get; set; }
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
public string update_time { get; set; }
|
||||
/// <summary>
|
||||
/// 使用次数
|
||||
/// </summary>
|
||||
public int times { get; set; }
|
||||
/// <summary>
|
||||
/// 商品来源店铺名称
|
||||
/// </summary>
|
||||
public string from_shop_name { get; set; }
|
||||
/// <summary>
|
||||
/// 查询满足条件的fissionData时服务端返回的记录总数
|
||||
/// </summary>
|
||||
public int totalCountNum { get; set; }
|
||||
/// <summary>
|
||||
/// _is_end
|
||||
/// </summary>
|
||||
public int _is_end { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品是否通过校验 1 校验通过 9 上家已下架 0 上家有变化需要更新
|
||||
/// </summary>
|
||||
public int update_check_passed { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 商品资质信息
|
||||
/// </summary>
|
||||
public string qualifications { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,162 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.FissionManage
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据净化传递到服务端使用的对象类
|
||||
/// </summary>
|
||||
public class FissionDataModel
|
||||
{
|
||||
/// <summary>
|
||||
/// 本应是分词数据库编号,但程序中作为商品id上传到服务端使用
|
||||
/// </summary>
|
||||
public string id { get; set; }
|
||||
/// <summary>
|
||||
/// 商品id
|
||||
/// </summary>
|
||||
public string fession_id { get; set; }
|
||||
/// <summary>
|
||||
/// 销量
|
||||
/// </summary>
|
||||
public string sales { get; set; }
|
||||
/// <summary>
|
||||
/// 价格
|
||||
/// </summary>
|
||||
public string price { get; set; }
|
||||
/// <summary>
|
||||
/// 标题
|
||||
/// </summary>
|
||||
public string title { get; set; }
|
||||
/// <summary>
|
||||
/// 裂变标题 对应FissionData属性:fession_title
|
||||
/// </summary>
|
||||
public List<string> fessionTitle { get; set; }
|
||||
/// <summary>
|
||||
/// 裂变数量 对应FissionData属性:fession_count
|
||||
/// </summary>
|
||||
public string fessionCount { get; set; }
|
||||
/// <summary>
|
||||
/// 主词
|
||||
/// </summary>
|
||||
public string mainWord { get; set; }
|
||||
/// <summary>
|
||||
/// 副词 对应FissionData属性:viceword
|
||||
/// </summary>
|
||||
public string viceWord { get; set; }
|
||||
/// <summary>
|
||||
/// 分组 对应FissionData属性:category
|
||||
/// </summary>
|
||||
public string teamGroup { get; set; }
|
||||
/// <summary>
|
||||
/// 来源
|
||||
/// </summary>
|
||||
public string source { get; set; }
|
||||
/// <summary>
|
||||
/// 商品属性
|
||||
/// </summary>
|
||||
public string prop { get; set; }
|
||||
/// <summary>
|
||||
/// 属性列表,List<PropBase>类型的json
|
||||
/// </summary>
|
||||
public string props { get; set; }
|
||||
/// <summary>
|
||||
/// 产品sku信息
|
||||
/// </summary>
|
||||
public string skus { get; set; }
|
||||
/// <summary>
|
||||
/// 主图
|
||||
/// </summary>
|
||||
public List<string> main_pic { get; set; }
|
||||
/// <summary>
|
||||
/// 属性图
|
||||
/// </summary>
|
||||
public List<string> prop_pic { get; set; }
|
||||
/// <summary>
|
||||
/// 详情图/内容图 对应FissionData属性:container_info
|
||||
/// </summary>
|
||||
public List<string> content_pic { get; set; }
|
||||
/// <summary>
|
||||
/// 子分类id
|
||||
/// </summary>
|
||||
public int cate_id { get; set; }
|
||||
/// <summary>
|
||||
/// 子分类名称 对应FissionData属性:second_cate
|
||||
/// </summary>
|
||||
public string secondCategory { get; set; }
|
||||
/// <summary>
|
||||
/// 主分类id 对应FissionData属性:main_cateid
|
||||
/// </summary>
|
||||
public int main_cate_id { get; set; }
|
||||
/// <summary>
|
||||
/// 主分类名称 对应FissionData属性:main_cate
|
||||
/// </summary>
|
||||
public string mainCategory { get; set; }
|
||||
/// <summary>
|
||||
/// 完整分类名称 对应FissionData属性:full_category_name
|
||||
/// </summary>
|
||||
public string fullCategoryName { get; set; }
|
||||
/// <summary>
|
||||
/// 二级类目名称
|
||||
/// </summary>
|
||||
public string cat2_name { get; set; }
|
||||
/// <summary>
|
||||
/// 三级类目名称
|
||||
/// </summary>
|
||||
public string cat3_name { get; set; }
|
||||
/// <summary>
|
||||
/// 是否调节价格 对应FissionData属性:is_changeprice
|
||||
/// </summary>
|
||||
public int adjustPrice { get; set; }
|
||||
/// <summary>
|
||||
/// 加价比例 对应FissionData属性:add_pricepercent
|
||||
/// </summary>
|
||||
public decimal addPricePercent { get; set; }
|
||||
/// <summary>
|
||||
/// 基础额外加价 对应FissionData属性:base_addprice
|
||||
/// </summary>
|
||||
public decimal baseAddPrice { get; set; }
|
||||
/// <summary>
|
||||
/// 邮费价格
|
||||
/// </summary>
|
||||
public string postFree { get; set; }
|
||||
/// <summary>
|
||||
/// 折扣
|
||||
/// </summary>
|
||||
public decimal discount { get; set; }
|
||||
/// <summary>
|
||||
/// 商品上家来源店铺
|
||||
/// </summary>
|
||||
public string from_shop_name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品是否通过校验 1 校验通过 9 上家已下架 0 上家有变化需要更新
|
||||
/// </summary>
|
||||
public int update_check_passed { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 商品资质信息
|
||||
/// </summary>
|
||||
public string qualifications { get; set; }
|
||||
}
|
||||
|
||||
public class GoodsCategoryModel
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string name { get; set; }
|
||||
public int level { get; set; }
|
||||
public int parent_id { get; set; }
|
||||
public int main_cat_id { get; set; }
|
||||
public bool is_leaf { get; set; }
|
||||
public bool enable { get; set; }
|
||||
}
|
||||
|
||||
public class GoodsCategoryModelEx : GoodsCategoryModel
|
||||
{
|
||||
public int parent_cid { get { return parent_id; } set { parent_id = value; } }
|
||||
public int industry_status { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.FissionManage
|
||||
{
|
||||
public class FissionRoot
|
||||
{
|
||||
/// <summary>
|
||||
/// List
|
||||
/// </summary>
|
||||
public List<FissionData> list { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 记录总数
|
||||
/// </summary>
|
||||
public int count { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
using AllBase.Model.Result;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.OrderManage
|
||||
{
|
||||
public class FreightTemplateParam
|
||||
{
|
||||
public TemplateParam template { get; set; }
|
||||
|
||||
public List<TemplateRulesParam> columns { get; set; }
|
||||
}
|
||||
|
||||
public class TemplateParam
|
||||
{
|
||||
public string template_name { get; set; }
|
||||
/// <summary>
|
||||
/// 发货省份id
|
||||
/// </summary>
|
||||
public long product_province { get; set; }
|
||||
/// <summary>
|
||||
/// 发货城市id
|
||||
/// </summary>
|
||||
public long product_city { get; set; }
|
||||
/// <summary>
|
||||
/// 计价方式-1.按重量计价 2.按数量计价; 模板类型为1、2、3时,计价类型传2
|
||||
/// </summary>
|
||||
public int calculate_type { get; set; } = 2;
|
||||
/// <summary>
|
||||
/// 快递方式-1.快递 目前仅支持1
|
||||
/// </summary>
|
||||
public int transfer_type { get; set; }
|
||||
/// <summary>
|
||||
/// 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款
|
||||
/// </summary>
|
||||
public int rule_type { get; set; }
|
||||
/// <summary>
|
||||
/// 固定运费金额(单位:分) 固定运费模板必填 1-9900之间的整数
|
||||
/// </summary>
|
||||
public int fixed_amount { get; set; }
|
||||
}
|
||||
|
||||
public class TemplateRulesParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 首重(单位:kg)
|
||||
/// </summary>
|
||||
public decimal first_weight { get; set; }
|
||||
/// <summary>
|
||||
/// 首重价格(单位:元)
|
||||
/// </summary>
|
||||
public decimal first_weight_price { get; set; }
|
||||
/// <summary>
|
||||
/// 首件数量(单位:个)
|
||||
/// </summary>
|
||||
public int first_num { get; set; }
|
||||
/// <summary>
|
||||
/// 首件价格(单位:元)
|
||||
/// </summary>
|
||||
public decimal first_num_price { get; set; }
|
||||
/// <summary>
|
||||
/// 续重(单位:kg)
|
||||
/// </summary>
|
||||
public decimal add_weight { get; set; }
|
||||
/// <summary>
|
||||
/// 续重价格(单位:元)
|
||||
/// </summary>
|
||||
public decimal add_weight_price { get; set; }
|
||||
/// <summary>
|
||||
/// 续件(单位:个)
|
||||
/// </summary>
|
||||
public int add_num { get; set; }
|
||||
/// <summary>
|
||||
/// 续件价格(单位:元)
|
||||
/// </summary>
|
||||
public decimal add_num_price { get; set; }
|
||||
/// <summary>
|
||||
/// 是否默认计价方式规则(1:是;0:不是)
|
||||
/// </summary>
|
||||
public int is_default { get; set; }
|
||||
/// <summary>
|
||||
/// 是否限运规则
|
||||
/// </summary>
|
||||
public bool is_limited { get; set; }
|
||||
/// <summary>
|
||||
/// 当前规则生效的地址,非默认计价方式规则必填(如:限制购买规则)
|
||||
/// </summary>
|
||||
public string rule_address { get; set; }
|
||||
|
||||
public List<ProvinceInfo> province_infos { get; set; }
|
||||
}
|
||||
|
||||
public class ProvinceInfo
|
||||
{
|
||||
public List<ProvinceInfo> children { get; set; }
|
||||
public string id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,177 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param
|
||||
{
|
||||
/// <summary>
|
||||
/// 从供应商网站采集后保存到外部服务器的产品数据格式
|
||||
/// </summary>
|
||||
public class OutServerGoodsParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 仓库商品ID 对应聚水潭 Id
|
||||
/// </summary>
|
||||
public string warehouseGoodsId { get; set; } // "46251545HSISG656DF89D",
|
||||
/// <summary>
|
||||
/// 仓库资料编码 对应聚水潭商品 styleCode // 相当于货号
|
||||
/// </summary>
|
||||
public string spuCode { get; set; } // "85295413687",
|
||||
/// <summary>
|
||||
/// 商品标题 对应聚水潭 itemName
|
||||
/// </summary>
|
||||
public string title { get; set; } // "帆布包女大容量通勤手提拉链袋可折叠购物袋帆布袋文艺百搭",
|
||||
/// <summary>
|
||||
/// 商品副标题
|
||||
/// </summary>
|
||||
public string subTitle { get; set; } // "帆布包女大容量通勤手提拉链袋可折叠购物袋帆布袋文艺百搭",
|
||||
/// <summary>
|
||||
/// 商品主图
|
||||
/// </summary>
|
||||
public string headImg { get; set; } // "https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/068bb3c355a583c33c0bb41f7d1ae740.jpg",
|
||||
/// <summary>
|
||||
/// 商品主图列表 对应聚水潭 itemMainImage
|
||||
/// </summary>
|
||||
public string headImgs { get; set; } // "[\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/068bb3c355a583c33c0bb41f7d1ae740.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/0d1f5a11791e3c5903b708677b307624.jpeg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/624299b9363b393f1febc89f8219991f.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/8d18cfc34b68f3b8183f1825c1249e1d.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/7795ba1aedcee0a1b88ec4c622e5d3ad.jpg\"]",
|
||||
/// <summary>
|
||||
/// 商品详情文字描述
|
||||
/// </summary>
|
||||
public string descText { get; set; } // null,
|
||||
/// <summary>
|
||||
/// 商品详情图片(列表)
|
||||
/// </summary>
|
||||
public string descImgs { get; set; } // "[\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/2b11d434705d01c9e68653ae68772a08.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/bfaf9b80f70ee98ed1fd0ca50a3102f2.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/feca6e9e1aed5c958b7c3ae11ba448d4.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/fcaa5015cfd304f9ed409270c836b9ae.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/859603a9a322fa61dcaef33076089e16.png\"]",
|
||||
/// <summary>
|
||||
/// 类目ID
|
||||
/// </summary>
|
||||
public string categoryId { get; set; } // "",
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string remark { get; set; } // "",
|
||||
/// <summary>
|
||||
/// 状态1销售中2已下架
|
||||
/// </summary>
|
||||
public int? status { get; set; } = 1;
|
||||
/// <summary>
|
||||
/// 供应商 对应聚水潭 supplierName
|
||||
/// </summary>
|
||||
public string supplier { get; set; } // "广如供应链",
|
||||
/// <summary>
|
||||
/// 供应商ID 暂时不填
|
||||
/// </summary>
|
||||
public long? supplierId { get; set; } // 110,
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public string createBy { get; set; } = "";
|
||||
public string createTime { get; set; } // "2025-10-19 22:35:28",
|
||||
public string updateBy { get; set; } // null,
|
||||
public string updateTime { get; set; } // null,
|
||||
/// <summary>
|
||||
/// 0正常 1删除
|
||||
/// </summary>
|
||||
public int? isDelete { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 发货类型10自营发货20供应商发货
|
||||
/// </summary>
|
||||
public int? shipType { get; set; } = 20;
|
||||
/// <summary>
|
||||
/// 仓库编号 对应聚水潭 coid
|
||||
/// </summary>
|
||||
public string warehouseNum { get; set; } // "11625838",
|
||||
/// <summary>
|
||||
/// 商户ID 可以不传
|
||||
/// </summary>
|
||||
public string merchantId { get; set; } // "10",
|
||||
public string platformCode { get; set; } = "WEISHOP";
|
||||
public object selectionQuareGoodsSkus { get; set; } // null,
|
||||
public object selectionQuareGoodsExtList { get; set; } // null,
|
||||
public object goodsIds { get; set; } // null,
|
||||
public object freightPrice { get; set; } // null,
|
||||
public object warehouseDisablePlatformList { get; set; } // null,
|
||||
/// <summary>
|
||||
/// 扩展状态:0-待完善,1-其他(有ext数据填写1) 商品附属信息,可以默认填1
|
||||
/// </summary>
|
||||
public int? extStatus { get; set; } = 1;
|
||||
public object groupKey { get; set; } // null,
|
||||
public string platform { get; set; } = "WEISHOP";
|
||||
public long? catId { get; set; } // "1441",
|
||||
public List<string> headImgList { get; set; } // ["https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/068bb3c355a583c33c0bb41f7d1ae740.jpg" ... ],
|
||||
public List<string> detailImgList { get; set; } // ["https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/859603a9a322fa61dcaef33076089e16.png" ... ],
|
||||
public List<osSkuParam> skus { get; set; }
|
||||
public List<osProductAttrParam> productAttrs { get; set; }
|
||||
}
|
||||
|
||||
public class osProductAttrParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 必填属性 key
|
||||
/// </summary>
|
||||
public string attrKey { get; set; } // "国产/进口",
|
||||
/// <summary>
|
||||
/// 必填属性 Value
|
||||
/// </summary>
|
||||
public string attrValue { get; set; } // "国产"
|
||||
}
|
||||
|
||||
public class osSkuParam
|
||||
{
|
||||
public long? supplierId { get; set; } // 110,
|
||||
/// <summary>
|
||||
/// 仓库 skuid 编号 对应baseSkuId
|
||||
/// </summary>
|
||||
public string warehouseSkuId { get; set; } // "7DFD0D35C91F4D01B8BFF2E9B064AA15",
|
||||
/// <summary>
|
||||
/// sku 标题
|
||||
/// </summary>
|
||||
public string title { get; set; } // "黑色",
|
||||
/// <summary>
|
||||
/// sku 小图
|
||||
/// </summary>
|
||||
public string thumbImg { get; set; } // "https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/1c0309944d046ff0ffaf31a699d0a55f.jpeg",
|
||||
/// <summary>
|
||||
/// 售卖价格(单位:分) 对应supplyPrice
|
||||
/// </summary>
|
||||
public int? salePrice { get; set; } // 729,
|
||||
/// <summary>
|
||||
/// 库存
|
||||
/// </summary>
|
||||
public int? stockNum { get; set; } // 4529,
|
||||
/// <summary>
|
||||
/// 规格编码 对应itemNo // realItemNo // 相当于货号
|
||||
/// </summary>
|
||||
public string skuCode { get; set; } // "snb00620A",
|
||||
/// <summary>
|
||||
/// sku 图片多个英文逗号分隔
|
||||
/// </summary>
|
||||
public object skuImags { get; set; } // null,
|
||||
/// <summary>
|
||||
/// 状态:1 售卖中
|
||||
/// </summary>
|
||||
public int? status { get; set; } = 1;
|
||||
/// <summary>
|
||||
/// sku 重量,单位为 g
|
||||
/// </summary>
|
||||
public int? skuWeight { get; set; } // 0,
|
||||
/// <summary>
|
||||
/// sku 备注
|
||||
/// </summary>
|
||||
public string remark { get; set; } = "";
|
||||
public string latestPrice { get; set; } // "732.00",
|
||||
public string latestPriceTime { get; set; } // "2025-10-29 10:13:43",
|
||||
public string latestUpdateTime { get; set; } // null,
|
||||
public string platform { get; set; } // null,
|
||||
public string skuId { get; set; } // null,
|
||||
public List<skuAttrParam> skuAttrs { get; set; }
|
||||
public object platformSkuId { get; set; } // null
|
||||
}
|
||||
|
||||
public class skuAttrParam
|
||||
{
|
||||
public string attrKey { get; set; } // "颜色分类"
|
||||
public string attrValue { get; set; } // "蓝色"
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDCouponParam
|
||||
{
|
||||
public class PDDActivityMarketingParam
|
||||
{
|
||||
public int? call_source { get; set; }
|
||||
public List<batch_stage_activity_info> batch_stage_activities { get; set; }
|
||||
public bool? default_channel { get; set; } = true;
|
||||
}
|
||||
|
||||
public class batch_stage_activity_info
|
||||
{
|
||||
public List<stage_activity_info> stage_activities { get; set; }
|
||||
}
|
||||
|
||||
public class stage_activity_info
|
||||
{
|
||||
public bool? goods_unified_activity { get; set; } // true,
|
||||
public string activity_name { get; set; } // "限量促销1",
|
||||
public int? activity_type { get; set; } // 3,
|
||||
public bool? check_low_price { get; set; } // true,
|
||||
public long? goods_id { get; set; } // 820143666861,
|
||||
public string tool_full_channel { get; set; } // "10921_77271__normal",
|
||||
public string channel_recognize_code { get; set; } // "b21rZ2V5aGwtNDkyMzc5NjkzLTE3NjA5Mzk3NDE0MTY=",
|
||||
public bool? auto_create_after_finished { get; set; } = false; // false,
|
||||
public marketing_tool_detail_option_info marketing_tool_detail_option { get; set; } = new marketing_tool_detail_option_info();
|
||||
public List<activity_sku_price> price_list { get; set; }
|
||||
public int? pattern { get; set; }
|
||||
public long? start_time { get; set; } // 1760889600,
|
||||
public long? end_time { get; set; } // 1761494399
|
||||
}
|
||||
public class activity_sku_price
|
||||
{
|
||||
public int? user_activity_limit { get; set; } // 0
|
||||
public List<sku_price_dto> sku_price_dtos { get; set; }
|
||||
public int? quantity { get; set; } // 1782
|
||||
}
|
||||
|
||||
public class sku_price_dto
|
||||
{
|
||||
public long? sku_id { get; set; } // 1788445374246
|
||||
public int? activity_price { get; set; } // 6612
|
||||
}
|
||||
|
||||
public class marketing_tool_detail_option_info
|
||||
{
|
||||
public bool? price_insurance { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDCouponParam
|
||||
{
|
||||
public class PDDCouponParam
|
||||
{
|
||||
public bool? ignore_low_price { get; set; } = false; //false
|
||||
public int? source_type { get; set; } //1242
|
||||
public List<create_request> create_request_list { get; set; } = new List<create_request>();
|
||||
public string tool_full_channel { get; set; } // "12110_76109_010921_77272"
|
||||
}
|
||||
|
||||
public class create_request
|
||||
{
|
||||
public long? goods_id { get; set; } // 837311546492,
|
||||
public string batch_desc { get; set; } // "惊喜券",
|
||||
public long? batch_start_time { get; set; } // 1760785200000,
|
||||
public long? batch_end_time { get; set; } // 1760889599999,
|
||||
public int? discount { get; set; } // 300,
|
||||
public object init_quantity { get; set; } // 380, //有时候是int有时候是string
|
||||
public int? user_limit { get; set; } // 2, 每人限领数量
|
||||
public int? period_type { get; set; } // 0,
|
||||
public object duration { get; set; } = 7; // 7, //有时候是int有时候是string
|
||||
public int? status { get; set; } = 2; // 2
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam
|
||||
{
|
||||
public class PDDActivityPriceCheckParam
|
||||
{
|
||||
public long? activity_id { get; set; }
|
||||
public int? low_price_check_source_type { get; set; }
|
||||
public List<GoodsParam> goods_list { get; set; }
|
||||
}
|
||||
|
||||
public class GoodsParam
|
||||
{
|
||||
public long? goods_id { get; set; }
|
||||
public List<SkuTypeItem> sku_type_list { get; set; }
|
||||
}
|
||||
|
||||
public class SkuTypeItem
|
||||
{
|
||||
public string sku_activity_price_type { get; set; }
|
||||
public List<SkuActivityPriceItem> sku_activity_price_list { get; set; }
|
||||
}
|
||||
|
||||
public class SkuActivityPriceItem
|
||||
{
|
||||
public int? sku_activity_price { get; set; }
|
||||
public long? sku_id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam
|
||||
{
|
||||
public class PDDActivitySubmitParam
|
||||
{
|
||||
public long? activity_id { get; set; } = 20981; //23620 21365 15996
|
||||
public List<goods_vo_param> goods_volist { get; set; } = new List<goods_vo_param>();
|
||||
public create_protocol_vo_param create_protocol_vo { get; set; } = new create_protocol_vo_param();
|
||||
public custom_ability_vo_item custom_ability_vo { get; set; } = new custom_ability_vo_item();
|
||||
public create_outer_activity_price_ratio_vo_param create_outer_activity_price_ratio_vo { get; set; } = new create_outer_activity_price_ratio_vo_param();
|
||||
public enroll_source_ctx_param enroll_source_ctx { get; set; } = new enroll_source_ctx_param();
|
||||
|
||||
// 15996 dXlyaGxldXItNDkwOTQzMTM0LTE3NTg2OTQxODA2MzE=
|
||||
public string behavior_collection_v1_cas_boost_factor { get; set; } = "dXlyaGxldXItNDkwOTQzMTM0LTE3NTgzNzMzNDQwMjE=";
|
||||
}
|
||||
|
||||
public class custom_ability_vo_item
|
||||
{
|
||||
//百万爆款报名需要
|
||||
public bool? agree_pyramid_system_enroll { get; set; }
|
||||
public string pyramid_activity_id { get; set; }
|
||||
}
|
||||
|
||||
public class enroll_source_ctx_param
|
||||
{
|
||||
public int? enroll_type { get; set; } = 3; // 20981 34, 15996 3
|
||||
public string scene_full_coverage { get; set; } = "mmsActBatchEnrollV1"; // 20981 mmsActQuickEnrollMultiActivityRealTableV1, 15996 mmsActBatchEnrollV1
|
||||
public string source_type { get; set; } = "MMSActicon"; // 20981 PROMO-OwnHome_MultiActEnrollMMS, 15996 MMSActicon
|
||||
public string scene_type { get; set; } = "ActivityCard"; // 10981 无, 15996 ActivityCard
|
||||
}
|
||||
|
||||
public class create_outer_activity_price_ratio_vo_param
|
||||
{
|
||||
public bool? merchant_confirm_outer_activity_price_ratio { get; set; } = true;
|
||||
}
|
||||
|
||||
public class create_protocol_vo_param
|
||||
{
|
||||
public bool? need_create_cost_template { get; set; } = false; //如运费模板不满足要求,同意为您自动切换为活动适用的运费模板
|
||||
}
|
||||
|
||||
public class goods_vo_param
|
||||
{
|
||||
public long? goods_id { get; set; }
|
||||
public object create_goods_coupon_vo { get; set; } = new object();
|
||||
public object create_finance_cost_vo { get; set; } = new object();
|
||||
public create_material_vo_param create_material_vo { get; set; } = new create_material_vo_param();
|
||||
public view_confirmed_goods_protocol_vo_param view_confirmed_goods_protocol_vo { get; set; } = new view_confirmed_goods_protocol_vo_param();
|
||||
public create_activity_price_vo_param create_activity_price_vo { get; set; } = new create_activity_price_vo_param();
|
||||
public create_discount_vo_param create_discount_vo { get; set; }
|
||||
}
|
||||
|
||||
public class create_discount_vo_param {
|
||||
public int? multi_percent_discount { get; set; } = null;
|
||||
public bool? hit_multi_percent { get; set; } = null;
|
||||
}
|
||||
|
||||
public class create_activity_price_vo_param
|
||||
{
|
||||
public List<create_sku_vo_param> create_sku_vos { get; set; } = new List<create_sku_vo_param>();
|
||||
public create_traffic_protect_vo_param create_traffic_protect_vo { get; set; } = null; // new create_traffic_protect_vo_param();
|
||||
public create_quantity_vo_param create_quantity_vo { get; set; } = new create_quantity_vo_param();
|
||||
public object create_time_vo { get; set; } = new object();
|
||||
}
|
||||
|
||||
public class create_quantity_vo_param {
|
||||
public int? goods_activity_quantity { get; set; }
|
||||
}
|
||||
|
||||
public class create_traffic_protect_vo_param
|
||||
{
|
||||
//public int? max_cut_price_amount { get; set; } = 50; //任意规格当前价失效时,降价0.5元恢复活动权益 //可考虑转换为总价的百分比
|
||||
public int? max_cut_price_amount { get; set; } = 1; //任意规格当前价失效时,降价0.5元恢复活动权益 //可考虑转换为总价的百分比
|
||||
}
|
||||
|
||||
public class create_sku_vo_param
|
||||
{
|
||||
public sku_front_ctx_vo_param sku_front_ctx_vo { get; set; }
|
||||
public int? sku_activity_price { get; set; }
|
||||
public long? sku_id { get; set; }
|
||||
}
|
||||
|
||||
public class sku_front_ctx_vo_param
|
||||
{
|
||||
public int? filling_sku_price { get; set; }
|
||||
public int? gear_rule { get; set; }
|
||||
public int? require_price { get; set; }
|
||||
public int? filling_sku_price_gear_rule { get; set; } = 1001; // 1001
|
||||
public object algorithm_decorate_sku_price { get; set; } // null
|
||||
public object tags { get; set; } // null
|
||||
}
|
||||
|
||||
public class view_confirmed_goods_protocol_vo_param
|
||||
{
|
||||
public object confirm_hit_cut_price { get; set; } = null;
|
||||
public bool? confirm_copy_goods_for_customer_num { get; set; } = false;
|
||||
public bool? confirm_hit_high_commission { get; set; } = false;
|
||||
}
|
||||
|
||||
public class create_material_vo_param
|
||||
{
|
||||
public create_goods_image_vo_param create_goods_image_vo { get; set; } = new create_goods_image_vo_param();
|
||||
public object create_goods_memo_vo { get; set; } = new object();
|
||||
public object create_goods_title_vo { get; set; } = new object();
|
||||
public object create_goods_brand_vo { get; set; } = new object();
|
||||
}
|
||||
public class create_goods_image_vo_param
|
||||
{
|
||||
public string raw_activity_image_url { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam20981
|
||||
{
|
||||
public class PDDActivitySubmitParam20981
|
||||
{
|
||||
public long? activity_id { get; set; } = 20981;
|
||||
public List<goods_vo_param> goods_volist { get; set; } = new List<goods_vo_param>();
|
||||
public create_protocol_vo_item create_protocol_vo { get; set; } = new create_protocol_vo_item();
|
||||
public create_outer_activity_price_ratio_vo_item create_outer_activity_price_ratio_vo { get; set; } = new create_outer_activity_price_ratio_vo_item();
|
||||
public enroll_source_ctx_item enroll_source_ctx { get; set; } = new enroll_source_ctx_item();
|
||||
public string behavior_collection_v1_cas_boost_factor { get; set; } = "dXlyaGxldXItNDkwOTQzMTM0LTE3NTgzNzMzNDQwMjE=";
|
||||
}
|
||||
|
||||
public class enroll_source_ctx_item
|
||||
{
|
||||
public int? enroll_type { get; set; } = 34;
|
||||
public string scene_full_coverage { get; set; } = "mmsActQuickEnrollMultiActivityRealTableV1";
|
||||
public string source_type { get; set; } = "PROMO-OwnHome_MultiActEnrollMMS";
|
||||
}
|
||||
|
||||
public class create_outer_activity_price_ratio_vo_item
|
||||
{
|
||||
public bool? merchant_confirm_outer_activity_price_ratio { get; set; } = true;
|
||||
}
|
||||
|
||||
public class create_protocol_vo_item
|
||||
{
|
||||
public bool? need_create_cost_template { get; set; } = true;
|
||||
}
|
||||
|
||||
public class goods_vo_param
|
||||
{
|
||||
public long? goods_id { get; set; }
|
||||
public create_material_vo_param create_material_vo { get; set; } = new create_material_vo_param();
|
||||
public view_confirmed_goods_protocol_vo_item view_confirmed_goods_protocol_vo { get; set; } = new view_confirmed_goods_protocol_vo_item();
|
||||
public create_activity_price_vo_item create_activity_price_vo { get; set; } = new create_activity_price_vo_item();
|
||||
}
|
||||
|
||||
public class create_activity_price_vo_item
|
||||
{
|
||||
public List<create_sku_vo_item> create_sku_vos { get; set; } = new List<create_sku_vo_item>();
|
||||
public create_traffic_protect_vo_item create_traffic_protect_vo { get; set; } = null; //new create_traffic_protect_vo_item();
|
||||
public object create_quantity_vo { get; set; } = new object();
|
||||
}
|
||||
|
||||
public class create_traffic_protect_vo_item //如果流量降低降价多少维持活动
|
||||
{
|
||||
//public int? max_cut_price_amount { get; set; } = 50;
|
||||
public int? max_cut_price_amount { get; set; } = 1;
|
||||
}
|
||||
|
||||
public class create_sku_vo_item
|
||||
{
|
||||
public sku_front_ctx_vo_item sku_front_ctx_vo { get; set; }
|
||||
public int? sku_activity_price { get; set; }
|
||||
public long? sku_id { get; set; }
|
||||
}
|
||||
|
||||
public class sku_front_ctx_vo_item
|
||||
{
|
||||
public int? filling_sku_price { get; set; }
|
||||
public int? gear_rule { get; set; }
|
||||
public int? require_price { get; set; }
|
||||
}
|
||||
|
||||
public class view_confirmed_goods_protocol_vo_item
|
||||
{
|
||||
public object confirm_hit_cut_price { get; set; } = null;
|
||||
}
|
||||
|
||||
public class create_material_vo_param
|
||||
{
|
||||
public object create_goods_image_vo { get; set; } = new object();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam
|
||||
{
|
||||
public class PDDActivitySubmitParamV2
|
||||
{
|
||||
public enroll_source_ctx_param enroll_source_ctx { get; set; } = new enroll_source_ctx_param();
|
||||
public List<goods_vo_param_v2> goods_volist { get; set; } = new List<goods_vo_param_v2>();
|
||||
public create_protocol_vo_param_v2 create_protocol_vo { get; set; } = new create_protocol_vo_param_v2();
|
||||
public object custom_ability_vo { get; set; } = new object();
|
||||
public long? activity_id { get; set; }
|
||||
public object create_outer_activity_price_ratio_vo { get; set; } = new object();
|
||||
public string behavior_collection_v1_cas_boost_factor { get; set; } = "dXlyaGxldXItNDkwOTQzMTM0LTE3NzU1NDgwNzU2NTE=";
|
||||
}
|
||||
|
||||
public class create_protocol_vo_param_v2
|
||||
{
|
||||
public List<view_confirmed_supply_tool_introduction_volist_param> view_confirmed_supply_tool_introduction_volist { get; set; } = new List<view_confirmed_supply_tool_introduction_volist_param>();
|
||||
|
||||
public List<object> confirmed_protocol_volist = new List<object>();
|
||||
}
|
||||
|
||||
public class view_confirmed_supply_tool_introduction_volist_param
|
||||
{
|
||||
public int? supply_tool_type { get; set; } // 7,
|
||||
public string supply_tool_sn { get; set; } // "P1522OM-1762688085363",
|
||||
public bool? merchant_confirm_outer_ratio { get; set; } // true
|
||||
|
||||
}
|
||||
|
||||
public class goods_vo_param_v2
|
||||
{
|
||||
public long? goods_id { get; set; } // 933674770723
|
||||
public create_activity_price_vo_param_v2 create_activity_price_vo { get; set; } = new create_activity_price_vo_param_v2();
|
||||
public object create_discount_vo { get; set; } = new object();
|
||||
public create_material_vo_param_v2 create_material_vo { get; set; } = new create_material_vo_param_v2();
|
||||
public object create_goods_coupon_vo { get; set; } = new object();
|
||||
public view_confirmed_goods_protocol_vo_param view_confirmed_goods_protocol_vo { get; set; } = new view_confirmed_goods_protocol_vo_param();
|
||||
public object create_finance_cost_vo { get; set; } = new object();
|
||||
public create_goods_promotion_event_vo_param create_goods_promotion_event_vo { get; set; } = new create_goods_promotion_event_vo_param();
|
||||
}
|
||||
|
||||
public class create_goods_promotion_event_vo_param
|
||||
{
|
||||
public List<item_volist_param> item_volist { get; set; } = new List<item_volist_param>();
|
||||
}
|
||||
|
||||
public class item_volist_param
|
||||
{
|
||||
public int? tool_supply_type { get; set; } // 7
|
||||
public string tool_supply_sn { get; set; } // "P1522OM-1762688085363"
|
||||
public string mms_enroll_params { get; set; } // "{\"discount\":\"98\"}"
|
||||
}
|
||||
|
||||
public class create_material_vo_param_v2
|
||||
{
|
||||
public object create_goods_image_vo { get; set; } = new object();
|
||||
public object create_goods_title_vo { get; set; } = new object();
|
||||
}
|
||||
|
||||
public class create_activity_price_vo_param_v2
|
||||
{
|
||||
public object create_time_vo { get; set; } = new object();
|
||||
public object create_quantity_vo { get; set; } = new object();
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam
|
||||
{
|
||||
public class PDDProdDecorationCommitParam
|
||||
{
|
||||
public long? goods_id { get; set; }
|
||||
public long? goods_commit_id { get; set; }
|
||||
public List<decoration_floor_param> decoration_floor_list { get; set; }
|
||||
public string preview_key { get; set; }
|
||||
}
|
||||
|
||||
public class decoration_floor_param
|
||||
{
|
||||
public string type { get; set; }
|
||||
public long? floor_id { get; set; } = null;
|
||||
public List<decoration_content_param> content_list { get; set; }
|
||||
}
|
||||
|
||||
public class decoration_content_param
|
||||
{
|
||||
public string text { get; set; }
|
||||
public string img_url { get; set; }
|
||||
public int? height { get; set; }
|
||||
public int? width { get; set; }
|
||||
public text_module_detail_param text_module_details { get; set; }
|
||||
public object file_id { get; set; }
|
||||
}
|
||||
public class text_module_detail_param
|
||||
{
|
||||
public int? font_size { get; set; }
|
||||
public int font_family { get; set; }
|
||||
public string align { get; set; }
|
||||
public string background_color { get; set; }
|
||||
public string font_color { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,295 +0,0 @@
|
||||
using AllBase.Model.Result.PDDResult;
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam
|
||||
{
|
||||
public class PDDProductUploadParam
|
||||
{
|
||||
public long? goods_id { get; set; }
|
||||
public string goods_commit_id { get; set; }
|
||||
public List<object> goods_commit_check { get; set; } = new List<object>();
|
||||
public List<object> reject_reason { get; set; } = new List<object>();
|
||||
public string reject_status { get; set; } = "";
|
||||
public int? check_status { get; set; } = 9;
|
||||
public string tiny_name { get; set; }
|
||||
public string goods_name { get; set; }
|
||||
public List<object> carousel_video { get; set; } = new List<object>();
|
||||
public List<object> detail_video { get; set; } = new List<object>();
|
||||
public string goods_desc { get; set; }
|
||||
public string warm_tips { get; set; } = "";
|
||||
public int? cat_id { get; set; }
|
||||
public List<string> cats { get; set; }
|
||||
public string image_url { get; set; } = "";
|
||||
public object oversea_goods { get; set; } = new object();
|
||||
public object spu { get; set; } = new object();
|
||||
public isbn_properties_related_param isbn_properties_related { get; set; }
|
||||
public List<object> propertys_standard { get; set; }
|
||||
/// <summary>
|
||||
/// 是否草稿
|
||||
/// </summary>
|
||||
public bool? is_draft { get; set; } = false;
|
||||
public string goods_name_prefix { get; set; } = "";
|
||||
public string name_prefix { get; set; } = "";
|
||||
public object size_spec_id { get; set; }
|
||||
public object is_gold_price_matched { get; set; }
|
||||
public bool hasBatchEnter { get; set; } = false;
|
||||
public instruction_vo_item instruction_vo { get; set; }
|
||||
|
||||
public List<object> ai_carousel_gallery { get; set; } = new List<object>();
|
||||
public List<object> explanation_video { get; set; } = new List<object>();
|
||||
public List<object> tag_price_gallery { get; set; } = new List<object>();
|
||||
public List<object> ingredient_gallery { get; set; } = new List<object>();
|
||||
public List<object> nutrition_gallery { get; set; } = new List<object>();
|
||||
public List<object> ai_goods_video { get; set; } = new List<object>();
|
||||
public int? third_type { get; set; } = 0;
|
||||
public List<int?> cat_ids { get; set; }
|
||||
public int? bad_fruit_claim { get; set; } = 0;
|
||||
public object booking_notes { get; set; } = new object();
|
||||
|
||||
public object instruction_template_id { get; set; }
|
||||
public bool? first_upload_carousel { get; set; } = true;
|
||||
public int? propertys_tid { get; set; } // 手套 27715 获取接口Get方法:https://mms.pinduoduo.com/draco-ms/mms/template/mall?catId=17031&goodsCommitId=168372796489&goodsId=816294785499
|
||||
public bool? propertys_edit_search_spu { get; set; } = false;
|
||||
public long? service_time { get; set; }
|
||||
public int? electric_status { get; set; } = 0;
|
||||
public bool? isGoodsLock { get; set; } = false;
|
||||
public bool? imageEnhanceGray { get; set; } = false;
|
||||
public bool? materialModalAbGray { get; set; } = true;
|
||||
public bool? uploadDragAB { get; set; } = false;
|
||||
public bool? materialReplaceTagGray { get; set; } = true;
|
||||
public bool? localUploadVideoGray { get; set; } = true;
|
||||
public bool? aiGray { get; set; } = false;
|
||||
public bool? materialShowTagGray { get; set; } = true;
|
||||
public bool? hide_apply { get; set; } = false;
|
||||
public bool? showGoodsInstruction { get; set; } = true;
|
||||
public bool? decorationCanEdit { get; set; } = true;
|
||||
public List<title_keyword_param> title_keywords { get; set; }
|
||||
public object title_recommend { get; set; }
|
||||
public string prefillWhitePic { get; set; }
|
||||
|
||||
public List<PDDProdfloorItem> decorationDetail { get; set; }
|
||||
public string decorationPreview { get; set; }
|
||||
public bool? must_have_spu { get; set; } = false;
|
||||
public bool? can_not_change_cat { get; set; } = false;
|
||||
public bool? can_not_change_spu { get; set; } = false;
|
||||
public bool? is_transfer_spu { get; set; } = false;
|
||||
|
||||
public object size_parent_spec_id { get; set; }
|
||||
public int? is_shop { get; set; } = 0;
|
||||
public int? goods_type { get; set; } = 1;
|
||||
public int? invoice_status { get; set; } = 0;
|
||||
public int? privacy_delivery { get; set; } = 0;
|
||||
public object invoice_mode { get; set; }
|
||||
public int? zhi_huan_bu_xiu { get; set; } = 0;
|
||||
public int? quan_guo_lian_bao { get; set; } = 0;
|
||||
public int? second_hand { get; set; } = 0;
|
||||
public bool? is_two_num_group { get; set; } = false;
|
||||
public int? is_pre_sale { get; set; } = 0;
|
||||
public string pre_sale_time { get; set; }
|
||||
public string country_id { get; set; } = "0";
|
||||
public int? origin_country_id { get; set; } = 0;
|
||||
public string warehouse { get; set; }
|
||||
public string customs { get; set; }
|
||||
public int? is_customs { get; set; } = 0;
|
||||
public long? shipment_limit_second { get; set; } = 172800;
|
||||
public object delivery_type { get; set; }
|
||||
public long? cost_template_id { get; set; } //136204643207510;
|
||||
public int? weight { get; set; } = 1;
|
||||
public bool? is_all_weight_same { get; set; } = true;
|
||||
|
||||
public group_item groups { get; set; }
|
||||
|
||||
public int? is_folt { get; set; } = 0;
|
||||
public int? is_refundable { get; set; } = 1;
|
||||
public int? thawed_refund { get; set; } = 0;
|
||||
public int? damage_claim { get; set; } = 0;
|
||||
public int? lack_of_weight_claim { get; set; } = 0;
|
||||
public int? goods_certificate { get; set; } = 0;
|
||||
public int? goods_pattern { get; set; } = 8;
|
||||
public int? customizable { get; set; } = 0;
|
||||
public object local_service_id_list { get; set; }
|
||||
public int? shop_group_id { get; set; } = 0;
|
||||
|
||||
public schedule_sale_param schedule_sale { get; set; }
|
||||
public List<object> card_verification_list { get; set; } = new List<object>();
|
||||
public bool? is_spring_festival_open_tag { get; set; } = false;
|
||||
public List<object> transport_type_list { get; set; } = new List<object>();
|
||||
|
||||
public int? is_refundable_fifteen_day { get; set; } = 0;
|
||||
public int? is_warranty_one_year { get; set; } = 0;
|
||||
public extend_warranty_dto_param extend_warranty_dto { get; set; }
|
||||
public int? is_refundable_thirty_day { get; set; } = 0;
|
||||
public string home_delivery_template_name { get; set; } = "";
|
||||
public string promise_delivery_template_name { get; set; } = "";
|
||||
public object invoice_mode_sub_type { get; set; }
|
||||
public int? is_certificate_provide { get; set; } = 0;
|
||||
public bool? isAddLocalCityGoods { get; set; } = false;
|
||||
public int? is_customized { get; set; } = 0;
|
||||
public bool? isCoupon { get; set; } = false;
|
||||
public bool? allow_purchase_info_supply { get; set; } = false;
|
||||
public int? effect_logistics_weight_limit { get; set; } = 20000;
|
||||
public int? same_city_template_id { get; set; } = 0;
|
||||
public int? is_default_template_id { get; set; } = 1;
|
||||
public object cost_template_error { get; set; } = "";
|
||||
public int? allergy_refund { get; set; } = 0;
|
||||
public int? is_wp_service { get; set; } = 0;
|
||||
public int? is_size_change_casually { get; set; } = 0;
|
||||
public int? origin_is_pre_sale { get; set; } = 0;
|
||||
public List<object> goods_srv_templates { get; set; } = new List<object>();
|
||||
|
||||
public bool? is_only_for_remote_area { get; set; } = false;
|
||||
public bool? default_template_gray { get; set; } = true;
|
||||
public int? shipment_limit_second_origin_value { get; set; } = 0;
|
||||
public object elec_goods_attributes { get; set; }
|
||||
public int? delivery_one_day { get; set; } = 0;
|
||||
public int? is_sku_shipment { get; set; } = 0;
|
||||
public object mai_jia_zi_ti { get; set; }
|
||||
public object shang_men_an_zhuang { get; set; }
|
||||
public object song_huo_an_zhuang { get; set; }
|
||||
public object song_huo_ru_hu { get; set; }
|
||||
public List<object> qualification_id_list { get; set; } = new List<object>();
|
||||
|
||||
public List<sku_param> skus { get; set; }
|
||||
|
||||
public string market_price_in_yuan { get; set; }
|
||||
public int? market_price { get; set; }
|
||||
/// <summary>
|
||||
/// 货号
|
||||
/// </summary>
|
||||
public string out_goods_sn { get; set; } = "";
|
||||
public int? dead_line_seconds { get; set; } = 86399;
|
||||
public int? two_pieces_discount { get; set; } = 95;
|
||||
public int? gold_price_template_id { get; set; } = 0;
|
||||
public int? processing_charges { get; set; } = 0;
|
||||
public string processing_charges_in_yuan { get; set; } = "0";
|
||||
public int? processing_charges_type { get; set; } = 0;
|
||||
public List<gallery_param> gallery { get; set; }
|
||||
public int? is_sku_pre_sale { get; set; } = 0;
|
||||
public int? is_group_pre_sale { get; set; } = 0;
|
||||
|
||||
//public List<goods_property_param> goods_properties { get; set; }
|
||||
public List<goods_spec_property_param> goods_properties { get; set; }
|
||||
public object is_goods_copy { get; set; }
|
||||
public bool? is_auto_save { get; set; } = false;
|
||||
public string validate_message { get; set; }
|
||||
public string validate_message_v2 { get; set; }
|
||||
/// <summary>
|
||||
/// anti-content
|
||||
/// </summary>
|
||||
public string crawlerInfo { get; set; }
|
||||
}
|
||||
|
||||
public class goods_property_param
|
||||
{
|
||||
public long? template_pid { get; set; }
|
||||
public long? template_module_id { get; set; }
|
||||
public int? ref_pid { get; set; }
|
||||
public int? pid { get; set; }
|
||||
public long? vid { get; set; }
|
||||
public string value { get; set; }
|
||||
public string value_unit { get; set; }
|
||||
public table_info_dto_param table_info_dto { get; set; }
|
||||
public string content { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class table_info_dto_param
|
||||
{
|
||||
public List<table_value_param> table_value_list { get; set; }
|
||||
}
|
||||
|
||||
public class table_value_param
|
||||
{
|
||||
public string value { get; set; } // "100.0",
|
||||
public string unit { get; set; } // "%"
|
||||
}
|
||||
|
||||
public class goods_spec_property_param : goods_property_param
|
||||
{
|
||||
// 以下为sku属性
|
||||
public long? parent_spec_id { get; set; }
|
||||
public long? spec_id { get; set; }
|
||||
public string note { get; set; }
|
||||
public string img_url { get; set; }
|
||||
public int? group_id { get; set; }
|
||||
}
|
||||
|
||||
public class gallery_param
|
||||
{
|
||||
public string url { get; set; }
|
||||
public int? type { get; set; }
|
||||
public object file_id { get; set; }
|
||||
}
|
||||
|
||||
public class extend_warranty_dto_param
|
||||
{
|
||||
public int? extend_warranty { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class schedule_sale_param
|
||||
{
|
||||
public int? sale_type { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class title_keyword_param
|
||||
{
|
||||
public string keyword { get; set; }
|
||||
public string source { get; set; }
|
||||
public bool? hot { get; set; }
|
||||
public object rk { get; set; }
|
||||
public object bad_keyword { get; set; }
|
||||
public object good_tag_desc { get; set; }
|
||||
public object bad_tag_desc { get; set; }
|
||||
|
||||
}
|
||||
public class isbn_properties_related_param
|
||||
{
|
||||
public bool? isInit { get; set; } = true;
|
||||
}
|
||||
|
||||
public class sku_param
|
||||
{
|
||||
public long? id { get; set; }
|
||||
public long? sku_id { get; set; }
|
||||
public int? limit_quantity { get; set; }
|
||||
public string out_sku_sn { get; set; }
|
||||
public int? is_onsale { get; set; }
|
||||
public int? pre_sale_time { get; set; }
|
||||
public string multi_price_in_yuan
|
||||
{
|
||||
get { return (multi_price.ParseToInt() * 0.01).ParseToString(); }
|
||||
set { }
|
||||
}
|
||||
public string price_in_yuan
|
||||
{
|
||||
get { return (price.ParseToInt() * 0.01).ParseToString(); }
|
||||
set { }
|
||||
}
|
||||
public int? multi_price { get; set; }
|
||||
public int? price { get; set; }
|
||||
public int? quantity_delta { get; set; }
|
||||
public string thumb_url { get; set; }
|
||||
public long? thumb_url_file_id { get; set; }
|
||||
public int? weight { get; set; }
|
||||
public List<spec_param> spec { get; set; }
|
||||
public object length { get; set; }
|
||||
public object oversea_sku { get; set; }
|
||||
public string sku_srv_templates { get; set; }
|
||||
public List<object> shipment_limit_second_list { get; set; }
|
||||
public string sku69_code { get; set; }
|
||||
}
|
||||
|
||||
public class spec_param
|
||||
{
|
||||
public long? parent_id { get; set; }
|
||||
public string parent_name { get; set; }
|
||||
public long? spec_id { get; set; }
|
||||
public string spec_name { get; set; }
|
||||
public object is_custom { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam
|
||||
{
|
||||
public class PddEditProdStockQuantity
|
||||
{
|
||||
//{"data":[{"beforeQuantity":99,"goodsId":934133582718,"quantity":-99,"skuId":1881716571234}],"sourceId":1}
|
||||
public List<quantityData> data { get; set; }
|
||||
public int? sourceId { get; set; } = 1;
|
||||
}
|
||||
|
||||
public class quantityData
|
||||
{
|
||||
public int? beforeQuantity { get; set; }
|
||||
public long? goodsId { get; set; }
|
||||
public int? quantity { get; set; }
|
||||
public long? skuId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.PDDProdParam
|
||||
{
|
||||
public class PddRelationParam
|
||||
{
|
||||
public string up_spu_id { get; set; } // "88C9F35912594F76A21CDD5F36DAE972",
|
||||
public string up_goods_name { get; set; } // "婴儿衣服POLO衫短袖T恤0-3岁男童夏装宝宝女小童上衣儿童幼儿外出",
|
||||
public string from_site { get; set; } // "vd",
|
||||
public string goods_id { get; set; } // "7735389957",
|
||||
public string shop_id { get; set; } // "1668907464",
|
||||
public string price_min { get; set; } // 8941,
|
||||
public string price_max { get; set; } // 8941,
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.SalesManage
|
||||
{
|
||||
// 直降 {"sub_stype":"0","shop_stype":"2","title":"123454321","time_set_type":"0","promotion_goods":[{"product_id":"3548176868555547395","title":"不锈钢铁板烧料理铲子西餐披萨铲刀手抓饼压铲生煎饼工具炒冰铲子","cover":"https://p9-aio.ecombdimg.com/obj/ecom-shop-material/v1_NxryKpcR_70963536160382815020819_1ad5b45b1ae22a3fdb44cbe31f490e02_sx_148382_www800-800","config_scope":"0","promotion_skus":[{"id":"1732508235120728","camp_stock_num":"1","user_limit":"1","price":"undefined","shop_svalue":"200"},{"id":"1732508235120712","camp_stock_num":"5","user_limit":"1","price":"undefined","shop_svalue":"100"}]}],"order_expire_time":"600","pre_begin_time":"2022-05-14 20:30:00","begin_time":"2022-05-16 00:00:00","end_time":"2022-05-16 23:59:59","sold_out_type":"1","create_action_type":"0"}
|
||||
// 一口价 {"sub_stype":"0","shop_stype":"1","title":"33333","time_set_type":"0","promotion_goods":[{"product_id":"3548176868555547395","title":"不锈钢铁板烧料理铲子西餐披萨铲刀手抓饼压铲生煎饼工具炒冰铲子","cover":"https://p3-aio.ecombdimg.com/obj/ecom-shop-material/v1_NxryKpcR_70963536160382815020819_1ad5b45b1ae22a3fdb44cbe31f490e02_sx_148382_www800-800","config_scope":"0","promotion_skus":[{"id":"1732508235120728","camp_stock_num":"3","user_limit":"2","price":"3800"}]}],"order_expire_time":"300","pre_begin_time":"2022-05-16 00:00:00","begin_time":"2022-05-16 00:00:00","end_time":"2022-05-16 23:59:59","sold_out_type":"1","create_action_type":"0"}
|
||||
// {"sub_stype":"0","shop_stype":"1","title":"3213","time_set_type":"1","promotion_goods":[{"product_id":"3548176868555547395","title":"不锈钢铁板烧料理铲子西餐披萨铲刀手抓饼压铲生煎饼工具炒冰铲子","cover":"https://p3-aio.ecombdimg.com/obj/ecom-shop-material/v1_NxryKpcR_70963536160382815020819_1ad5b45b1ae22a3fdb44cbe31f490e02_sx_148382_www800-800","config_scope":"0","promotion_skus":[{"id":"1732508235120728","camp_stock_num":"1","user_limit":"1","price":"3900"},{"id":"1732508235120712","camp_stock_num":"1","user_limit":"1","price":"2800"},{"id":"1732508235119736","camp_stock_num":"1","user_limit":"1","price":"2800"}]}],"order_expire_time":"300","pre_begin_time":"2022-05-16 12:23:41","begin_time":"2022-05-16 12:23:41","end_time":"2022-05-16 12:53:41","sold_out_type":"0","create_action_type":"0"}
|
||||
// 折扣 {"sub_stype":"0","shop_stype":"3","title":"5555","time_set_type":"0","promotion_goods":[{"product_id":"3548176868555547395","title":"不锈钢铁板烧料理铲子西餐披萨铲刀手抓饼压铲生煎饼工具炒冰铲子","cover":"https://p6-aio.ecombdimg.com/obj/ecom-shop-material/v1_NxryKpcR_70963536160382815020819_1ad5b45b1ae22a3fdb44cbe31f490e02_sx_148382_www800-800","config_scope":"0","promotion_skus":[{"id":"1732508235120728","camp_stock_num":"1","user_limit":"3","price":"undefined","shop_svalue":"90"},{"id":"1732508235120712","camp_stock_num":"2","user_limit":"4","price":"undefined","shop_svalue":"90"},{"id":"1732508235119736","camp_stock_num":"3","user_limit":"1","price":"undefined","shop_svalue":"90"}]}],"order_expire_time":"300","pre_begin_time":"2022-05-16 00:00:00","begin_time":"2022-05-16 00:00:00","end_time":"2022-05-16 23:59:59","sold_out_type":"0","create_action_type":"0"}
|
||||
public class PromotionAddParam
|
||||
{
|
||||
public string sub_stype { get; set; } = "0";
|
||||
/// <summary>
|
||||
/// 优惠方式 "1":一口价 "2":直降 "3":折扣
|
||||
/// </summary>
|
||||
public string shop_stype { get; set; } = "2";
|
||||
/// <summary>
|
||||
/// 活动标题
|
||||
/// </summary>
|
||||
public string title { get; set; }
|
||||
/// <summary>
|
||||
/// 活动时间 "0":按按开始结束时间设置 "1":按时间段选择
|
||||
/// </summary>
|
||||
public string time_set_type { get; set; } = "0";
|
||||
/// <summary>
|
||||
/// 订单取消时间 单位:秒,默认5分钟
|
||||
/// </summary>
|
||||
public string order_expire_time { get; set; } = "300";
|
||||
/// <summary>
|
||||
/// 预热开始时间 2022-05-14 20:30:00"
|
||||
/// </summary>
|
||||
public string pre_begin_time { get; set; }
|
||||
/// <summary>
|
||||
/// 活动开始时间 2022-05-16 00:00:00
|
||||
/// </summary>
|
||||
public string begin_time { get; set; }
|
||||
/// <summary>
|
||||
/// 活动结束时间 2022-05-16 23:59:59
|
||||
/// </summary>
|
||||
public string end_time { get; set; }
|
||||
/// <summary>
|
||||
/// 活动库存售罄设置 "0":恢复为原价继续售卖 "1":停止售卖,商品标示“已抢光”
|
||||
/// </summary>
|
||||
public string sold_out_type { get; set; } = "0";
|
||||
public string create_action_type { get; set; } = "0";
|
||||
}
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.SalesManage
|
||||
{
|
||||
public class ActSkuListItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? skuId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int? activityPrice { get; set; }
|
||||
}
|
||||
|
||||
public class ActSkcListItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? skcId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ActSkuListItem> skuList { get; set; }
|
||||
}
|
||||
|
||||
public class ActProductListItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? productId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int? activityStock { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ActSkcListItem> skcList { get; set; }
|
||||
|
||||
public List<long> sessionIds { get; set; } = new List<long>();
|
||||
}
|
||||
|
||||
public class TemuActivityParam
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int? activityType { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? activityThematicId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ActProductListItem> productList { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ShopManage
|
||||
{
|
||||
public class TemuShopSettingParam
|
||||
{
|
||||
public bool IsAutoDragLogin { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@@ -1,702 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.TemuProductManage
|
||||
{
|
||||
/// <summary>
|
||||
/// temu商品上传
|
||||
/// </summary>
|
||||
public class ProductPropertyReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? templatePid { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? pid { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? refPid { get; set; }
|
||||
/// <summary>
|
||||
/// 风格
|
||||
/// </summary>
|
||||
public string propName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? vid { get; set; }
|
||||
/// <summary>
|
||||
/// 时尚
|
||||
/// </summary>
|
||||
public string propValue { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string valueUnit { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string valueExtendInfo { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string numberInputValue { get; set; }
|
||||
|
||||
public int? controlType { get; set; }
|
||||
}
|
||||
|
||||
public class MainProductSkuSpecReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? parentSpecId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string parentSpecName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? specId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string specName { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuSpecReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? parentSpecId { get; set; }
|
||||
/// <summary>
|
||||
/// 颜色
|
||||
/// </summary>
|
||||
public string parentSpecName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? specId { get; set; }
|
||||
/// <summary>
|
||||
/// 米白色
|
||||
/// </summary>
|
||||
public string specName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? groupId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? vid { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuSuggestedPriceReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int? suggestedPrice { get; set; }
|
||||
public string specialSuggestedPrice { get; set; }
|
||||
public string suggestedPriceCurrencyType { get; set; }
|
||||
public string suggestedPriceProveFiles { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuUsSuggestedPriceReq
|
||||
{
|
||||
}
|
||||
|
||||
public class ProductSkuVolumeReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? len { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? width { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? height { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuWeightReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? value { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuSensitiveAttrReq
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否敏感属性
|
||||
/// </summary>
|
||||
public long? isSensitive { get; set; }
|
||||
/// <summary>
|
||||
/// 敏感属性列表
|
||||
/// </summary>
|
||||
public List<object> sensitiveList { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuSensitiveLimitReq
|
||||
{
|
||||
public int? maxLiquidCapacityHp { get; set; } // 1000 代表1毫升
|
||||
}
|
||||
|
||||
public class ProductSkuWhExtAttrReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuVolumeReq productSkuVolumeReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuWeightReq productSkuWeightReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productSkuBarCodeReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuSensitiveAttrReq productSkuSensitiveAttrReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuSensitiveLimitReq productSkuSensitiveLimitReq { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuNetContentReq
|
||||
{
|
||||
}
|
||||
|
||||
public class ProductSkuMultiPackReq
|
||||
{
|
||||
/// <summary>
|
||||
/// sku 1单品 2同款多件 3混合套装
|
||||
/// </summary>
|
||||
public long? skuClassification { get; set; }
|
||||
/// <summary>
|
||||
/// 单品数量
|
||||
/// </summary>
|
||||
public long? numberOfPieces { get; set; }
|
||||
/// <summary>
|
||||
/// 1件 2双 3包
|
||||
/// </summary>
|
||||
public long? pieceUnitCode { get; set; }
|
||||
public ProductSkuNetContentReq productSkuNetContentReq { get; set; }
|
||||
public ProductSkuNetContentReq totalNetContent { get; set; }
|
||||
public int? mixedType { get; set; }
|
||||
//子类中实现
|
||||
//public int? individuallyPacked { get; set; }
|
||||
/// <summary>
|
||||
/// 共计内含
|
||||
/// </summary>
|
||||
public int? numberOfPiecesNew { get; set; }
|
||||
/// <summary>
|
||||
/// 件
|
||||
/// </summary>
|
||||
public int? pieceNewUnitCode { get; set; } // 锁定为1
|
||||
}
|
||||
|
||||
public class ProductSkuMultiPackReq2 : ProductSkuMultiPackReq
|
||||
{
|
||||
/// <summary>
|
||||
/// 非单品sku 1独立包装 0非独立包装
|
||||
/// </summary>
|
||||
public int? individuallyPacked { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuAccessoriesReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productSkuAccessories { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkuNonAuditExtAttrReq
|
||||
{
|
||||
}
|
||||
|
||||
public class ProductSkuReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string thumbUrl { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productSkuThumbUrlI18nReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string extCode { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? supplierPrice { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string currencyType { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ProductSkuSpecReqsItem> productSkuSpecReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? productSkuId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuSuggestedPriceReq productSkuSuggestedPriceReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuUsSuggestedPriceReq productSkuUsSuggestedPriceReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuWhExtAttrReq productSkuWhExtAttrReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuMultiPackReq productSkuMultiPackReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuAccessoriesReq productSkuAccessoriesReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSkuNonAuditExtAttrReq productSkuNonAuditExtAttrReq { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSkcReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<string> previewImgUrls { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productSkcCarouselImageI18nReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string extCode { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<MainProductSkuSpecReqsItem> mainProductSkuSpecReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ProductSkuReqsItem> productSkuReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? productSkcId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? isBasePlate { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSpecPropertyReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? parentSpecId { get; set; }
|
||||
/// <summary>
|
||||
/// 颜色
|
||||
/// </summary>
|
||||
public string parentSpecName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? specId { get; set; }
|
||||
/// <summary>
|
||||
/// 米白色
|
||||
/// </summary>
|
||||
public string specName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? groupId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? vid { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? refPid { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? pid { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? templatePid { get; set; }
|
||||
/// <summary>
|
||||
/// 颜色
|
||||
/// </summary>
|
||||
public string propName { get; set; }
|
||||
/// <summary>
|
||||
/// 米白色
|
||||
/// </summary>
|
||||
public string propValue { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string valueUnit { get; set; } = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? valueGroupId { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 白色系
|
||||
/// </summary>
|
||||
public string valueGroupName { get; set; } = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string valueExtendInfo { get; set; } = "";
|
||||
}
|
||||
|
||||
public class ContentListItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string imgUrl { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? height { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? width { get; set; }
|
||||
}
|
||||
|
||||
public class GoodsLayerDecorationReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? floorId { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string lang { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string key { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string type { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? priority { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ContentListItem> contentList { get; set; }
|
||||
}
|
||||
|
||||
public class ProductOrigin
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string countryShortName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? region2Id { get; set; }
|
||||
}
|
||||
|
||||
public class ProductWhExtAttrReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string outerGoodsUrl { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductOrigin productOrigin { get; set; }
|
||||
}
|
||||
|
||||
public class ProductOuterPackageImageReqsItem
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string imageUrl { get; set; }
|
||||
}
|
||||
|
||||
public class ProductOuterPackageReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? packageShape { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? packageType { get; set; }
|
||||
}
|
||||
|
||||
public class ProductSaleExtAttrReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public object bodyShape { get; set; }
|
||||
}
|
||||
|
||||
public class California65WarningInfoReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public object california65WarningType { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public object california65ChemicalNames { get; set; }
|
||||
}
|
||||
|
||||
public class CosmeticInfoReq
|
||||
{
|
||||
}
|
||||
|
||||
public class ProductNonAuditExtAttrReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public California65WarningInfoReq california65WarningInfoReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public CosmeticInfoReq cosmeticInfoReq { get; set; }
|
||||
}
|
||||
|
||||
public class ProductComplianceStatementReq
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string protocolVersion { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string protocolUrl { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// temu商品上传类
|
||||
/// </summary>
|
||||
public class TemuProductParam
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat1Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat2Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat3Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat4Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat5Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat6Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat7Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat8Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat9Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? cat10Id { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> materialMultiLanguages { get; set; }
|
||||
/// <summary>
|
||||
/// 女士时尚夏季厚底人字拖 - 舒适的 EVA 材质,厚底,易滑设计,白色和棕色点缀,非常适合休闲穿着,女式厚底人字拖,防水台人字拖凉鞋,女士鞋 – 轻质防水台凉鞋女式沙滩度假必备品,女士人字拖带舒适足弓支撑女士时尚防水台夹趾凉鞋柔软瑜伽垫鞋底适合海滩/室内室外
|
||||
/// </summary>
|
||||
public string productName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<productI18nParam> productI18nReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ProductPropertyReqsItem> productPropertyReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ProductSkcReqsItem> productSkcReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ProductSpecPropertyReqsItem> productSpecPropertyReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<string> carouselImageUrls { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> carouselImageI18nReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string materialImgUrl { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<GoodsLayerDecorationReqsItem> goodsLayerDecorationReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> goodsLayerDecorationCustomizeI18nReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<long?> sizeTemplateIds { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<long?> showSizeTemplateIds { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> goodsModelReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductWhExtAttrReq productWhExtAttrReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<productCarouseVideoReqItem> productCarouseVideoReqList { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> goodsAdvantageLabelTypes { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productDetailVideoReqList { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<ProductOuterPackageImageReqsItem> productOuterPackageImageReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductOuterPackageReq productOuterPackageReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> sensitiveTransNormalFileReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productGuideFileNewReqList { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productGuideFileI18nReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductSaleExtAttrReq productSaleExtAttrReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductNonAuditExtAttrReq productNonAuditExtAttrReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? personalizationSwitch { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProductComplianceStatementReq productComplianceStatementReq { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<object> productOriginCertFileReqs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public long? productDraftId { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class productI18nParam
|
||||
{
|
||||
public string productName { get; set; } // "Men's slippers sandals, outdoor summer thick-soled wedge sandals, Korean-style men's summer flip-flops, house slippers",
|
||||
public string language { get; set; } // "en"
|
||||
}
|
||||
|
||||
public class productCarouseVideoReqItem
|
||||
{
|
||||
public string vid { get; set; }
|
||||
public string coverUrl { get; set; }
|
||||
public string videoUrl { get; set; }
|
||||
public int? videoType { get; set; }
|
||||
public int? width { get; set; }
|
||||
public int? height { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.TemuProductManage
|
||||
{
|
||||
public class TemuProductWords
|
||||
{
|
||||
public string HeadWords { get; set; } = "5-99个";
|
||||
public string EndWords { get; set; } = "适合不同的搭配风格";
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.TemuProductManage
|
||||
{
|
||||
/// <summary>
|
||||
/// 尺码表
|
||||
/// </summary>
|
||||
public class TemuSizeSpecParam
|
||||
{
|
||||
public ContentItem content { get; set; } //
|
||||
public long? catId { get; set; }
|
||||
public long? classId { get; set; }
|
||||
/// <summary>
|
||||
/// 尺码表名称
|
||||
/// </summary>
|
||||
public string name { get; set; }
|
||||
public bool? reusable { get; set; }
|
||||
public ExtItem ext { get; set; }
|
||||
public object productCreateTime { get; set; }
|
||||
}
|
||||
|
||||
public class ContentItem
|
||||
{
|
||||
public MetaItem meta { get; set; }
|
||||
public List<RecordsItem> records { get; set; }
|
||||
public int? localSizeSource { get; set; }
|
||||
public int? generalSizeType { get; set; }
|
||||
}
|
||||
|
||||
public class MetaItem
|
||||
{
|
||||
public List<ElementsItem> elements { get; set; }
|
||||
public List<GroupsItem> groups { get; set; }
|
||||
}
|
||||
|
||||
public class ElementsItem
|
||||
{
|
||||
public long? id { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
public class GroupsItem
|
||||
{
|
||||
public long? id { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
|
||||
public class RecordsItem
|
||||
{
|
||||
public Dictionary<string, string> values { get; set; }
|
||||
}
|
||||
|
||||
public class ExtItem
|
||||
{
|
||||
public List<object> manualGroupIdList { get; set; }
|
||||
public bool? isDoubleSize { get; set; }
|
||||
public List<long> unEnbleAutoSelectedList { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ToolsManage
|
||||
{
|
||||
public class ADSLAccountParam
|
||||
{
|
||||
public bool IsUseAdsl { get; set; }
|
||||
public string Account { get; set; }
|
||||
public string Password { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ToolsManage
|
||||
{
|
||||
public class ProductMappingExportInfo : ProductMappingImportParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 虚拟上家来源,淘宝,京东,苏宁
|
||||
/// </summary>
|
||||
public string FakeMappingFrom { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 找到的真实的虚假上家商品ID
|
||||
/// </summary>
|
||||
public string FakeMappingProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品真实上家数据Json
|
||||
/// </summary>
|
||||
public string ProductDataJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 虚拟上家产品价格
|
||||
/// </summary>
|
||||
public int FakeMappingProductPrice { get; set; }
|
||||
|
||||
public string FakeMappingProductMaxPrice { get; set; }
|
||||
|
||||
public string FakeMappingProductMinPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 苏宁上家时的商家ID(搜索价格用)
|
||||
/// </summary>
|
||||
public string FakeMappingVendorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 运费
|
||||
/// </summary>
|
||||
public string PostFee { get; set; }
|
||||
|
||||
public string MappingQuery {get;set;}
|
||||
}
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.ToolsManage
|
||||
{
|
||||
public class ProductMappingImportParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品来源,目前支持淘宝,拼多多(搜款网),阿里巴巴
|
||||
/// </summary>
|
||||
public string From { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品ID
|
||||
/// </summary>
|
||||
public string ProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 记录当商品来源为搜款网(实际为拼多多)时对应的真实Id
|
||||
/// </summary>
|
||||
public string RealProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品标题
|
||||
/// </summary>
|
||||
public string ProductTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 上家类目
|
||||
/// </summary>
|
||||
public string CatId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 类目4
|
||||
/// </summary>
|
||||
public string CatId4 { get; set; }
|
||||
/// <summary>
|
||||
/// 类目3
|
||||
/// </summary>
|
||||
public string CatId3 { get; set; }
|
||||
/// <summary>
|
||||
/// 类目2
|
||||
/// </summary>
|
||||
public string CatId2 { get; set; }
|
||||
/// <summary>
|
||||
/// 类目1
|
||||
/// </summary>
|
||||
public string CatId1 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品主类目
|
||||
/// </summary>
|
||||
public string MainCid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用来搜索同款的图片网址
|
||||
/// </summary>
|
||||
public string Image { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 映射关系建立的结果
|
||||
/// </summary>
|
||||
public string MappingResult { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微店分成推广金设置结果
|
||||
/// </summary>
|
||||
public string CPSResult { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最低价格
|
||||
/// </summary>
|
||||
public int MinPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最高价格
|
||||
/// </summary>
|
||||
public int MaxPrice { get; set; }
|
||||
/// <summary>
|
||||
/// 数据来源0 是其他 1是净化数据
|
||||
/// </summary>
|
||||
public int dataSoure { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转换成功来源 未知,Api,模拟,缓存等 统计用
|
||||
/// </summary>
|
||||
public string MappingResourceType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转换重试次数
|
||||
/// </summary>
|
||||
public int retryTimes { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.UploadManage
|
||||
{
|
||||
/// <summary>
|
||||
/// 上货佣金设置参数
|
||||
/// </summary>
|
||||
public class UploadCommissionParam
|
||||
{
|
||||
public long ProductId { get; set; }
|
||||
|
||||
public bool? IsSet { get; set; } = null;
|
||||
|
||||
public string ShopName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 佣金比例 1 - 50 整数
|
||||
/// </summary>
|
||||
public int Rate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.UploadManage
|
||||
{
|
||||
public class UploadErrorParam
|
||||
{
|
||||
public string product_id { get; set; }
|
||||
public string source_id { get; set; }
|
||||
public string message { get; set; }
|
||||
public string cat_id { get; set; }
|
||||
public string cat_name { get; set; }
|
||||
public DateTime addtime { get; set; }
|
||||
public DateTime update_time { get; set; }
|
||||
public bool is_repair { get; set; } = false;
|
||||
|
||||
public string remark { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,298 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.VDianManage
|
||||
{
|
||||
|
||||
public class VDianParam
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class VDianItemAddParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 偏远地区是否包邮:1包邮,0不包邮只有在free_delivery为1时候有效,否则不包邮
|
||||
/// </summary>
|
||||
public byte remote_free_delivery { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品描述
|
||||
/// </summary>
|
||||
public string item_comment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品编号
|
||||
/// </summary>
|
||||
public string merchant_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// status=1或不传为在架商品,status=2为下架商品,4表示下架和在架商品
|
||||
/// </summary>
|
||||
public byte status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品图片
|
||||
/// </summary>
|
||||
public List<string> bigImgs { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品图片描述
|
||||
/// </summary>
|
||||
public List<string> titles { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库存
|
||||
/// </summary>
|
||||
public int stock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否包邮:0不包邮,1包邮
|
||||
/// </summary>
|
||||
public byte free_delivery { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品采购价(单位:分)
|
||||
/// </summary>
|
||||
public int purchase_fee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品详情
|
||||
/// </summary>
|
||||
public List<VDianItemDetail> item_detail_list { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品sku
|
||||
/// </summary>
|
||||
public List<VDianSku> sku { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品属性图片列表
|
||||
/// </summary>
|
||||
public List<VDianAttrValuePic> attr_list { get; set; }
|
||||
|
||||
public List<VDianParam.VDianAttr> attrList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 价格
|
||||
/// </summary>
|
||||
public string price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品描述
|
||||
/// </summary>
|
||||
public string item_name { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 微店接口参数定义
|
||||
/// public={"access_token": "xxxxx", "version": "1.4", "method": "vdian.item.add", "format": "json","auth_userid":"923284842"}
|
||||
/// </summary>
|
||||
public class VDianPublicParam
|
||||
{
|
||||
public string access_token { get; set; }
|
||||
public const string version = "1.4";
|
||||
public string method { get; set; } // "method": "vdian.item.add"
|
||||
public const string format = "json";
|
||||
public string auth_userid { get; set; } // "auth_userid": "923284842"
|
||||
}
|
||||
|
||||
public class VDianItemDetail
|
||||
{
|
||||
/// <summary>
|
||||
/// type =1 文字模块,type =2 图片
|
||||
/// </summary>
|
||||
public byte type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品图片URL
|
||||
/// </summary>
|
||||
public string url { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 详情文本(type=1填写此字段)
|
||||
/// </summary>
|
||||
public string text { get; set; }
|
||||
}
|
||||
|
||||
public class VDianSku
|
||||
{
|
||||
/// <summary>
|
||||
/// sku采购价格(单位:分)
|
||||
/// </summary>
|
||||
//public int purchaseFee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// sku编码
|
||||
/// </summary>
|
||||
//public string sku_merchant_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// sku图片
|
||||
/// </summary>
|
||||
public string img { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// sku库存
|
||||
/// </summary>
|
||||
public int stock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// sku价格
|
||||
/// </summary>
|
||||
public string price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// sku标题
|
||||
/// </summary>
|
||||
public string title { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// sku对应的属性id列表
|
||||
/// </summary>
|
||||
public List<string> attr_ids { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// sku特殊编码
|
||||
/// </summary>
|
||||
public string sku_merchant_code { get; set; }
|
||||
}
|
||||
|
||||
public class VDianProductBase
|
||||
{
|
||||
public VDianProductBase()
|
||||
{
|
||||
price = "";
|
||||
isPointPrice = 0;
|
||||
vpoint_limit_count = "";
|
||||
pointPrice = new PointPrice();
|
||||
point_price_range = 3;
|
||||
stock = "";
|
||||
weight = "";
|
||||
merchantCode = "";
|
||||
catePropList = new List<string>();
|
||||
expressFeeTemplateId = 0;
|
||||
freeDelivery = 0;
|
||||
remoteFreeDelivery = 0;
|
||||
isWeightTemplate = 0;
|
||||
cateIds = "";
|
||||
purchase_limit = false;
|
||||
purchase_limit_num = "";
|
||||
isNeedIdNo = "";
|
||||
isHiddenSetting = false;
|
||||
itemStatus = 1;
|
||||
areaTemplateId = "";
|
||||
areaTemplateFlag = 0;
|
||||
isFutureSold = false;
|
||||
futureSoldTime = "";
|
||||
submitWithLimitWords = false;
|
||||
submitWithSensitiveWord = false;
|
||||
isCheckQualification = true;
|
||||
}
|
||||
|
||||
public string shopId { get; set; }
|
||||
public string shopName { get; set; }
|
||||
public string itemId { get; set; }
|
||||
public List<VDianBigImg> imgs { get; set; }
|
||||
public string itemName { get; set; }
|
||||
public string price { get; set; }
|
||||
public int isPointPrice { get; set; }
|
||||
public string vpoint_limit_count { get; set; }
|
||||
public PointPrice pointPrice { get; set; }
|
||||
public int point_price_range { get; set; }
|
||||
public string stock { get; set; }
|
||||
public string weight { get; set; }
|
||||
public string merchantCode { get; set; }
|
||||
public long bgCateId { get; set; }
|
||||
public List<string> catePropList { get; set; }
|
||||
public string tmpDetailId { get; set; }
|
||||
public List<VDianAttr> attrList { get; set; }
|
||||
public List<VDianSkuProp> sku { get; set; }
|
||||
public int expressFeeTemplateId { get; set; }
|
||||
public int freeDelivery { get; set; }
|
||||
public int remoteFreeDelivery { get; set; }
|
||||
public int isWeightTemplate { get; set; }
|
||||
public string cateIds { get; set; }
|
||||
public bool purchase_limit { get; set; }
|
||||
public string purchase_limit_num { get; set; }
|
||||
public string isNeedIdNo { get; set; }
|
||||
public bool isHiddenSetting { get; set; }
|
||||
public int itemStatus { get; set; }
|
||||
public string areaTemplateId { get; set; }
|
||||
public int areaTemplateFlag { get; set; }
|
||||
public bool isFutureSold { get; set; }
|
||||
public string futureSoldTime { get; set; }
|
||||
public bool submitWithLimitWords { get; set; }
|
||||
public bool submitWithSensitiveWord { get; set; }
|
||||
public bool isCheckQualification { get; set; }
|
||||
}
|
||||
|
||||
public class VDianBigImg
|
||||
{
|
||||
public string url { get; set; }
|
||||
public string title { get; set; }
|
||||
}
|
||||
|
||||
public class PointPrice
|
||||
{
|
||||
public string price { get { return _price; } set { _price = value; } }
|
||||
public string point { get { return _point; } set { _point = value; } }
|
||||
string _point = "";
|
||||
string _price = "";
|
||||
}
|
||||
|
||||
public class VDianAttr
|
||||
{
|
||||
public string attr_title { get; set; }
|
||||
public List<VDianAttrValue> attr_values { get; set; }
|
||||
}
|
||||
|
||||
public class VDianAttrValue
|
||||
{
|
||||
public long attr_id { get; set; }
|
||||
public string attr_value { get; set; }
|
||||
public string attr_title { get; set; }
|
||||
}
|
||||
|
||||
public class VDianAttrValuePic
|
||||
{
|
||||
public long attr_id { get; set; }
|
||||
public List<string> attr_values { get; set; }
|
||||
public string attr_title { get; set; }
|
||||
public string img { get; set; }
|
||||
}
|
||||
|
||||
public class VDianSkuProp
|
||||
{
|
||||
public List<long> attrIds { get; set; }
|
||||
public string price { get; set; }
|
||||
public string stock { get; set; }
|
||||
public string merchantCode { get; set; } = "";
|
||||
}
|
||||
|
||||
// 微店佣金
|
||||
public class VDianCommission
|
||||
{
|
||||
public string itemIds { get; set; }
|
||||
public bool isDownPrice { get; set; }
|
||||
public bool isUpPrice { get; set; }
|
||||
public int priceUpLimit { get; set; }
|
||||
public VDianCommissionRate commissionRate { get; set; }
|
||||
public string specifyRetailSellerIds { get; set; }
|
||||
public string specifyCommissionRate { get; set; }
|
||||
}
|
||||
|
||||
// 微店佣金级别
|
||||
public class VDianCommissionRate
|
||||
{
|
||||
public string L1 { get; set; }
|
||||
public string L2 { get; set; }
|
||||
public string L3 { get; set; }
|
||||
public string L4 { get; set; }
|
||||
public string L5 { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LittleCow.Model.Param.WeiDianManage
|
||||
{
|
||||
public class WeiDianSettingParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 微店上货加价比例
|
||||
/// </summary>
|
||||
public string AddPercent { get; set; }
|
||||
/// <summary>
|
||||
/// 微店上货额外加价
|
||||
/// </summary>
|
||||
public string AddPrice { get; set; }
|
||||
/// <summary>
|
||||
/// 是否设置推广金
|
||||
/// </summary>
|
||||
public bool IsSetCps { get; set; }
|
||||
/// <summary>
|
||||
/// 推广金比例
|
||||
/// </summary>
|
||||
public string CpsPercent { get; set; }
|
||||
/// <summary>
|
||||
/// 线程数量
|
||||
/// </summary>
|
||||
public string ThreadCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 全店推广金基础比例
|
||||
/// </summary>
|
||||
public string ShopCpsCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品上下架等操作的搜索关键字
|
||||
/// </summary>
|
||||
public string ProductKeywords { get; set; }
|
||||
/// <summary>
|
||||
/// 最近几天的不清理
|
||||
/// </summary>
|
||||
public string NotClearDays { get; set; }
|
||||
/// <summary>
|
||||
/// 不清理下架有销量商品
|
||||
/// </summary>
|
||||
public bool IsNotClearHasSales { get; set; }
|
||||
/// <summary>
|
||||
/// 操作的商品数量
|
||||
/// </summary>
|
||||
public string ProductCount { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
public class WXCateAuthParam
|
||||
{
|
||||
public categoryAuthInfoParam categoryInfo { get; set; } = new categoryAuthInfoParam();
|
||||
public List<object> brandIdList { get; set; } = new List<object>();
|
||||
public long? leafCategoryId { get; set; } // 7483
|
||||
public int? reuse { get; set; } = 0;
|
||||
public string applyType { get; set; } = "normalApply";
|
||||
}
|
||||
public class categoryAuthInfoParam
|
||||
{
|
||||
public List<WXCateId> categories { get; set; } = new List<WXCateId>();
|
||||
public string categoryDeposit { get; set; } // "1000.00";
|
||||
public bool? isNewApplyCat { get; set; } = true;
|
||||
public List<licenseGroup> licenseGroupList { get; set; } = new List<licenseGroup>();
|
||||
public int? ruleVersion { get; set; }
|
||||
public List<object> certificate { get; set; } = new List<object>();
|
||||
}
|
||||
|
||||
public class licenseGroup
|
||||
{
|
||||
public string licenseGroupId { get; set; } = "1";
|
||||
public licenseParam license { get; set; } = new licenseParam();
|
||||
}
|
||||
|
||||
public class licenseParam
|
||||
{
|
||||
public string licenseId { get; set; } = "4";
|
||||
public List<string> cosIdList { get; set; } = new List<string>();
|
||||
public List<KeyValueParam> licenseFieldList { get; set; } = new List<KeyValueParam>();
|
||||
public bool? isReuse { get; set; } = true;
|
||||
}
|
||||
|
||||
public class KeyValueParam
|
||||
{
|
||||
public string key { get; set; } // "audit_license_registration_no" // "search_url"
|
||||
public string value { get; set; } // "YB23509020049441" // ""
|
||||
}
|
||||
|
||||
public class WXCateId
|
||||
{
|
||||
public long? id { get; set; } // 10000215
|
||||
}
|
||||
}
|
||||
@@ -1,145 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
public class WXCouponParamBase
|
||||
{
|
||||
public WXCouponParam coupon { get; set; } = new WXCouponParam();
|
||||
public bool? check { get; set; } // true
|
||||
}
|
||||
|
||||
public class WXCouponParam
|
||||
{
|
||||
public WXCouponKeyParam couponKey { get; set; } = new WXCouponKeyParam();
|
||||
public WXCouponInfoParam couponInfo { get; set; } = new WXCouponInfoParam();
|
||||
public int? status { get; set; } // 2-生效中 4-已作废 5-已删除
|
||||
}
|
||||
|
||||
public class WXCouponInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 活动名称,使用商品ID
|
||||
/// </summary>
|
||||
public string name { get; set; } // "10000509758262",
|
||||
public promoteInfoParam promoteInfo { get; set; } = new promoteInfoParam();
|
||||
public receiveInfoParam receiveInfo { get; set; } = new receiveInfoParam();
|
||||
public extInfoParam extInfo { get; set; } = new extInfoParam();
|
||||
public CouponValidInfoParam validInfo { get; set; } = new CouponValidInfoParam();
|
||||
public discountInfoParam discountInfo { get; set; } = new discountInfoParam();
|
||||
public mmpayShakeInfoParam mmpayShakeInfo { get; set; } = new mmpayShakeInfoParam();
|
||||
}
|
||||
|
||||
public class mmpayShakeInfoParam
|
||||
{
|
||||
public string productName { get; set; } = "";
|
||||
public string productHeadImgUrl { get; set; } = "";
|
||||
public string productBackgroundImgUrl { get; set; } = "";
|
||||
public List<string> productDetailImgUrlList { get; set; } = new List<string>();
|
||||
|
||||
}
|
||||
|
||||
public class discountInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 统一折扣或条件折扣的折扣
|
||||
/// </summary>
|
||||
public string discountNum { get; set; } = ""; // "9.9" // 99折;
|
||||
/// <summary>
|
||||
/// 满xx减yy的yy
|
||||
/// </summary>
|
||||
public string discountFee { get; set; } = "0"; // "1";
|
||||
/// <summary>
|
||||
/// 满减是否可累进(每满xx减yy)
|
||||
/// </summary>
|
||||
public bool? isCanUp { get; set; } = false; // false-满xx减yy true-每满xx减yy
|
||||
public discountConditionParam discountCondition { get; set; } = new discountConditionParam();
|
||||
}
|
||||
|
||||
public class discountConditionParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 参加活动的商品ID列表
|
||||
/// </summary>
|
||||
public List<long> productIds { get; set; } = new List<long>(); // [10000509758262],
|
||||
public List<object> excludeProductIds { get; set; } = new List<object>();
|
||||
/// <summary>
|
||||
/// 条件折扣件数 满xx件打yy折的xx 如果不是条件折扣,填0
|
||||
/// </summary>
|
||||
public int? productCnt { get; set; } = 0; // 0,
|
||||
/// <summary>
|
||||
/// 满xx减yy的xx,如果是直减,填"0"
|
||||
/// </summary>
|
||||
public string productPrice { get; set; } = "0"; // "50",
|
||||
public List<object> productExtInfoList { get; set; } = new List<object>();
|
||||
|
||||
}
|
||||
|
||||
public class CouponValidInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 使用时间 1-和领取时间一致
|
||||
/// </summary>
|
||||
public string validType { get; set; } = "1";
|
||||
/// <summary>
|
||||
/// 领取后有效天数
|
||||
/// </summary>
|
||||
public string validDayNum { get; set; } = "";
|
||||
/// <summary>
|
||||
/// 有效期开始
|
||||
/// </summary>
|
||||
public long? startTime { get; set; } // 1770912000,
|
||||
/// <summary>
|
||||
/// 有效期结束
|
||||
/// </summary>
|
||||
public long? endTime { get; set; } // 1774886400,
|
||||
public extRstrInfoParam extRstrInfo { get; set; } = new extRstrInfoParam();
|
||||
public bool? isSameAsReceiveTime { get; set; } = true;
|
||||
}
|
||||
|
||||
public class extRstrInfoParam
|
||||
{
|
||||
public bool? needLiving { get; set; } = false;
|
||||
}
|
||||
|
||||
public class extInfoParam
|
||||
{
|
||||
public long? autoValidTime { get; set; } // 1770912000
|
||||
}
|
||||
|
||||
public class receiveInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 每人限领张数
|
||||
/// </summary>
|
||||
public int? limitNumOnePerson { get; set; } = 1;
|
||||
/// <summary>
|
||||
/// 总发行张数
|
||||
/// </summary>
|
||||
public string totalNum { get; set; } = "100";
|
||||
public long? startTime { get; set; } // 1770912000,
|
||||
public long? endTime { get; set; } // 1774886400,
|
||||
public string payOrderCnt { get; set; } = ""; // "",
|
||||
public int? minVipLevel { get; set; } = 0; // 0,
|
||||
public List<object> repurchaseProductList { get; set; } = new List<object>(); // [ ],
|
||||
public int? repurchaseProductType { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class promoteInfoParam
|
||||
{
|
||||
public int? promoteType { get; set; } = 1;
|
||||
public int? promoteChannel { get; set; } = 0; // 0,
|
||||
public List<object> finderList { get; set; } = new List<object>(); // [ ],
|
||||
public List<object> officialAccountList { get; set; } = new List<object>(); // [ ],
|
||||
public List<object> promoterAgencyList { get; set; } = new List<object>(); // [ ]
|
||||
}
|
||||
|
||||
public class WXCouponKeyParam
|
||||
{
|
||||
public int? couponId { get; set; } = 0;
|
||||
public int? type { get; set; } // 1-条件折扣:满xx件打yy折 2-满减/每满减 3-统一折扣 4-直减
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
public class WXGetShortTitleParam
|
||||
{
|
||||
public string productTitle { get; set; } // "大码妈妈女装裤子阔口裤保暖",
|
||||
public List<string> headImgUrls { get; set; } // ["https://wst.wxapp.tc.qq.com/160/20304/snscosdownload/SH/reserved/6xykWLEnztLdv6DMZticK1qOlvspjA8N5W55WGAEBK65jk1c864AV1iblCuiat3cgEx7v6vAnfhZIBWzrZY66Akkw", ...]
|
||||
public List<categorieParam> categories { get; set; }
|
||||
}
|
||||
|
||||
public class categorieParam
|
||||
{
|
||||
public string catId { get; set; } // "10000111",
|
||||
public string catName { get; set; } // "服饰内衣"
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
|
||||
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>()
|
||||
{
|
||||
"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "沈", "杨", "朱", "许", "何", "张",
|
||||
};
|
||||
}
|
||||
|
||||
// 预在线寄件读取快递信息
|
||||
public class WXPreCreateOrderWaybillOnlineParam
|
||||
{
|
||||
public List<string> deliveryIds { get; set; } = new List<string>()
|
||||
{
|
||||
"JTSD", "YUNDA", "YTO", "ZTO", "JD", "SF", "DBKD", "STO", "CNSD",
|
||||
};
|
||||
public WXPreCreateOrderWaybillOnlineReqParam req { get; set; } = new WXPreCreateOrderWaybillOnlineReqParam();
|
||||
}
|
||||
|
||||
// 选中快递寄件信息后申请在线寄件
|
||||
public class WXCreateOrderWaybillOnlineParam
|
||||
{
|
||||
public int? payMethod { get; set; } = 2; // 2,
|
||||
|
||||
public List<WaybillOnlineRequestContentParam> requestContent { get; set; } = new List<WaybillOnlineRequestContentParam>();
|
||||
}
|
||||
|
||||
public class WaybillOnlineRequestContentParam
|
||||
{
|
||||
public string deliveryId { get; set; } // = "YTO";
|
||||
public string ewaybillOrderId { get; set; } // = "4525894132274036739";
|
||||
public List<ecOrderParam> ecOrderList { get; set; } = new List<ecOrderParam>();
|
||||
public waybillOnlineSenderParam sender { get; set; } = new waybillOnlineSenderParam();
|
||||
public wayBillOnlineDeliveryInfo deliveryInfo { get; set; } = new wayBillOnlineDeliveryInfo();
|
||||
public wayBillOnlineExtInfo extInfo { get; set; }
|
||||
public string uuid { get; set; } // "ac843315-48c8-4186-b573-1880f497c002"
|
||||
public List<object> orderVasList { get; set; } = new List<object>();
|
||||
public int? source { get; set; } = 3;
|
||||
}
|
||||
|
||||
|
||||
public class WXPreCreateOrderWaybillOnlineReqParam
|
||||
{
|
||||
public List<preWaybillOnlineRequestContentParam> requestContent { get; set; } = new List<preWaybillOnlineRequestContentParam>();
|
||||
}
|
||||
|
||||
public class preWaybillOnlineRequestContentParam
|
||||
{
|
||||
public string deliveryId { get; set; } = "";
|
||||
public int? orderType { get; set; } = 1;
|
||||
public List<ecOrderParam> ecOrderList { get; set; } = new List<ecOrderParam>();
|
||||
public waybillOnlineSenderParam sender { get; set; } = new waybillOnlineSenderParam();
|
||||
public wayBillOnlineDeliveryInfo deliveryInfo { get; set; } = new wayBillOnlineDeliveryInfo();
|
||||
public wayBillOnlineExtInfo extInfo { get; set; } = new wayBillOnlineExtInfo();
|
||||
public string uuid { get; set; } // "ac843315-48c8-4186-b573-1880f497c002"
|
||||
public List<object> orderVasList { get; set; } = new List<object>();
|
||||
public int? source { get; set; } = 3;
|
||||
}
|
||||
|
||||
public class wayBillOnlineExtInfo
|
||||
{
|
||||
public int? packageWeightG { get; set; } = 1000;
|
||||
}
|
||||
|
||||
public class wayBillOnlineDeliveryInfo
|
||||
{
|
||||
public int? appointmentType { get; set; } = 1; // 1,
|
||||
public string datetime { get; set; } = DateTime.Now.AddDays(1).ToString("yyyyMMdd"); // "20260521"
|
||||
|
||||
}
|
||||
|
||||
public class waybillOnlineSenderParam
|
||||
{
|
||||
public string name { get; set; } = ""; // "陈图书",
|
||||
public string mobile { get; set; } = ""; // "13023098035",
|
||||
public string province { get; set; } = ""; // "安徽省",
|
||||
public string city { get; set; } = ""; // "合肥市",
|
||||
public string county { get; set; } = "";// "肥西县",
|
||||
public string street { get; set; } = ""; // "",
|
||||
public string address { get; set; } = ""; // "上派镇中盟电子产业园8栋一单元(东电梯3楼快递指定存放点)",
|
||||
public string lat { get; set; } = "";// "",
|
||||
public string lng { get; set; } = ""; // ""
|
||||
}
|
||||
|
||||
public class ecOrderParam
|
||||
{
|
||||
public string ecOrderId { get; set; } // "3736506990289905920",
|
||||
public List<orderGoodsParam> goodsList { get; set; } = new List<orderGoodsParam>();
|
||||
}
|
||||
|
||||
public class orderGoodsParam
|
||||
{
|
||||
public int? goodCount { get; set; } // 1,
|
||||
public string goodName { get; set; } // "【抢限量印签】信任养育:你的孩子本来就很好 白瑞家庭教育作品,千万父母追随,20余年经验沉淀",
|
||||
public string productId { get; set; } // "10000852376968",
|
||||
public string skuId { get; set; } // "15057811153"
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
public class WXUploadProductInfoRecommendParam
|
||||
{
|
||||
// 查询返回值
|
||||
public int? code { get; set; } // 0
|
||||
|
||||
|
||||
public string productId { get; set; } // 10000959492675
|
||||
public RecommendProductInfoParam productInfo { get; set; }
|
||||
public List<int> predictTypeList { get; set; } = new List<int> { 5, 4, }; // 此处是草稿箱查询。如果是新建商品,设置productId为 null,此处填写 5, 4, 2
|
||||
public int? requestSource { get; set; } = 2;
|
||||
|
||||
// 查询返回值
|
||||
public List<modelVersionResult> modelVersions { get; set; }
|
||||
// 查询返回值
|
||||
public List<modelStatusResult> modelStatuses { get; set; }
|
||||
}
|
||||
|
||||
public class modelStatusResult
|
||||
{
|
||||
public int? predictType { get; set; } // 4,
|
||||
public int? statusCode { get; set; } // 0,
|
||||
public string statusMsg { get; set; } // "成功推荐 6 个属性"
|
||||
}
|
||||
|
||||
public class modelVersionResult
|
||||
{
|
||||
public int? predictType { get; set; } // 4,
|
||||
public string modelVersion { get; set; } // "v251208"
|
||||
|
||||
}
|
||||
|
||||
public class RecommendProductInfoParam
|
||||
{
|
||||
public string title { get; set; } // "诺特兰德乳清蛋白粉增肌粉男健身分离水解蛋白质粉正品红桶"
|
||||
public List<string> headImg { get; set; } // ["https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/6a25418f000c37e41fe662b881ad1b15000000a100004f50", ...],
|
||||
public List<categoryParam> category { get; set; }
|
||||
public string brandId { get; set; } // "2100000000"
|
||||
public productDetailParam detail { get; set; }
|
||||
|
||||
// 查询返回值
|
||||
public List<RecommendProductInfoParamResult> param { get; set; }
|
||||
}
|
||||
|
||||
public class RecommendProductInfoParamResult
|
||||
{
|
||||
public List<RecoummendCategoryResult> categorys { get; set; } = new List<RecoummendCategoryResult>();
|
||||
}
|
||||
|
||||
public class RecoummendCategoryResult
|
||||
{
|
||||
public string name { get; set; } // "单件净含量",
|
||||
public int? catType { get; set; } // 7,
|
||||
public RecoummendCatInfoResult catInfo { get; set; }
|
||||
}
|
||||
|
||||
public class RecoummendCatInfoResult
|
||||
{
|
||||
public int? isRequired { get; set; } // 1,
|
||||
public int? isCustomize { get; set; } // 0,
|
||||
public int? inputType { get; set; } // 7
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
public class WXUploadProductInitParam
|
||||
{
|
||||
public productInitParam product { get; set; } = new productInitParam();
|
||||
}
|
||||
|
||||
public class productInitParam
|
||||
{
|
||||
public productInitInfoParam info { get; set; } = new productInitInfoParam();
|
||||
public object productKey { get; set; } = new object();
|
||||
public List<int> checkTypes { get; set; } = new List<int>() { 2, 4 };
|
||||
/// <summary>
|
||||
/// 毫秒时间戳 + "-" + guid // "1767870757369-3d462d80-3b2b-4887-89a0-0a21164d27b7"
|
||||
/// </summary>
|
||||
public string sessionId { get; set; } =
|
||||
(long)(DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))).TotalMilliseconds + "-" + Guid.NewGuid().ToString();
|
||||
}
|
||||
public class productInitInfoParam
|
||||
{
|
||||
public int? releaseMode { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 商品标题
|
||||
/// </summary>
|
||||
public string title { get; set; } // "妈妈长裤老年人2025冬季新款阔脚裤",
|
||||
public string model { get; set; } = "";
|
||||
public string subTitle { get; set; } = "";
|
||||
public List<string> headImg { get; set; } = new List<string>(); // ["https://wst.wxapp.tc.qq.com/160/20304/snscosdownload/SH/reserved/6xykWLEnztJH3jib01ZGXYJxkMWM9ogXvSq8VfZicnzPUghvTukFPwicsRnR3EJff480Rvxot7Vz0jIBb7K4B7hUw?token=x5Y29zUxcibCKICN3RTcFCqUzn2FoG05oBlhD1Kd3Jp8kNIMa7uiawVyJ8GdTAZ0D7&idx=1&expire=1768130066", ...]
|
||||
public productInitDetailParam detail { get; set; } = new productInitDetailParam();
|
||||
public List<object> param { get; set; } = new List<object>();
|
||||
public object expressInfo { get; set; } = new object();
|
||||
public object serviceDesc { get; set; } = new object();
|
||||
public List<object> qualificationUrl { get; set; } = new List<object>();
|
||||
public List<object> qualificationList { get; set; } = new List<object>();
|
||||
public object sizeChartInfo { get; set; } = new object();
|
||||
public string brandId { get; set; } = "";
|
||||
public List<object> category { get; set; } = new List<object>();
|
||||
public int? categoryType { get; set; } = 2;
|
||||
public List<object> shopcatId { get; set; } = new List<object>();
|
||||
public spuLimitedInitParam spuLimited { get; set; }
|
||||
public int? productType { get; set; } = 1;
|
||||
public couponcodeInfoParam couponcodeInfo { get; set; } = new couponcodeInfoParam();
|
||||
public string spuCode { get; set; } = "";
|
||||
public int? consumeStockType { get; set; } = 0;
|
||||
public int? deliverMethod { get; set; } = 0;
|
||||
public List<object> deliverAcctType { get; set; } = new List<object>();
|
||||
public object extraService { get; set; } = new object();
|
||||
public List<object> productSaleAttrs { get; set; } = new List<object>();
|
||||
public object afterSaleInfo { get; set; } = new object();
|
||||
public bool? hideInWindow { get; set; } = false;
|
||||
public object displayGeographyCert { get; set; } = new object();
|
||||
public object leagueItemInfo { get; set; } = new object();
|
||||
public timingOnsaleInfoInitParam timingOnsaleInfo { get; set; }
|
||||
public givePresentInfoInitParam givePresentInfo { get; set; }
|
||||
}
|
||||
public class givePresentInfoInitParam
|
||||
{
|
||||
public int? usePresentHeadImg { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class timingOnsaleInfoInitParam
|
||||
{
|
||||
public int? status { get; set; } = 0;
|
||||
public int? onsaleTime { get; set; } = 0;
|
||||
public int? isHidePrice { get; set; } = 0;
|
||||
public int? isHideParam { get; set; } = 0;
|
||||
|
||||
}
|
||||
|
||||
public class couponcodeInfoParam
|
||||
{
|
||||
public int? verifyType { get; set; } = 0;
|
||||
public validInfoParam validInfo { get; set; } = new validInfoParam();
|
||||
}
|
||||
public class validInfoParam
|
||||
{
|
||||
public int? validType { get; set; } = 2;
|
||||
public int? validDayNum { get; set; } = 0;
|
||||
public string startTime { get; set; } = "";
|
||||
public string endTime { get; set; } = "";
|
||||
|
||||
}
|
||||
public class spuLimitedInitParam
|
||||
{
|
||||
public int? periodType { get; set; } = 0;
|
||||
public string limitedBuyNum { get; set; } = "";
|
||||
|
||||
}
|
||||
|
||||
public class productInitDetailParam
|
||||
{
|
||||
public string desc { get; set; } = "";
|
||||
public List<object> detailImg { get; set; } = new List<object>();
|
||||
}
|
||||
}
|
||||
@@ -1,827 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
public class WXUploadProductParam
|
||||
{
|
||||
public int? from { get; set; } = 2; // 2,
|
||||
public WXProductParam product { get; set; } = new WXProductParam();
|
||||
public int? type { get; set; } = 1; // 1
|
||||
public bool? listingFlag { get; set; } = true;
|
||||
public bool? skipCheckAttr { get; set; } = true;
|
||||
public sessionInfoParam sessionInfo { get; set; } = new sessionInfoParam();
|
||||
}
|
||||
|
||||
public class sessionInfoParam
|
||||
{
|
||||
//"1767692870470-ea4c0227-4579-4647-813b-7f4e8a190ad6"
|
||||
public string sessionId { get; set; } =
|
||||
(long)(DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))).TotalMilliseconds + "-" + Guid.NewGuid().ToString();
|
||||
}
|
||||
|
||||
public class WXProductParam
|
||||
{
|
||||
public productKeyParam productKey { get; set; } = new productKeyParam();
|
||||
public int? status { get; set; } // 5,
|
||||
public int? editStatus { get; set; } // 4,
|
||||
public string auditReason { get; set; } // "";
|
||||
public auditResultInfoParam auditResultInfo { get; set; } = new auditResultInfoParam();
|
||||
public productInfoParam info { get; set; } = new productInfoParam();
|
||||
public List<productSkuParam> productSkus { get; set; } = new List<productSkuParam>();
|
||||
public int? categoryType { get; set; } = 2;
|
||||
public bool? isGoodsSpecialCategory { get; set; } = true;
|
||||
public productDeliverInfoParam deliverInfo { get; set; }
|
||||
}
|
||||
|
||||
public class productDeliverInfoParam
|
||||
{
|
||||
public skuDeliverInfoParam skuDeliverInfo { get; set; }
|
||||
public int? deliverType { get; set; }
|
||||
}
|
||||
|
||||
public class productSkuParam
|
||||
{
|
||||
public string __skuKey { get; set; } = "";// "尺码.M_颜色.蓝色",
|
||||
public string __skuTitle { get; set; } = ""; // "蓝色 M",
|
||||
public bool? __skuSelected { get; set; } = true;
|
||||
public skuKeyParam skuKey { get; set; } = new skuKeyParam();
|
||||
public string skuId { get; set; } = ""; // "6134573242",
|
||||
public productSkuInfoParam productSkuInfo { get; set; } = new productSkuInfoParam();
|
||||
public int? status { get; set; } = 5;
|
||||
public int? index { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class productSkuInfoParam
|
||||
{
|
||||
public string thumbImg { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c85e9000a3bff29d22878fedda00b000000a000004f50",
|
||||
public int? salePrice { get; set; } // 10000,
|
||||
public string skuCode { get; set; } = "";
|
||||
public string outSkuId { get; set; } = ""; // 模拟接口没有
|
||||
public string out_sku_id { get; set; } = ""; // 模拟接口没有
|
||||
/// <summary>
|
||||
/// 条形码
|
||||
/// </summary>
|
||||
public string barCode { get; set; } = "";
|
||||
public stockInfoParam stockInfo { get; set; } = new stockInfoParam();
|
||||
public List<saleParamParam> saleParam { get; set; } = new List<saleParamParam>();
|
||||
public skuDeliverInfoParam skuDeliverInfo { get; set; } = new skuDeliverInfoParam();
|
||||
public realStockInfoParam realStockInfo { get; set; }
|
||||
public stockDiffParam stockDiff { get; set; } = new stockDiffParam();
|
||||
}
|
||||
|
||||
public class realStockInfoParam
|
||||
{
|
||||
public List<object> warehouseStocks { get; set; } = new List<object>();
|
||||
public int? stockNum { get; set; } = 999;
|
||||
public string lockStock { get; set; } = "0";
|
||||
public string soldStock { get; set; } = "0";
|
||||
public string limitedDiscountStockNum { get; set; } = "0";
|
||||
public string groupbuyStockNum { get; set; } = "0";
|
||||
public string overSoldNum { get; set; } = "0";
|
||||
public int? totalNum { get; set; } = 999;
|
||||
public string totalLock { get; set; } = "0";
|
||||
public string totalSold { get; set; } = "0";
|
||||
public int? finderTotalNum { get; set; } = 0;
|
||||
public string finderTotalLock { get; set; } = "0";
|
||||
public string finderTotalSold { get; set; } = "0";
|
||||
public string exclusiveNum { get; set; } = "0";
|
||||
public string exclusiveLock { get; set; } = "0";
|
||||
public string exclusiveSold { get; set; } = "0";
|
||||
public string lockedOver { get; set; } = "0";
|
||||
public string soldOver { get; set; } = "0";
|
||||
public string limitedDiscountLockedOver { get; set; } = "0";
|
||||
public string limitedDiscountSoldOver { get; set; } = "0";
|
||||
public string exclusiveLockOver { get; set; } = "0";
|
||||
public string exclusiveSoldOver { get; set; } = "0";
|
||||
public string mmecwxaNormalStockNum { get; set; } = "0";
|
||||
public string mmecwxaNormalLockStock { get; set; } = "0";
|
||||
public string mmecwxaNormalSoldStock { get; set; } = "0";
|
||||
public string mmecwxaLimitedDiscountStockNum { get; set; } = "0";
|
||||
public string mmecwxaLimitedDiscountLockStock { get; set; } = "0";
|
||||
public string mmecwxaLimitedDiscountSoldStock { get; set; } = "0";
|
||||
public string mmecwxaExclusiveStockNum { get; set; } = "0";
|
||||
public string mmecwxaExclusiveLockStock { get; set; } = "0";
|
||||
public string mmecwxaExclusiveSoldStock { get; set; } = "0";
|
||||
public string giftTotalNum { get; set; } = "0";
|
||||
public string giftTotalLocked { get; set; } = "0";
|
||||
public string giftTotalSold { get; set; } = "0";
|
||||
public string uniqueId { get; set; } = "";
|
||||
public int? stockType { get; set; } = 0;
|
||||
public int? zeroStockType { get; set; } = 0;
|
||||
|
||||
}
|
||||
|
||||
public class stockDiffParam
|
||||
{
|
||||
public int? diffType { get; set; } = 2;
|
||||
public object num { get; set; } // null
|
||||
|
||||
}
|
||||
|
||||
public class skuDeliverInfoParam
|
||||
{
|
||||
public int? stockType { get; set; } = 0;
|
||||
public int? fullPaymentPresaleDeliveryType { get; set; } = 0;
|
||||
public string presaleBeginTime { get; set; } = "0";
|
||||
public string presaleEndTime { get; set; } = "0";
|
||||
public int? spotDeliveryTime { get; set; } = 1;
|
||||
public string fullPaymentPresaleDeliveryTime { get; set; } = "0";
|
||||
public int? spotAfterPresaleEnd { get; set; } = 0;
|
||||
public int? deliverType { get; set; }
|
||||
}
|
||||
|
||||
public class saleParamParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 第一个参数为sku spec类别 categoryKeyParam
|
||||
/// 第二个参数为sku spec数值 categoryValueParam
|
||||
/// </summary>
|
||||
public List<object> categorys { get; set; }
|
||||
}
|
||||
|
||||
public class categoryKeyParam
|
||||
{
|
||||
public bool? isCustomize { get; set; } // true,
|
||||
public bool? isMainSale { get; set; } // true,
|
||||
public string name { get; set; } // "颜色",
|
||||
public int? id { get; set; } // 3,
|
||||
public long? catId { get; set; } // 2000000000028,
|
||||
public int? value { get; set; } // 0,
|
||||
public string label { get; set; } // "自定义规格",
|
||||
public int? priority { get; set; } // 1,
|
||||
public skuCatInfoParam catInfo { get; set; } // { "isCustomize": 1 }, // 自定义属性才有
|
||||
public int? catType { get; set; } // 8 //自定义属性才有
|
||||
|
||||
//以下自定义属性没有
|
||||
public string type { get; set; } // "select_one",
|
||||
public string hint { get; set; } // "",
|
||||
public string remark { get; set; } // "",
|
||||
public bool? appendAllowed { get; set; } // true,
|
||||
public releaseParam normalRelease { get; set; } // { "ruleType": 2 },
|
||||
public releaseParam quickRelease { get; set; } // { "ruleType": 0 },
|
||||
public bool? isRequired { get; set; } // false,
|
||||
public bool? display { get; set; } // true,
|
||||
public string data { get; set; } // "",
|
||||
public int? weight { get; set; } // 0,
|
||||
public decimal? key { get; set; } // 0.3529221028790839,
|
||||
public List<skuSelectParam> selectList { get; set; }
|
||||
public string unit { get; set; } // "",
|
||||
public string unitValue { get; set; } // "",
|
||||
public bool? show { get; set; } // false,
|
||||
public string initData { get; set; } // ""
|
||||
}
|
||||
public class categoryValueParam
|
||||
{
|
||||
public long? catId { get; set; } // "1767670333303",
|
||||
public string name { get; set; } // "黑色",
|
||||
public long? fCatId { get; set; } // "2000000000006",
|
||||
public string catType { get; set; } // 0,
|
||||
public string brandCat { get; set; } // "0",
|
||||
public categoryValueCatInfo catInfo { get; set; }
|
||||
public bool? selected { get; set; }
|
||||
|
||||
public string desc { get; set; } = "";
|
||||
public int? priority { get; set; } = 1;
|
||||
public string createTime { get; set; } = "0";
|
||||
public string updateTime { get; set; } = "0";
|
||||
public int? version { get; set; } = 0;
|
||||
public string auditId { get; set; } = "0";
|
||||
public bool? leaf { get; set; } = false;
|
||||
public int? state { get; set; } = 0;
|
||||
public string tips { get; set; } = "";
|
||||
public string detail { get; set; } = "";
|
||||
public string thumbImg { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c85e9000a3bff29d22878fedda00b000000a000004f50",
|
||||
public string skuNameValue { get; set; } = "黑色";
|
||||
|
||||
}
|
||||
|
||||
public class categoryValueCatInfo
|
||||
{
|
||||
public List<object> businessInfoList { get; set; } = new List<object>();
|
||||
public int? isCustomize { get; set; } = 0;
|
||||
public int? editByUser { get; set; } = 1;
|
||||
public int? isRequired { get; set; } = 0;
|
||||
public int? specType { get; set; } = 0;
|
||||
public string specTypeDesc { get; set; } = "";
|
||||
public string attrTemplateId { get; set; } = "0";
|
||||
public string attrTemplateName { get; set; } = "";
|
||||
public int? maxAttrNum { get; set; } = 0;
|
||||
public int? catLevel { get; set; } = 0;
|
||||
public int? highestPriceFixing { get; set; } = 0;
|
||||
public string wording { get; set; } = "";
|
||||
public string description { get; set; } = "";
|
||||
public int? maxProductNum { get; set; } = 0;
|
||||
public string qualification { get; set; } = "";
|
||||
public string productQualification { get; set; } = "";
|
||||
public string quaNeedAudit { get; set; } = "";
|
||||
public int? maxQualificationImg { get; set; } = 0;
|
||||
public long? catGroup { get; set; } // 4294967295,
|
||||
public string qualificationId { get; set; } = "0";
|
||||
public int? qualificationType { get; set; } = 0;
|
||||
public int? productQualificationType { get; set; } = 0;
|
||||
public string productQualificationId { get; set; } = "0";
|
||||
public bool? isVirtualGoods { get; set; } = false;
|
||||
public string limit { get; set; } = "0";
|
||||
public int? inputType { get; set; } = 0;
|
||||
public int? componentCatGroup { get; set; } = 0;
|
||||
public int? isHide { get; set; } = 0;
|
||||
public bool? onlyWriteOffInShop { get; set; } = false;
|
||||
|
||||
}
|
||||
|
||||
public class skuSelectParam
|
||||
{
|
||||
public string label { get; set; } // "XS",
|
||||
public string value { get; set; } // "XS"
|
||||
}
|
||||
|
||||
public class skuCatInfoParam
|
||||
{
|
||||
public int? isCustomize { get; set; } // 1
|
||||
}
|
||||
|
||||
public class stockInfoParam
|
||||
{
|
||||
public int? stockNum { get; set; } // 5
|
||||
}
|
||||
|
||||
public class skuKeyParam
|
||||
{
|
||||
public string skuId { get; set; } = ""; // "6134573242"
|
||||
public productKeyParam productKey { get; set; }
|
||||
public string skuSnapId { get; set; } // "1196674898",
|
||||
public string outSkuId { get; set; } // ""
|
||||
}
|
||||
|
||||
public class productKeyParam
|
||||
{
|
||||
public List<object> cashCouponSendKey = new List<object>();
|
||||
public string productId { get; set; } // "10000408181873",
|
||||
public string outProductId { get; set; } = "";
|
||||
public string appid { get; set; } = "";
|
||||
public string originProductId { get; set; } = "0";
|
||||
public int? productKeyType { get; set; } = 0;
|
||||
public int? stockType { get; set; } = 0;
|
||||
public string stockTypeId { get; set; } = "";
|
||||
public string promoterKey { get; set; } = "";
|
||||
}
|
||||
|
||||
public class productInfoParam // info
|
||||
{
|
||||
public List<string> headImg { get; set; } = new List<string>(); // [ "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c7f5f000d23e709f79176079a1715000000a000004f50" ...],
|
||||
public List<categoryParam> category { get; set; } = new List<categoryParam>();
|
||||
public List<wxPropParam> param { get; set; } = new List<wxPropParam>();
|
||||
public List<productSaleAttrParam> productSaleAttrs { get; set; } = new List<productSaleAttrParam>();
|
||||
public List<object> shopcatId { get; set; } = new List<object>();
|
||||
public List<object> qualificationUrl { get; set; } = new List<object>();
|
||||
public List<object> thirdCategoryHistories { get; set; } = new List<object>();
|
||||
public List<object> headVideoInfo { get; set; } = new List<object>();
|
||||
public List<object> labels { get; set; } = new List<object>();
|
||||
public List<qualificationParam> qualificationList { get; set; } = new List<qualificationParam>();
|
||||
public List<productHeadimgInfoParam> productHeadimgInfo { get; set; }
|
||||
public List<object> deliverAcctType { get; set; } = new List<object>();
|
||||
public List<headImgInfoParam> headImgInfos { get; set; }
|
||||
public List<object> iconTags { get; set; } = new List<object>();
|
||||
public List<object> orderIconTags { get; set; } = new List<object>();
|
||||
public string title { get; set; } // "中老年妈妈牛仔阔腿裤2025秋冬季新款女士显瘦高腰宽松直筒牛仔裤",
|
||||
public string subTitle { get; set; } = ""; // "",
|
||||
public string brand { get; set; } // "",
|
||||
public string model { get; set; } = ""; // "",
|
||||
public productDetailParam detail { get; set; }
|
||||
/// <summary>
|
||||
/// 品牌编号
|
||||
/// </summary>
|
||||
//public string brandId { get; set; } = "2100000000"; //
|
||||
public long? brandId { get; set; } = 2100000000;
|
||||
public skuIdListParam skuIdList { get; set; }
|
||||
public skuListParam skuList { get; set; }
|
||||
public recommendCategoryParam recommendCategory { get; set; }
|
||||
public string listingTime { get; set; } // "1767693374",
|
||||
public string totalStockNum { get; set; } // "0",
|
||||
public serviceDescParam serviceDesc { get; set; } = new serviceDescParam();
|
||||
/// <summary>
|
||||
/// 运费信息
|
||||
/// </summary>
|
||||
public expressInfoParam expressInfo { get; set; }
|
||||
public string totalSoldNum { get; set; } = "0";
|
||||
public string qualificationWording { get; set; } = "";
|
||||
public string appidForMedia { get; set; } = "";
|
||||
public snapshotInfoParam snapshotInfo { get; set; }
|
||||
public int? shopcatVersion { get; set; } = 0;
|
||||
public string totalOrderNum { get; set; } = "0";
|
||||
public string totalVisitNum { get; set; } = "0";
|
||||
public int? uploadSource { get; set; } = 6;
|
||||
public spuLimitedParam spuLimited { get; set; } = new spuLimitedParam();
|
||||
public int? originUploadSource { get; set; } = 6;
|
||||
public int? virtualType { get; set; } = 2;
|
||||
public int? productType { get; set; } = 1;
|
||||
public couponcodeInfoParam couponcodeInfo { get; set; } = new couponcodeInfoParam();
|
||||
/// <summary>
|
||||
/// extCode 货号
|
||||
/// </summary>
|
||||
public string spuCode { get; set; } = "";
|
||||
public string outProductId { get; set; } = ""; // 模拟接口没有
|
||||
public string out_product_id { get; set; } = ""; // 模拟接口没有
|
||||
public int? asyncUpproductRet { get; set; } = 0;
|
||||
public int? illegalRecordId { get; set; } = 0;
|
||||
public string headImage { get; set; } = "";
|
||||
public string componentUin { get; set; } = "0";
|
||||
public string copyFromSpuId { get; set; } = "0";
|
||||
public int? deliverMethod { get; set; } = 0;
|
||||
public int? presaleTag { get; set; } = 0;
|
||||
public int? presaleTagType { get; set; } = 0;
|
||||
public int? maxPresaleEndTime { get; set; } = 0;
|
||||
public extraServiceParam extraService { get; set; } = new extraServiceParam();
|
||||
/// <summary>
|
||||
/// 售后信息
|
||||
/// </summary>
|
||||
public afterSaleInfoParam afterSaleInfo { get; set; } = new afterSaleInfoParam();
|
||||
public int? lastRefundOrderDays { get; set; } = 0;
|
||||
public string nodeCatId { get; set; } // "547705",
|
||||
public sizeChartInfoParam sizeChartInfo { get; set; } = new sizeChartInfoParam();
|
||||
public string lastEditDraftTime { get; set; } // "1767693275";
|
||||
public customConfigParam customConfig { get; set; } = new customConfigParam();
|
||||
public string updateStatusTime { get; set; } = "0";
|
||||
/// <summary>
|
||||
/// 短标题
|
||||
/// </summary>
|
||||
public string shortTitle { get; set; } // "显瘦高腰中老年宽松牛仔裤",
|
||||
public int? barCodeType { get; set; } = 0;
|
||||
public string originNodeCatId { get; set; } // "547705",
|
||||
public int? changeCatLevel { get; set; } = 0;
|
||||
public int? releaseMode { get; set; } = 0;
|
||||
public bool? isDuplicatedInShop { get; set; } = false;
|
||||
/// <summary>
|
||||
/// ai短标题
|
||||
/// </summary>
|
||||
public string aiGenShortTitle { get; set; } // "显瘦高腰中老年宽松牛仔裤",
|
||||
public bool? empty { get; set; } = false;
|
||||
public string uniqueId { get; set; } // "4330209544501837823",
|
||||
public string titleUtf8Token { get; set; } = "";
|
||||
public bool? hideInWindow { get; set; } = false;
|
||||
public bool? canGivePresent { get; set; } = false;
|
||||
public bool? canGenOrder { get; set; } = false;
|
||||
public int? presentPriceLimit { get; set; } = 0;
|
||||
public bool? showPresentBtn { get; set; } = false;
|
||||
public string canntGivePresnetMsg { get; set; } = "";
|
||||
public string canntGenOrderMsg { get; set; } = "";
|
||||
public bool? canAddShopBag { get; set; } = false;
|
||||
public bool? canGiveGroupPresent { get; set; } = false;
|
||||
public bool? presentNeedSelectSku { get; set; } = true;
|
||||
public givePresentInfoParam givePresentInfo { get; set; } = new givePresentInfoParam();
|
||||
public bool? hideBottomBar { get; set; } = false;
|
||||
public bool? canAddUserFavory { get; set; } = false;
|
||||
public string extendAuditData { get; set; } = "";
|
||||
public int? consumeStockType { get; set; } = 0;
|
||||
public int? auditFromPersonalTrans { get; set; } = 0;
|
||||
public bool? isClipEditGray { get; set; } = false;
|
||||
public List<object> promotingVideoInfos { get; set; } = new List<object>();
|
||||
public timingOnsaleInfoParam timingOnsaleInfo { get; set; } = new timingOnsaleInfoParam();
|
||||
public leagueItemInfoParam leagueItemInfo { get; set; } = new leagueItemInfoParam();
|
||||
}
|
||||
|
||||
public class qualificationParam
|
||||
{
|
||||
public string qualificationId { get; set; } // "1111485",
|
||||
public List<string> qualificationUrl { get; set; } // ["https://wst.wxapp.tc.qq.com/160/20304/snscosdownload/SH/reserved/6xykWLEnztJZvEhHrozpFIFJu2hgPuZS72J5BOmTnibDpt88NgTZLfmt6ziacLk1IIc3BLlnfc0XpyNmeiaCWeMVw?token=x5Y29zUxcibDicBLjG2rgWiaf29nSfAfsLNARZEJicqTfdyR6p5hONtKibWlnRrqOsNsA&idx=1&expire=1768988129"]
|
||||
}
|
||||
|
||||
public class timingOnsaleInfoParam
|
||||
{
|
||||
public int? status { get; set; } = 0;
|
||||
public int? onsaleTime { get; set; } = 0;
|
||||
public int? isHidePrice { get; set; } = 0;
|
||||
public int? isHideParam { get; set; } = 0;
|
||||
|
||||
}
|
||||
|
||||
public class leagueItemInfoParam
|
||||
{
|
||||
public int? itemSwitch { get; set; } = 0;
|
||||
public int? itemRatio { get; set; } = 0;
|
||||
public int? headSupplierPublicItemSwitch { get; set; } = 0;
|
||||
public int? headSupplierPublicItemServiceRatio { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class givePresentInfoParam
|
||||
{
|
||||
public bool? supportPresentCard { get; set; } = false;
|
||||
public bool? canChangeSkus { get; set; } = false;
|
||||
public int? usePresentHeadImg { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class customConfigParam
|
||||
{
|
||||
public List<object> customType { get; set; } = new List<object>();
|
||||
public List<object> customTextInputTypes { get; set; } = new List<object>();
|
||||
public List<object> descImgList { get; set; } = new List<object>();
|
||||
public int? customTextMaxLength { get; set; } = 0;
|
||||
public int? customTextInputType { get; set; } = 0;
|
||||
public int? customTextDirection { get; set; } = 0;
|
||||
public int? customTextFontSize { get; set; } = 0;
|
||||
public string customTextColor { get; set; } = "";
|
||||
public bool? openCustom { get; set; } = false;
|
||||
public string deliveryTime { get; set; } = "0";
|
||||
public int? previewType { get; set; } = 0;
|
||||
|
||||
}
|
||||
|
||||
public class sizeChartInfoParam
|
||||
{
|
||||
public List<object> specificationList { get; set; } = new List<object>();
|
||||
public bool? enable { get; set; } = false;
|
||||
public string templateId { get; set; } = "0";
|
||||
public string title { get; set; } = "";
|
||||
public string comment { get; set; } = "";
|
||||
|
||||
}
|
||||
|
||||
public class afterSaleInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 售后服务地址Id
|
||||
/// </summary>
|
||||
public string afterSaleAddressId { get; set; } // "56417904002"
|
||||
}
|
||||
|
||||
public class extraServiceParam
|
||||
{
|
||||
public int? sevenDayReturn { get; set; } = 1; // 七天无理由
|
||||
public int? payAfterUse { get; set; } = 0; // 1, 先用后付
|
||||
public int? freightInsurance { get; set; } = 1; // 运费险
|
||||
public int? fastRefund { get; set; } = 0; // 1 快速退款
|
||||
public int? damageGuarantee { get; set; } = 0; // 坏损包退
|
||||
public int? fakeOnePayFour { get; set; } = 0; // 假一赔四
|
||||
public int? refundOrderTime { get; set; } = 0;
|
||||
public int? deliverAfterCheck { get; set; } = 0;
|
||||
public int? exchangeSupport { get; set; } = 1;
|
||||
public int? buyWithConfidence { get; set; } = 0;
|
||||
public int? seniorFastRefund { get; set; } = 0;
|
||||
public int? seniorCustomerService { get; set; } = 0;
|
||||
public int? seniorFreeReturn { get; set; } = 0;
|
||||
public int? seniorPlatformSupport { get; set; } = 0;
|
||||
public int? seniorFastExchange { get; set; } = 0;
|
||||
public int? elderlyUserFastRefund { get; set; } = 0;
|
||||
public int? elderlyUserCustomerService { get; set; } = 0;
|
||||
public int? elderlyUserFreeReturn { get; set; } = 0;
|
||||
public int? elderlyUserPlatformSupport { get; set; } = 0;
|
||||
public int? elderlyUserFastExchange { get; set; } = 0;
|
||||
public int? newUserFastRefund { get; set; } = 0;
|
||||
public int? newUserCustomerService { get; set; } = 0;
|
||||
public int? newUserFreeReturn { get; set; } = 0;
|
||||
public int? newUserPlatformSupport { get; set; } = 0;
|
||||
public int? newUserFastExchange { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class spuLimitedParam
|
||||
{
|
||||
public int periodType { get; set; } = 0;
|
||||
//public int limitedBuyNum { get; set; } = 0;
|
||||
public string limitedBuyNum { get; set; } = "";
|
||||
public int createTime { get; set; } = 0;
|
||||
public int updateTime { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class snapshotInfoParam
|
||||
{
|
||||
public string snapshotId { get; set; } // "1115465280",
|
||||
public string auditId { get; set; } // "8248460949"
|
||||
|
||||
}
|
||||
|
||||
public class expressInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 运费模板
|
||||
/// </summary>
|
||||
public string templateId { get; set; } // "763996138004",
|
||||
//public string weight { get; set; } = "0";
|
||||
}
|
||||
|
||||
public class serviceDescParam
|
||||
{
|
||||
public List<object> serviceList { get; set; } = new List<object>();
|
||||
public string desc { get; set; } = "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否使用ai推荐类目信息,新建商品进入的照抄
|
||||
/// </summary>
|
||||
public class recommendCategoryParam
|
||||
{
|
||||
public bool? isAccepted { get; set; } = false;
|
||||
public List<string> categoryNames { get; set; } = new List<string>();
|
||||
public string recommendSource { get; set; } = "none";
|
||||
public string interfaceName { get; set; } = "";
|
||||
public int? useNewInterface { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class skuListParam
|
||||
{
|
||||
public List<skuInfoParam> skuInfo { get; set; }
|
||||
public int? minPrice { get; set; } // 10000,
|
||||
public int? maxPrice { get; set; } // 10000,
|
||||
public int? discountedPrice { get; set; } = 0;
|
||||
public bool? isDiscounted { get; set; } = false;
|
||||
public int? estimatePrice { get; set; } = 0;
|
||||
public int? leagueDiscountedPrice { get; set; } = 0;
|
||||
public string estimateCouponId { get; set; } = "0";
|
||||
public string minPriceWording { get; set; } = "";
|
||||
public string buyButtonWording { get; set; } = "";
|
||||
public string microMemberDiscountedPrice { get; set; } = "0";
|
||||
public int? estimatePricePriceType { get; set; } = 0;
|
||||
public string withoutMicroMemberPriceWording{ get; set; } = "";
|
||||
public int? originPrice { get; set; } = 0;
|
||||
public int? discountRate { get; set; } = 0;
|
||||
public string estimateBatchId{ get; set; } = "";
|
||||
public int? estimateCouponPromoteType { get; set; } = 0;
|
||||
public string estimatePlatformDiscountCouponId{ get; set; } = "0";
|
||||
public int? estimatePlatformDiscountCouponPromoteType { get; set; } = 0;
|
||||
public int? referencePrice { get; set; } = 0;
|
||||
public int? originMaxPrice { get; set; } = 0;
|
||||
public string bulkbuyDiscountedPrice{ get; set; } = "0";
|
||||
public string bulkbuyActivityId{ get; set; } = "0";
|
||||
public string estimateCashCouponDiscountCouponId{ get; set; } = "";
|
||||
public int? subsidyQualificationStatus { get; set; } = 0;
|
||||
public int? subsidyStatus { get; set; } = 0;
|
||||
public string subsidySubPriceWording{ get; set; } = "";
|
||||
public string subsidyBannerWording{ get; set; } = "";
|
||||
public string estimateSubsidyRuleId{ get; set; } = "0";
|
||||
public string subsidyLocationWording{ get; set; } = "";
|
||||
public string subsidyDetailWording{ get; set; } = "";
|
||||
public string preEstimatePrice{ get; set; } = "0";
|
||||
public string bulkbuyNeedGap{ get; set; } = "0";
|
||||
public int? bulkbuyNeedProductCnt { get; set; } = 0;
|
||||
public bool? canUseSubsidy{ get; set; } = false;
|
||||
public string bulkbuyQuotaId{ get; set; } = "";
|
||||
public int? estimateCashCouponPromoteType { get; set; } = 0;
|
||||
public string minPriceSkuId{ get; set; } = "0";
|
||||
public int? bulkbuyNeedPeopleCnt { get; set; } = 0;
|
||||
public int? minPriceType { get; set; } = 0;
|
||||
public string canSubsidyLocationWording{ get; set; } = "";
|
||||
public int? subsidyType { get; set; } = 0;
|
||||
public int? estimateCashCouponSecondBusinessScene { get; set; } = 0;
|
||||
public string estimateActivityDiscountedPrice{ get; set; } = "0";
|
||||
public string estimateActivityId{ get; set; } = "0";
|
||||
public string estimateCashCouponDiscountPrice{ get; set; } = "0";
|
||||
public string estimateFavorCouponId{ get; set; } = "0";
|
||||
public string defaultSelectedSkuId{ get; set; } = "0";
|
||||
public int? detailTagType { get; set; } = 0;
|
||||
|
||||
}
|
||||
|
||||
public class skuInfoParam
|
||||
{
|
||||
public List<object> skuActivityInfos { get; set; } = new List<object>();
|
||||
public string skuId { get; set; } // "6134651417",
|
||||
public int? price { get; set; } // 10000,
|
||||
public string skuSnapId { get; set; } = "0"; // "0",
|
||||
public bool? isDiscounted { get; set; } = false; // false,
|
||||
public int? discountedPrice { get; set; } = 0; // 0,
|
||||
public int? estimatePrice { get; set; } = 0; // 0,
|
||||
public string estimateCouponId { get; set; } = "0"; // "0",
|
||||
public bool? canUseCoupon { get; set; } = false; // false,
|
||||
public int? marketPrice { get; set; } = 0; // 0,
|
||||
public int? priceType { get; set; } = 0; // 0,
|
||||
public string microMemberDiscountedPrice { get; set; } = "0"; // "0",
|
||||
public bool? runOutStock { get; set; } = false; // false,
|
||||
public int? originPrice { get; set; } = 0 ;// 0,
|
||||
public int? discountRate { get; set; } = 0; // 0,
|
||||
public string estimateBatchId { get; set; } = ""; // "",
|
||||
public int? estimateCouponPromoteType { get; set; } = 0;// 0,
|
||||
public string estimatePlatformDiscountCouponId { get; set; } = "0"; // "0",
|
||||
public int? estimatePlatformDiscountCouponPromoteType { get; set; } = 0;// 0,
|
||||
public int? referencePrice { get; set; } = 0; // 0,
|
||||
public string priceWording { get; set; } = ""; // "",
|
||||
public string bulkbuyDiscountedPrice { get; set; } = "0"; // "0",
|
||||
public string bulkbuyActivityId { get; set; } = "0"; // "0",
|
||||
public string estimateCashCouponDiscountCouponId { get; set; } = ""; // "",
|
||||
public string estimateActivityDiscountedPrice { get; set; } = "0"; // "0",
|
||||
public string estimateActivityId { get; set; } = "0"; // "0",
|
||||
public string estimateCashCouponDiscountPrice { get; set; } = "0"; // "0",
|
||||
public string estimateSubsidyRuleId { get; set; } = "0"; // "0",
|
||||
public string barCode { get; set; } = ""; // "",
|
||||
public string preEstimatePrice { get; set; } = "0"; // "0",
|
||||
public bool? canUseSubsidy { get; set; } = false; // false,
|
||||
public int? estimateCashCouponPromoteType { get; set; } = 0; // 0,
|
||||
public int? estimatePriceType { get; set; } = 0; // 0,
|
||||
public int? subsidyType { get; set; } = 0; // 0,
|
||||
public bool? isNewBulkbuy { get; set; } = false; // false,
|
||||
public int? estimateCashCouponSecondBusinessScene { get; set; } = 0; // 0,
|
||||
public string estimateFavorCouponId { get; set; } = "0"; // "0",
|
||||
public int? detailTagType { get; set; } = 0; // 0,
|
||||
public bool? limitedDiscountNeedReplaceStock { get; set; } = false; // false,
|
||||
public string limitedDiscountStock { get; set; } = "0"; // "0"
|
||||
}
|
||||
|
||||
public class skuIdListParam
|
||||
{
|
||||
public List<string> skuIds { get; set; } // [ "6134651417", "6134573242" ]
|
||||
}
|
||||
|
||||
public class productDetailParam
|
||||
{
|
||||
public List<string> detailImg { get; set; } = new List<string>(); // ["https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c863e00022b1f09b35b0e7ad91715000000a000004f50", ...]
|
||||
public List<object> detailVideos { get; set; }
|
||||
public List<object> detailVideoInfo { get; set; }
|
||||
public List<object> carouselImg { get; set; }
|
||||
public string desc { get; set; } = ""; // ""
|
||||
}
|
||||
|
||||
public class headImgInfoParam
|
||||
{
|
||||
public string imgUrl { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c7f5f000d23e709f79176079a1715000000a000004f50",
|
||||
public int? imgWidth { get; set; } // 800,
|
||||
public int? imgHeight { get; set; } // 800
|
||||
}
|
||||
|
||||
public class productHeadimgInfoParam
|
||||
{
|
||||
public List<object> colors { get; set; } = new List<object>();
|
||||
public string imgUrl { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c7f5f000d23e709f79176079a1715000000a000004f50",
|
||||
public mainColorParam mainColors { get; set; }
|
||||
}
|
||||
|
||||
public class mainColorParam
|
||||
{
|
||||
public int? red { get; set; } // 80,
|
||||
public int? green { get; set; } // 78,
|
||||
public int? blue { get; set; } // 77
|
||||
|
||||
}
|
||||
|
||||
public class productSaleAttrParam
|
||||
{
|
||||
public string key { get; set; } // "颜色",
|
||||
public List<productSaleAttrItemParam> items { get; set; } // 最后要补一个空的
|
||||
public bool hasImg { get; set; }
|
||||
}
|
||||
|
||||
public class productSaleAttrItemParam
|
||||
{
|
||||
public string value { get; set; } // "蓝色",
|
||||
public string imgUrl { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c85e5000dea52198a3d9c98a71715000000a000004f50"
|
||||
|
||||
}
|
||||
|
||||
public class wxPropParam
|
||||
{
|
||||
public List<categoryPropParam> categorys { get; set; } = new List<categoryPropParam>();
|
||||
}
|
||||
|
||||
public class categoryPropParam
|
||||
{
|
||||
public string auditId { get; set; } = "0";
|
||||
public string bizuin { get; set; } = "0";
|
||||
public string brandCat { get; set; } = "0";
|
||||
public string catId { get; set; } = "0";
|
||||
public int? catType { get; set; } = 7;
|
||||
public string createTime { get; set; } = "0";
|
||||
public string desc { get; set; } = "";
|
||||
public string fCatId { get; set; } = "0";
|
||||
public string name { get; set; } // "款式",
|
||||
public int? priority { get; set; } = 0;
|
||||
public string updateTime { get; set; } = "0";
|
||||
public int? version { get; set; } = 0;
|
||||
public catInfoParam catInfo { get; set; } // { "inputType": 1, "isRequired": 1, "isCustomize": 0 }
|
||||
}
|
||||
|
||||
public class catInfoParam
|
||||
{
|
||||
public int? inputType { get; set; } // 1,
|
||||
public int? isRequired { get; set; } // 1,
|
||||
public int? isCustomize { get; set; } // 0
|
||||
|
||||
}
|
||||
|
||||
public class categoryParam
|
||||
{
|
||||
public string id { get; set; } // "10000672",
|
||||
public string name { get; set; } // "裤子",
|
||||
public string fId { get; set; } // "10000113",
|
||||
public int? level { get; set; } // 3,
|
||||
public int? disableScene { get; set; } // 0,
|
||||
public bool? leaf { get; set; } // false,
|
||||
public int? state { get; set; } // 0,
|
||||
public string tips { get; set; } // "",
|
||||
public string detail { get; set; } // "",
|
||||
public string catId { get; set; } // "10000672",
|
||||
public string fCatId { get; set; } // "10000113"
|
||||
public bool? catAuth { get; set; } // true
|
||||
public categoryInfoParam catInfo { get; set; }
|
||||
}
|
||||
|
||||
public class categoryInfoParam
|
||||
{
|
||||
public int? catLevel { get; set; } // 3,
|
||||
public bool? onlyWriteOffInShop { get; set; } // false,
|
||||
public bool? isVirtualGoods { get; set; } // false,
|
||||
public long? highestPriceFixing { get; set; } // 250000,
|
||||
public enterpriseAuditInfoParam enterpriseAuditInfo { get; set; }
|
||||
public allAttrParam productAttr { get; set; }
|
||||
public allAttrParam saleAttr { get; set; }
|
||||
public allAttrParam sizeAttr { get; set; }
|
||||
public presaleDataParam presaleData { get; set; }
|
||||
public List<object> confirmReceiptOptions { get; set; }
|
||||
}
|
||||
|
||||
public class presaleDataParam
|
||||
{
|
||||
public bool? presaleSwitch { get; set; } // true,
|
||||
public deliveryParam deliveryAfterPresale { get; set; } // { "presaleCycleSpan": 15, "minDelayDay": 2, "maxDelayDay": 3 },
|
||||
public deliveryParam deliveryAfterPay { get; set; } // { "minDelayDay": 3, "maxDelayDay": 15 },
|
||||
public int? dsrThreshold { get; set; } // 400,
|
||||
public int? productPriceThreshold { get; set; } // 1500,
|
||||
public int? dsrLogisticsExperienceThreshold { get; set; } // 400,
|
||||
public bool? hasHotBrand { get; set; } // false
|
||||
|
||||
}
|
||||
|
||||
public class deliveryParam
|
||||
{
|
||||
public int? presaleCycleSpan { get; set; } // 15,
|
||||
public int? minDelayDay { get; set; } // 2,
|
||||
public int? maxDelayDay { get; set; } // 3
|
||||
}
|
||||
|
||||
public class allAttrParam
|
||||
{
|
||||
public List<attrParam> attr { get; set; }
|
||||
public bool? enable { get; set; } // false
|
||||
}
|
||||
|
||||
public class attrParam
|
||||
{
|
||||
public string name { get; set; } // "弹力", // "面料材质成分含量"
|
||||
public string type { get; set; } // "select_one", // "decimal4_unit"
|
||||
public string value { get; set; } // "无弹性;有弹性;微弹力;中弹力;高弹力", // "%"
|
||||
public bool? isRequired { get; set; } // true,
|
||||
public string hint { get; set; } // "",
|
||||
public string remark { get; set; } // "",
|
||||
public bool? appendAllowed { get; set; } // false,
|
||||
public attractFactorDisplayParam attractFactorDisplay { get; set; }
|
||||
public releaseParam normalRelease { get; set; } // { "ruleType": 2 }, // { "ruleType": 1 },
|
||||
public releaseParam quickRelease { get; set; } // { "ruleType": 0 }
|
||||
}
|
||||
|
||||
public class attractFactorDisplayParam
|
||||
{
|
||||
public string prefix { get; set; } // "",
|
||||
public string postfix { get; set; } // ""
|
||||
}
|
||||
|
||||
public class enterpriseAuditInfoParam
|
||||
{
|
||||
public int? maxQualificationImg { get; set; } // 10,
|
||||
public int? productQualificationType { get; set; } // 2,
|
||||
public int? qualificationType { get; set; } // 2,
|
||||
public int? productTitleQualificationType { get; set; } // 2,
|
||||
public int? productImgQualificationType { get; set; } // 2,
|
||||
public int? productDescQualificationType { get; set; } // 2,
|
||||
public List<productQualificationParam> productQualificationList { get; set; }
|
||||
}
|
||||
|
||||
public class productQualificationParam
|
||||
{
|
||||
public bool? needToApply { get; set; } // true,
|
||||
public string id { get; set; } // "50000043",
|
||||
public string tips { get; set; } // "当商品信息涉及特殊材质:真丝、蚕丝、香云纱、羊绒、羊毛、羊羔毛、羽绒、皮草等,需上传含CMA/CNAS认证标识的特殊材质质检报告或商品吊牌实拍图(二选一在相应资质入口上传)",
|
||||
public int? type { get; set; } // 2,
|
||||
public string name { get; set; } // "特殊材质质检报告",
|
||||
public int? showCertForProduct { get; set; } // 0,
|
||||
public releaseParam normalRelease { get; set; } // { "ruleType": 2 },
|
||||
public releaseParam quickRelease { get; set; } // { "ruleType": 0 }
|
||||
}
|
||||
|
||||
public class releaseParam
|
||||
{
|
||||
public int? ruleType { get; set; } // 2 // 0
|
||||
}
|
||||
|
||||
public class auditResultInfoParam
|
||||
{
|
||||
public string auditId { get; set; } // "8248460949",
|
||||
public int? auditStatus { get; set; } // 3,
|
||||
public auditResultReasonParam auditResultReason { get; set; }
|
||||
public long? auditTimestamp { get; set; } // 1767693373,
|
||||
public long? submitTimestamp { get; set; } // 1767693275,
|
||||
public string quaInspectId { get; set; } // "0",
|
||||
public long? quaInspectTimestamp { get; set; } // 0,
|
||||
public string quaInspectStatus { get; set; } // "0"
|
||||
}
|
||||
|
||||
public class auditResultReasonParam
|
||||
{
|
||||
public List<ReasonItemParam> itemList { get; set; }
|
||||
}
|
||||
|
||||
public class ReasonItemParam
|
||||
{
|
||||
public string key { get; set; } // "reason"
|
||||
public string value { get; set; } // ""
|
||||
}
|
||||
}
|
||||
@@ -1,184 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result._1688
|
||||
{
|
||||
public class _1688ClientProductInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 视频
|
||||
/// </summary>
|
||||
public _1688video video { get; set; }
|
||||
/// <summary>
|
||||
/// 主图
|
||||
/// </summary>
|
||||
public List<string> mainImage { get; set; } // [ "https://cbu01.alicdn.com/img/ibank/O1CN01uMQVpc1SbsMQKCM1r_!!2213822092266-0-cib.jpg", ...]
|
||||
/// <summary>
|
||||
/// 详情图
|
||||
/// </summary>
|
||||
public List<string> offerImgList { get; set; } // [ "https://cbu01.alicdn.com/img/ibank/O1CN0183ad2V1NXgrFDjILN_!!2217110111580-0-cib.jpg", ...]
|
||||
/// <summary>
|
||||
/// sku
|
||||
/// </summary>
|
||||
public _1688skuModel skuModel { get; set; }
|
||||
public _1688offerBaseInfo offerBaseInfo { get; set; }
|
||||
/// <summary>
|
||||
/// 店铺模板 //商品标题 店铺信息 主类目id 等
|
||||
/// </summary>
|
||||
public _1688tempModel tempModel { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
//public _1688exposeInfo exposeInfo { get; set; }
|
||||
/// <summary>
|
||||
/// 商品属性信息
|
||||
/// </summary>
|
||||
public _1688offerDetail offerDetail {get;set;}
|
||||
/// <summary>
|
||||
/// 运费
|
||||
/// </summary>
|
||||
public decimal? postFeeValue { get; set; } // 2.5
|
||||
}
|
||||
|
||||
public class _1688offerBaseInfo
|
||||
{
|
||||
public long? sellerUserId { get; set; } // 2217080371361,
|
||||
public string sellerLoginId { get; set; } // "赛龙宠物",
|
||||
public string sellerMemberId { get; set; } // "b2b-2217080371361a853b",
|
||||
public long? offerId { get; set; } // 757406440159,
|
||||
//public long? buyerUserId { get; set; } // 794184311,
|
||||
//public string buyerLoginId { get; set; } // "lord_darthvader",
|
||||
//public string buyerMemberId { get; set; } // "b2b-7941843117d583",
|
||||
public string sellerWinportUrl { get; set; } // "https://shop5856d77490jj8.1688.com",
|
||||
public long? catId { get; set; } // 122584001,
|
||||
public string tradeTemplateId { get; set; } // "[0]",
|
||||
public bool? wholeNetworkEvaluation { get; set; } // false,
|
||||
public bool? shieldPcOfferDetail { get; set; } // false
|
||||
|
||||
}
|
||||
|
||||
public class _1688offerDetail
|
||||
{
|
||||
public string brandName { get; set; } // "懿仝"
|
||||
public string detailUrl { get; set; } // "https://itemcdn.tmall.com/desc/icoss!0853216545098!1304502852?var=desc"
|
||||
/// <summary>
|
||||
/// 商品属性
|
||||
/// </summary>
|
||||
public List<_1688featureAttributes> featureAttributes { get; set; }
|
||||
public List<_1688image> imageList { get; set; }
|
||||
public long? leafCategoryId { get; set; } // 122584001
|
||||
public string leafCategoryName { get; set; } // "猫砂"
|
||||
public List<_1688image> mainImageList { get; set; }
|
||||
public long? offerId { get; set; } // 757406440159
|
||||
public string offerType { get; set; } // "fashion"
|
||||
public object status { get; set; } // "PUBLISHED"
|
||||
public string subject { get; set; } // "比亿奇膨润土猫沙40斤实惠装 混合猫砂除臭结团猫舍批发厂家直销"
|
||||
public long? topCategoryId { get; set; } // 122916001
|
||||
}
|
||||
|
||||
public class _1688image
|
||||
{
|
||||
public string fullPathImageURI { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01G4BnYt1LvO0gv4tGd_!!2217080371361-0-cib.jpg",
|
||||
//public string imageURI { get; set; } // "img/ibank/O1CN01G4BnYt1LvO0gv4tGd_!!2217080371361-0-cib.jpg",
|
||||
//public string searchImageURI { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01G4BnYt1LvO0gv4tGd_!!2217080371361-0-cib.search.jpg",
|
||||
//public string size220x220ImageURI { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01G4BnYt1LvO0gv4tGd_!!2217080371361-0-cib.220x220.jpg",
|
||||
//public string size310x310ImageURI { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01G4BnYt1LvO0gv4tGd_!!2217080371361-0-cib.310x310.jpg",
|
||||
//public string summImageURI { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01G4BnYt1LvO0gv4tGd_!!2217080371361-0-cib.summ.jpg"
|
||||
}
|
||||
|
||||
public class _1688featureAttributes
|
||||
{
|
||||
public List<string> decisionValues { get; set; } // [ "膨润土" ],
|
||||
public long? fid { get; set; } // 122594618,
|
||||
public bool? isSpecial { get; set; } // false,
|
||||
public bool? itemCpvDecision { get; set; } // true,
|
||||
public bool? lectotype { get; set; } // false,
|
||||
public string name { get; set; } // "猫砂种类",
|
||||
public int? outputType { get; set; } // 0,
|
||||
public string value { get; set; } // "膨润土",
|
||||
public List<string> values { get; set; } // [ "膨润土" ]
|
||||
}
|
||||
|
||||
//public class _1688exposeInfo
|
||||
//{
|
||||
// public _1688exposeArgs exposeArgs { get; set; }
|
||||
//}
|
||||
|
||||
//public class _1688exposeArgs
|
||||
//{
|
||||
// public string isYanxuanOffer { get; set; } // "false",
|
||||
// public string evo_page_newod { get; set; } // "1",
|
||||
// public string sceneType { get; set; } // "default",
|
||||
// public string ipvId { get; set; } // "213e049817737434077575644e0e5f",
|
||||
// public string isPlusMember { get; set; } // "false",
|
||||
// public string verticalType { get; set; } // "slsj",
|
||||
// public string offerId { get; set; } // "982078393519",
|
||||
// public string channelType { get; set; } // "dsc"
|
||||
//}
|
||||
|
||||
public class _1688tempModel
|
||||
{
|
||||
public string offerUnit { get; set; } // "件",
|
||||
public long? offerId { get; set; } // 757406440159,
|
||||
public string offerTitle { get; set; } // "比亿奇膨润土猫沙40斤实惠装 混合猫砂除臭结团猫舍批发厂家直销",
|
||||
public string defaultOfferImg { get; set; } // "",
|
||||
public long? topCategoryId { get; set; } // 122916001,
|
||||
public long? postCategoryId { get; set; } // 122584001,
|
||||
public string companyName { get; set; } // "赛龙宠物用品有限公司",
|
||||
public long? sellerUserId { get; set; } // 2217080371361,
|
||||
public string sellerLoginId { get; set; } // "赛龙宠物",
|
||||
public string sellerMemberId { get; set; } // "b2b-2217080371361a853b",
|
||||
public string winportUrl { get; set; } // "https://winport.m.1688.com/page/index.html?memberId=b2b-2217080371361a853b",
|
||||
public int? saledCount { get; set; } // 1550301
|
||||
|
||||
}
|
||||
|
||||
public class _1688video
|
||||
{
|
||||
public string coverUrl { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01TFpYU11Bs2sOyWtx9_!!0-0-cib.jpg",
|
||||
public long? videoId { get; set; } // 425966848068,
|
||||
public int? state { get; set; } // 6,
|
||||
public string title { get; set; } // "莫代尔蕾丝长裤",
|
||||
public string videoUrl { get; set; } // "https://cloud.video.taobao.com/play/u/2213822092266/p/2/e/6/t/1/425966848068.mp4"
|
||||
|
||||
}
|
||||
|
||||
public class _1688skuModel
|
||||
{
|
||||
public List<_1688skuProp> skuProps { get; set; }
|
||||
public Dictionary<string, _1688skuInfo> skuInfoMap { get; set; } = new Dictionary<string, _1688skuInfo>(); // key:"浅灰+浅灰>L(建议100-125斤)"
|
||||
public string skuPriceScale { get; set; } // "10.50-21.00"
|
||||
public Dictionary<string, _1688skuInfo> skuInfoMapOriginal { get; set; } = new Dictionary<string, _1688skuInfo>(); // key:"浅灰+浅灰>L(建议100-125斤)"
|
||||
public string skuPriceScaleOriginal { get; set; } // "10.50-21.00"
|
||||
}
|
||||
|
||||
public class _1688skuInfo
|
||||
{
|
||||
public string specId { get; set; } // "9245e6730c7356a7eaaaeab64f57a6d7",
|
||||
public string specAttrs { get; set; } // "浅灰+浅灰>L(建议100-125斤)", //sku规格
|
||||
public string price { get; set; } // "21.00", //价格不含邮费
|
||||
public string multiPrice { get; set; } // "18.50", //价格不含邮费,如果此值不为空,则price包含邮费 26.5.23
|
||||
public int? saleCount { get; set; } // 0,
|
||||
public string discountPrice { get; set; } // "21.00", //折扣价格不含邮费
|
||||
public int? canBookCount { get; set; } // 9999, //库存
|
||||
public string retailPrice { get; set; } // "",
|
||||
public string skuId { get; set; } // 6106718751233,
|
||||
public string isPromotionSku { get; set; } // true
|
||||
}
|
||||
|
||||
public class _1688skuProp
|
||||
{
|
||||
public long? fid { get; set; } // 1234
|
||||
public string prop { get; set; } // "规格"
|
||||
public List<_1688skuValue> value { get; set; }
|
||||
}
|
||||
|
||||
public class _1688skuValue
|
||||
{
|
||||
public string imageUrl { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01Awb9mH1NXgrEYzkNl_!!2217110111580-0-cib.jpg"
|
||||
public string name { get; set; } // "5个装/渐变紫/A4旋转文件夹(送标签贴)"
|
||||
}
|
||||
}
|
||||
@@ -1,103 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result._1688
|
||||
{
|
||||
public class _1688OneProductListInfo
|
||||
{
|
||||
public List<_1688ciphertextInfo> ciphertextInfoList { get; set; }
|
||||
/// <summary>
|
||||
/// 月代发(排序)
|
||||
/// </summary>
|
||||
public int? dfSalesForSort { get; set; } // 62858
|
||||
public _1688fullfillInfo fullfillInfo { get; set; }
|
||||
public _1688memberInfo memberInfo { get; set; }
|
||||
/// <summary>
|
||||
/// 商品Id
|
||||
/// </summary>
|
||||
public long? offerId { get; set; } // 757406440159,
|
||||
public string offerPic { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01G4BnYt1LvO0gv4tGd_!!2217080371361-0-cib.jpg",
|
||||
public string postDate { get; set; } // "2023-12-22 10:40:33",
|
||||
public decimal price { get; set; } // 9.9,
|
||||
public _1688proxyAdvice proxyAdvice { get; set; }
|
||||
public _1688saleInfo saleInfo { get; set; }
|
||||
public long? sellerId { get; set; } // 2217080371361
|
||||
public string title { get; set; } // "比亿奇膨润土猫沙40斤实惠装 混合猫砂除臭结团猫舍批发厂家直销"
|
||||
public string traceInfo { get; set; } // "object_id@757406440159^object_type@offer^^fx_param@%7B%22filter%22%3A%5B%5D%2C%22keyword%22%3A%22%22%2C%22pageIndex%22%3A1%2C%22pageSize%22%3A50%2C%22sceneCode%22%3A%22fxyx%22%2C%22searchMode%22%3A%22KEYWORD_SEARCH%22%2C%22sortModel%22%3A%7B%22desc%22%3Atrue%2C%22field%22%3A%22l68%22%7D%2C%22terminal%22%3A%22PC%22%7D^version@2"
|
||||
public int? version { get; set; } // 2
|
||||
public bool? yjby { get;set;} // true
|
||||
|
||||
public string getProductMsg { get; set; }
|
||||
public string _1688ProductJson { get; set; }
|
||||
public KJDDBProduct dbProduct { get; set; }
|
||||
}
|
||||
|
||||
public class _1688saleInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 月代发
|
||||
/// </summary>
|
||||
public string blurDfSales { get; set; } // "6w+",
|
||||
/// <summary>
|
||||
/// 近7天代发
|
||||
/// </summary>
|
||||
public string blurDfSales7d { get; set; } // "1w+",
|
||||
/// <summary>
|
||||
/// 近30天趋势
|
||||
/// </summary>
|
||||
public List<int> blurDfTrend { get; set; }
|
||||
/// <summary>
|
||||
/// 月代发数字
|
||||
/// </summary>
|
||||
public int? dfSales { get; set; }
|
||||
}
|
||||
|
||||
public class _1688proxyAdvice
|
||||
{
|
||||
/// <summary>
|
||||
/// 铺货数
|
||||
/// </summary>
|
||||
public string outDistributeCnt { get; set; } // "4k+",
|
||||
/// <summary>
|
||||
/// 商品退货率
|
||||
/// </summary>
|
||||
public string qualityRefundRate { get; set; } // "0.0%"
|
||||
|
||||
}
|
||||
|
||||
public class _1688memberInfo
|
||||
{
|
||||
public string companyName { get; set; } // "赛龙(辽宁)宠物用品有限公司",
|
||||
public bool? hasXchf { get; set; } // true,
|
||||
public bool? isPm { get; set; } // true,
|
||||
public bool? isPmPlus { get; set; } // true,
|
||||
public bool? isTp { get; set; } // true,
|
||||
public int? tpYear { get; set; } // 3
|
||||
|
||||
}
|
||||
|
||||
public class _1688fullfillInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 预计13H内发货
|
||||
/// </summary>
|
||||
public int? expectedSendHour { get; set; } // 13
|
||||
public string frequentLogisticCompany { get; set; } // "极兔速递",
|
||||
public bool? pickupAssurance24H { get; set; } // false,
|
||||
public bool? pickupAssurance48H { get; set; } // false,
|
||||
// 24小时支揽率
|
||||
public string pickupRate24H { get; set; } // "74.3%",
|
||||
// 48小时支揽率
|
||||
public string pickupRate48H { get; set; } // "99.8%"
|
||||
}
|
||||
|
||||
public class _1688ciphertextInfo
|
||||
{
|
||||
public string image { get; set; } // "https://gw.alicdn.com/imgextra/i1/O1CN01VTxqDc1J9AoUBqPOA_!!6000000000985-2-tps-45-45.png",
|
||||
public string key { get; set; } // "thyny",
|
||||
public string name { get; set; } // "淘宝(菜鸟)"
|
||||
}
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result._1688
|
||||
{
|
||||
public class _1688OutProductInfo
|
||||
{
|
||||
public string allItemCount { get; set; } // "",
|
||||
public List<_1688AttributeInfo> attribute { get; set; }
|
||||
public string categoryId { get; set; } // "1042687"
|
||||
public string categoryName { get; set; } // "儿童读物"
|
||||
public string categoryPath { get; set; } // ""
|
||||
public _1688DeliveryInfo deliveryInfo { get; set; }
|
||||
public string desc { get; set; } // "<div id=\"offer-template-0\"></div><div style=\"width: 790.0px;\"><img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01l2lVfh2EsSShNqqF9_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_0\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01CnqMwg2EsSSbssPG9_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_1\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01vMG0Zh2EsSShaQoZd_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_2\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01c1AA5A2EsSShNqAf5_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_3\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01M1aZdA2EsSShaQoa8_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_4\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01MBxVQo2EsSShaQ8zT_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_5\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01CEPM9x2EsSSiQJws9_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_6\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01KGAtqd2EsSShJqvP3_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_7\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01xgovhL2EsSSbsrGbF_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_8\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01dRu2uz2EsSSbsu5Eb_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_9\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01BMOh4S2EsSShgAoym_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_10\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN014wvt7a2EsSSgiw5fg_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_11\"/> <img style=\"display: block;width: 100.0%;height: auto;\" src=\"https://cbu01.alicdn.com/img/ibank/O1CN01Hxn9Vd2EsSSgiu96Q_!!2212923598800-0-cib.jpg\" usemap=\"#_sdmap_12\"/></div>",
|
||||
public string freeShipping { get; set; } // ""
|
||||
public List<string> itemImgs { get; set; } // [ "https://cbu01.alicdn.com/img/ibank/O1CN01JiAErc2EsSSiuKULI_!!2212923598800-0-cib.jpg", "https://cbu01.alicdn.com/img/ibank/O1CN01unRjms2EsSShZZiC5_!!2212923598800-0-cib.jpg", ... ],
|
||||
public string limitCount { get; set; } // "",
|
||||
public string minOrderQuaitity { get; set; } // "1",
|
||||
public string newItemCount { get; set; } // "",
|
||||
public string nick { get; set; } // "悦慧轩图书",
|
||||
public string num { get; set; } // "",
|
||||
public string priceHigh { get; set; } // "3.30",
|
||||
public string priceLow { get; set; } // "1.50",
|
||||
public string priceRange { get; set; } // "1.50-3.30",
|
||||
public string productId { get; set; } // "966477656178",
|
||||
public string productName { get; set; } // "全横式田字格口算题卡天天练书籍幼小衔接数学10以内加减法练习册",
|
||||
public string productPicUrl { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01JiAErc2EsSSiuKULI_!!2212923598800-0-cib.jpg",
|
||||
public string productUrl { get; set; } // "https://detail.1688.com/offer/966477656178.html",
|
||||
public List<_1688PropsName> propsName { get; set; }
|
||||
public string provinceCity { get; set; } // "安徽省合肥市",
|
||||
public string sellerType { get; set; } // "1688",
|
||||
public string shopId { get; set; } // "",
|
||||
public string shopName { get; set; } // "安徽省悦慧轩文化科技有限公司",
|
||||
public List<_1688Sku> skus { get; set; }
|
||||
public Dictionary<string, Dictionary<string, List<string>>> specs { get; set; } // "颜色": { "3216:7088218": ["10以内数的分解与组成", "https://cbu01.alicdn.com/img/ibank/O1CN01UrBXvP2EsSSiuZ3ay_!!2212923598800-0-cib.jpg"], ... }
|
||||
public int? sysId { get; set; } // 0,
|
||||
public string totalCount { get; set; } // "",
|
||||
public string userId { get; set; } // "2212923598800",
|
||||
public string videoUrl { get; set; } // ""
|
||||
|
||||
}
|
||||
|
||||
public class _1688Sku
|
||||
{
|
||||
public int? quantity { get; set; } // 9984,
|
||||
public int? price { get; set; } // 150,
|
||||
public int? orign_price { get; set; } // 150,
|
||||
public long? skuId { get; set; } // 6074721995513,
|
||||
public string id { get; set; } // "3216:7088218;450:6532962"
|
||||
|
||||
}
|
||||
|
||||
public class _1688PropsName
|
||||
{
|
||||
public string pname { get; set; } // "颜色",
|
||||
public string pid { get; set; } // "3216",
|
||||
public List<_1688PropsNameValue> values { get; set; }
|
||||
}
|
||||
|
||||
public class _1688PropsNameValue
|
||||
{
|
||||
public string vname { get; set; } // "10以内数的分解与组成",
|
||||
public string vid { get; set; } // "7088218",
|
||||
public string sku_url { get; set; } // "https://cbu01.alicdn.com/img/ibank/O1CN01UrBXvP2EsSSiuZ3ay_!!2212923598800-0-cib.jpg"
|
||||
|
||||
}
|
||||
|
||||
public class _1688DeliveryInfo
|
||||
{
|
||||
public string location { get; set; } // "安徽省合肥市"
|
||||
public List<_1688Carriage> carriageList { get; set; } // [ { "name": "默认", "price": 2.5 } ]
|
||||
}
|
||||
|
||||
public class _1688Carriage
|
||||
{
|
||||
public string name { get; set; } // "默认",
|
||||
public decimal price { get; set; } // 2.5
|
||||
}
|
||||
|
||||
public class _1688AttributeInfo
|
||||
{
|
||||
public string key { get; set; } // "品牌", "出版社", "适合阅读年龄", "开本", "正文语种", "书号", "颜色"
|
||||
public string value { get; set; } // "刊天下", "黑龙江美术出版社", "适合4-8岁", "16", "中文", "9787559389725", "10以内数的分解与组成,10以内数的加减法..."
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result
|
||||
{
|
||||
public class AddressAreaInfo
|
||||
{
|
||||
public long code { get; set; }
|
||||
public long father_code { get; set; }
|
||||
public string level { get; set; }
|
||||
public string name { get; set; }
|
||||
public List<AddressAreaInfo> sub_districts { get; set; }
|
||||
}
|
||||
|
||||
public class AddressProvinceInfo
|
||||
{
|
||||
public string province { get; set; }
|
||||
public string province_id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result
|
||||
{
|
||||
public class BuyerLoginInfo
|
||||
{
|
||||
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; set; }
|
||||
public string notes { get; set; }
|
||||
public DateTime add_time { get; set; }
|
||||
public DateTime mdy_time { get; set; }
|
||||
public CefSharp.WinForms.ChromiumWebBrowser browser { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,106 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result
|
||||
{
|
||||
|
||||
public class CatePropertyResponseInfo
|
||||
{
|
||||
//public string msg = "";
|
||||
//private int tpl_type = 0;
|
||||
//private int page = 0;
|
||||
//private int size = 0;
|
||||
//private int st = 0;
|
||||
//public int code = 0;
|
||||
//public int total = 0;
|
||||
public int code = 0;
|
||||
public int err_no = 0;
|
||||
public string log_id = "";
|
||||
public string message = "";
|
||||
public string msg = "";
|
||||
public string sub_code = "";
|
||||
public string sub_msg = "";
|
||||
public PropertiesData data { get; set; }
|
||||
}
|
||||
|
||||
public class PropertiesData
|
||||
{
|
||||
public int tpl_type = 0;
|
||||
public List<PropertiesBase> data
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
public class PropertiesBase
|
||||
{
|
||||
|
||||
public int property_id;
|
||||
public string property_name;
|
||||
public bool required;
|
||||
public string type;
|
||||
//public string hint = "";
|
||||
public int multi_select_max;
|
||||
/// <summary>
|
||||
/// 是否支持枚举可输入,0表示不支持,1表示支持,支持枚举可输入的属性,在发布/编辑接口的类目属性参数中可以传入自定义的属性值,自定义属性值value为0,diy_type为1
|
||||
/// </summary>
|
||||
public int diy_type;
|
||||
//public int property_type = 0;
|
||||
//public string property_id = "";
|
||||
//public int sequence = 0;
|
||||
//public int relation_id = 0;
|
||||
//public string name
|
||||
//{
|
||||
// get;
|
||||
// set;
|
||||
//}
|
||||
//public int required
|
||||
//{
|
||||
// get;
|
||||
// set;
|
||||
//}
|
||||
//public string type
|
||||
//{
|
||||
// get;
|
||||
// set;
|
||||
//}
|
||||
public List<PropertiesValuesBase> options
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
public class PropertiesValuesBase
|
||||
{
|
||||
public string name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string value
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
|
||||
public class PropertyBaseNew
|
||||
{
|
||||
public long property_id;
|
||||
public string property_name;
|
||||
public string type;
|
||||
public int required;
|
||||
public List<PropertiesValuesBaseNew> vbnlst = new List<PropertiesValuesBaseNew>();
|
||||
}
|
||||
public class PropertiesValuesBaseNew
|
||||
{
|
||||
public string name;
|
||||
public long sequence;
|
||||
public string value;
|
||||
public long value_id;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result
|
||||
{
|
||||
public class FreightTemplateInfo
|
||||
{
|
||||
public TemplateInfo template { get; set; }
|
||||
}
|
||||
|
||||
public class TemplateInfo
|
||||
{
|
||||
public long id { get; set; }
|
||||
public string template_name { get; set; }
|
||||
/// <summary>
|
||||
/// 发货省份id
|
||||
/// </summary>
|
||||
public string product_province { get; set; }
|
||||
/// <summary>
|
||||
/// 发货城市id
|
||||
/// </summary>
|
||||
public string product_city { get; set; }
|
||||
/// <summary>
|
||||
/// 计价方式-1.按重量计价 2.按数量计价
|
||||
/// </summary>
|
||||
public int calculate_type { get; set; }
|
||||
/// <summary>
|
||||
/// 快递方式-1.快递 目前仅支持1
|
||||
/// </summary>
|
||||
public int transfer_type { get; set; }
|
||||
/// <summary>
|
||||
/// 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款
|
||||
/// </summary>
|
||||
public int rule_type { get; set; }
|
||||
/// <summary>
|
||||
/// 固定运费金额(单位:分) 固定运费模板必填 1-9900之间的整数
|
||||
/// </summary>
|
||||
public int fixed_amount { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result.JST
|
||||
{
|
||||
public class JSTListProductSkuInfo
|
||||
{
|
||||
public string skuId { get; set; } // "F51114C9251A4AC1A03D91256FB48EF5",
|
||||
public string itemSpuId { get; set; } // "16306F9EA78643A6B8389036BFC6131B",
|
||||
public string pic { get; set; } // "https://images.sursung.com/prod/item/11625838/20260213/7D4666188669485C95B31A53CE621EAB_s392918_h800_w800.jpg",
|
||||
public string itemName { get; set; } // "汉服发带唐风发饰古风国风头饰女马面裙配饰",
|
||||
/// <summary>
|
||||
/// spu货号
|
||||
/// </summary>
|
||||
public string styleCode { get; set; } // "633881130581",
|
||||
/// <summary>
|
||||
/// sku货号
|
||||
/// </summary>
|
||||
public string itemCode { get; set; } // "sp01351C",
|
||||
public string color { get; set; } // "葡萄花鸟复原蓝",
|
||||
public string spec { get; set; } // "无规格",
|
||||
public decimal? salePrice { get; set; } // 7,
|
||||
//public object weight { get; set; } // null,
|
||||
//public object stockLastTime { get; set; } // null,
|
||||
//public object regulatePriceMin { get; set; } // null,
|
||||
//public object regulatePriceMax { get; set; } // null
|
||||
|
||||
|
||||
public decimal? supplyPrice { get; set; }
|
||||
public int? stock { get; set; }
|
||||
public decimal? weight { get; set; }
|
||||
public DateTime stockTime { get; set; }
|
||||
|
||||
|
||||
public string coid { get; set; }
|
||||
public string supplierId { get; set; }
|
||||
public string supplierName { get; set; }
|
||||
public string status { get; set; }
|
||||
|
||||
|
||||
public int? skuPrice { get { if (supplyPrice == null) return null; return (supplyPrice * 100).ParseToInt(); } private set { supplyPrice = value * 0.01m; } }
|
||||
public string Msg { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,173 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result.JST
|
||||
{
|
||||
public class JSTOrderDataInfo
|
||||
{
|
||||
public int? code { get; set; } // 0 //错误码
|
||||
public string msg { get; set; } // 执行成功 //错误描述
|
||||
public JSTDataInfo data { get; set; }
|
||||
}
|
||||
|
||||
public class JSTDataInfo
|
||||
{
|
||||
public int? page_size { get; set; } // 2 每页多少条
|
||||
public int? page_index { get; set; } // 1 第几页
|
||||
public int? data_count { get; set; } // 2 总条数
|
||||
public int? page_count { get; set; } // 1 总页数
|
||||
public bool? has_next { get; set; } // false 是否有下一页
|
||||
/// <summary>
|
||||
/// 订单数据合集
|
||||
/// </summary>
|
||||
public List<JSTOrderInfo> orders { get; set; }
|
||||
}
|
||||
|
||||
public class JSTOrderInfo
|
||||
{
|
||||
public bool? is_cod { get; set; } // boolean false 是否货到付款
|
||||
public string l_id { get; set; } // string 快递单号
|
||||
public string send_date { get; set; } // string 发货日期
|
||||
public string pay_date { get; set; } // string 2019-12-16 16:35:28 支付时间
|
||||
public string freight { get; set; } // string 4.0 买家支付运费,保留两位小数,单位(元)
|
||||
public string first_freight { get; set; } // string 跨境订单-头程运费
|
||||
public string outerwms_freight { get; set; } // string 跨境订单-尾程运费
|
||||
public string receiver_address { get; set; } // string 收货地址
|
||||
public string receiver_district { get; set; } // string 区
|
||||
public string wms_co_id { get; set; } // string 0 发货仓编号(当值为0表示主仓)
|
||||
public string logistics_company { get; set; } // string 快递公司
|
||||
public long? as_id { get; set; } // number 补发换货单对应的售后单号
|
||||
public decimal? free_amount { get; set; } // number 抵扣金额
|
||||
public string shop_name { get; set; } // string 川梣铺子 店铺名称
|
||||
public string question_type { get; set; } // string 等待订单合并 问题类型,仅当问题订单时有效
|
||||
public string outer_pay_id { get; set; } // string 20210928 外部支付单号
|
||||
public string so_id { get; set; } // string 20210928 线上订单号,线上同步过来的订单号,最长不超过20;唯一
|
||||
public string type { get; set; } // string 普通订单 订单类型,普通订单;补发订单;分销Plus;供销Plus;换货订单
|
||||
public string order_from { get; set; } // string open 订单来源,ERP:手工下单; COPY:复制; MERGE:合并; SPLIT:拆分;拆分还原; MOBILE:京东; IMPORT:导入; drp-s:供销推送; drp-d:分销推送; KWAISHOP:快手;微商城; PINDUODUO;拼多多; TOUTIAOFXG;头条放心购
|
||||
public string status { get; set; } // string Question 聚水潭订单状态 待付款:WaitPay;发货中:Delivering;被合并:Merged;异常:Question;被拆分:Split;等供销商|外仓发货:WaitOuterSent;已付款待审核:WaitConfirm;已客审待财审:WaitFConfirm;已发货:Sent;取消:Cancelled
|
||||
public long? pay_amount { get; set; } // number 应付金额,保留两位小数,单位(元)
|
||||
public string shop_buyer_id { get; set; } // string 买家昵称
|
||||
public string open_id { get; set; } // string 平台买家唯一值,仅限平台已经支持的才会返回
|
||||
public string shop_status { get; set; } // string 平台订单状态: 等待买家付款=WAIT_BUYER_PAY, 等待卖家发货=WAIT_SELLER_SEND_GOODS,等待买家确认收货=WAIT_BUYER_CONFIRM_GOODS, 交易成功=TRADE_FINISHED, 付款后交易关闭=TRADE_CLOSED,付款前交易关闭=TRADE_CLOSED_BY_TAOBAO; https://jushuitan.yuque.com/cscvxv/al2cbn/ycunxb?singleDoc#8lWt 《平台订单shop_status字段枚举》 密码:tyuy
|
||||
public string receiver_mobile { get; set; } // string 手机
|
||||
public string receiver_phone { get; set; } // string 电话
|
||||
public string order_date { get; set; } // string 2019-12-15 18:14:26 订单日期
|
||||
public string question_desc { get; set; } // string 问题描述
|
||||
public string receiver_city { get; set; } // string 收件信息-市
|
||||
public string receiver_state { get; set; } // string 收件信息-省
|
||||
public string receiver_name { get; set; } // string 收件信息-收件人
|
||||
public long? o_id { get; set; } // integer 38852 ERP内部订单号,聚水潭生成的订单号,唯一
|
||||
public long? shop_id { get; set; } // integer 11690153 店铺编号
|
||||
public long? co_id { get; set; } // integer 11053062 公司编号
|
||||
public string remark { get; set; } // string 订单备注;卖家备注
|
||||
public string package_no { get; set; } // string 参考号
|
||||
public string warehouse_oid { get; set; } // string 外部单据号
|
||||
public string drp_co_id_from { get; set; } // string 分销商编号
|
||||
public string modified { get; set; } // string 2021-09-28 16:08:13 最后修改时间
|
||||
public string labels { get; set; } // string 延时发货 多标签
|
||||
public long? paid_amount { get; set; } // number pay节点的支付金额
|
||||
public string platform_free_amount { get; set; } // string 营收小计:平台优惠;null值处理成了空字符串返回,实际有值的是number类型返回
|
||||
public string pay_free_amount { get; set; } // string 营收小计:支付优惠;null值处理成了空字符串返回,实际有值的是number类型返回
|
||||
public string referrer_free_amount { get; set; } // string 营收小计:达人优惠;null值处理成了空字符串返回,实际有值的是number类型返回
|
||||
public string shop_free_amount { get; set; } // string 营收小计:店铺优惠;null值处理成了空字符串返回,实际有值的是number类型返回
|
||||
public string currency { get; set; } // string 币种
|
||||
public string buyer_message { get; set; } // string 买家留言
|
||||
public string lc_id { get; set; } // string 物流公司编码
|
||||
public string cb_total_tax { get; set; } // string 跨境平台税金
|
||||
public string invoice_title { get; set; } // string 发票抬头
|
||||
public string invoice_type { get; set; } // string 发票类型
|
||||
public long? invoice_amount { get; set; } // number 发票金额
|
||||
public string buyer_tax_no { get; set; } // string 发票税号
|
||||
public string creator_name { get; set; } // string 订单业务员
|
||||
public string plan_delivery_date { get; set; } // string 计划发货时间
|
||||
public string node { get; set; } // string 线下备注
|
||||
public string receiver_town { get; set; } // string 收件信息-街道
|
||||
public string drp_co_id_to { get; set; } // string 供销商编号
|
||||
public string shop_site { get; set; } // string 商家自有商城 店铺站点信息
|
||||
public string un_lid { get; set; } // string 国际物流单号
|
||||
public string end_time { get; set; } // string 确认收货时间(仅限淘系平台,头条放心购、拼多多、苏宁易购、快手电商、有赞微商城,如果线上状态为取消,该时间为完结时间)
|
||||
public string receiver_country { get; set; } // string 国家代码;(映射关系参考https://openweb.jushuitan.com/doc?docId=225)
|
||||
public string receiver_zip { get; set; } // string 邮编
|
||||
public long? seller_flag { get; set; } // integer 旗帜(1红旗,2黄旗,3绿旗,4蓝旗,5紫旗)
|
||||
public string receiver_email { get; set; } // string 收货邮箱
|
||||
public string referrer_id { get; set; } // string 主播id
|
||||
public string referrer_name { get; set; } // string 主播名称
|
||||
public string created { get; set; } // string 2021-09-28 16:08:13 订单创建时间
|
||||
/// <summary>
|
||||
/// 支付信息
|
||||
/// </summary>
|
||||
public List<JSTPayInfo> pays { get; set; }
|
||||
/// <summary>
|
||||
/// 商品信息
|
||||
/// </summary>
|
||||
public List<JSTItemInfo> items { get; set; }
|
||||
|
||||
public string skus { get; set; } // string 商品(商品总数.sku_id* qty)
|
||||
public decimal? f_weight { get; set; } // number 实称重量
|
||||
public decimal? weight { get; set; } // number 重量
|
||||
public long? ts { get; set; } // integer 数据库行版本号:https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/rowversion-transact-sql?view=sql-server-ver16
|
||||
public string buyer_id { get; set; } // string 买家ID(系统根据shop_buyer_id生成的)
|
||||
public decimal? buyer_paid_amount { get; set; } // number 营收小计:买家实付(仅限爱库存,阿里巴巴,百度小店,得物,饿百零售,好食期,好衣库,京东,快团团,快手电商,蘑菇街,团好货,拼多多,杉杉商业,淘宝天猫,头条放心购,小红书,有赞)
|
||||
public decimal? seller_income_amount { get; set; } // number 营收小计:卖家实收(仅限淘宝天猫,爱库存,阿里巴巴,百度小店,得物,饿百零售,好食期,好衣库,京东,快团团,快手电商,蘑菇街,团好货,拼多多,杉杉商业,头条放心购,小红书,有赞)
|
||||
public string chosen_channel { get; set; } // string 实发快递渠道
|
||||
public string channel_name { get; set; } // string 发货渠道(自定义之后的名称)
|
||||
public string cb_lc_code { get; set; } // string 渠道编码
|
||||
public string cb_lc_name { get; set; } // string 发货渠道(自定义之前的名称)
|
||||
public string link_o_id { get; set; } // string 被合并被拆分的订单内部单号
|
||||
public string merge_so_id { get; set; } // string 合并线上订单号
|
||||
public string shipment { get; set; } // string 买家指定物流
|
||||
public string sign_time { get; set; } // string 预计送达时间
|
||||
|
||||
// ...
|
||||
}
|
||||
|
||||
public class JSTItemInfo
|
||||
{
|
||||
public bool? is_gift { get; set; } // boolean false 是否赠品
|
||||
public string sku_id { get; set; } // string CY001 原始商品编码
|
||||
public string name { get; set; } // string CY001 商品名称
|
||||
public string refund_status { get; set; } // string 申请退款的状态, 未申请:none;退款中:waiting;退款成功:success;退款关闭:closed
|
||||
public string refund_id { get; set; } // string 退款的唯一单号
|
||||
public decimal? price { get; set; } // number 单价
|
||||
public string outer_oi_id { get; set; } // string 201911 子订单号,商家系统订单商品明细主键,为了拆单合单时溯源,最长不超过50
|
||||
public string item_status { get; set; } // string 商品状态;None:无;WaitPay:待付款;WaitConfirm:等待审核;Question:异常;WaitDeliver:平台接口告知ERP订单项解锁可发货的状态; WaitFConfirm:等待财务审核;Delivering:发货中;WaitOuterSent:等待外仓发货;Sent:已发货;OuterSent:外仓发货;Merged:被合并;Cancelled:用户取消订单;Replaced:被替换(明细);Split:被拆分; Delete:删除;Lock:锁定;SentCancelled:发货后取消。非必填字段可以为null,不表示任何含义
|
||||
public string i_id { get; set; } // string 001 款式编码
|
||||
public string properties_value { get; set; } // string CY001 属性
|
||||
public long? oi_id { get; set; } // integer 39845 子订单号,最长不超过20
|
||||
public decimal? amount { get; set; } // number 223.0 总额
|
||||
public string shop_sku_id { get; set; } // string 201911 店铺商品编码,对应店铺商品资料页面平台店铺商品编码
|
||||
public string raw_so_id { get; set; } // string 20210928 原始线上单号
|
||||
public int? qty { get; set; } // integer 1 数量
|
||||
public bool? is_presale { get; set; } // boolean 是否预售
|
||||
public decimal? base_price { get; set; } // number 223.0 基本售价(原价)
|
||||
public string pic { get; set; } // string 商品图片
|
||||
public string sku_type { get; set; } // string normal 商品类型;nomal:普通商品;combine:组合装商品;no_deliver:不发货
|
||||
public string shop_i_id { get; set; } // string 店铺款式编码
|
||||
public decimal? buyer_paid_amount { get; set; } // number 营收小计:买家实付(仅限爱库存,阿里巴巴,百度小店,得物,饿百零售,好食期,好衣库,京东,快团团,快手电商,蘑菇街,团好货,拼多多,杉杉商业,淘宝天猫,头条放心购,小红书,有赞)
|
||||
public decimal? seller_income_amount { get; set; } // number 营收小计:卖家实收(仅限淘宝天猫,爱库存,阿里巴巴,百度小店,得物,饿百零售,好食期,好衣库,京东,快团团,快手电商,蘑菇街,团好货,拼多多,杉杉商业,头条放心购,小红书,有赞)
|
||||
public string referrer_id { get; set; } // string 主播ID
|
||||
public string lwh_id { get; set; } // string 虚拟仓编号
|
||||
public string lwh_name { get; set; } // string 虚拟仓名称
|
||||
public string remark { get; set; } // string 明细备注
|
||||
public string produced_date { get; set; } // string 生产日期
|
||||
public string batch_id { get; set; } // string 批次号
|
||||
public string item_ext_data { get; set; } // string 订单明细扩展字段
|
||||
}
|
||||
|
||||
public class JSTPayInfo
|
||||
{
|
||||
public bool? is_order_pay { get; set; } // boolean true 是否支付
|
||||
public string buyer_account { get; set; } // string 38 支付帐号
|
||||
public decimal? amount { get; set; } // number 706.0 支付金额
|
||||
public string pay_date { get; set; } // string 2019-12-1616:35:28 支付时间
|
||||
public string outer_pay_id { get; set; } // string 20210928 外部支付单号
|
||||
public string pay_id { get; set; } // string 37163 支付单ID
|
||||
public string payment { get; set; } // string 微信 支付方式
|
||||
public string status { get; set; } // string 支付状态(None:无 / 未定义;WaitConfirm:待审核;Confirmed:已确认;Finished:完成;Cancelled:作废;Deleted:删除;Lock:锁定;VirtualFinished:虚拟完成;Replace:替换;Reset:重置;Reserve:预占(保留))
|
||||
public string pay_type { get; set; } // string 支付类型(1 支付,-1 退款)
|
||||
public long? o_id { get; set; } // number 内部订单号
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result
|
||||
{
|
||||
public class JSTDownProdSkuInfo
|
||||
{
|
||||
public int id { get; set; }
|
||||
public List<string> itemMainImage { get; set; } // Array[5],
|
||||
public string itemName { get; set; } // "光流沙咕卡麻将砖块转砖带灯创意礼物男孩女孩网红",
|
||||
public string styleCode { get; set; } // "725068475481",
|
||||
public string itemCode { get; set; } // "ysk00407C_3R",
|
||||
public string colourSpec { get; set; } // "方形带灯翠绿色;无规格",
|
||||
public decimal? supplyPrice { get; set; } // 2.93,
|
||||
public object oldSupplyPrice { get; set; } // null,
|
||||
public object priceDate { get; set; } // null,
|
||||
public List<object> perfectPlatformList { get; set; } // Array[19],
|
||||
public string shelvesType { get; set; } // "DISTRIBUTION",
|
||||
public string supplierName { get; set; } // "努正供应链",
|
||||
public List<object> itemShelvesInfos { get; set; } // [],
|
||||
public string shelvesTime { get; set; } // "2026-01-30 18:50:50",
|
||||
public string itemSource { get; set; } // "GYL",
|
||||
public string itemSourceText { get; set; } // "供应链",
|
||||
public string supplierCoId { get; set; } // "14204696",
|
||||
public string spuId { get; set; } // "BEC902FFA8B542A6A9F16BF5964DEA4F",
|
||||
public string coId { get; set; } // "14791477",
|
||||
public string partnerSkuId { get; set; } // "21B50E4CA5264A078933C956F0250FD9",
|
||||
public string partnerSpuId { get; set; } // "9573273974C1472E9CEC10D227218E89",
|
||||
public bool? deleted { get; set; } // false,
|
||||
public bool? isPartner { get; set; } // true,
|
||||
public bool? partnerCanSee { get; set; } // false,
|
||||
public bool? haveBaseData { get; set; } // false,
|
||||
public object baseDataId { get; set; } // null,
|
||||
public string itemStatus { get; set; } // "distribution",
|
||||
public bool? privateStatus { get; set; } // false,
|
||||
public string categoryId { get; set; } // "",
|
||||
public string categoryName { get; set; } // "",
|
||||
public object regulatePriceMin { get; set; } // null,
|
||||
public object regulatePriceMax { get; set; } // null,
|
||||
public object lastRegulatePriceMin { get; set; } // null,
|
||||
public object lastRegulatePriceMax { get; set; } // null,
|
||||
public object regulatePriceChangeTime { get; set; } // null,
|
||||
public bool? showLastRegulatePrice { get; set; } // false,
|
||||
public string supplierId { get; set; } // "8323D6C2837B42AF8CB37F2A262DCA98",
|
||||
/// <summary>
|
||||
/// sku状态 FOR_SHELVED:该商品已被供应商设置成不可分销
|
||||
/// </summary>
|
||||
public string drpItemStatus { get; set; } // "FOR_SHELVED",
|
||||
public string lastOperator { get; set; } // "老马",
|
||||
public string itemSpuIdMd5 { get; set; } // "BEC902FFA8B542A6A9F16BF5964DEA4F"
|
||||
public string secret_spu_id { get; set; }
|
||||
public string secret_sku_id { get; set; }
|
||||
/// <summary>
|
||||
/// 产品库中是否存在
|
||||
/// </summary>
|
||||
public int is_in_product_db { get; set; }
|
||||
public DateTime? add_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result
|
||||
{
|
||||
public class JSTListProductInfo
|
||||
{
|
||||
public string spuId { get; set; } // "38A11B454F26441AA605E00BF74358A2",
|
||||
public string id { get; set; } // "38A11B454F26441AA605E00BF74358A2",
|
||||
public decimal? supplyPrice { get; set; } // 0.26
|
||||
public decimal? maxSupplyPrice { get; set; } // 5.95
|
||||
public List<string> itemMainImage { get; set; } // [ "https://images.sursung.com/prod/pt/10361546/20240402/4CC48A2E804B484EB1D3606346E2D22B_s92273_h800_w800.jpg", ... ],
|
||||
public string itemName { get; set; } // "滚筒波轮全自动洗衣机排水管洗脸洗手盆下水软管出水管加长延长管",
|
||||
public string styleCode { get; set; } // "590410612913-1",
|
||||
public decimal? minSalesPrice { get; set; } // 3.59,
|
||||
public decimal? minSupplyPrice { get; set; } // null,
|
||||
public int? salesVolume { get; set; } // 179199,
|
||||
public string salesVolumeDesensitized { get; set; } // "17万+",
|
||||
public bool? privateStatus { get; set; } // false,
|
||||
public string brandId { get; set; } // "0",
|
||||
public string brandName { get; set; } // "无品牌",
|
||||
public string coId { get; set; } // "14202245",
|
||||
public string supplierId { get; set; } // "93D12D2BD21649DC8240E2265BE37E2A",
|
||||
public string supplierName { get; set; } // "义乌市喜博电子商务有限公司",
|
||||
public string offlineSupplierId { get; set; } // "",
|
||||
public string offlineSupplierName { get; set; } // "义乌市昀晗供应链管理有限公司",
|
||||
public object babyLink { get; set; } // null,
|
||||
public object distributorPrice { get; set; } // null,
|
||||
public long? sorted { get; set; } // 0,
|
||||
public bool? isTop { get; set; } // false,
|
||||
public object drpPriceEnum { get; set; } // null,
|
||||
public bool? firstTop { get; set; } // false,
|
||||
public bool? lastTop { get; set; } // false,
|
||||
public bool? drpSpuAdded { get; set; } // false,
|
||||
public int? visitQty { get; set; } // 8,
|
||||
public int? favoriteQty { get; set; } // 0,
|
||||
public bool? distributorStatus { get; set; } // true,
|
||||
public string distributorCoId { get; set; } // "10361546",
|
||||
public int? shelvesQty { get; set; } // 10,
|
||||
public string updated { get; set; } // "2025-12-10 23:27:47",
|
||||
public string userName { get; set; } // "义乌市喜博电子商务有限公司",
|
||||
public string created { get; set; } // "2025-04-12 00:11:38",
|
||||
public string categoryName { get; set; } // "下水软管/排水软管",
|
||||
public int? saleYesterday { get; set; } // 4,
|
||||
public int? supplierSaleYesterday { get; set; } // 6299,
|
||||
public int? saleThree { get; set; } // 15,
|
||||
public int? saleSeven { get; set; } // 45,
|
||||
public int? saleFifteen { get; set; } // 100,
|
||||
public int? saleThirty { get; set; } // 137,
|
||||
public int? supplierSaleThirty { get; set; } // 179199,
|
||||
public int? supplierSaleSeven { get; set; } // 42787,
|
||||
public object cloudDiskFolderId { get; set; } // "",
|
||||
public bool? allowDownload { get; set; } // false,
|
||||
public object newDays { get; set; } // null,
|
||||
public bool? todayPromoted { get; set; } // false,
|
||||
public string promoteDate { get; set; } // "2025-04-12",
|
||||
public object videoUrl { get; set; } // null,
|
||||
public object videoCoverUrl { get; set; } // null,
|
||||
public object recommend { get; set; } // null,
|
||||
public object freshmanLabels { get; set; } // null,
|
||||
public object fastOrder { get; set; } // null,
|
||||
public bool? deleted { get; set; } // false,
|
||||
public object makePublicForPartner { get; set; } // null,
|
||||
public decimal? saleSevenRiseRate { get; set; } // 0.012,
|
||||
public object categoryLv1Id { get; set; } // null,
|
||||
public object categoryLv2Id { get; set; } // null,
|
||||
public object categoryLv3Id { get; set; } // null,
|
||||
public object mainCategoryName { get; set; } // null,
|
||||
public object secondCategoryName { get; set; } // null,
|
||||
public bool? spuHaveVideo { get; set; } // false,
|
||||
public object brandAuditStatus { get; set; } // null,
|
||||
public bool? isPartner { get; set; } // true,
|
||||
public object platformTypes { get; set; } // null,
|
||||
public object favoritesId { get; set; } // null,
|
||||
public List<object> spuShelvesShopList { get; set; } // [ ],
|
||||
public object itemShelvesShopList { get; set; } // null,
|
||||
public bool? manualQueryPrice { get; set; } // true,
|
||||
public object dealPriceNinetyMax { get; set; } // null,
|
||||
public object distributorItemStatus { get; set; } // null,
|
||||
public object erpCategoryNameList { get; set; } // null,
|
||||
public object syncTime { get; set; } // null,
|
||||
public string itemSource { get; set; } // "FROM_SUP",
|
||||
public object shopName { get; set; } // null,
|
||||
public object shopType { get; set; } // null,
|
||||
public object brandNameList { get; set; } // null,
|
||||
public object description { get; set; } // null,
|
||||
public object havePurchasePriceRiseSku { get; set; } // null,
|
||||
public object havePurchasePriceReduceSku { get; set; } // null,
|
||||
public object afterSaleRateThirtyDay { get; set; } // null,
|
||||
public string regulatePriceIntercept { get; set; } // "UN_INTERCEPT",
|
||||
public bool? skuHaveRegulatePrice { get; set; } // false,
|
||||
public List<string> limitShelvesPlatformList { get; set; } // [ "WXChannel" ],
|
||||
public List<limitShelvesPlatformV2Info> limitShelvesPlatformListV2 { get; set; } // [ ],
|
||||
public object supSentGmv7d { get; set; } // null,
|
||||
public object sentCntIncrAvg7dRatio { get; set; } // null,
|
||||
public int? specNum { get; set; } // 2,
|
||||
public object partnerSpuId { get; set; } // null,
|
||||
public object freshmanHaveVideo { get; set; } // null,
|
||||
public int? buyLimitNum { get; set; } // 1,
|
||||
public bool? ifDefaultBuyLimit { get; set; } // true,
|
||||
public List<object> preSalePlatformList { get; set; } // [ ],
|
||||
public string itemCoId { get; set; } // "14202245",
|
||||
public string itemSpuId { get; set; } // "38A11B454F26441AA605E00BF74358A2",
|
||||
public bool? partner { get; set; } // true,
|
||||
public string saleSevenDesensitized { get; set; } // "40+",
|
||||
public string saleThirtyDesensitized { get; set; } // "100+",
|
||||
public string supplierSaleThirtyDesensitized { get; set; } // "17万+",
|
||||
public string supplierSaleSevenDesensitized { get; set; } // "4.2万+",
|
||||
public string saleYesterdayDesensitized { get; set; } // "4",
|
||||
public string supplierSaleYesterdayDesensitized { get; set; } // "6000+"
|
||||
|
||||
public KJDDBProduct dbProduct { get; set; }
|
||||
public string jstProductJson { get; set; }
|
||||
public string getProductMsg { get; set; } = "";
|
||||
}
|
||||
|
||||
public class limitShelvesPlatformV2Info
|
||||
{
|
||||
public string limitShelvesPlatform { get; set; } // "vipapis",
|
||||
public bool? syncSupplier { get; set; } // false,
|
||||
public List<string> sourceList { get; set; } // [ "SUPPLIER_WAYBILL" ]
|
||||
}
|
||||
}
|
||||
Loaded 100 of 1479 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user