From dff12cddd41f96e296cb652b0cf3c8c9ce43426f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 13 十月 2023 10:06:52 +0800
Subject: [PATCH] 整理

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java     |   48 +++++++++++++++++++++++-
 server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java |   24 +++++++----
 server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java                       |    3 +
 server/自行车mqtt协议.md                                                                            |    2 +
 4 files changed, 66 insertions(+), 11 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java b/server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java
index 71815ed..abc1d69 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java
+++ b/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;
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java
index dabd129..039276b 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java
+++ b/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;
     }
 }
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index 0ec50d7..cb8a72b 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/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("鐢ㄦ埛姝e父杩樿溅");
+        //鏇存柊杩樿溅璁板綍涓哄凡杩樿溅
+        memberRidesMapper.updateById(update);
+    }
 }
diff --git "a/server/\350\207\252\350\241\214\350\275\246mqtt\345\215\217\350\256\256.md" "b/server/\350\207\252\350\241\214\350\275\246mqtt\345\215\217\350\256\256.md"
index 6e9b418..358b7b3 100644
--- "a/server/\350\207\252\350\241\214\350\275\246mqtt\345\215\217\350\256\256.md"
+++ "b/server/\350\207\252\350\241\214\350\275\246mqtt\345\215\217\350\256\256.md"
@@ -38,6 +38,8 @@
 ```json
 {
     "bikeCode": "1234567890",
+    "lockId": 123,
+    "siteId": 234,
     "time": "2023-10-13 10:12:90" // 绔欑偣涓婁綅鏈烘敹鍒拌繕杞︽寚浠ょ殑鏃堕棿锛屼粎鍋氬弬鑰冿紝璇蜂互鏈嶅姟鍣ㄦ椂闂翠负鍑�
 }
 ```
\ No newline at end of file

--
Gitblit v1.9.3