MqttLogService.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package com.zy.bms.service;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.zy.bms.common.Constant;
  6. import com.zy.bms.common.io.pc.MqttLogsIO;
  7. import com.zy.bms.mapper.MqttLogMapper;
  8. import com.zy.bms.model.MqttLog;
  9. import com.zy.bms.model.MqttMsgDto;
  10. import org.springframework.stereotype.Service;
  11. /**
  12. * MQTT 收发日志 Service
  13. *
  14. * @author chenyi
  15. * Create on 2020/4/10
  16. */
  17. @Service
  18. public class MqttLogService extends ServiceImpl<MqttLogMapper, MqttLog> {
  19. /**
  20. * 保存 日志
  21. *
  22. * @param topic 主题
  23. * @param payload 消息内容
  24. * @param tag 0收 1发
  25. */
  26. public void saveLog(String topic, String payload, Integer tag) {
  27. MqttLog mqttLog = new MqttLog();
  28. mqttLog.setTopic(topic);
  29. //mqtt日志类型
  30. mqttLog.setTag(tag);
  31. //获取消息解析对象
  32. MqttMsgDto mqttMsgDto = MqttMsgDto.parse(payload);
  33. String regTopic = tag == 0 ? Constant.TOPIC_REGISTER_SERVER : Constant.TOPIC_REGISTER_CLIENT;
  34. //区分注册报文和普通报文,注册报文取设备随机码
  35. mqttLog.setDeviceId(topic.equals(regTopic) ?
  36. mqttMsgDto.getString("regnum") : mqttMsgDto.getDeviceId());
  37. //mqtt 指令
  38. mqttLog.setInstruction(mqttMsgDto.getM());
  39. mqttLog.setContent(payload);
  40. baseMapper.insert(mqttLog);
  41. }
  42. /**
  43. * 分页查询日志
  44. *
  45. * @param io 查询条件
  46. */
  47. public IPage<MqttLog> getListPage(MqttLogsIO io) {
  48. Page<MqttLog> page = new Page<>(io.getCurrent(), io.getSize());
  49. return baseMapper.getListPage(page, io);
  50. }
  51. }