From f85e04fe973b1c99b8ff0056241dbaac2ef40770 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 16 Oct 2024 17:47:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 | Bin 275060 -> 275060 bytes src/WMS.Web.Api/Controllers/TestController.cs | 16 +- src/WMS.Web.Api/appsettings.json | 5 + src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 2 +- src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 30 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 42 +++ .../Dto/LingXing/LingXingInventoryRequest.cs | 20 ++ .../Dto/LingXing/LingXingInventoryResponse.cs | 41 +++ .../Dto/LingXing/LingXingLoginRequest.cs | 24 ++ .../Dto/LingXing/LingXingRequest.cs | 24 ++ .../Dto/LingXing/LingXingResponse.cs | 23 ++ .../Dto/LingXing/LingXingStockResponse.cs | 17 + .../IService/Public/IHttpClientService.cs | 1 + .../IService/Public/ILingXingService.cs | 26 ++ src/WMS.Web.Domain/Options/lingXingOptions.cs | 16 + .../Services/Public/HttpClientService.cs | 15 + .../Services/Public/LingXingService.cs | 300 ++++++++++++++++++ src/WMS.Web.Domain/Values/ResultCodes.cs | 4 + .../DependencyInjection/AppBuilder.cs | 5 +- 19 files changed, 608 insertions(+), 3 deletions(-) create mode 100644 src/WMS.Web.Core/Dto/LingXing/LingXingInventoryRequest.cs create mode 100644 src/WMS.Web.Core/Dto/LingXing/LingXingInventoryResponse.cs create mode 100644 src/WMS.Web.Core/Dto/LingXing/LingXingLoginRequest.cs create mode 100644 src/WMS.Web.Core/Dto/LingXing/LingXingRequest.cs create mode 100644 src/WMS.Web.Core/Dto/LingXing/LingXingResponse.cs create mode 100644 src/WMS.Web.Core/Dto/LingXing/LingXingStockResponse.cs create mode 100644 src/WMS.Web.Domain/IService/Public/ILingXingService.cs create mode 100644 src/WMS.Web.Domain/Options/lingXingOptions.cs create mode 100644 src/WMS.Web.Domain/Services/Public/LingXingService.cs diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 03701273681fbae1b2ecc8f693ec54c95a8181dc..497f3f1757d48ea081744a9ab316a45f1fe39320 100644 GIT binary patch literal 275060 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 z z2e6mIUO;;VJ+ZKpLMNcBLRa7j1+GiL*>8ZJ0yjWm0C1ARNx(FPX~1-a>A)<7S-?Dn zdB6gN1SzSbi0Wu0 z&B*F#6wRpW=q#GEs-w{~qdBEs573z-byesJ9IBvaH}p`@6Bv$G&~p@yQ#cMdQ9;i% z7^0vj6AV}2^nhqA#~sV$f0{AO@26p6|3$i2=k8yrz-)Xb-vdmzXMR1PlkD$Q(0TOt zD(F=C2NiTS{9_6_;r$r}rm#ojIqvvsCZ*HYnd!?Fbn^KJ3Oc|1V+Cf6M-x#ea>lRr zbt3pT3Od*Odj)21M-wn6R5Kr&zD~-nP^bXvDbxeDP++ojG#Pa==d);^DbLX)`je`o zDKt}b&NAgaC{Lq5jhV+Z)0tdMGlTiVG&7kZOvBvZgVjBlWA|5JLT@yi9ZcdKu6>=S zd$xj3#XVO+XWLFvn1nhPl^L^_Yo9r=(LDO|nBhvZkV&jG%wAondl$0zZu)mK+mvPz z6H00BWzHzg{Y(p`S0(AqDk`zvoL8MW1=O^Q_Q8Ld4=hcG;c5? zlICqDJ<_aTUL(!tOkJc|&Fn;)hzW=^%sedD*Lj^>SWiJ`4{oQxTtMde0ZjH|A|Id= z{PtAP8GL&y=oGynwE>-jH$p+D*`1@HGwIG((8+T9s;u+juGGqvRIXFdIc+y7=(M#v z6?9(O{R%qu>_G*cUG{{6P9S?hLFb6QuE3lxrg#B5&+8KfoysK&I$LY4f=4Ajr_sz*(3vuG6m&Ao z1ignk-(`VTbVAD_1)a05I=`W{LTjMCLVKW- zf=)y@L_y~o^i*K>0FwoPzQBnJIw@e7g8tqA%>S>1`)6q@48SNJDu_sW!54)R#Gx4! zq*($w6a*G*$*JN2#SkXkhIc2BGQ0JKx`38uuBj@s)LJzgM*@j;^1IjQfLPS z&qSojg!K`F4z+$?|nhUrdb2S z^{KE;p9}Nzm9Q}12_y1@APZB0fhqV&SbJO2z@XbMY_>s|Wi!I^`dS!Q-w6BZnV^Ug zK!FwXr+3xRdFK^N=Djdh{uTDf|H9;$dI_wGt-^5FE^LE|F#mN33ty+`1h0ghu3L12 ztgyEAi9V1MHnY6QgF!*&qG|!t);nRn8WZ#=@)ICAk&^&TiG&2~Nbdz@h!6y4GL&Yl< zu2e-8T>FqY;8wWzpZO5`J##&{05`%}{$9Ae*M#GGUAUkB6Herh;t`}0kV^Rd5G|lh zw1KopgAU>7+$G$VGa>_eL=VV{Ea(-zpkMTZoXCN^aEcue1K_Q2P#qFOU|2Ydj))O3 zF2)n4Navou8>nnAua{?Lbkv{{1BW3nfnTHCAj+4wt41uJ$?#)W%P3x zt#e=;TvKamLv5&%Dh2+S6`PaYuEzLcGM)tfJM|=Qaj!2dJOk=Q%M<_r literal 275060 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
    NnD1($ z&;-~-VH03h2AD;|`NHH?CQ8K4Cd$QeN4itsX|!MK#2bY&qYw|5*f7(EOKrH!hHvBV z)xPqR<*ZC+IXfdGbDe9W)!F4~r*Ut8@6+f|eL@_{kL#XB+vpFw4L_`VHoGTQ>B<6i zewU)kuDlr>RmM*vjy}&OevNt3Ox31@Tm?ms<8Z!V29MJ8zxhyu_feTrZ9IZwr&bY11O+gkCN?QUZN`=r)>+Sk~#D8!5ONiEt6_VFzWX7x`k z8X5QZEed80N-f$F5ArPvW(`fPVR;$qTNKPXCbeiUe2i~Vh?nTp{ewi*C0IeT#xwPp8&%+Wpph{!xgR=#1pZzm$*8C?5GUbR&g$q4RAb(eL)J{+=k9 z^>%8}^!9DvqF~lXskN9!yuL-jtj|*G3vGYv-FFJ{5}lLWt*`UZImP>aj&7t7FLc38 zB--G9L7B585HuyFChKEl;gq^0M5wD8x&2R&s-7h3Kr}y*f)bQivDH@uw~R z3qrfxT*13N3T9QN7Cmz-eT#xwtELu>b652(3TCaHT6E7{+qWphOLSgxw>Bt5=N0e! zdAgB8yh!78Pc+nR?C*&}yhP_FdumpQ&MofgT-`{)obwZ>MIk!B=$s!r@mGH9Tc)@6 zmjdh^DGIiyiOHU}EkqNGdzu*UDgMf>PEMTd3(@4FGdXtRuQ(SaPP;;MQPH_5cH*x% z(-NnBA(~cnro~SD73bo_=~9R;E;<*-PW+XhtXuk%(Q3Av|C3RO7kbeqyBcJDX;=Dx z4UKB!CAuV$h8Chrinn)(Zln+|a!k6X;|j2MBq^A6VrrdS;Ei?9qF~mT)H*4_P5W=RI_;T6ffpIC^la2Cj7Uy-Mz`nYNIlV`>7GUolQHYmlZnCGl z3(?%-p614TiobGecO=e(h3Jl=b4TpNUvcIo&J%@bUeTEsJMmYX`HAyfA(~%w=EqL_ z73coMdA$(bUv%z|o%k!xgNgG&A$qXrJQzFiSDa@P=d(ieY|(i(cH*x%FC

    h+Zf< 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 diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index 93c4a50e..8c363eef 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -28,6 +28,8 @@ using System.Reflection; using WMS.Web.Domain.Services; using SkiaSharp; using Google.Protobuf.Collections; +using NPOI.SS.Formula.Functions; +using System.Text.Json; namespace WMS.Web.Api.Controllers { @@ -57,11 +59,12 @@ namespace WMS.Web.Api.Controllers private readonly IMemoryCache _memoryCache; private readonly IRedisConcurrentProcessService _redisConcurrentProcessService; private IInStockService _inStockService; + private readonly ILingXingService _lingXingService; public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, IRedisConcurrentProcessService redisConcurrentProcessService, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, IMemoryCache memoryCache, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions options, ILoginService loginService, ISendMessageService sendMessageService, ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories, - IWebHostEnvironment env, IMaterialService materialService, IOutStockRepositories outStockRepositories, IInStockService inStockService) + IWebHostEnvironment env, IMaterialService materialService, IOutStockRepositories outStockRepositories, IInStockService inStockService, ILingXingService lingXingService) { _inStockService = inStockService; _redisConcurrentProcessService = redisConcurrentProcessService; @@ -85,12 +88,23 @@ namespace WMS.Web.Api.Controllers _outStockService = outStockService; _outStockRepositories = outStockRepositories; _env = env; + _lingXingService = lingXingService; } [HttpGet] [Route("hj")] public async Task TestHJ() { + ////var myJson = "{\"name\":\"小明\",\"address\":\"威海\"}";//json字符串 + //var myJson= "{\"code\":\"200\",\"msg\":\"OK\",\"data\":{\"access_token\":\"05895ad6-e318-41da-9b2c-579dedd18fd1\",\"refresh_token\":\"ad9145cf-8af9-4617-9dbe-187b0ff3edf9\",\"expires_in\":7162}}"; + //var myObj = JsonConvert.DeserializeObject(myJson);//反序列化为 dynamic 对象 + //var my2 = System.Text.Json.JsonSerializer.Deserialize(myJson); + //string m = myObj.code; + //var m2 = my2.Object; + //var md = m2.code; + + await _lingXingService.GetStock(); + //List list = new List(); //list.Add("GD-02-15"); //list.Add("GD-01-15"); diff --git a/src/WMS.Web.Api/appsettings.json b/src/WMS.Web.Api/appsettings.json index 8d69e2a9..7b63d062 100644 --- a/src/WMS.Web.Api/appsettings.json +++ b/src/WMS.Web.Api/appsettings.json @@ -46,6 +46,11 @@ "UserName": "admin", "PassWord": "888888" }, + "LingXingOptions": { + "Url": "https://openapi.lingxing.com", + "AppId": "ak_QGK2J8TssERmu", + "AppSecret": "n/HUKD2wVdTbvhnFZbVBPw==" + }, "Qiniu": { "AccessKey": "dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms", "SecretKey": "KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q", diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 4a712d9a..0e430568 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -579,7 +579,7 @@ - +

    导出 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index c53adb3b..d6112558 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -3969,6 +3969,36 @@ wms箱ID + + + 领星登录 + + + + + id + + + + + Secret + + + + + 领星请求 + + + + + 页码 + + + + + 页条数 + + 客户端名称 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 43b9bb7b..9989a112 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -4310,6 +4310,11 @@ + + + 领星服务接口 + + 登录服务接口 @@ -6271,6 +6276,43 @@ + + + 领星服务接口 + + + + + 获取所有仓库 + + + + + + 32位MD5加密 + + 要加密字符串 + 是否以小写方式返回 + + + + + AES加密 + + 需要加密的字符串 + 32位密钥 + 向量(默认偏移量) + 加密后的字符串 + + + + 类实体的属性与值转化成键值对形式 + + + + + + 创建token diff --git a/src/WMS.Web.Core/Dto/LingXing/LingXingInventoryRequest.cs b/src/WMS.Web.Core/Dto/LingXing/LingXingInventoryRequest.cs new file mode 100644 index 00000000..1f7d10d7 --- /dev/null +++ b/src/WMS.Web.Core/Dto/LingXing/LingXingInventoryRequest.cs @@ -0,0 +1,20 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.LingXing +{ + /// + /// 领星即时库存 + /// + [Serializable] + public class LingXingInventoryRequest:LingXingRequest + { + /// + /// 仓库Id 1,3,234,33 + /// + [JsonProperty("offset")] + public string wid { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/LingXing/LingXingInventoryResponse.cs b/src/WMS.Web.Core/Dto/LingXing/LingXingInventoryResponse.cs new file mode 100644 index 00000000..030c15ba --- /dev/null +++ b/src/WMS.Web.Core/Dto/LingXing/LingXingInventoryResponse.cs @@ -0,0 +1,41 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.LingXing +{ + /// + /// 领星即时库存 + /// + [Serializable] + public class LingXingInventoryResponse + { + /// + /// 仓库Id + /// + [JsonProperty("wid")] + public int StockId { get; set; } + /// + /// SKU + /// + [JsonProperty("sku")] + public string SKU { get; set; } + /// + /// 店铺id + /// + [JsonProperty("seller_id")] + public string SellerId { get; set; } + /// + /// 库存总量 + /// + [JsonProperty("product_total")] + public decimal Product_Total { get; set; } + /// + /// 可用量 + /// + [JsonProperty("product_valid_num")] + public decimal Product_Valid_Num { get; set; } + + } +} diff --git a/src/WMS.Web.Core/Dto/LingXing/LingXingLoginRequest.cs b/src/WMS.Web.Core/Dto/LingXing/LingXingLoginRequest.cs new file mode 100644 index 00000000..b785544c --- /dev/null +++ b/src/WMS.Web.Core/Dto/LingXing/LingXingLoginRequest.cs @@ -0,0 +1,24 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.LingXing +{ + /// + /// 领星登录 + /// + public class LingXingLoginRequest + { + /// + /// id + /// + [JsonProperty("appId")] + public string AppId { get; set; } + /// + /// Secret + /// + [JsonProperty("appSecret")] + public string AppSecret { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/LingXing/LingXingRequest.cs b/src/WMS.Web.Core/Dto/LingXing/LingXingRequest.cs new file mode 100644 index 00000000..2c388b5a --- /dev/null +++ b/src/WMS.Web.Core/Dto/LingXing/LingXingRequest.cs @@ -0,0 +1,24 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.LingXing +{ + /// + /// 领星请求 + /// + public class LingXingRequest + { + /// + /// 页码 + /// + [JsonProperty("offset")] + public int offset { get; set; } = 1; + /// + /// 页条数 + /// + [JsonProperty("ength")] + public int ength { get; set; } = 1000; + } +} diff --git a/src/WMS.Web.Core/Dto/LingXing/LingXingResponse.cs b/src/WMS.Web.Core/Dto/LingXing/LingXingResponse.cs new file mode 100644 index 00000000..99499c51 --- /dev/null +++ b/src/WMS.Web.Core/Dto/LingXing/LingXingResponse.cs @@ -0,0 +1,23 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.LingXing +{ + [Serializable] + public class LingXingResponse + { + public LingXingResponse() { } + [JsonProperty("code")] + public int Code { get; set; } + [JsonProperty("message")] + public string Message { get; set; } + [JsonProperty("error_details")] + public List Error_details { get; set; } + [JsonProperty("total")] + public int Total { get; set; } + [JsonProperty("data")] + public List Data { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/LingXing/LingXingStockResponse.cs b/src/WMS.Web.Core/Dto/LingXing/LingXingStockResponse.cs new file mode 100644 index 00000000..9d45b70d --- /dev/null +++ b/src/WMS.Web.Core/Dto/LingXing/LingXingStockResponse.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.LingXing +{ + [Serializable] + public class LingXingStockResponse + { + public LingXingStockResponse() { } + [JsonProperty("wid")] + public int Id { get; set; } + [JsonProperty("name")] + public string Name { get; set; } + } +} diff --git a/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs b/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs index 42a5e48c..6e340c73 100644 --- a/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs +++ b/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs @@ -13,6 +13,7 @@ namespace WMS.Web.Domain.IService.Public Task GetAsync(string url, Dictionary dicHeaders, int timeoutSecond = 180); Task PostAsync(string url, string requestBody, int timeoutSecond = 180); Task PostAsync(string url, string requestBody, Dictionary dicHeaders, int timeoutSecond = 180); + Task PostAsync(string url, HttpContent content, Dictionary dicHeaders, int timeoutSecond = 180); Task ExecuteAsync(string url, HttpMethod method, string requestBody, Dictionary dicHeaders, int timeoutSecond = 180); } } diff --git a/src/WMS.Web.Domain/IService/Public/ILingXingService.cs b/src/WMS.Web.Domain/IService/Public/ILingXingService.cs new file mode 100644 index 00000000..285487b0 --- /dev/null +++ b/src/WMS.Web.Domain/IService/Public/ILingXingService.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.LingXing; +using WMS.Web.Core.Internal.Results; + +namespace WMS.Web.Domain.IService.Public +{ + /// + /// 领星服务接口 + /// + public interface ILingXingService + { + /// + /// 获取领星所有仓库 + /// + /// + public Task>> GetStock(); + /// + /// 获取即时库存 + /// + /// + public Task>> GetInventory(LingXingInventoryRequest dto); + } +} diff --git a/src/WMS.Web.Domain/Options/lingXingOptions.cs b/src/WMS.Web.Domain/Options/lingXingOptions.cs new file mode 100644 index 00000000..8027ea61 --- /dev/null +++ b/src/WMS.Web.Domain/Options/lingXingOptions.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Domain.Options +{ + /// + /// 领星配置 + /// + public class lingXingOptions + { + public string Url { get; set; } + public string AppId { get; set; } + public string AppSecret { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Services/Public/HttpClientService.cs b/src/WMS.Web.Domain/Services/Public/HttpClientService.cs index 016bd2dd..c88020b7 100644 --- a/src/WMS.Web.Domain/Services/Public/HttpClientService.cs +++ b/src/WMS.Web.Domain/Services/Public/HttpClientService.cs @@ -226,5 +226,20 @@ namespace WMS.Web.Domain.Services.Public if (timeoutSecond != null) httpClient.Timeout = TimeSpan.FromSeconds(timeoutSecond.Value); return httpClient; } + + public async Task PostAsync(string url, HttpContent content, Dictionary dicHeaders, int timeoutSecond = 180) + { + var client = BuildHttpClient(dicHeaders, timeoutSecond); + var response = await client.PostAsync(url, content); + var responseContent = await response.Content.ReadAsStringAsync(); + if (response.IsSuccessStatusCode) + { + var t = Newtonsoft.Json.JsonConvert.DeserializeObject(responseContent); + return t; + } + + _logger.LogError($"HttpGet:{url} Error:{responseContent}"); + throw new WebHttpException(response.StatusCode.ToString(), responseContent); + } } } diff --git a/src/WMS.Web.Domain/Services/Public/LingXingService.cs b/src/WMS.Web.Domain/Services/Public/LingXingService.cs new file mode 100644 index 00000000..537d6838 --- /dev/null +++ b/src/WMS.Web.Domain/Services/Public/LingXingService.cs @@ -0,0 +1,300 @@ +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Options; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Core.Dto.LingXing; +using System.Json; +using System.Net.Http; +using NPOI.POIFS.Crypt.Dsig; +using NPOI.SS.Formula.Functions; +using System.Configuration; +using System.Linq; +using System.Net; +using System.Text.RegularExpressions; +using System.Security.Cryptography; +using System.Reflection; +using WMS.Web.Core.Help; +using static System.Net.WebRequestMethods; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Domain.Services.Public +{ + /// + /// 领星服务接口 + /// + public class LingXingService : ILingXingService + { + private readonly IHttpClientService _httpClientService; + private readonly ILogger _logger; + private readonly IMemoryCache _memoryCache; + private int hours = 10;//过期时间 默认10小时 + private readonly lingXingOptions _option; + + public LingXingService(IHttpClientService httpClientService, ILogger logger, + IMemoryCache memoryCache, IOptions option) + { + this._memoryCache = memoryCache; + this._httpClientService = httpClientService; + this._logger = logger; + _option = option?.Value; + } + + public async Task> Login() + { + string endStr = "/api/auth-server/oauth/access-token"; + + var formData = new MultipartFormDataContent(); + formData.Add(new StringContent(_option.AppId), "appId"); + formData.Add(new StringContent(_option.AppSecret), "appSecret"); + + var res = await _httpClientService.PostAsync(_option.Url + endStr, formData, null); + + if (res.code != "200") + { + _logger.LogInformation($"领星获取授权失败:{res.msg}"); + return Result.ReFailure(ResultCodes.LingXingTokenError); + } + string token = res.data.access_token; + return Result.ReSuccess(token); + } + /// + /// 获取所有仓库 + /// + /// + public async Task>> GetStock() + { + var request = new LingXingRequest(); + var resUrl =await GetStr("/erp/sc/data/local_inventory/warehouse", request); + if (!resUrl.IsSuccess) return Result>.ReFailure(ResultCodes.LingXingUrlError); + + var res = await _httpClientService.PostAsync>(resUrl.Data, JsonConvert.SerializeObject(request), null); + if (res.Code!=0) return Result>.ReFailure(ResultCodes.LingXingDataError); + + return Result>.ReSuccess(res.Data); + } + /// + /// 获取即使库存 + /// + /// + /// + /// + public async Task>> GetInventory(LingXingInventoryRequest dto) + { + var resUrl = await GetStr("/erp/sc/routing/data/local_inventory/inventoryDetails", dto); + if (!resUrl.IsSuccess) return Result>.ReFailure(ResultCodes.LingXingUrlError); + + var res = await _httpClientService.PostAsync>(resUrl.Data, JsonConvert.SerializeObject(dto), null); + if (res.Code != 0) return Result>.ReFailure(ResultCodes.LingXingDataError); + + return Result>.ReSuccess(res.Data); + } + #region 基础函数 + public async Task> GetStr(string urlStr,T data) + { + var res = await Login(); + if (!res.IsSuccess)return res; + + LxSignInfo lxSign = new LxSignInfo(); + + lxSign.access_token = res.Data; + lxSign.app_key = _option.AppId; + lxSign.timestamp = DateTime.Now.DateTimeToTimeStamp().ToString(); + + #region ASCII排序 + Dictionary testParamDics = new Dictionary(); + var ssi = GetEntityPropertyToDic(testParamDics, lxSign.GetType().GetProperties(), lxSign);//把签名参数实体转化为键值对 + var ssdata = GetEntityPropertyToDic(testParamDics, data.GetType().GetProperties(), data);//把参数实体转化为键值对 + + // List> list = new List>(); + Dictionary list = new Dictionary(); + //string[] arrays = new string[data]; + + foreach (var item in typeof(LxSignInfo).GetProperties()) + { + //KeyValueInfo keys = new KeyValueInfo(); + //keys.Key = item.Name; + //keys.Value = ssi[$"{item.Name}"].ToString(); + //list.Add(keys); + list.Add(item.Name, ssi[$"{item.Name}"].ToString()); + } + + foreach (var item in typeof(T).GetProperties()) + { + //KeyValueInfo keys = new KeyValueInfo(); + //keys.Key = item.Name; + //keys.Value = JsonConvert.SerializeObject(ssdata[$"{item.Name}"]); + + //if (ssdata[$"{item.Name}"] == null) { list.Add(keys); continue; } + //if (string.IsNullOrEmpty(ssdata[$"{item.Name}"].ToString())) + //{ + // continue;//跳过值为NULL的 + //} + + if (ssdata[$"{item.Name}"] == null) { list.Add(item.Name, JsonConvert.SerializeObject(ssdata[$"{item.Name}"])); continue; } + if (string.IsNullOrEmpty(ssdata[$"{item.Name}"].ToString())) + { + continue;//跳过值为NULL的 + } + + list.Add(item.Name, JsonConvert.SerializeObject(ssdata[$"{item.Name}"])); + } + + string[] arrays = new string[list.Count]; + + int i = 0; + foreach (var item in list) + { + arrays[i] = item.Key; + + i++; + } + + Array.Sort(arrays, string.CompareOrdinal); //ASCII排序 + + string sig = null; + int j = 0; + foreach (var item in arrays) + { + string key = list.Where(a => a.Key == item).ToList()[0].Key.ToString(); + string value = list.Where(a => a.Key == item).ToList()[0].Value.ToString(); + + #region 清除嵌套外的字段值的双引号 + if (value.IndexOf("{", StringComparison.OrdinalIgnoreCase) > -1) { } + else + { + value = Regex.Replace(value, @"[\""]+", "");//去掉双引号 + } + #endregion + + if (j == i - 1) + { + sig += $"{key}={value}"; + } + else + { + sig += $"{key}={value}&"; + } + + j++; + } + #endregion + + #region MD5加密转大写+AES/ECB/PKCS5PADDING加密 + //sig = Regex.Replace(sig, @"[\""]+", "");//去掉双引号 + var md5 = MD5Encrypt(sig, false); + var signs = Encrypt(md5, lxSign.app_key); + #endregion + + #region 字符转义 + + signs = WebUtility.UrlEncode(signs); + #endregion + + #region 形成签名地址 + var url = _option.Url + urlStr; + var ret = $"{url}?app_key={lxSign.app_key}&access_token={lxSign.access_token}×tamp={lxSign.timestamp}&sign={signs}"; + return Result.ReSuccess(ret); + #endregion + } + + /// + /// 32位MD5加密 + /// + /// 要加密字符串 + /// 是否以小写方式返回 + /// + public static string MD5Encrypt(string strText, bool IsLower = true) + { + MD5 md5 = new MD5CryptoServiceProvider(); + byte[] bytes = System.Text.Encoding.UTF8.GetBytes(strText); + bytes = md5.ComputeHash(bytes); + md5.Clear(); + + string ret = ""; + for (int i = 0; i < bytes.Length; i++) + { + ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0'); + + } + if (IsLower == false) { return ret.PadLeft(32, '0').ToUpper(); } + return ret.PadLeft(32, '0'); + } + /// + /// AES加密 + /// + /// 需要加密的字符串 + /// 32位密钥 + ///向量(默认偏移量) + /// 加密后的字符串 + public static string Encrypt(string str, string key) + { + try + { + + Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key); + Byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(str); + var rijndael = new System.Security.Cryptography.RijndaelManaged(); + rijndael.Key = keyArray; + rijndael.Mode = System.Security.Cryptography.CipherMode.ECB; + rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7; + rijndael.IV = System.Text.Encoding.UTF8.GetBytes(key); + System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateEncryptor(); + Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); + return Convert.ToBase64String(resultArray, 0, resultArray.Length); + + } + catch (Exception ex) + { + //YellowJLog("调用AES加密方法异常,异常原因:" + ex.Message, "加密异常"); + return ""; + } + } + + /// + /// 类实体的属性与值转化成键值对形式 + /// + /// + /// + /// + /// + public static Dictionary GetEntityPropertyToDic(Dictionary inParam, PropertyInfo[] infos, T Entity) + { + foreach (var info in infos) + { + var itemTpe = info.PropertyType; + //实体中有嵌套类的处理 + if (itemTpe.IsClass && !itemTpe.Name.Equals("String", StringComparison.OrdinalIgnoreCase)) + { + //if (info.GetValue(Entity) == null) continue; + //GetEntityPropertyToDic(inParam, itemTpe.GetProperties(), info.GetValue(Entity)); + //inParam.Add(info.Name, info.GetValue(JsonConvert.SerializeObject(Entity), null)); + inParam.Add(info.Name, info.GetValue(Entity, null)); + } + else + { + + inParam.Add(info.Name, info.GetValue(Entity, null)); + //sig = Regex.Replace(sig, @"[\""]+", "");//去掉双引号 + } + } + + return inParam; + } + + #endregion + } + public class LxSignInfo + { + public string access_token { get; set; } + public string app_key { get; set; } + public string timestamp { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 06a356cc..046d1bbe 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -97,5 +97,9 @@ namespace WMS.Web.Domain.Values public static ValueTuple SubscribeNotificationNoData = (700001, "订阅通知信息不存在"); public static ValueTuple GetBarCodeSerialNumberError = (800001, "获取序列码异常"); + + public static ValueTuple LingXingTokenError = (810001, "获取领星授权失败"); + public static ValueTuple LingXingUrlError = (810002, "拼接领星请求参数失败"); + public static ValueTuple LingXingDataError = (810003, "请求领星数据失败"); } } diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs index bde012a3..c9a72a1e 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs @@ -182,7 +182,9 @@ namespace WMS.Web.Repositories.DependencyInjection Services.Configure(Configuration.GetSection("EmailOptions")); Services.AddOptions(); Services.Configure(Configuration.GetSection("SmsOptions")); - + Services.AddOptions(); + Services.Configure(Configuration.GetSection("LingXingOptions")); + } @@ -345,6 +347,7 @@ namespace WMS.Web.Repositories.DependencyInjection Services.AddTransient(); Services.AddTransient(); Services.AddTransient(); + Services.AddTransient(); }