LogMessageProcessor.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.szwl.handle.response;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.qiniu.util.Auth;
  5. import com.szwl.constant.ConfigConsts;
  6. import com.szwl.constant.OperationType;
  7. import com.szwl.model.entity.MessageLog;
  8. import com.szwl.model.entity.TEquipment;
  9. import com.szwl.model.utils.PushUtils;
  10. import com.szwl.service.TEquipmentService;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.stereotype.Component;
  13. import javax.annotation.Resource;
  14. import java.util.concurrent.ExecutorService;
  15. import java.util.concurrent.Executors;
  16. @Slf4j
  17. @Component
  18. public class LogMessageProcessor implements ResponseProcessor {
  19. @Resource
  20. private TEquipmentService equipmentService;
  21. private final ExecutorService sendExecutor =
  22. Executors.newSingleThreadExecutor(); // 独立发送线程
  23. @Override
  24. public void process(MessageLog messageLog) {
  25. Integer statusCode = messageLog.getStatusCode();
  26. if (statusCode == 200) {
  27. Integer direction = messageLog.getDirection();
  28. String clientId = messageLog.getClientId();
  29. String day = messageLog.getResponseContent();
  30. // 查询设备
  31. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  32. query.eq(TEquipment::getClientId, clientId);
  33. TEquipment equipment = equipmentService.getOne(query);
  34. if (equipment != null) {
  35. String kind = day + "-" + clientId;
  36. String key = "log/" + kind + ".txt";
  37. // 生成Token
  38. Auth auth = Auth.create(ConfigConsts.QINIU_CLOUD_ACCESS_KEY, ConfigConsts.QINIU_CLOUD_SECRET_KEY);
  39. String upToken = auth.uploadToken(ConfigConsts.QINIU_CLOUD_BUCKET, key);
  40. // 生成发送消息
  41. String message = PushUtils.buildJsonLog(OperationType.LOG.getCode(), kind, upToken, key).toString();
  42. sendExecutor.execute(() -> {
  43. // 推送消息
  44. try {
  45. // equipmentService.sendRemoteMessage(clientId, OperationType.LOG, message, equipment.getAdminId());
  46. equipmentService.responseSendMessage(messageLog, message, equipment.getAdminId());
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. log.info("--发送消息失败:{}", e.getMessage());
  50. }
  51. });
  52. }
  53. }
  54. }
  55. @Override
  56. public String getSupportedOperationType() {
  57. return OperationType.LOG.getCode();
  58. }
  59. }