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 @@
-
-
-
-
-
+
+
+
+
+