jiangping
2023-10-16 47b7c25027580aa41fa6daa20f715044b1772a46
优化
已修改7个文件
67 ■■■■ 文件已修改
server/platform/src/main/java/com/doumee/api/business/SitesController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/service/impl/MqttSubServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/constants/Constants.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/自行车mqtt协议.md 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/SitesController.java
@@ -7,7 +7,6 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Sites;
import com.doumee.dao.business.web.request.SitesMonitorBikeDTO;
import com.doumee.dao.business.web.request.SitesMonitorDTO;
import com.doumee.service.business.SitesService;
import io.swagger.annotations.Api;
server/platform/src/main/java/com/doumee/service/impl/MqttSubServiceImpl.java
@@ -31,6 +31,6 @@
    @Override
    @PostConstruct
    public void startSubcribe() {
        mqttToolService.subscribe(new String[]{ Constants.MqttTopic.lockInfo, Constants.MqttTopic.closeLock});
        mqttToolService.subscribe(new String[]{ Constants.MqttTopic.sub_lockInfo, Constants.MqttTopic.sub_closeLock});
    }
}
server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -34,15 +34,16 @@
    public static final String FORCE_BACK_SITE = "FORCE_BACK_SITE";
    public static String REDIS_DEBUG_STR="test_";
    public  interface MqttTopic{
        //开锁(发布)
        String topic_index = "device/lock/";
        String openLock = "device/lock/+/unlock";
        //开锁(发布)
        String pub_openLock = "device/lock/{siteId}/{lockId}/unlock";
        //锁信息,在初始化、状态变更时会推送锁的完整状态(订阅)
        String lockInfo = "device/lock/+/info";
        String sub_lockInfo = "device/lock/+/+/info";
        //还车锁头(订阅)
        String closeLock = "device/lock/+/bike";
        String sub_closeLock = "device/lock/+/+/bike";
        //实时获取锁信息(发布)
        String getLockInfo = "device/lock/+/getInfo";
        String pub_getLockInfo = "device/lock/{siteId}/{lockId}/getInfo";
    }
    /**
server/services/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -34,7 +34,7 @@
     */
    @Override
    public MqttLog openLock(Locks locks) {
        String topic =  Constants.MqttTopic.openLock.replace("+", locks.getId());
        String topic =  Constants.MqttTopic.pub_openLock.replace("+", locks.getId());
        int result = mqttToolService.pubMessage("{}",topic);
        MqttLog mqttLog = createPushLog(topic,result,"请求开锁_"+locks.getId());
        return mqttLog;
@@ -46,7 +46,7 @@
     */
    @Override
    public MqttLog getLockInfo(Locks locks) {
        String topic =  Constants.MqttTopic.getLockInfo.replace("+", locks.getId());
        String topic =  Constants.MqttTopic.pub_getLockInfo.replace("+", locks.getId());
        int result = mqttToolService.pubMessage("{}",topic);
        MqttLog mqttLog = createPushLog(topic,result,"实时查询锁信息_"+locks.getId());
        return mqttLog;
server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java
@@ -39,16 +39,20 @@
    @Override
    public void listener(String msgId,String param,String topic) {
       log.info("mqtt消息订阅==================="+param);
        String info = Constants.MqttTopic.lockInfo.substring(Constants.MqttTopic.lockInfo.lastIndexOf("/")+1) ;
        String closeLock = Constants.MqttTopic.closeLock.substring(Constants.MqttTopic.closeLock.lastIndexOf("/")+1) ;
        String info = Constants.MqttTopic.sub_lockInfo.substring(Constants.MqttTopic.sub_lockInfo.lastIndexOf("/")+1) ;
        String closeLock = Constants.MqttTopic.sub_closeLock.substring(Constants.MqttTopic.sub_closeLock.lastIndexOf("/")+1) ;
        if(topic.indexOf(Constants.MqttTopic.topic_index)!=0
                ||topic.split("/").length < 5
                || (!StringUtils.contains(topic, info)
                   &&!StringUtils.contains(topic,closeLock))){
            log.error("mqtt消息订阅===========无效数据========"+param);
            return;
        }
        String lockid =  getLockIdFromTopic(topic);
        if(StringUtils.isBlank(lockid)){
        String[] ss = topic.split("/");
        String siteid =  ss[2];//站点编码
        String lockid =  ss[3];//锁头编码
        if(StringUtils.isBlank(siteid)||StringUtils.isBlank(lockid)){
            //如果锁头编码为空
            log.error("mqtt消息订阅==============无效数据====="+param);
            return;
server/web/src/main/resources/application.yml
@@ -60,7 +60,7 @@
  # WEB服务器配置
server:
   port: 10013
   port: 10025
mqtt:
  clientid: doumeetestweb
server/×ÔÐгµmqttЭÒé.md
@@ -1,48 +1,49 @@
# è‡ªè¡Œè½¦ mqtt åè®®æ–‡æ¡£
## {"bikeCode":"1234567890","id":"kjflksjlkfsjdlk","siteId": 456,"status":0,"code":"789"}
## {"bikeCode":"1234567890","lockId":789,"siteId": 456,"time":"2023-10-13 10:12:90"}
## é€šä¿¡è§„范
- æ¯ä¸ªç«™ç‚¹ä¸€ä¸ª mqtt è¿žæŽ¥ï¼ŒclientId ä¸º SITE_站点编号
- ä¸€ä¸ªç«™ç‚¹ç”±éƒ¨ç½²åœ¨ä¸Šä½æœºä¸Šçš„软件通过can总线与多个锁通信,并与服务器通过mqtt做消息转发
## sub: device/lock/{id}/info
## sub: device/lock/{siteId}/{lockId}/info
> **锁信息,在初始化、状态变更时会推送锁的完整状态**
- æ•°æ®
```json
{
    "siteId": "1015", // ç«™ç‚¹ç¼–号
    "code": "01", // é”ç¼–号
    "id": "123456789103", // é”å”¯ä¸€id,同主题{id}
    "status": 1, // çŠ¶æ€ï¼Œ0闭合, 1打开,2运行中, 3异常
    "bikeCode": "1234567890" // è‡ªè¡Œè½¦ic卡号,无车为空
    "siteId": "1015", // ç«™ç‚¹ç¼–号,同主题{siteId}
    "lockId": 2, // é”ç¼–号,同主题{lockId}
    "status": 1, // çŠ¶æ€ï¼Œ0闭合, 1打开,2运行中, 3异常, -1自检中
    "bikeCode": "12345678" // è‡ªè¡Œè½¦ic卡号,8位数字,如:10000012,无车为空
}
## {"bikeCode":"1234567890","id":"kjflksjlkfsjdlk","siteId": 456,"status":0,"code":"789"}
```
## pub: device/lock/{id}/getInfo
## pub: device/lock/{siteId}/{lockId}/getInfo
> å®žæ—¶èŽ·å–é”ä¿¡æ¯
- æ•°æ®
```json
{}
```
## pub: device/lock/{id}/unlock
## pub: device/lock/{siteId}/{lockId}/unlock
> å¼€é”ï¼ŒæˆåŠŸå¤±è´¥å¯å…³æ³¨info消息推送
- æ•°æ®
```json
{}
```
## sub: device/lock/{id}/bike
## sub: device/lock/{siteId}/{lockId}/bike
> è¿˜è½¦, è¿˜è½¦æˆåŠŸæ—¶ï¼ŒèŽ·å¾—æ‰€è¿˜è½¦è¾†ic卡号推送
- æ•°æ®
```json
{
    "bikeCode": "1234567890",
    "lockId": 123,
    "siteId": 234,
    "time": "2023-10-13 10:12:90"
    "bikeCode": "12345678",
    "lockId": 2,
    "siteId": "1050",
    "time": "2023-10-13 10:12:90" // ç«™ç‚¹ä¸Šä½æœºæ”¶åˆ°è¿˜è½¦æŒ‡ä»¤çš„æ—¶é—´ï¼Œä»…做参考,请以服务器时间为准
}
## {"bikeCode":"1234567890","lockId":789,"siteId": 456,"time":"2023-10-13 10:12:90"}
```
```