|
@@ -0,0 +1,100 @@
|
|
|
+package com.szwl.controller;
|
|
|
+
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.szwl.model.bo.R;
|
|
|
+import com.szwl.model.bo.ResponseModel;
|
|
|
+import com.szwl.model.dto.MqttMsgVo;
|
|
|
+import com.szwl.model.entity.MqttMsg;
|
|
|
+import com.szwl.model.entity.MqttTopics;
|
|
|
+import com.szwl.model.param.MqttMsgParam;
|
|
|
+import com.szwl.service.MqttMsgService;
|
|
|
+import com.szwl.service.MqttTopicsService;
|
|
|
+import com.szwl.service.base.MqttService;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 前端控制器
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author wuhs
|
|
|
+ * @since 2024-10-17
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/mqtt")
|
|
|
+public class MqttController {
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MqttService mqttService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MqttTopicsService mqttTopicsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MqttMsgService mqttMsgService;
|
|
|
+
|
|
|
+ @ApiOperation("发送消息")
|
|
|
+ @PostMapping("/sendMsg")
|
|
|
+ public ResponseModel<?> sendMsg(@RequestBody MqttMsgVo mqttMsgVo){
|
|
|
+ String topic = mqttMsgVo.getTopic();
|
|
|
+ String message = mqttMsgVo.getMessage();
|
|
|
+ Integer qos = mqttMsgVo.getQos();
|
|
|
+ mqttService.sendMessage(topic, message, qos);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("添加订阅主题")
|
|
|
+ @PostMapping("/addTopic")
|
|
|
+ public ResponseModel<?> addTopic(@RequestBody MqttTopics mqttTopics){
|
|
|
+ mqttTopics.setCreateDate(new Date());
|
|
|
+ mqttTopicsService.save(mqttTopics);
|
|
|
+ mqttService.subscribe(mqttTopics.getTopic(), mqttTopics.getQos());
|
|
|
+ return R.ok(mqttTopics.getTopic());
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("删除订阅主题")
|
|
|
+ @PostMapping("/delTopic")
|
|
|
+ public ResponseModel<?> delTopic(@RequestBody MqttTopics mqtt) {
|
|
|
+ LambdaQueryWrapper<MqttTopics> query = Wrappers.lambdaQuery();
|
|
|
+ query.eq(MqttTopics::getTopic, mqtt.getTopic());
|
|
|
+ MqttTopics mqttTopic = mqttTopicsService.getOne(query);
|
|
|
+ if(mqttTopic != null) {
|
|
|
+ mqttTopicsService.removeById(mqttTopic);
|
|
|
+ mqttService.unsubscribe(mqttTopic.getTopic());
|
|
|
+ return R.ok();
|
|
|
+ } else {
|
|
|
+ return R.fail("主题不存在");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("获取订阅列表")
|
|
|
+ @GetMapping("/getTopicList")
|
|
|
+ public ResponseModel<?> getTopicList(){
|
|
|
+ return R.ok(mqttTopicsService.list());
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation("获取消息列表")
|
|
|
+ @PostMapping("/getMsgList")
|
|
|
+ public ResponseModel<IPage<?>> getMsgList(@RequestBody MqttMsgParam param){
|
|
|
+ LambdaQueryWrapper<MqttMsg> query = Wrappers.lambdaQuery();
|
|
|
+ if (StringUtils.isNotEmpty(param.getStartTime()) && StringUtils.isNotEmpty(param.getEndTime())) {
|
|
|
+ query.between(MqttMsg::getCreateDate, param.getStartTime(), param.getEndTime());
|
|
|
+ }
|
|
|
+ query.orderByDesc(MqttMsg::getCreateDate);
|
|
|
+ Page<MqttMsg> page = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ Page<MqttMsg> recordPage = mqttMsgService.page(page, query);
|
|
|
+ return R.ok(recordPage);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|