From 697775ce76037e4ec4a2f7de59395fc873070c71 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 12 十月 2023 17:35:25 +0800
Subject: [PATCH] 修改
---
server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java | 6
server/platform/src/main/java/com/doumee/api/MqttLogController.java | 90 ++++++
server/services/src/main/java/com/doumee/service/business/MqttLogService.java | 97 ++++++
server/services/src/main/java/com/doumee/core/mqtt/service/MqttToolService.java | 4
server/services/src/main/java/com/doumee/service/business/DeviceService.java | 5
server/db/business.mqtt_log.permissions.sql | 6
server/services/src/main/java/com/doumee/service/business/BikesService.java | 1
server/services/src/main/java/com/doumee/service/business/LocksService.java | 1
server/自行车mqtt协议.md | 43 +++
server/platform/src/main/java/com/doumee/api/business/LocksController.java | 2
server/services/src/main/java/com/doumee/dao/business/model/Sites.java | 3
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java | 147 ++++++++++
server/services/src/main/java/com/doumee/service/business/impl/DeviceSubscribeServiceImpl.java | 88 ++++++
server/services/src/main/java/com/doumee/core/constants/Constants.java | 20 +
server/services/src/main/java/com/doumee/dao/business/model/Locks.java | 8
server/services/src/main/java/com/doumee/service/business/MemberRidesService.java | 5
server/services/src/main/java/com/doumee/service/business/impl/MqttLogServiceImpl.java | 145 ++++++++++
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 2
server/services/src/main/java/com/doumee/dao/business/MqttLogMapper.java | 12
server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java | 78 +++++
server/services/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java | 51 +++
server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java | 3
22 files changed, 792 insertions(+), 25 deletions(-)
diff --git a/server/db/business.mqtt_log.permissions.sql b/server/db/business.mqtt_log.permissions.sql
new file mode 100644
index 0000000..3af457c
--- /dev/null
+++ b/server/db/business.mqtt_log.permissions.sql
@@ -0,0 +1,6 @@
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:mqttlog:create', '鏂板缓绯荤粺琛屼负鎿嶄綔璁板綍琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:mqttlog:delete', '鍒犻櫎绯荤粺琛屼负鎿嶄綔璁板綍琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:mqttlog:update', '淇敼绯荤粺琛屼负鎿嶄綔璁板綍琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:mqttlog:query', '鏌ヨ绯荤粺琛屼负鎿嶄綔璁板綍琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:mqttlog:exportExcel', '瀵煎嚭绯荤粺琛屼负鎿嶄綔璁板綍琛�(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+
diff --git a/server/platform/src/main/java/com/doumee/api/MqttLogController.java b/server/platform/src/main/java/com/doumee/api/MqttLogController.java
new file mode 100644
index 0000000..a523e62
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/MqttLogController.java
@@ -0,0 +1,90 @@
+package com.doumee.api;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.MqttLog;
+import com.doumee.service.business.MqttLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/10/12 14:25
+ */
+@Api(tags = "绯荤粺琛屼负鎿嶄綔璁板綍琛�")
+@RestController
+@RequestMapping("/business/mqttLog")
+public class MqttLogController extends BaseController {
+
+ @Autowired
+ private MqttLogService mqttLogService;
+
+ @PreventRepeat
+ @ApiOperation("鏂板缓")
+ @PostMapping("/create")
+ @RequiresPermissions("business:mqttlog:create")
+ public ApiResponse create(@RequestBody MqttLog mqttLog) {
+ return ApiResponse.success(mqttLogService.create(mqttLog));
+ }
+
+ @ApiOperation("鏍规嵁ID鍒犻櫎")
+ @GetMapping("/delete/{id}")
+ @RequiresPermissions("business:mqttlog:delete")
+ public ApiResponse deleteById(@PathVariable String id) {
+ mqttLogService.deleteById(id);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鎵归噺鍒犻櫎")
+ @GetMapping("/delete/batch")
+ @RequiresPermissions("business:mqttlog:delete")
+ public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+ String [] idArray = ids.split(",");
+ List<String> idList = new ArrayList<>();
+ for (String id : idArray) {
+ idList.add(id);
+ }
+ mqttLogService.deleteByIdInBatch(idList);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鏍规嵁ID淇敼")
+ @PostMapping("/updateById")
+ @RequiresPermissions("business:mqttlog:update")
+ public ApiResponse updateById(@RequestBody MqttLog mqttLog) {
+ mqttLogService.updateById(mqttLog);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ @PostMapping("/page")
+ @RequiresPermissions("business:mqttlog:query")
+ public ApiResponse<PageData<MqttLog>> findPage (@RequestBody PageWrap<MqttLog> pageWrap) {
+ return ApiResponse.success(mqttLogService.findPage(pageWrap));
+ }
+
+ @ApiOperation("瀵煎嚭Excel")
+ @PostMapping("/exportExcel")
+ @RequiresPermissions("business:mqttlog:exportExcel")
+ public void exportExcel (@RequestBody PageWrap<MqttLog> pageWrap, HttpServletResponse response) {
+ ExcelExporter.build(MqttLog.class).export(mqttLogService.findPage(pageWrap).getRecords(), "绯荤粺琛屼负鎿嶄綔璁板綍琛�", response);
+ }
+
+ @ApiOperation("鏍规嵁ID鏌ヨ")
+ @GetMapping("/{id}")
+ @RequiresPermissions("business:mqttlog:query")
+ public ApiResponse findById(@PathVariable String id) {
+ return ApiResponse.success(mqttLogService.findById(id));
+ }
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/LocksController.java b/server/platform/src/main/java/com/doumee/api/business/LocksController.java
index 17b88e5..532d4ee 100644
--- a/server/platform/src/main/java/com/doumee/api/business/LocksController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/LocksController.java
@@ -70,7 +70,7 @@
return ApiResponse.success(null);
}
- @ApiOperation("瀹炴椂杞︿綅淇℃伅_鍒嗛〉鏌ヨ")
+ @ApiOperation("鍒嗛〉鏌ヨ")
@PostMapping("/page")
@RequiresPermissions("business:locks:query")
public ApiResponse<PageData<Locks>> findPage(@RequestBody PageWrap<Locks> pageWrap) {
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index fceeb10..dd3f48b 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -32,10 +32,15 @@
public static final String PROJECT_FILE = "PROJECT_FILE";
public static String REDIS_DEBUG_STR="test_";
public interface MqttTopic{
- //寮�閿�
- String openLock = "OPENLOCK";
- //鍏抽棴閿佸ご
- String closeLock = "CLOSELOCK";
+ //寮�閿侊紙鍙戝竷锛�
+ String topic_index = "device/lock/";
+ String openLock = "device/lock/+/unlock";
+ //閿佷俊鎭紝鍦ㄥ垵濮嬪寲銆佺姸鎬佸彉鏇存椂浼氭帹閫侀攣鐨勫畬鏁寸姸鎬�(璁㈤槄锛�
+ String lockInfo = "device/lock/+/info";
+ //杩樿溅閿佸ご锛堣闃咃級
+ String closeLock = "device/lock/+/bike";
+ //瀹炴椂鑾峰彇閿佷俊鎭紙鍙戝竷锛�
+ String getLockInfo = "device/lock/+/getInfo";
}
/**
@@ -47,6 +52,13 @@
int all =2;
int partful = 3;
}
+ public interface LockStatus{
+ // //鐘舵�侊紝0闂悎, 1鎵撳紑锛�2杩愯涓�, 3寮傚父
+ int closed =0;
+ int open =1;
+ int running =2;
+ int error= 3;
+ }
public interface goodsorderStatus{
int waitPay =0;
int pay =1;
diff --git a/server/services/src/main/java/com/doumee/core/mqtt/service/MqttToolService.java b/server/services/src/main/java/com/doumee/core/mqtt/service/MqttToolService.java
index 4dfae17..0d1b97b 100644
--- a/server/services/src/main/java/com/doumee/core/mqtt/service/MqttToolService.java
+++ b/server/services/src/main/java/com/doumee/core/mqtt/service/MqttToolService.java
@@ -36,16 +36,18 @@
* @param message
* @param topic
*/
- public void pubMessage(String message,String topic){
+ public int pubMessage(String message,String topic){
MqttMessage mess = new MqttMessage();
mess.setQos(1);
mess.setRetained(true);
mess.setPayload(message.getBytes());
try {
MqttClientInit.getInstance(config,callBack).publish(topic, mess);
+ return 1;
} catch (Exception e) {
//LOGGER.error(e.getLocalizedMessage());
}
+ return 0;
}
public static void main(String[] args) {
MqttToolService client1 = new MqttToolService();
diff --git a/server/services/src/main/java/com/doumee/dao/business/MqttLogMapper.java b/server/services/src/main/java/com/doumee/dao/business/MqttLogMapper.java
new file mode 100644
index 0000000..db8a8cc
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/MqttLogMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.MqttLog;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/10/12 14:25
+ */
+public interface MqttLogMapper extends BaseMapper<MqttLog> {
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Locks.java b/server/services/src/main/java/com/doumee/dao/business/model/Locks.java
index c760d3e..7d56295 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Locks.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Locks.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -58,8 +59,8 @@
@ExcelColumn(name="缂栧彿")
private String code;
- @ApiModelProperty(value = "鐘舵�� 0姝e父 1寮傚父", example = "1")
- @ExcelColumn(name="鐘舵�� 0姝e父 1寮傚父")
+ @ApiModelProperty(value = "鐘舵�侊紝0闂悎, 1鎵撳紑锛�2杩愯涓�, 3寮傚父", example = "1")
+ @ExcelColumn(name="鐘舵�侊紝0闂悎, 1鎵撳紑锛�2杩愯涓�, 3寮傚父")
private Integer status;
@ApiModelProperty(value = "绔欑偣缂栫爜(鍏宠仈sites)")
@@ -69,5 +70,8 @@
@ApiModelProperty(value = "褰撳墠閿佸畾鑷杞︾紪鍙�")
@ExcelColumn(name="褰撳墠閿佸畾鑷杞︾紪鍙�")
private String bikeCode;
+ @ApiModelProperty(value = "褰撳墠閿佸畾鑷杞︾紪鍙�")
+ @TableField(select = false)
+ private Sites sites;
}
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
new file mode 100644
index 0000000..71815ed
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/model/MqttLog.java
@@ -0,0 +1,78 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 绯荤粺琛屼负鎿嶄綔璁板綍琛�
+ * @author 姹熻箘韫�
+ * @date 2023/10/12 14:25
+ */
+@Data
+@ApiModel("绯荤粺琛屼负鎿嶄綔璁板綍琛�")
+@TableName("`mqtt_log`")
+public class MqttLog {
+
+ @ApiModelProperty(value = "缂栫爜")
+ @ExcelColumn(name="缂栫爜")
+ private String id;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @ExcelColumn(name="鍒涘缓鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date createDate;
+
+ @ApiModelProperty(value = "鍒涘缓浜�")
+ @ExcelColumn(name="鍒涘缓浜�")
+ private String creator;
+
+ @ApiModelProperty(value = "缂栬緫鏃堕棿")
+ @ExcelColumn(name="缂栬緫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date editDate;
+
+ @ApiModelProperty(value = "缂栬緫浜�")
+ @ExcelColumn(name="缂栬緫浜�")
+ private String editor;
+
+ @ApiModelProperty(value = "鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�", example = "1")
+ @ExcelColumn(name="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�")
+ @TableLogic
+ private Integer isdeleted;
+
+ @ApiModelProperty(value = "澶囨敞")
+ @ExcelColumn(name="澶囨敞")
+ private String info;
+
+ @ApiModelProperty(value = "绫诲瀷 0璁㈤槄 1鍙戝竷", example = "1")
+ @ExcelColumn(name="绫诲瀷 0璁㈤槄 1鍙戝竷")
+ private Integer type;
+
+ @ApiModelProperty(value = "瀹㈡埛绔紪鐮�")
+ @ExcelColumn(name="瀹㈡埛绔紪鐮�")
+ private String clientid;
+ @ApiModelProperty(value = "鏈嶅姟鍣ㄤ俊鎭�")
+ @ExcelColumn(name="鏈嶅姟鍣ㄤ俊鎭�")
+ private String hostInfo;
+
+ @ApiModelProperty(value = "涓婚")
+ @ExcelColumn(name="涓婚")
+ private String topic;
+
+ @ApiModelProperty(value = "娑堟伅鍐呭")
+ @ExcelColumn(name="娑堟伅鍐呭")
+ private String msg;
+
+ @ApiModelProperty(value = "缁撴灉 0鎴愬姛 1澶辫触", example = "1")
+ @ExcelColumn(name="缁撴灉 0鎴愬姛 1澶辫触")
+ private Integer result;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Sites.java b/server/services/src/main/java/com/doumee/dao/business/model/Sites.java
index bedc1a3..a969ae0 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Sites.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Sites.java
@@ -78,6 +78,9 @@
@ApiModelProperty(value = "鍦ㄦ灦杞﹁締鏁�")
@TableField(exist = false)
private Integer bikeCount;
+ @ApiModelProperty(value = "鍦ㄦ灦杞﹁締鏁�")
+ @TableField(exist = false)
+ private Integer allLockNum;
@ApiModelProperty(value = "婊℃灦鐜�")
@TableField(exist = false)
diff --git a/server/services/src/main/java/com/doumee/service/business/BikesService.java b/server/services/src/main/java/com/doumee/service/business/BikesService.java
index 716c4ba..90bc756 100644
--- a/server/services/src/main/java/com/doumee/service/business/BikesService.java
+++ b/server/services/src/main/java/com/doumee/service/business/BikesService.java
@@ -96,4 +96,5 @@
long count(Bikes bikes);
PageData<Bikes> findJoinPage(PageWrap<Bikes> pageWrap);
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/DeviceService.java b/server/services/src/main/java/com/doumee/service/business/DeviceService.java
index 9a30d63..2170ace 100644
--- a/server/services/src/main/java/com/doumee/service/business/DeviceService.java
+++ b/server/services/src/main/java/com/doumee/service/business/DeviceService.java
@@ -1,6 +1,7 @@
package com.doumee.service.business;
import com.doumee.dao.business.model.Locks;
+import com.doumee.dao.business.model.MqttLog;
/**
* 涓庣‖浠跺鎺ユ湇鍔�
@@ -14,8 +15,10 @@
* 涓嬪彂寮�杞﹀紑閿佹寚浠�
* @return String
*/
- boolean openLock(Locks locks);
+ MqttLog openLock(Locks locks);
void startSubcribe();
+ MqttLog getLockInfo(Locks locks);
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/LocksService.java b/server/services/src/main/java/com/doumee/service/business/LocksService.java
index c2c7f70..645e38b 100644
--- a/server/services/src/main/java/com/doumee/service/business/LocksService.java
+++ b/server/services/src/main/java/com/doumee/service/business/LocksService.java
@@ -94,4 +94,5 @@
* @return long
*/
long count(Locks locks);
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/MemberRidesService.java b/server/services/src/main/java/com/doumee/service/business/MemberRidesService.java
index 985fd51..f37680e 100644
--- a/server/services/src/main/java/com/doumee/service/business/MemberRidesService.java
+++ b/server/services/src/main/java/com/doumee/service/business/MemberRidesService.java
@@ -2,6 +2,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Locks;
import com.doumee.dao.business.model.MemberRides;
import com.doumee.dao.business.web.request.MemberRidesQuery;
import com.doumee.dao.business.web.response.BikeLogDTO;
@@ -133,4 +134,8 @@
void updateDuration(MemberRides memberRides);
void forceBack(MemberRides memberRides);
+
+ int mqttCloseBikeEvent(MemberRides bikes);
+
+ int mqttLockInfoEvent(Locks locks);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/MqttLogService.java b/server/services/src/main/java/com/doumee/service/business/MqttLogService.java
new file mode 100644
index 0000000..16ec774
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/service/business/MqttLogService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.MqttLog;
+import java.util.List;
+
+/**
+ * 绯荤粺琛屼负鎿嶄綔璁板綍琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2023/10/12 14:25
+ */
+public interface MqttLogService {
+
+ /**
+ * 鍒涘缓
+ *
+ * @param mqttLog 瀹炰綋瀵硅薄
+ * @return String
+ */
+ String create(MqttLog mqttLog);
+
+ /**
+ * 涓婚敭鍒犻櫎
+ *
+ * @param id 涓婚敭
+ */
+ void deleteById(String id);
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param mqttLog 瀹炰綋瀵硅薄
+ */
+ void delete(MqttLog mqttLog);
+
+ /**
+ * 鎵归噺涓婚敭鍒犻櫎
+ *
+ * @param ids 涓婚敭闆�
+ */
+ void deleteByIdInBatch(List<String> ids);
+
+ /**
+ * 涓婚敭鏇存柊
+ *
+ * @param mqttLog 瀹炰綋瀵硅薄
+ */
+ void updateById(MqttLog mqttLog);
+
+ /**
+ * 鎵归噺涓婚敭鏇存柊
+ *
+ * @param mqttLogs 瀹炰綋闆�
+ */
+ void updateByIdInBatch(List<MqttLog> mqttLogs);
+
+ /**
+ * 涓婚敭鏌ヨ
+ *
+ * @param id 涓婚敭
+ * @return MqttLog
+ */
+ MqttLog findById(String id);
+
+ /**
+ * 鏉′欢鏌ヨ鍗曟潯璁板綍
+ *
+ * @param mqttLog 瀹炰綋瀵硅薄
+ * @return MqttLog
+ */
+ MqttLog findOne(MqttLog mqttLog);
+
+ /**
+ * 鏉′欢鏌ヨ
+ *
+ * @param mqttLog 瀹炰綋瀵硅薄
+ * @return List<MqttLog>
+ */
+ List<MqttLog> findList(MqttLog mqttLog);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param pageWrap 鍒嗛〉瀵硅薄
+ * @return PageData<MqttLog>
+ */
+ PageData<MqttLog> findPage(PageWrap<MqttLog> pageWrap);
+
+ /**
+ * 鏉′欢缁熻
+ *
+ * @param mqttLog 瀹炰綋瀵硅薄
+ * @return long
+ */
+ long count(MqttLog mqttLog);
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
index 0bc1c72..bae593e 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -1,12 +1,17 @@
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.stereotype.Service;
import javax.annotation.PostConstruct;
+import java.util.Date;
/**
* 涓庣‖浠跺鎺ユ湇鍔�
@@ -17,14 +22,54 @@
public class DeviceServiceImpl implements DeviceService {
@Autowired
private MqttToolService mqttToolService;
+ @Autowired
+ private MqttLogMapper mqttLogMapper;
+ @Autowired
+ private MqttConfig mqttConfig;
@Override
@PostConstruct
public void startSubcribe() {
mqttToolService.subscribe(new String[]{ Constants.MqttTopic.openLock, Constants.MqttTopic.closeLock});
}
+
+ /**
+ * 鍙戣捣寮�閿佹寚浠�
+ * @param locks
+ * @return
+ */
@Override
- public boolean openLock(Locks locks) {
- mqttToolService.pubMessage(locks.getName(), Constants.MqttTopic.openLock);
- return true;
+ public MqttLog openLock(Locks locks) {
+ String topic = Constants.MqttTopic.openLock.replace("+", locks.getId());
+ 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.getLockInfo.replace("+", locks.getId());
+ int result = mqttToolService.pubMessage("{}",topic);
+ MqttLog mqttLog = createPushLog(topic,result,"瀹炴椂鏌ヨ閿佷俊鎭痏"+locks.getId());
+ return mqttLog;
+ }
+
+ 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);
+ mqttLogMapper.insert(log);
+ return log;
}
}
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 6da2187..fe881db 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
@@ -1,14 +1,23 @@
package com.doumee.service.business.impl;
+import com.alibaba.fastjson.JSONObject;
import com.doumee.core.constants.Constants;
+import com.doumee.core.exception.BusinessException;
+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.Bikes;
import com.doumee.dao.business.model.Locks;
-import com.doumee.service.business.DeviceService;
-import com.doumee.service.business.DeviceSubcribeService;
+import com.doumee.dao.business.model.MemberRides;
+import com.doumee.dao.business.model.MqttLog;
+import com.doumee.service.business.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
+import java.util.Date;
/**
* 涓庣‖浠跺鎺ユ湇鍔�
@@ -16,10 +25,81 @@
* @date 2023/10/09 18:06
*/
@Service
+@Slf4j
public class DeviceSubscribeServiceImpl implements DeviceSubcribeService {
-
+ @Autowired
+ MemberRidesService memberRidesService;
+ @Autowired
+ private MqttLogMapper mqttLogMapper;
+ @Autowired
+ private MqttConfig mqttConfig;
@Override
public void listener(String param,String topic) {
- System.out.println("mqtt娑堟伅璁㈤槄==================="+param);
+ log.info("mqtt娑堟伅璁㈤槄==================="+param);
+ String info = Constants.MqttTopic.lockInfo.substring(Constants.MqttTopic.lockInfo.lastIndexOf("/")+1) ;
+ String closeLock = Constants.MqttTopic.lockInfo.substring(Constants.MqttTopic.closeLock.lastIndexOf("/")+1) ;
+ if(topic.indexOf(Constants.MqttTopic.topic_index)!=0
+ || (!StringUtils.contains(topic, info)
+ &&!StringUtils.contains(topic,closeLock))){
+ log.error("mqtt娑堟伅璁㈤槄===========鏃犳晥鏁版嵁========"+param);
+ return;
+ }
+ String lockid = getLockIdFromTopic(topic);
+ if(StringUtils.isBlank(lockid)){
+ //濡傛灉閿佸ご缂栫爜涓虹┖
+ log.error("mqtt娑堟伅璁㈤槄==============鏃犳晥鏁版嵁====="+param);
+ return;
+ }
+ String logId =Constants.getUUID();
+ 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 = "涓婃姤閿佸ご淇℃伅";
+ 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.setBackCommondId(logId);
+ result = memberRidesService.mqttCloseBikeEvent(bikes);
+ logInfo = "涓婃姤杩樿溅娑堟伅";
+ log.info("mqtt娑堟伅璁㈤槄=========杩樿溅==========鎴愬姛");
+ }
+ }catch (BusinessException e){
+ result =1;
+ }catch (Exception e){
+ result =1;
+ }
+ createSubLog(topic,logId,result,param,logInfo);
+ }
+ private void createSubLog(String topic, String logId, int result,String param,String info) {
+ MqttLog log = new MqttLog();
+ log.setId(logId);
+ 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.ZERO);
+ log.setMsg(param);
+ log.setInfo(info);
+ mqttLogMapper.insert(log);
+ }
+ private String getLockIdFromTopic(String topic) {
+ 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/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 8010bb4..3ec4033 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -429,13 +429,13 @@
BigDecimal closeMoney = new BigDecimal(0.00);
int durationSum = 0;
//鍙栨渶楂樿溅鍨嬭绠楁柟妗堢粨绠楄鍗�
- MemberRides topRides =null;
for(MemberRides rides : memberRides){
if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
}
durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
}
+ MemberRides topRides =memberRides.get(0);
if(durationSum > 0 && topRides != null){
int baseTime =Constants.formatIntegerNum(topRides.getBaseTime());
closeMoney = Constants.formatDecimalNum(topRides.getBasePrice());
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java
index 2a42a7d..af86451 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java
@@ -10,6 +10,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.service.business.SitesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -142,4 +143,6 @@
QueryWrapper<Locks> wrapper = new QueryWrapper<>(locks);
return locksMapper.selectCount(wrapper);
}
+
+
}
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 0f68927..9a9669f 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
@@ -13,9 +13,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.ActionLogMapper;
-import com.doumee.dao.business.LocksMapper;
-import com.doumee.dao.business.MemberRidesMapper;
+import com.doumee.dao.business.*;
import com.doumee.dao.business.join.MemberRidesJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.web.request.MemberRidesQuery;
@@ -59,6 +57,10 @@
@Autowired
private LocksMapper locksMapper;
+ @Autowired
+ private SitesMapper sitesMapper;
+ @Autowired
+ private BikesMapper bikesMapper;
@Autowired
private GoodsorderService goodsorderService;
@@ -366,8 +368,8 @@
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪楠戣涓溅杈嗭紝鏃犳硶鎵爜");
};
Locks locks = locksMapper.selectOne(new QueryWrapper<Locks>().eq("code",code).eq("isdeleted", Constants.ZERO).last("limit 1"));
- Boolean flag = deviceService.openLock(locks);
- if(!flag){
+ MqttLog flag = deviceService.openLock(locks);
+ if(flag.getResult() == 0){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寮�閿佸け璐�");
}
//瀛樺偍楠戣璁板綍
@@ -397,4 +399,139 @@
return memberRidesDetailResponse;
}
+
+ /**
+ * 閿佸ご淇℃伅涓婃姤
+ * @param locks
+ * @return
+ */
+ @Override
+ public int mqttLockInfoEvent(Locks locks){
+ //鍒ゆ柇妫�鏌ュ鐞嗙珯鐐归攣澶翠俊鎭�
+ Locks model = dealLockAndSite(locks);
+ //杞﹁締璁板綍
+ Bikes bikes = dealBikesByParam(model);
+
+ //鐘舵�侊紝0闂悎, 1鎵撳紑锛�2杩愯涓�, 3寮傚父
+ if(model.getStatus() == Constants.LockStatus.open){
+ //濡傛灉鏄紑閿佷笟鍔★紝鍒ゆ柇鏄惁鏈夊紑閿佷腑鐨勪俊鎭�
+ if(StringUtils.isNotBlank(locks.getBikeCode())){
+
+ }
+ MemberRides memberRides = new MemberRides();
+ memberRides.setBikeCode(model.getBikeCode());
+
+
+ }
+ return 0;
+ }
+
+ private Bikes dealBikesByParam(Locks model) {
+ QueryWrapper<Bikes> wrapper = new QueryWrapper<>();
+ wrapper.lambda().eq(Bikes::getLockId, model.getId());
+ wrapper.lambda().eq(Bikes::getSiteId, model.getSiteId());
+ Bikes bikes = bikesMapper.selectOne(wrapper.last("last 1"));
+ if(bikes != null ) {
+ if ( StringUtils.equals(model.getBikeCode(), bikes.getCode())){
+ //濡傛灉缁戝畾杞﹁締淇℃伅鍙戠敓缂栧彿锛屾洿鎹㈢粦瀹氬叧绯�
+ bikes.setCode(model.getBikeCode());
+ bikes.setParamId(getBileTypeByCode(model.getBikeCode()));
+ UpdateWrapper<Bikes> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.lambda().set(Bikes::getId, bikes.getId());
+
+ //鏇存柊鑷绔欑偣閿佸ご缁戝畾鑷杞︿俊鎭�
+ bikesMapper.updateById(bikes);
+ }
+ }else{
+ bikes = new Bikes();
+ bikes.setId(Constants.getUUID());
+ bikes.setIsdeleted(Constants.ZERO);
+ bikes.setCreateDate(new Date());
+ bikes.setSiteId(model.getSiteId());
+ bikes.setLockId(model.getId());
+ bikes.setCode(model.getBikeCode());
+ bikes.setParamId(getBileTypeByCode(model.getBikeCode()));
+ bikesMapper.insert(bikes);
+ }
+ return bikes;
+
+ }
+
+ //TODO-----JP------------鏍规嵁杞﹁締code鍒嗘瀽杞﹁締绫诲瀷锛屽緟纭鏂规-------------------
+ private String getBileTypeByCode(String bikeCode) {
+ return null;
+ }
+
+ private Locks dealLockAndSite(Locks locks) {
+ Locks model = locksMapper.selectById(locks.getId());
+ Date date =new Date();
+ //妫�鏌ョ珯鐐逛俊鎭紝涓嶅瓨鍦ㄥ垯鏂板
+// boolean newSite =false;
+ Sites sites = sitesMapper.selectById(locks.getSiteId());
+ if(sites == null){
+ sites = new Sites();
+ sites.setIsdeleted(Constants.ZERO);
+ sites.setCode(locks.getSiteId());
+ sites.setId(locks.getSiteId());
+ sites.setCreateDate(date);
+ sites.setStatus(Constants.ZERO);
+ sites.setLockNum(1);
+ //鏂板閿佸ご
+ sitesMapper.insert(sites);
+// newSite =true;
+ }
+
+ if(model == null){
+ //濡傛灉閿佸ご涓嶅瓨鍦紝鍒ゆ柇瀛樺偍
+ model = new Locks();
+ model.setId(locks.getId());
+ model.setSiteId(locks.getSiteId());
+ model.setIsdeleted(Constants.ZERO);
+ model.setCode(locks.getCode());
+ model.setSiteId(locks.getSiteId());
+ model.setBikeCode(locks.getBikeCode());
+ model.setCreateDate(date);
+ model.setStatus(locks.getStatus());
+ locksMapper.insert(model);
+ /* UpdateWrapper<Sites> wrapper = new UpdateWrapper();
+ wrapper.eq("id",sites.getId());
+ wrapper.lambda().setSql("lock_num = COALESCE(lock_num,0) + 1");
+ wrapper.lambda().set(Sites::getEditDate,date);
+ sitesMapper.update(null,wrapper);//绱閿佸ご鏁伴噺*/
+ }else{
+ /* if(!StringUtils.equals(model.getId(),locks.getId())){
+ //濡傛灉绔欑偣鍙戠敓鍙樺寲锛屽師鏉ョ殑绔欑偣閿佸ご鏁伴噺-1
+ UpdateWrapper<Sites> wrapper = new UpdateWrapper();
+ wrapper.eq("id",model.getId());
+ wrapper.lambda().setSql("lock_num = COALESCE(lock_num,0) - 1");
+ wrapper.lambda().set(Sites::getEditDate,date);
+ sitesMapper.update(null,wrapper);//绱閿佸ご鏁伴噺
+ }
+ if(!newSite){
+ //濡傛灉绔欑偣鏈彂鐢熷彉鍖栵紝 骞朵笖涓嶆槸鏂扮珯鐐癸紝绔欑偣閿佸ご+1
+ UpdateWrapper<Sites> wrapper = new UpdateWrapper();
+ wrapper.eq("id",model.getId());
+ wrapper.lambda().setSql("lock_num = COALESCE(lock_num,0) - 1");
+ wrapper.lambda().set(Sites::getEditDate,date);
+ sitesMapper.update(null,wrapper);//绱閿佸ご鏁伴噺
+ }*/
+ model.setSiteId(locks.getSiteId());
+ model.setIsdeleted(Constants.ZERO);
+ model.setCode(locks.getCode());
+ model.setId(locks.getSiteId());
+ model.setEditDate(date);
+ model.setBikeCode(locks.getBikeCode());
+ model.setStatus(locks.getStatus());
+ locksMapper.update(null, new QueryWrapper<>(model));
+
+ }
+ model.setSites(sites);
+ return model;
+ }
+
+ @Override
+ public int mqttCloseBikeEvent(MemberRides bikes){
+ return 0;
+
+ }
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MqttLogServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MqttLogServiceImpl.java
new file mode 100644
index 0000000..d7a82f1
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MqttLogServiceImpl.java
@@ -0,0 +1,145 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.MqttLogMapper;
+import com.doumee.dao.business.model.MqttLog;
+import com.doumee.service.business.MqttLogService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 绯荤粺琛屼负鎿嶄綔璁板綍琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2023/10/12 14:25
+ */
+@Service
+public class MqttLogServiceImpl implements MqttLogService {
+
+ @Autowired
+ private MqttLogMapper mqttLogMapper;
+
+ @Override
+ public String create(MqttLog mqttLog) {
+ mqttLogMapper.insert(mqttLog);
+ return mqttLog.getId();
+ }
+
+ @Override
+ public void deleteById(String id) {
+ mqttLogMapper.deleteById(id);
+ }
+
+ @Override
+ public void delete(MqttLog mqttLog) {
+ UpdateWrapper<MqttLog> deleteWrapper = new UpdateWrapper<>(mqttLog);
+ mqttLogMapper.delete(deleteWrapper);
+ }
+
+ @Override
+ public void deleteByIdInBatch(List<String> ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return;
+ }
+ mqttLogMapper.deleteBatchIds(ids);
+ }
+
+ @Override
+ public void updateById(MqttLog mqttLog) {
+ mqttLogMapper.updateById(mqttLog);
+ }
+
+ @Override
+ public void updateByIdInBatch(List<MqttLog> mqttLogs) {
+ if (CollectionUtils.isEmpty(mqttLogs)) {
+ return;
+ }
+ for (MqttLog mqttLog: mqttLogs) {
+ this.updateById(mqttLog);
+ }
+ }
+
+ @Override
+ public MqttLog findById(String id) {
+ return mqttLogMapper.selectById(id);
+ }
+
+ @Override
+ public MqttLog findOne(MqttLog mqttLog) {
+ QueryWrapper<MqttLog> wrapper = new QueryWrapper<>(mqttLog);
+ return mqttLogMapper.selectOne(wrapper);
+ }
+
+ @Override
+ public List<MqttLog> findList(MqttLog mqttLog) {
+ QueryWrapper<MqttLog> wrapper = new QueryWrapper<>(mqttLog);
+ return mqttLogMapper.selectList(wrapper);
+ }
+
+ @Override
+ public PageData<MqttLog> findPage(PageWrap<MqttLog> pageWrap) {
+ IPage<MqttLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ QueryWrapper<MqttLog> queryWrapper = new QueryWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ if (pageWrap.getModel().getId() != null) {
+ queryWrapper.lambda().eq(MqttLog::getId, pageWrap.getModel().getId());
+ }
+ if (pageWrap.getModel().getCreateDate() != null) {
+ queryWrapper.lambda().ge(MqttLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+ queryWrapper.lambda().le(MqttLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+ }
+ if (pageWrap.getModel().getCreator() != null) {
+ queryWrapper.lambda().eq(MqttLog::getCreator, pageWrap.getModel().getCreator());
+ }
+ if (pageWrap.getModel().getEditDate() != null) {
+ queryWrapper.lambda().ge(MqttLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+ queryWrapper.lambda().le(MqttLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+ }
+ if (pageWrap.getModel().getEditor() != null) {
+ queryWrapper.lambda().eq(MqttLog::getEditor, pageWrap.getModel().getEditor());
+ }
+ if (pageWrap.getModel().getIsdeleted() != null) {
+ queryWrapper.lambda().eq(MqttLog::getIsdeleted, pageWrap.getModel().getIsdeleted());
+ }
+ if (pageWrap.getModel().getInfo() != null) {
+ queryWrapper.lambda().eq(MqttLog::getInfo, pageWrap.getModel().getInfo());
+ }
+ if (pageWrap.getModel().getType() != null) {
+ queryWrapper.lambda().eq(MqttLog::getType, pageWrap.getModel().getType());
+ }
+ if (pageWrap.getModel().getClientid() != null) {
+ queryWrapper.lambda().eq(MqttLog::getClientid, pageWrap.getModel().getClientid());
+ }
+ if (pageWrap.getModel().getTopic() != null) {
+ queryWrapper.lambda().eq(MqttLog::getTopic, pageWrap.getModel().getTopic());
+ }
+ if (pageWrap.getModel().getMsg() != null) {
+ queryWrapper.lambda().eq(MqttLog::getMsg, pageWrap.getModel().getMsg());
+ }
+ if (pageWrap.getModel().getResult() != null) {
+ queryWrapper.lambda().eq(MqttLog::getResult, pageWrap.getModel().getResult());
+ }
+ for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+ if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+ queryWrapper.orderByDesc(sortData.getProperty());
+ } else {
+ queryWrapper.orderByAsc(sortData.getProperty());
+ }
+ }
+ return PageData.from(mqttLogMapper.selectPage(page, queryWrapper));
+ }
+
+ @Override
+ public long count(MqttLog mqttLog) {
+ QueryWrapper<MqttLog> wrapper = new QueryWrapper<>(mqttLog);
+ return mqttLogMapper.selectCount(wrapper);
+ }
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
index 7fdb63f..0540f81 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
@@ -205,8 +205,8 @@
IPage<Sites> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
QueryWrapper<Sites> queryWrapper = new QueryWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
-// queryWrapper.select("*,(select count(r.id) from locks r where r.site_id = sites.id) as localCount" +
- queryWrapper.select("*,(select count(r.bike_code) from locks r where r.site_id = sites.id and r.bike_code is null and r.bike_code !='' ) as bikeCount");
+ queryWrapper.select("*,(select count(r.id) from locks r where r.site_id = sites.id) as all_lock_num" +
+ ",(select count(r.bike_code) from locks r where r.site_id = sites.id and r.bike_code is null and r.bike_code !='' ) as bikeCount");
// Page<SitesMonitorDTO> sitesMonitorDTO = sitesMapper.getSitesMonitorDTO(page, pageWrap.getModel().getCode(), pageWrap.getModel().getName());
queryWrapper.lambda().like(StringUtils.isNotBlank(pageWrap.getModel().getCode()),Sites::getCode,pageWrap.getModel().getCode());
queryWrapper.lambda().like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Sites::getCode,pageWrap.getModel().getName());
@@ -215,7 +215,7 @@
if (!CollectionUtils.isEmpty(sitesMonitorDTO.getRecords())){
sitesMonitorDTO.getRecords().forEach(s->{
- s.setRate(new BigDecimal(s.getBikeCount()).divide(new BigDecimal(s.getLockNum()).setScale(2)));
+ s.setRate(new BigDecimal(s.getBikeCount()).divide(new BigDecimal(s.getAllLockNum()).setScale(2)));
});
}
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"
new file mode 100644
index 0000000..6e9b418
--- /dev/null
+++ "b/server/\350\207\252\350\241\214\350\275\246mqtt\345\215\217\350\256\256.md"
@@ -0,0 +1,43 @@
+# 鑷杞� mqtt 鍗忚鏂囨。
+
+## 閫氫俊瑙勮寖
+- 姣忎釜绔欑偣涓�涓� mqtt 杩炴帴锛宑lientId 涓� SITE_绔欑偣缂栧彿
+- 涓�涓珯鐐圭敱閮ㄧ讲鍦ㄤ笂浣嶆満涓婄殑杞欢閫氳繃can鎬荤嚎涓庡涓攣閫氫俊锛屽苟涓庢湇鍔″櫒閫氳繃mqtt鍋氭秷鎭浆鍙�
+
+
+## sub: device/lock/{id}/info
+> **閿佷俊鎭紝鍦ㄥ垵濮嬪寲銆佺姸鎬佸彉鏇存椂浼氭帹閫侀攣鐨勫畬鏁寸姸鎬�**
+- 鏁版嵁
+```json
+{
+ "siteId": "1015", // 绔欑偣缂栧彿
+ "code": "01", // 閿佺紪鍙�
+ "id": "123456789103", // 閿佸敮涓�id,鍚屼富棰榹id}
+ "status": 1, // 鐘舵�侊紝0闂悎, 1鎵撳紑锛�2杩愯涓�, 3寮傚父
+ "bikeCode": "1234567890" // 鑷杞c鍗″彿锛屾棤杞︿负绌�
+}
+```
+
+## pub: device/lock/{id}/getInfo
+> 瀹炴椂鑾峰彇閿佷俊鎭�
+- 鏁版嵁
+```json
+{}
+```
+
+## pub: device/lock/{id}/unlock
+> 寮�閿侊紝鎴愬姛澶辫触鍙叧娉╥nfo娑堟伅鎺ㄩ��
+- 鏁版嵁
+```json
+{}
+```
+
+## sub: device/lock/{id}/bike
+> 杩樿溅, 杩樿溅鎴愬姛鏃讹紝鑾峰緱鎵�杩樿溅杈唅c鍗″彿鎺ㄩ��
+- 鏁版嵁
+```json
+{
+ "bikeCode": "1234567890",
+ "time": "2023-10-13 10:12:90" // 绔欑偣涓婁綅鏈烘敹鍒拌繕杞︽寚浠ょ殑鏃堕棿锛屼粎鍋氬弬鑰冿紝璇蜂互鏈嶅姟鍣ㄦ椂闂翠负鍑�
+}
+```
\ No newline at end of file
--
Gitblit v1.9.3