Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

92 wiersze
3.0 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using JT808.DotNetty.Abstractions.Dtos;
  5. using JT808.DotNetty.Core.Metadata;
  6. using Newtonsoft.Json;
  7. namespace JT808.DotNetty.Core.Handlers
  8. {
  9. /// <summary>
  10. /// 基于webapi http模式抽象消息处理业务
  11. /// 自定义消息处理业务
  12. /// 注意:
  13. /// 1.ConfigureServices:
  14. /// services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHttpHandlerBase),typeof(JT808MsgIdCustomHttpHandlerImpl),ServiceLifetime.Singleton));
  15. /// 2.解析具体的消息体,具体消息调用具体的JT808Serializer.Deserialize<T>
  16. /// </summary>
  17. public abstract class JT808MsgIdHttpHandlerBase
  18. {
  19. /// <summary>
  20. /// 初始化消息处理业务
  21. /// </summary>
  22. protected JT808MsgIdHttpHandlerBase()
  23. {
  24. HandlerDict = new Dictionary<string, Func<JT808HttpRequest, JT808HttpResponse>>();
  25. }
  26. protected void CreateRoute(string url, Func<JT808HttpRequest, JT808HttpResponse> func)
  27. {
  28. if (!HandlerDict.ContainsKey(url))
  29. {
  30. HandlerDict.Add(url, func);
  31. }
  32. else
  33. {
  34. // 替换
  35. HandlerDict[url] = func;
  36. }
  37. }
  38. public Dictionary<string, Func<JT808HttpRequest, JT808HttpResponse>> HandlerDict { get; }
  39. protected JT808HttpResponse CreateJT808HttpResponse(dynamic dynamicObject)
  40. {
  41. byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dynamicObject));
  42. return new JT808HttpResponse()
  43. {
  44. Data = data
  45. };
  46. }
  47. public JT808HttpResponse DefaultHttpResponse()
  48. {
  49. byte[] json = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new JT808DefaultResultDto()));
  50. return new JT808HttpResponse(json);
  51. }
  52. public JT808HttpResponse EmptyHttpResponse()
  53. {
  54. byte[] json = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new JT808ResultDto<string>()
  55. {
  56. Code = JT808ResultCode.Empty,
  57. Message = "内容为空",
  58. Data = "Content Empty"
  59. }));
  60. return new JT808HttpResponse(json);
  61. }
  62. public JT808HttpResponse NotFoundHttpResponse()
  63. {
  64. byte[] json = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new JT808ResultDto<string>()
  65. {
  66. Code = JT808ResultCode.NotFound,
  67. Message = "没有该服务",
  68. Data = "没有该服务"
  69. }));
  70. return new JT808HttpResponse(json);
  71. }
  72. public JT808HttpResponse ErrorHttpResponse(Exception ex)
  73. {
  74. byte[] json = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new JT808ResultDto<string>()
  75. {
  76. Code = JT808ResultCode.Error,
  77. Message = JsonConvert.SerializeObject(ex),
  78. Data = ex.Message
  79. }));
  80. return new JT808HttpResponse(json);
  81. }
  82. }
  83. }