package com.doumee.service.business.impl; import com.alibaba.fastjson.JSONObject; import com.doumee.core.constants.Constants; import com.doumee.core.mqtt.config.MqttConfig; import com.doumee.core.mqtt.service.MqttToolService; import com.doumee.dao.business.MqttLogMapper; import com.doumee.dao.business.model.Locks; import com.doumee.dao.business.model.MqttLog; import com.doumee.service.business.DeviceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.util.Date; /** * 与硬件对接服务 * @author 江蹄蹄 * @date 2023/10/09 18:06 */ @Service public class DeviceServiceImpl implements DeviceService { @Autowired private MqttToolService mqttToolService; @Autowired private MqttLogMapper mqttLogMapper; @Autowired private MqttConfig mqttConfig; /** * 发起开锁指令 * @param locks * @return */ @Override public MqttLog openLock(Locks locks) { String topic = Constants.MqttTopic.pub_openLock.replace("{siteId}", locks.getSiteId()).replace("{lockId}", locks.getCode()+""); int result = mqttToolService.pubMessage("{}",topic); MqttLog mqttLog = createPushLog(topic,result,"请求开锁_"+locks.getId()); return mqttLog; } /** * 实时查询锁信息 * @param locks * @return */ @Override public MqttLog getLockInfo(Locks locks) { String topic = Constants.MqttTopic.pub_getLockInfo.replace("{siteId}", locks.getSiteId()).replace("{lockId}", locks.getCode()+""); int result = mqttToolService.pubMessage("{}",topic); MqttLog mqttLog = createPushLog(topic,result,"实时查询锁信息_"+locks.getId()); return mqttLog; } @Override @Async public void testPush(String topic, String json){ int result = mqttToolService.pubMessage(json,topic); } private MqttLog createPushLog(String topic, int result,String info) { MqttLog log = new MqttLog(); log.setId(Constants.getUUID()); log.setCreateDate(new Date()); log.setResult(result); log.setTopic(topic); log.setClientid(mqttConfig.getClientid()); log.setHostInfo(mqttConfig.getHost()); log.setInfo(JSONObject.toJSONString(mqttConfig)); log.setType(Constants.ONE); log.setMsg(""); log.setInfo(info); log.setIsdeleted(Constants.ZERO); mqttLogMapper.insert(log); return log; } }