jiangping
2023-10-13 dff12cddd41f96e296cb652b0cf3c8c9ce43426f
整理
已修改4个文件
77 ■■■■ 文件已修改
server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/自行车mqtt协议.md 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java
@@ -59,6 +59,9 @@
    @ApiModelProperty(value = "客户端编码")
    @ExcelColumn(name="客户端编码")
    private String clientid;
    @ApiModelProperty(value = "锁头编码")
    @ExcelColumn(name="锁头编码")
    private String objId;
    @ApiModelProperty(value = "服务器信息")
    @ExcelColumn(name="服务器信息")
    private String hostInfo;
server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java
@@ -56,31 +56,32 @@
        String logInfo = "";
        int result =0;
        try {
            if(StringUtils.contains(topic, info)){
                //如果锁头信息上报
                Locks locks  = JSONObject.parseObject(param, Locks.class);
                locks.setId(lockid);
                locks.setInfo(logId);
                result = memberRidesService.mqttLockInfoEvent(locks);
                logInfo = "上报锁头信息";
                logInfo = "mqtt消息订阅锁头信息";
                log.info("mqtt消息订阅=========锁信息==========成功");
            }
            if(StringUtils.contains(topic, closeLock)){
                //如果还车上报
                JSONObject pjson  = JSONObject.parseObject(param);
                String bikeCode = pjson.getString("bikeCode");
                MemberRides bikes = new MemberRides();
                bikes.setBikeCode(bikeCode);
                bikes.setBackLockId(lockid);
                bikes.setBikeCode(pjson.getString("bikeCode"));
                bikes.setBackLockId( pjson.getString("lockId"));
                bikes.setBackLockId( pjson.getString("siteId"));
                bikes.setBackCommondId(logId);
                result = memberRidesService.mqttCloseBikeEvent(bikes);
                logInfo = "上报还车消息";
                logInfo = "mqtt消息订阅还车消息";
                log.info("mqtt消息订阅=========还车==========成功");
            }
        }catch (BusinessException e){
            logInfo = "mqtt消息订阅错误==="+e.getMessage();
            result =1;
        }catch (Exception e){
            logInfo = "mqtt消息订阅异常===";
            result =1;
        }
        createSubLog(topic,logId,result,param,logInfo);
@@ -100,8 +101,13 @@
        mqttLogMapper.insert(log);
    }
    private String getLockIdFromTopic(String topic) {
        topic = topic.substring(0,topic.lastIndexOf("/"));
        String id =  topic.substring( topic.lastIndexOf("/")+1);
        return  id;
        String[] ss = topic.split("/");
        if(ss.length>2){
            return  ss[ss.length-2];
        }
        return null;
//        topic = topic.substring(0,topic.lastIndexOf("/"));
//        String id =  topic.substring( topic.lastIndexOf("/")+1);
//        return  id;
    }
}
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -334,7 +334,6 @@
        //修改后
        String after = JSONObject.toJSONString(update);
        ActionLog log = new ActionLog();
        log.setId(Constants.getUUID());
        log.setIsdeleted(Constants.ZERO);
@@ -509,6 +508,9 @@
     */
    @Override
    public  int mqttLockInfoEvent(Locks locks){
        if(StringUtils.isBlank(locks.getId()) ||StringUtils.isBlank(locks.getSiteId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"锁头信息上报参数错误!");
        }
        //判断检查处理站点锁头信息
        Locks model = dealLockAndSite(locks);
        //车辆记录
@@ -525,7 +527,6 @@
            if(memberRides == null){
                return 0;
            }
            //(更新请求开锁中的锁头关联的骑行记录)
            memberRidesMapper.updateById( memberRides);
        }
@@ -611,9 +612,52 @@
        return  model;
    }
    /**
     * è¿˜è½¦è®¢é˜…消息业务处理
     * @param bikes
     * @return
     */
    @Override
    public  int mqttCloseBikeEvent(MemberRides bikes){
        //免费骑行时长查询,数据字典配置
        if(StringUtils.isBlank(bikes.getBikeCode()) ||StringUtils.isBlank(bikes.getRentLockId())){
          throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"还车上报参数错误!");
        }
        QueryWrapper<MemberRides> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(MemberRides::getBikeCode, bikes.getBikeCode());
        wrapper.lambda().eq(MemberRides::getStatus, Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey());
        wrapper.lambda().eq(MemberRides::getIsdeleted, Constants.ZERO);
        //根据车辆编码查询骑行中的骑行记录信息,如果有进行还车操作
        MemberRides memberRides = memberRidesMapper.selectOne(wrapper.last("last 1"));
        if(memberRides!=null){
            //进行
            dealMemberRidesBack(memberRides,bikes);
        }
        return  0;
    }
    private void dealMemberRidesBack(MemberRides memberRides,MemberRides param) {
        int freeTime = 0;
        try {
            freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
        }catch (Exception e){
        }
        Date date = new Date();
        MemberRides update = new MemberRides();
        update.setEditDate(date);
        update.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());
        update.setBackDate(date);
        update.setBackLockId(param.getBackLockId());
        update.setBackSiteId(param.getBackSiteId());
        update.setBackCommondId(param.getBackCommondId());
        int duration =DateUtil.betweenMin(memberRides.getRentDate(),date)-freeTime;
        update.setDuration(duration>0?duration:0);
        update.setBackType(Constants.ONE);
        update.setBackInfo("用户正常还车");
        //更新还车记录为已还车
        memberRidesMapper.updateById(update);
    }
}
server/×ÔÐгµmqttЭÒé.md
@@ -38,6 +38,8 @@
```json
{
    "bikeCode": "1234567890",
    "lockId": 123,
    "siteId": 234,
    "time": "2023-10-13 10:12:90" // ç«™ç‚¹ä¸Šä½æœºæ”¶åˆ°è¿˜è½¦æŒ‡ä»¤çš„æ—¶é—´ï¼Œä»…做参考,请以服务器时间为准
}
```