XiaomiMqttClient_OperateLog.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using BZFAStandardLib;
  2. using Newtonsoft.Json;
  3. using System;
  4. namespace MainForm.ClassFile.XiaomiAPI
  5. {
  6. /// <summary>
  7. /// 小米 MqttClient类 - API拓展方法
  8. /// 操作记录⽇志
  9. /// 供应商软件每次启动/关闭/重新加载项⽬时,以操作记录⽇志完成上报相应事件
  10. /// </summary>
  11. public partial class XiaomiMqttClient_Extend : XiaomiMqttClient
  12. {
  13. /// <summary>
  14. /// 操作记录⽇志- 事件Id
  15. /// </summary>
  16. private static string OperateLogId { get; set; } = "operate_log/operate_log";
  17. /// <summary>
  18. /// 操作记录⽇志 - 事件方法
  19. /// </summary>
  20. /// <param name="msg">事件数据;Json</param>
  21. /// <param name="dataId">自定义事件Id;如:guid</param>
  22. /// <returns></returns>
  23. public static (int,string) Write_OperateLog(OperateLogRequest request, string dataId = "")
  24. {
  25. int result =0;
  26. string resultStr = "";
  27. string msg = JsonConvert.SerializeObject(request);
  28. byte[] bytes = ToUTF8(msg);
  29. // 发送
  30. if (string.IsNullOrEmpty(dataId))
  31. result = Write(OperateLogId, bytes);
  32. else
  33. result = WriteWithDataId(OperateLogId, bytes, dataId);
  34. var try1 = Enum.TryParse(result.ToString(), out XiaomiMqttResponse_ErrCode errCode);
  35. if (try1)
  36. resultStr = errCode.ToString();
  37. else
  38. resultStr = XiaomiMqttResponse_ErrCode.ERR_UNKOWN.ToString();
  39. string logPath = GlobalContext.MqttOperateLogDir + "OperationRecord" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
  40. FileOperate.NewTxtFile(logPath, DateTime.Now+"===>MQTT【操作记录】提交:" + msg + "\r\n==>提交结果:" + resultStr + "");
  41. return (result, resultStr);
  42. }
  43. /// <summary>
  44. /// 操作记录⽇志 - 参数
  45. /// </summary>
  46. public class OperateLogRequest
  47. {
  48. /// <summary>
  49. /// 操作记录⽇志标识符
  50. /// string[1,128] operate_log/operate_log
  51. /// </summary>
  52. public string id { get; set; } = "operate_log/operate_log";
  53. /// <summary>
  54. /// 软件版本号
  55. /// 供应商软件版本号,如:V1.2.4
  56. /// </summary>
  57. public string software_version { get; set; } = string.Empty;
  58. /// <summary>
  59. /// 操作时间
  60. /// 供应商软件开启/关闭/重新加载项⽬时间,精确到毫秒。如:2022-06-01 14:27:57.283
  61. /// </summary>
  62. public string operate_time { get; set; } = string.Empty;
  63. /// <summary>
  64. /// 操作动作
  65. /// 对应软件开启/关闭/重新加载项⽬,枚举值如下:
  66. /// startup
  67. /// shutdown
  68. /// reload
  69. /// </summary>
  70. public string operate_action { get; set; } = string.Empty;
  71. /// <summary>
  72. /// 动作参数
  73. /// 选填,附带额外的信息
  74. /// </summary>
  75. public string action_param { get; set; } = string.Empty;
  76. /// <summary>
  77. /// 操作模块
  78. /// 选填
  79. /// </summary>
  80. public string operate_module { get; set; } = string.Empty;
  81. /// <summary>
  82. /// 操作⻚⾯
  83. /// 选填
  84. /// </summary>
  85. public string operate_page { get; set; } = string.Empty;
  86. /// <summary>
  87. /// 当前进程
  88. /// 进程ID
  89. /// </summary>
  90. public string current_process { get; set; } = string.Empty;
  91. /// <summary>
  92. /// 操作描述
  93. /// 如:供应商软件开启/关闭/重新加载项⽬
  94. /// </summary>
  95. public string operate_desc { get; set; } = string.Empty;
  96. /// <summary>
  97. /// 操作结果
  98. /// </summary>
  99. public string operate_result { get; set; } = "success";
  100. /// <summary>
  101. /// 操作账号名
  102. /// 填当前操作⽤⼾,如⽆则填default
  103. /// </summary>
  104. public string operator_name { get; set; } = "default";
  105. }
  106. }
  107. }