diff --git a/api/README.md b/api/README.md index 3bc3590..05a5f41 100644 --- a/api/README.md +++ b/api/README.md @@ -72,7 +72,6 @@ | LastActiveTime| DateTime| 最后上线时间| | StartTime| DateTime| 上线时间| | TerminalPhoneNo|string| 终端手机号| -| LoaclAddressIP| string| 本地ip地址| | WebApiPort| string| WebApi端口号| | RemoteAddressIP| string| 远程ip地址| @@ -100,7 +99,6 @@ "LastActiveTime":"2018-11-27 20:00:00", "StartTime":"2018-11-25 20:00:00", "TerminalPhoneNo":"123456789012", - "LoaclAddressIP":"127.0.0.1:808", "WebApiPort":828, "RemoteAddressIP":"127.0.0.1:11808" },{ @@ -108,7 +106,6 @@ "LastActiveTime":"2018-11-27 20:00:00", "StartTime":"2018-11-25 20:00:00", "TerminalPhoneNo":"123456789013", - "LoaclAddressIP":"127.0.0.1:808", "WebApiPort":828, "RemoteAddressIP":"127.0.0.1:11808" } diff --git a/src/JT808.DotNetty.Dashbord.sln b/src/JT808.DotNetty.Dashbord.sln index be58372..b8a77a0 100644 --- a/src/JT808.DotNetty.Dashbord.sln +++ b/src/JT808.DotNetty.Dashbord.sln @@ -1,10 +1,14 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.28010.2050 +VisualStudioVersion = 15.0.28307.168 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Dashbord", "JT808.DotNetty.Dashbord\JT808.DotNetty.Dashbord.csproj", "{3A9698C3-CEBB-4C93-A40C-3F7FE650217C}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0D20F469-7269-4D64-A3C6-BE08700EEDEB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol", "JT808.Protocol\src\JT808.Protocol\JT808.Protocol.csproj", "{2F2FF360-A037-4C73-AF42-D252F1B86BD6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,10 +19,17 @@ Global {3A9698C3-CEBB-4C93-A40C-3F7FE650217C}.Debug|Any CPU.Build.0 = Debug|Any CPU {3A9698C3-CEBB-4C93-A40C-3F7FE650217C}.Release|Any CPU.ActiveCfg = Release|Any CPU {3A9698C3-CEBB-4C93-A40C-3F7FE650217C}.Release|Any CPU.Build.0 = Release|Any CPU + {2F2FF360-A037-4C73-AF42-D252F1B86BD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2F2FF360-A037-4C73-AF42-D252F1B86BD6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2F2FF360-A037-4C73-AF42-D252F1B86BD6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2F2FF360-A037-4C73-AF42-D252F1B86BD6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2F2FF360-A037-4C73-AF42-D252F1B86BD6} = {0D20F469-7269-4D64-A3C6-BE08700EEDEB} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0DDBE27F-708F-46DC-837F-BEF34A50A0B1} EndGlobalSection diff --git a/src/JT808.DotNetty.Dashbord/Controllers/JT808AtomicCounterController.cs b/src/JT808.DotNetty.Dashbord/Controllers/JT808AtomicCounterController.cs new file mode 100644 index 0000000..402657d --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Controllers/JT808AtomicCounterController.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using JT808.DotNetty.Dtos; +using Microsoft.AspNetCore.Mvc; + +namespace JT808.DotNetty.Dashbord.Controllers +{ + /// + /// 计数器管理 + /// + [Route("jt808webapi/AtomicCounter")] + [ApiController] + public class JT808AtomicCounterController : ControllerBase + { + /// + /// 获取包计算器 + /// + /// + public ActionResult GetAtomicCounter() + { + return new JT808AtomicCounterDto { + MsgSuccessCount=100000, + MsgFailCount=0 + }; + } + } +} diff --git a/src/JT808.DotNetty.Dashbord/Controllers/JT808SessionController.cs b/src/JT808.DotNetty.Dashbord/Controllers/JT808SessionController.cs new file mode 100644 index 0000000..32f6354 --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Controllers/JT808SessionController.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using JT808.DotNetty.Dtos; +using Microsoft.AspNetCore.Mvc; + +namespace JT808.DotNetty.Dashbord.Controllers +{ + /// + /// 会话管理 + /// + [Route("jt808webapi/Session")] + [ApiController] + public class JT808SessionController : ControllerBase + { + /// + /// 通过终端设备号删除会话 + /// + /// + /// + [HttpGet] + public ActionResult RemoveByTerminalPhoneNo(string terminalPhoneNo) + { + return true; + } + + /// + /// 通过通道Id删除会话 + /// + /// + /// + [HttpGet] + public ActionResult RemoveByChannelId(string channelId) + { + return true; + } + + /// + /// 获取会话集合 + /// + /// + /// + [HttpGet] + public ActionResult> GetAll() + { + return new List() { + new JT808SessionInfoDto { + ChannelId="0x00x0", + LastActiveTime=DateTime.Now, + RemoteAddressIP="127.0.0.1:559", + TerminalPhoneNo="123456789012", + StartTime=DateTime.Now, + WebApiPort=8091 + }, + new JT808SessionInfoDto { + ChannelId="0x00x1", + LastActiveTime=DateTime.Now, + RemoteAddressIP="127.0.0.1:558", + TerminalPhoneNo="123456789013", + StartTime=DateTime.Now, + WebApiPort=8092 + } + }; + } + } +} diff --git a/src/JT808.DotNetty.Dashbord/Controllers/JT808SourcePackageController.cs b/src/JT808.DotNetty.Dashbord/Controllers/JT808SourcePackageController.cs new file mode 100644 index 0000000..aa1a969 --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Controllers/JT808SourcePackageController.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using JT808.DotNetty.Dtos; +using Microsoft.AspNetCore.Mvc; + +namespace JT808.DotNetty.Dashbord.Controllers +{ + /// + /// 原包管理 + /// + [Route("jt808webapi/SourcePackage")] + [ApiController] + public class JT808SourcePackageController : ControllerBase + { + /// + /// 添加地址 + /// + /// + /// + [HttpPost] + public ActionResult Add([FromBody]JT808IPAddressDto jT808IPAddressDto) + { + return true; + } + + /// + /// 删除地址 + /// + /// + /// + [HttpPost] + public ActionResult Remove([FromBody]JT808IPAddressDto jT808IPAddressDto) + { + return true; + } + + /// + /// 删除地址 + /// + /// + /// + [HttpGet] + public ActionResult> GetAll() + { + return new List() { + new JT808SourcePackageChannelInfoDto { + Active=true, + Open=true, + Registered=true, + RemoteAddress="127.0.0.1:56" + }, + new JT808SourcePackageChannelInfoDto { + Active=true, + Open=true, + Registered=true, + RemoteAddress="127.0.0.1:57" + } + }; + } + } +} diff --git a/src/JT808.DotNetty.Dashbord/Controllers/JT808TransmitController.cs b/src/JT808.DotNetty.Dashbord/Controllers/JT808TransmitController.cs new file mode 100644 index 0000000..6fde62d --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Controllers/JT808TransmitController.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using JT808.DotNetty.Dtos; +using Microsoft.AspNetCore.Mvc; + +namespace JT808.DotNetty.Dashbord.Controllers +{ + /// + /// 转发管理 + /// + [Route("jt808webapi/Transmit")] + [ApiController] + public class JT808TransmitController : ControllerBase + { + /// + /// 添加地址 + /// + /// + /// + [HttpPost] + public ActionResult Add([FromBody]JT808IPAddressDto jT808IPAddressDto) + { + return true; + } + + /// + /// 删除地址 + /// + /// + /// + [HttpPost] + public ActionResult Remove([FromBody]JT808IPAddressDto jT808IPAddressDto) + { + return true; + } + + /// + /// 获取转发IP地址集合 + /// + /// + /// + [HttpGet] + public ActionResult> GetAll() + { + return new List() { "127.0.0.1:80", "127.0.0.1:81" }; + } + } +} diff --git a/src/JT808.DotNetty.Dashbord/Controllers/JT808UnificationSendController.cs b/src/JT808.DotNetty.Dashbord/Controllers/JT808UnificationSendController.cs index b8a2904..0035f5b 100644 --- a/src/JT808.DotNetty.Dashbord/Controllers/JT808UnificationSendController.cs +++ b/src/JT808.DotNetty.Dashbord/Controllers/JT808UnificationSendController.cs @@ -13,36 +13,17 @@ namespace JT808.DotNetty.Dashbord.Controllers [ApiController] public class JT808UnificationSendController : ControllerBase { - // GET api/values - [HttpGet] - public ActionResult> Get() - { - return new string[] { "value1", "value2" }; - } - - // GET api/values/5 - [HttpGet("{id}")] - public ActionResult Get(int id) + /// + /// 文本信息下发 + /// + /// 终端设备号 + /// 下发文本信息 + /// + [HttpGet("{terminalPhoneNo}/{text}")] + public ActionResult SendText(string terminalPhoneNo, string text) { + return "value"; } - - // POST api/values - [HttpPost] - public void Post([FromBody] string value) - { - } - - // PUT api/values/5 - [HttpPut("{id}")] - public void Put(int id, [FromBody] string value) - { - } - - // DELETE api/values/5 - [HttpDelete("{id}")] - public void Delete(int id) - { - } } } diff --git a/src/JT808.DotNetty.Dashbord/Dtos/JT808AtomicCounterDto.cs b/src/JT808.DotNetty.Dashbord/Dtos/JT808AtomicCounterDto.cs new file mode 100644 index 0000000..7a182db --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Dtos/JT808AtomicCounterDto.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT808.DotNetty.Dtos +{ + /// + /// 包计数器服务 + /// + public class JT808AtomicCounterDto + { + /// + /// 成功数 + /// + public long MsgSuccessCount { get; set; } + /// + /// 失败数 + /// + public long MsgFailCount { get; set; } + } +} diff --git a/src/JT808.DotNetty.Dashbord/Dtos/JT808IPAddressDto.cs b/src/JT808.DotNetty.Dashbord/Dtos/JT808IPAddressDto.cs new file mode 100644 index 0000000..3ce22dd --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Dtos/JT808IPAddressDto.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; + +namespace JT808.DotNetty.Dtos +{ + public class JT808IPAddressDto + { + public string Host { get; set; } + + public int Port { get; set; } + + private EndPoint endPoint; + + public EndPoint EndPoint + { + get + { + if (endPoint == null) + { + if (IPAddress.TryParse(Host, out IPAddress ip)) + { + endPoint = new IPEndPoint(ip, Port); + } + else + { + endPoint = new DnsEndPoint(Host, Port); + } + } + return endPoint; + } + } + } +} diff --git a/src/JT808.DotNetty.Dashbord/Dtos/JT808ResultDto.cs b/src/JT808.DotNetty.Dashbord/Dtos/JT808ResultDto.cs index cd3bdd7..da5cbf5 100644 --- a/src/JT808.DotNetty.Dashbord/Dtos/JT808ResultDto.cs +++ b/src/JT808.DotNetty.Dashbord/Dtos/JT808ResultDto.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace JT808.DotNetty.Dashbord.Dtos +namespace JT808.DotNetty.Dtos { public class JT808ResultDto { @@ -12,4 +12,12 @@ namespace JT808.DotNetty.Dashbord.Dtos public T Data { get; set; } } + + internal class JT808ResultCode + { + public const int Ok = 200; + public const int Empty = 201; + public const int NotFound = 404; + public const int Error = 500; + } } diff --git a/src/JT808.DotNetty.Dashbord/Dtos/JT808SessionInfoDto.cs b/src/JT808.DotNetty.Dashbord/Dtos/JT808SessionInfoDto.cs index 4759581..cfa24c5 100644 --- a/src/JT808.DotNetty.Dashbord/Dtos/JT808SessionInfoDto.cs +++ b/src/JT808.DotNetty.Dashbord/Dtos/JT808SessionInfoDto.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace JT808.DotNetty.Dashbord.Dtos +namespace JT808.DotNetty.Dtos { public class JT808SessionInfoDto { @@ -23,10 +23,6 @@ namespace JT808.DotNetty.Dashbord.Dtos /// public string TerminalPhoneNo { get; set; } /// - /// 本地ip地址 - /// - public string LoaclAddressIP { get; set; } - /// /// WebApi端口号 /// public int WebApiPort { get; set; } diff --git a/src/JT808.DotNetty.Dashbord/Dtos/JT808SourcePackageChannelInfoDto.cs b/src/JT808.DotNetty.Dashbord/Dtos/JT808SourcePackageChannelInfoDto.cs new file mode 100644 index 0000000..3931568 --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Dtos/JT808SourcePackageChannelInfoDto.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT808.DotNetty.Dtos +{ + /// + /// 原包通道信息 + /// + public class JT808SourcePackageChannelInfoDto + { + /// + /// 远程地址 + /// + public string RemoteAddress { get; set; } + /// + /// 是否注册 + /// + public bool Registered { get; set; } + /// + /// 是否活动 + /// + public bool Active { get; set; } + /// + /// 是否打开 + /// + public bool Open { get; set; } + } +} diff --git a/src/JT808.DotNetty.Dashbord/Dtos/JT808UnificationSendRequestDto.cs b/src/JT808.DotNetty.Dashbord/Dtos/JT808UnificationSendRequestDto.cs index 5987dfa..5b565f1 100644 --- a/src/JT808.DotNetty.Dashbord/Dtos/JT808UnificationSendRequestDto.cs +++ b/src/JT808.DotNetty.Dashbord/Dtos/JT808UnificationSendRequestDto.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace JT808.DotNetty.Dashbord.Dtos +namespace JT808.DotNetty.Dtos { /// /// 统一下发请求参数 diff --git a/src/JT808.DotNetty.Dashbord/Internal/IJT808DotNettyWebApi.cs b/src/JT808.DotNetty.Dashbord/Internal/IJT808DotNettyWebApi.cs new file mode 100644 index 0000000..1c8723d --- /dev/null +++ b/src/JT808.DotNetty.Dashbord/Internal/IJT808DotNettyWebApi.cs @@ -0,0 +1,36 @@ +using JT808.DotNetty.Dtos; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using WebApiClient; +using WebApiClient.Attributes; + +namespace JT808.DotNetty.Dashbord.Internal +{ + public interface IJT808DotNettyWebApi : IHttpApi + { + [HttpPost] + ITask> UnificationSend([Uri]string uri, [FormContent]JT808UnificationSendRequestDto jT808UnificationSendRequestDto); + [HttpGet] + ITask>> SessionGetAll([Uri]string uri); + [HttpPost] + ITask> SessionRemoveByChannelId([Uri]string uri,[FormContent]string channelId); + [HttpPost] + ITask> SessionRemoveByTerminalPhoneNo([Uri]string uri, [FormContent]string terminalPhoneNo); + [HttpPost] + ITask> SourcePackageAdd([Uri]string uri, [FormContent]JT808IPAddressDto jT808IPAddressDto); + [HttpPost] + ITask> SourcePackageRemove([Uri]string uri, [FormContent]JT808IPAddressDto jT808IPAddressDto); + [HttpGet] + ITask>> SourcePackageGetAll([Uri]string uri); + [HttpPost] + ITask> TransmitAdd([Uri]string uri, [FormContent]JT808IPAddressDto jT808IPAddressDto); + [HttpPost] + ITask> TransmitRemove([Uri]string uri, [FormContent]JT808IPAddressDto jT808IPAddressDto); + [HttpGet] + ITask>> TransmitGetAll([Uri]string uri); + [HttpGet] + ITask> GetAtomicCounter([Uri]string uri); + } +} diff --git a/src/JT808.DotNetty.Dashbord/JT808.DotNetty.Dashbord.csproj b/src/JT808.DotNetty.Dashbord/JT808.DotNetty.Dashbord.csproj index ffe2b91..929270c 100644 --- a/src/JT808.DotNetty.Dashbord/JT808.DotNetty.Dashbord.csproj +++ b/src/JT808.DotNetty.Dashbord/JT808.DotNetty.Dashbord.csproj @@ -1,7 +1,7 @@ - netcoreapp2.1 + netcoreapp2.2 @@ -10,7 +10,8 @@ - + + diff --git a/src/JT808.DotNetty.Dashbord/Startup.cs b/src/JT808.DotNetty.Dashbord/Startup.cs index bd3750f..9dec8c3 100644 --- a/src/JT808.DotNetty.Dashbord/Startup.cs +++ b/src/JT808.DotNetty.Dashbord/Startup.cs @@ -24,7 +24,7 @@ namespace JT808.DotNetty.Dashbord // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); + services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/src/JT808.DotNetty.Hosting/JT808.DotNetty.Hosting.csproj b/src/JT808.DotNetty.Hosting/JT808.DotNetty.Hosting.csproj index 2671cdd..5fb9d07 100644 --- a/src/JT808.DotNetty.Hosting/JT808.DotNetty.Hosting.csproj +++ b/src/JT808.DotNetty.Hosting/JT808.DotNetty.Hosting.csproj @@ -2,16 +2,16 @@ Exe - netcoreapp2.1 + netcoreapp2.2 true latest - - - - + + + + diff --git a/src/JT808.DotNetty.Test/JT808.DotNetty.Test.csproj b/src/JT808.DotNetty.Test/JT808.DotNetty.Test.csproj index e09e23b..23d9e7c 100644 --- a/src/JT808.DotNetty.Test/JT808.DotNetty.Test.csproj +++ b/src/JT808.DotNetty.Test/JT808.DotNetty.Test.csproj @@ -1,18 +1,21 @@  - netcoreapp2.1 + netcoreapp2.2 false - - - - - - + + + + + + + all + runtime; build; native; contentfiles; analyzers + diff --git a/src/JT808.DotNetty/Dtos/JT808SessionInfoDto.cs b/src/JT808.DotNetty/Dtos/JT808SessionInfoDto.cs index c57be31..cfa24c5 100644 --- a/src/JT808.DotNetty/Dtos/JT808SessionInfoDto.cs +++ b/src/JT808.DotNetty/Dtos/JT808SessionInfoDto.cs @@ -23,10 +23,6 @@ namespace JT808.DotNetty.Dtos /// public string TerminalPhoneNo { get; set; } /// - /// 本地ip地址 - /// - public string LoaclAddressIP { get; set; } - /// /// WebApi端口号 /// public int WebApiPort { get; set; } diff --git a/src/JT808.DotNetty/Internal/JT808SessionServiceDefaultImpl.cs b/src/JT808.DotNetty/Internal/JT808SessionServiceDefaultImpl.cs index 37a062a..f5d1dbd 100644 --- a/src/JT808.DotNetty/Internal/JT808SessionServiceDefaultImpl.cs +++ b/src/JT808.DotNetty/Internal/JT808SessionServiceDefaultImpl.cs @@ -36,7 +36,6 @@ namespace JT808.DotNetty.Internal StartTime = s.StartTime, TerminalPhoneNo = s.TerminalPhoneNo, WebApiPort = jT808Configuration.WebApiPort, - LoaclAddressIP = s.Channel.LocalAddress.ToString(), RemoteAddressIP = s.Channel.RemoteAddress.ToString(), }).ToList(); resultDto.Code = JT808ResultCode.Ok; diff --git a/src/JT808.DotNetty/JT808.DotNetty.csproj b/src/JT808.DotNetty/JT808.DotNetty.csproj index 5d4c3a9..60d5394 100644 --- a/src/JT808.DotNetty/JT808.DotNetty.csproj +++ b/src/JT808.DotNetty/JT808.DotNetty.csproj @@ -30,11 +30,11 @@ - - - - - + + + + +