提交 4adbd9da 编写于 作者: 很久是多久's avatar 很久是多久

broker和设备业务分离

上级 f03c146e
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mqtts-api</artifactId>
<groupId>net.mqtts</groupId>
<version>3.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mqtts-api-link</artifactId>
<description>
mqtts-api-link 设备接口模块
</description>
<dependencies>
<!-- mqtts Common Core-->
<dependency>
<groupId>net.mqtts</groupId>
<artifactId>mqtts-common-core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package net.mqtts.link.api;
import net.mqtts.common.core.constant.ServiceNameConstants;
import net.mqtts.common.core.domain.R;
import net.mqtts.link.api.domain.MqttsDeviceAction;
import net.mqtts.link.api.factory.RemoteMqttsDeviceActionFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* 设备动作服务
*
* @author mqtts
*/
@FeignClient(contextId = "remoteMqttsDeviceActionService", value = ServiceNameConstants.MQTTS_LINK, fallbackFactory = RemoteMqttsDeviceActionFallbackFactory.class)
public interface RemoteMqttsDeviceActionService {
/**
* 新增设备动作
*
* @param mqttsDeviceAction
* @return
*/
@PostMapping("/device/action/add")
public R add(@RequestBody MqttsDeviceAction mqttsDeviceAction);
}
package net.mqtts.link.api;
import net.mqtts.common.core.constant.ServiceNameConstants;
import net.mqtts.common.core.domain.R;
import net.mqtts.link.api.domain.MqttsDeviceDatas;
import net.mqtts.link.api.factory.RemoteMqttsDeviceDatasFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* 设备消息服务
*
* @author shisen
*/
@FeignClient(contextId = "remoteMqttsDeviceDatasService", value = ServiceNameConstants.MQTTS_LINK, fallbackFactory = RemoteMqttsDeviceDatasFallbackFactory.class)
public interface RemoteMqttsDeviceDatasService {
/**
* 新增设备消息
*/
@PostMapping("/device/datas/add")
public R add(@RequestBody MqttsDeviceDatas mqttsDeviceDatas);
}
package net.mqtts.link.api;
import net.mqtts.common.core.constant.ServiceNameConstants;
import net.mqtts.common.core.domain.R;
import net.mqtts.link.api.domain.MqttsDevice;
import net.mqtts.link.api.factory.RemoteMqttsDeviceFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* 设备管理服务
*
* @author shisen
*/
@FeignClient(contextId = "remoteMqttsDeviceService", value = ServiceNameConstants.MQTTS_LINK, fallbackFactory = RemoteMqttsDeviceFallbackFactory.class)
public interface RemoteMqttsDeviceService {
/**
* 认证接口
*
* @param clientId
* @param userName
* @param password
* @param deviceStatus
* @param protocolType
* @return
*/
@GetMapping("/device/findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType")
public R<MqttsDevice> findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType(@RequestParam(value = "clientId", required = true) String clientId,
@RequestParam(value = "userName", required = true) String userName,
@RequestParam(value = "password", required = true) String password,
@RequestParam(value = "deviceStatus", required = true) String deviceStatus,
@RequestParam(value = "protocolType", required = true) String protocolType);
/**
* 更新设备在线状态
*
* @param mqttsDevice
* @return
*/
@PutMapping("/device/updateConnectStatusByClientId")
public R updateConnectStatusByClientId(@RequestBody MqttsDevice mqttsDevice);
}
package net.mqtts.link.domain.device;
import java.math.BigDecimal;
package net.mqtts.link.api.domain;
import net.mqtts.common.core.annotation.Excel;
import net.mqtts.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
/**
* 设备管理对象 mqtts_device
*
*
* @author mqtts
* @date 2021-10-22
*/
public class MqttsDevice extends BaseEntity
{
public class MqttsDevice extends BaseEntity {
private static final long serialVersionUID = 1L;
/** id */
/**
* id
*/
@Excel(name = "id")
private Long id;
/** 客户端标识 */
/**
* 客户端标识
*/
@Excel(name = "客户端标识")
private String clientId;
/** 用户名 */
/**
* 用户名
*/
private String userName;
/** 密码 */
/**
* 密码
*/
private String password;
/** 认证方式 */
/**
* 认证方式
*/
@Excel(name = "认证方式")
private String authMode;
/** 设备标识 */
/**
* 设备标识
*/
@Excel(name = "设备标识")
private String deviceId;
/** 设备名称 */
/**
* 设备名称
*/
@Excel(name = "设备名称")
private String deviceName;
/** 纬度 */
/**
* 纬度
*/
private BigDecimal latitude;
/** 经度 */
/**
* 经度
*/
private BigDecimal longitude;
/** 连接实例 */
/**
* 连接实例
*/
@Excel(name = "连接实例")
private String connector;
/** 设备描述 */
/**
* 设备描述
*/
@Excel(name = "设备描述")
private String deviceDescription;
/** 设备状态 */
/**
* 设备状态
*/
@Excel(name = "设备状态")
private String deviceStatus;
/** 连接状态 */
/**
* 连接状态
*/
@Excel(name = "连接状态")
private String connectStatus;
/** 是否遗言 */
/**
* 是否遗言
*/
@Excel(name = "是否遗言")
private String isWill;
/** 设备标签 */
/**
* 设备标签
*/
@Excel(name = "设备标签")
private String deviceTags;
/** 产品型号 */
/**
* 产品型号
*/
@Excel(name = "产品型号")
private String productId;
/** 厂商ID */
/**
* 厂商ID
*/
@Excel(name = "厂商ID")
private String manufacturerId;
/** 产品协议类型 */
/**
* 产品协议类型
*/
@Excel(name = "产品协议类型")
private String protocolType;
/** 设备类型 */
/**
* 设备类型
*/
@Excel(name = "设备类型")
private String deviceType;
public void setId(Long id)
{
public void setId(Long id) {
this.id = id;
}
public Long getId()
{
public Long getId() {
return id;
}
public void setClientId(String clientId)
{
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientId()
{
public String getClientId() {
return clientId;
}
public void setUserName(String userName)
{
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName()
{
public String getUserName() {
return userName;
}
public void setPassword(String password)
{
public void setPassword(String password) {
this.password = password;
}
public String getPassword()
{
public String getPassword() {
return password;
}
public void setAuthMode(String authMode)
{
public void setAuthMode(String authMode) {
this.authMode = authMode;
}
public String getAuthMode()
{
public String getAuthMode() {
return authMode;
}
public void setDeviceId(String deviceId)
{
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getDeviceId()
{
public String getDeviceId() {
return deviceId;
}
public void setDeviceName(String deviceName)
{
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public String getDeviceName()
{
public String getDeviceName() {
return deviceName;
}
public void setLatitude(BigDecimal latitude)
{
public void setLatitude(BigDecimal latitude) {
this.latitude = latitude;
}
public BigDecimal getLatitude()
{
public BigDecimal getLatitude() {
return latitude;
}
public void setLongitude(BigDecimal longitude)
{
public void setLongitude(BigDecimal longitude) {
this.longitude = longitude;
}
public BigDecimal getLongitude()
{
public BigDecimal getLongitude() {
return longitude;
}
public void setConnector(String connector)
{
public void setConnector(String connector) {
this.connector = connector;
}
public String getConnector()
{
public String getConnector() {
return connector;
}
public void setDeviceDescription(String deviceDescription)
{
public void setDeviceDescription(String deviceDescription) {
this.deviceDescription = deviceDescription;
}
public String getDeviceDescription()
{
public String getDeviceDescription() {
return deviceDescription;
}
public void setDeviceStatus(String deviceStatus)
{
public void setDeviceStatus(String deviceStatus) {
this.deviceStatus = deviceStatus;
}
public String getDeviceStatus()
{
public String getDeviceStatus() {
return deviceStatus;
}
public void setConnectStatus(String connectStatus)
{
public void setConnectStatus(String connectStatus) {
this.connectStatus = connectStatus;
}
public String getConnectStatus()
{
public String getConnectStatus() {
return connectStatus;
}
public void setIsWill(String isWill)
{
public void setIsWill(String isWill) {
this.isWill = isWill;
}
public String getIsWill()
{
public String getIsWill() {
return isWill;
}
public void setDeviceTags(String deviceTags)
{
public void setDeviceTags(String deviceTags) {
this.deviceTags = deviceTags;
}
public String getDeviceTags()
{
public String getDeviceTags() {
return deviceTags;
}
public void setProductId(String productId)
{
public void setProductId(String productId) {
this.productId = productId;
}
public String getProductId()
{
public String getProductId() {
return productId;
}
public void setManufacturerId(String manufacturerId)
{
public void setManufacturerId(String manufacturerId) {
this.manufacturerId = manufacturerId;
}
public String getManufacturerId()
{
public String getManufacturerId() {
return manufacturerId;
}
public void setProtocolType(String protocolType)
{
public void setProtocolType(String protocolType) {
this.protocolType = protocolType;
}
public String getProtocolType()
{
public String getProtocolType() {
return protocolType;
}
public void setDeviceType(String deviceType)
{
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
public String getDeviceType()
{
public String getDeviceType() {
return deviceType;
}
public MqttsDevice() {
}
public MqttsDevice(String connectStatus, String clientId) {
this.connectStatus = connectStatus;
this.clientId = clientId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("clientId", getClientId())
.append("userName", getUserName())
.append("password", getPassword())
.append("authMode", getAuthMode())
.append("deviceId", getDeviceId())
.append("deviceName", getDeviceName())
.append("latitude", getLatitude())
.append("longitude", getLongitude())
.append("connector", getConnector())
.append("deviceDescription", getDeviceDescription())
.append("deviceStatus", getDeviceStatus())
.append("connectStatus", getConnectStatus())
.append("isWill", getIsWill())
.append("deviceTags", getDeviceTags())
.append("productId", getProductId())
.append("manufacturerId", getManufacturerId())
.append("protocolType", getProtocolType())
.append("deviceType", getDeviceType())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("clientId", getClientId())
.append("userName", getUserName())
.append("password", getPassword())
.append("authMode", getAuthMode())
.append("deviceId", getDeviceId())
.append("deviceName", getDeviceName())
.append("latitude", getLatitude())
.append("longitude", getLongitude())
.append("connector", getConnector())
.append("deviceDescription", getDeviceDescription())
.append("deviceStatus", getDeviceStatus())
.append("connectStatus", getConnectStatus())
.append("isWill", getIsWill())
.append("deviceTags", getDeviceTags())
.append("productId", getProductId())
.append("manufacturerId", getManufacturerId())
.append("protocolType", getProtocolType())
.append("deviceType", getDeviceType())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}
package net.mqtts.link.domain.device;
package net.mqtts.link.api.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
/**
......@@ -27,6 +28,7 @@ import lombok.Data;
* @Version: 1.0
*/
/**
* 设备动作数据
*/
......
package net.mqtts.link.domain.device;
package net.mqtts.link.api.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
/**
......@@ -27,6 +28,7 @@ import lombok.Data;
* @Version: 1.0
*/
/**
* 设备消息
*/
......
package net.mqtts.link.api.factory;
import net.mqtts.common.core.domain.R;
import net.mqtts.link.api.RemoteMqttsDeviceActionService;
import net.mqtts.link.api.domain.MqttsDeviceAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 设备动作服务降级处理
*
* @author shisen
*/
@Component
public class RemoteMqttsDeviceActionFallbackFactory implements FallbackFactory<RemoteMqttsDeviceActionService> {
private static final Logger log = LoggerFactory.getLogger(RemoteMqttsDeviceActionFallbackFactory.class);
@Override
public RemoteMqttsDeviceActionService create(Throwable throwable) {
log.error("设备消息服务调用失败:{}", throwable.getMessage());
return new RemoteMqttsDeviceActionService() {
@Override
public R add(MqttsDeviceAction mqttsDeviceAction) {
return R.fail("新增设备动作失败:" + throwable.getMessage());
}
};
}
}
package net.mqtts.link.api.factory;
import net.mqtts.common.core.domain.R;
import net.mqtts.link.api.RemoteMqttsDeviceDatasService;
import net.mqtts.link.api.domain.MqttsDeviceDatas;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 设备消息服务降级处理
*
* @author shisen
*/
@Component
public class RemoteMqttsDeviceDatasFallbackFactory implements FallbackFactory<RemoteMqttsDeviceDatasService> {
private static final Logger log = LoggerFactory.getLogger(RemoteMqttsDeviceDatasFallbackFactory.class);
@Override
public RemoteMqttsDeviceDatasService create(Throwable throwable) {
log.error("设备消息服务调用失败:{}", throwable.getMessage());
return new RemoteMqttsDeviceDatasService() {
@Override
public R add(MqttsDeviceDatas mqttsDeviceDatas) {
return R.fail("新增设备消息失败:" + throwable.getMessage());
}
};
}
}
package net.mqtts.link.api.factory;
import net.mqtts.common.core.domain.R;
import net.mqtts.link.api.RemoteMqttsDeviceService;
import net.mqtts.link.api.domain.MqttsDevice;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 设备管理服务降级处理
*
* @author shisen
*/
@Component
public class RemoteMqttsDeviceFallbackFactory implements FallbackFactory<RemoteMqttsDeviceService> {
private static final Logger log = LoggerFactory.getLogger(RemoteMqttsDeviceFallbackFactory.class);
@Override
public RemoteMqttsDeviceService create(Throwable throwable) {
log.error("设备管理服务调用失败:{}", throwable.getMessage());
return new RemoteMqttsDeviceService() {
@Override
public R<MqttsDevice> findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType(String clientId, String userName, String password, String deviceStatus, String protocolType) {
return R.fail("认证接口失败:" + throwable.getMessage());
}
@Override
public R updateConnectStatusByClientId(MqttsDevice mqttsDevice) {
return R.fail("更新设备在线状态失败:" + throwable.getMessage());
}
};
}
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
net.mqtts.link.api.factory.RemoteMqttsDeviceFallbackFactory,\
net.mqtts.link.api.factory.RemoteMqttsDeviceActionFallbackFactory, \
net.mqtts.link.api.factory.RemoteMqttsDeviceDatasFallbackFactory
......@@ -10,6 +10,7 @@
<modules>
<module>mqtts-api-system</module>
<module>mqtts-api-link</module>
</modules>
<artifactId>mqtts-api</artifactId>
......
......@@ -21,4 +21,9 @@ public class ServiceNameConstants
* 文件服务的serviceid
*/
public static final String FILE_SERVICE = "mqtts-file";
/**
* Link服务
*/
public static final String MQTTS_LINK = "mqtts-link";
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mqtts-modules</artifactId>
<groupId>net.mqtts</groupId>
<version>3.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mqtts-modules-broker</artifactId>
<description>
mqtts-modules-broker broker模块
</description>
<properties>
<!--打包目录-->
<mqtts.package.url>D:\mqtts-server\broker</mqtts.package.url>
<!--启动类目录-->
<mqtts.mainClass.url> net.mqtts.broker.MqttsBrokerApplication</mqtts.mainClass.url>
</properties>
<dependencies>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringBoot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Mysql Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- mqtts Common DataSource -->
<dependency>
<groupId>net.mqtts</groupId>
<artifactId>mqtts-common-datasource</artifactId>
<version>3.1.0</version>
</dependency>
<!-- mqtts Common DataScope -->
<dependency>
<groupId>net.mqtts</groupId>
<artifactId>mqtts-common-datascope</artifactId>
<version>3.1.0</version>
</dependency>
<!-- https://github.com/quickmsg/smqtt V1.0.9 -->
<dependency>
<groupId>io.github.quickmsg</groupId>
<artifactId>smqtt-spring-boot-starter</artifactId>
<version>1.0.9</version>
<!-- 去除非必要版本 -->
<exclusions>
<exclusion>
<groupId>io.github.quickmsg</groupId>
<artifactId>smqtt-ui</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.mqtts</groupId>
<artifactId>mqtts-api-link</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--打包jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!-- &lt;!&ndash;不打包资源文件&ndash;&gt;-->
<excludes>
<exclude>*.**</exclude>
<exclude>*/*.xml</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!--MANIFEST.MF 中 Class-Path 加入前缀-->
<classpathPrefix>../lib/</classpathPrefix>
<!--jar包不包含唯一版本标识-->
<useUniqueVersions>false</useUniqueVersions>
<!--指定入口类-->
<mainClass>${mqtts.mainClass.url}</mainClass>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录-->
<Class-Path>./resources/</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${iot.package.url}</outputDirectory>
</configuration>
</plugin>
<!--拷贝依赖 copy-dependencies-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${mqtts.lib.package.url}
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!--拷贝资源文件 copy-resources-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<outputDirectory>${mqtts.package.url}/resources</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!--spring boot repackage,依赖 maven-jar-plugin 打包的jar包 重新打包成 spring boot 的jar包-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖-->
<includes>
<include>
<groupId>null</groupId>
<artifactId>null</artifactId>
</include>
</includes>
<layout>ZIP</layout>
<!--使用外部配置文件,jar包里没有资源文件-->
<addResources>true</addResources>
<outputDirectory>${mqtts.package.url}</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<!--配置jar包特殊标识 配置后,保留原文件,生成新文件 *-run.jar -->
<!--配置jar包特殊标识 不配置,原文件命名为 *.jar.original,生成新文件 *.jar -->
<!--<classifier>run</classifier>-->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package net.mqtts.link.controller.Actors;
package net.mqtts.broker.Actors;
import io.github.quickmsg.common.annotation.AllowCors;
import io.github.quickmsg.common.annotation.Router;
......
package net.mqtts.broker;
import io.github.quickmsg.starter.EnableMqttServer;
import net.mqtts.common.security.annotation.EnableCustomConfig;
import net.mqtts.common.security.annotation.EnableRyFeignClients;
import net.mqtts.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.CrossOrigin;
/**
* Broker
*
* @author mqtts
*/
@EnableMqttServer
@EnableCustomSwagger2
@EnableRyFeignClients
//实现跨域注解
//origin="*"代表所有域名都可访问
//maxAge飞行前响应的缓存持续时间的最大年龄,简单来说就是Cookie的有效期 单位为秒
//若maxAge是负数,则代表为临时Cookie,不会被持久化,Cookie信息保存在浏览器内存中,浏览器关闭Cookie就消失
@CrossOrigin(origins = "*",maxAge = 3600)
@SpringBootApplication
public class MqttsBrokerApplication
{
public static void main(String[] args)
{
SpringApplication.run(MqttsBrokerApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ Broker模块启动成功 ლ(´ڡ`ლ)゙ ");
}
}
package net.mqtts.link.service.impl;
package net.mqtts.broker.service;
import com.alibaba.fastjson.JSONObject;
import io.github.quickmsg.common.channel.MqttChannel;
import io.github.quickmsg.common.config.Configuration;
import io.github.quickmsg.common.context.ReceiveContext;
......@@ -8,22 +7,17 @@ import io.github.quickmsg.common.interceptor.Interceptor;
import io.github.quickmsg.common.interceptor.Invocation;
import io.github.quickmsg.common.message.HeapMqttMessage;
import io.github.quickmsg.common.message.SmqttMessage;
import io.github.quickmsg.common.protocol.ProtocolAdaptor;
import io.github.quickmsg.common.rule.DslExecutor;
import io.github.quickmsg.common.utils.MessageUtils;
import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.mqtt.*;
import io.netty.util.CharsetUtil;
import io.netty.handler.codec.mqtt.MqttFixedHeader;
import io.netty.handler.codec.mqtt.MqttMessage;
import io.netty.handler.codec.mqtt.MqttPublishMessage;
import io.netty.handler.codec.mqtt.MqttPublishVariableHeader;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import reactor.core.scheduler.Schedulers;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description: mqtt消息拦截器示例
......
package net.mqtts.link.service.impl;
package net.mqtts.broker.service;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.copier.Copier;
import io.github.quickmsg.common.channel.MqttChannel;
import io.github.quickmsg.common.config.Configuration;
import io.github.quickmsg.common.context.ReceiveContext;
......@@ -13,16 +12,15 @@ import io.github.quickmsg.common.rule.DslExecutor;
import io.github.quickmsg.common.utils.MessageUtils;
import io.netty.handler.codec.mqtt.*;
import lombok.extern.slf4j.Slf4j;
import net.mqtts.link.domain.device.MqttsDeviceAction;
import net.mqtts.link.domain.device.MqttsDeviceDatas;
import net.mqtts.link.service.device.MqttsDeviceActionService;
import net.mqtts.link.service.device.MqttsDeviceService;
import net.mqtts.link.api.RemoteMqttsDeviceActionService;
import net.mqtts.link.api.RemoteMqttsDeviceService;
import net.mqtts.link.api.domain.MqttsDevice;
import net.mqtts.link.api.domain.MqttsDeviceAction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......@@ -45,10 +43,10 @@ public class DeviceActionInterceptor implements Interceptor {
private static DeviceActionInterceptor DeviceActionInterceptor;
@Autowired
private MqttsDeviceService mqttsDeviceService;
private RemoteMqttsDeviceService mqttsDeviceService;
@Autowired
private MqttsDeviceActionService mqttsDeviceActionService;
private RemoteMqttsDeviceActionService mqttsDeviceActionService;
@PostConstruct
......@@ -73,8 +71,8 @@ public class DeviceActionInterceptor implements Interceptor {
DslExecutor dslExecutor = mqttReceiveContext.getDslExecutor();
MqttMessage message = smqttMessage.getMessage();
//TODO MQTT动作数据处理
List<MqttMessageType> mqttMessageType = Arrays.asList(MqttMessageType.PUBLISH,MqttMessageType.DISCONNECT,MqttMessageType.PINGRESP,MqttMessageType.SUBSCRIBE,MqttMessageType.UNSUBSCRIBE);
if (!smqttMessage.getIsCluster() && mqttMessageType.contains(message.fixedHeader().messageType()) ) {
List<MqttMessageType> mqttMessageType = Arrays.asList(MqttMessageType.PUBLISH, MqttMessageType.DISCONNECT, MqttMessageType.PINGRESP, MqttMessageType.SUBSCRIBE, MqttMessageType.UNSUBSCRIBE);
if (!smqttMessage.getIsCluster() && mqttMessageType.contains(message.fixedHeader().messageType())) {
MqttPublishMessage publishMessage = (MqttPublishMessage) message;
HeapMqttMessage heapMqttMessage = this.clusterMessage(publishMessage, mqttChannel, smqttMessage.getTimestamp());
MqttsDeviceAction mqttsDeviceAction = new MqttsDeviceAction();
......@@ -83,8 +81,8 @@ public class DeviceActionInterceptor implements Interceptor {
mqttsDeviceAction.setStatus(message.decoderResult().toString());
mqttsDeviceAction.setMessage(heapMqttMessage.getTopic());
mqttsDeviceAction.setCreate_time(LocalDateTimeUtil.now());
DeviceActionInterceptor.mqttsDeviceActionService.insert(mqttsDeviceAction);
DeviceActionInterceptor.mqttsDeviceService.updateConnectStatusByClientId(mqttChannel.getStatus().toString(), mqttChannel.getClientIdentifier());
DeviceActionInterceptor.mqttsDeviceActionService.add(mqttsDeviceAction);
DeviceActionInterceptor.mqttsDeviceService.updateConnectStatusByClientId(new MqttsDevice(mqttChannel.getStatus().toString(), mqttChannel.getClientIdentifier()));
}
// 拦截业务
return invocation.proceed(); // 放行
......@@ -116,7 +114,8 @@ public class DeviceActionInterceptor implements Interceptor {
/**
* 排序
*值越大权重越高
* 值越大权重越高
*
* @return 排序
*/
@Override
......
package net.mqtts.link.service.impl;
package net.mqtts.broker.service;
import cn.hutool.core.date.LocalDateTimeUtil;
import io.github.quickmsg.common.channel.MqttChannel;
......@@ -12,12 +12,11 @@ import io.github.quickmsg.common.rule.DslExecutor;
import io.github.quickmsg.common.utils.MessageUtils;
import io.netty.handler.codec.mqtt.*;
import lombok.extern.slf4j.Slf4j;
import net.mqtts.link.domain.device.MqttsDeviceDatas;
import net.mqtts.link.service.device.MqttsDeviceDatasService;
import net.mqtts.link.api.RemoteMqttsDeviceDatasService;
import net.mqtts.link.api.domain.MqttsDeviceDatas;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import reactor.core.scheduler.Schedulers;
import javax.annotation.PostConstruct;
......@@ -40,13 +39,13 @@ public class DeviceDatasInterceptor implements Interceptor {
private static DeviceDatasInterceptor DeviceDatasInterceptor;
@Autowired
private MqttsDeviceDatasService mqttsDeviceDatasService;
private RemoteMqttsDeviceDatasService remoteMqttsDeviceDatasService;
@PostConstruct
public void init() {
DeviceDatasInterceptor = this;
DeviceDatasInterceptor.mqttsDeviceDatasService = this.mqttsDeviceDatasService;
DeviceDatasInterceptor.remoteMqttsDeviceDatasService = this.remoteMqttsDeviceDatasService;
}
/**
......@@ -67,15 +66,15 @@ public class DeviceDatasInterceptor implements Interceptor {
if (!smqttMessage.getIsCluster() && message instanceof MqttPublishMessage && message.fixedHeader().messageType() == MqttMessageType.PUBLISH) {
MqttPublishMessage publishMessage = (MqttPublishMessage) message;
HeapMqttMessage heapMqttMessage = this.clusterMessage(publishMessage, mqttChannel, smqttMessage.getTimestamp());
log.info("Topic->{}"+heapMqttMessage.getTopic()+"Message->{}"+new String(heapMqttMessage.getMessage()));
log.info("Topic->{}" + heapMqttMessage.getTopic() + "Message->{}" + new String(heapMqttMessage.getMessage()));
MqttsDeviceDatas mqttsDeviceDatas = new MqttsDeviceDatas();
mqttsDeviceDatas.setDevice_id(heapMqttMessage.getClientIdentifier());
mqttsDeviceDatas.setTopic(heapMqttMessage.getTopic());
mqttsDeviceDatas.setMessage_id(String.valueOf(heapMqttMessage.getTimestamp()));
mqttsDeviceDatas.setMessage(new String(heapMqttMessage.getMessage()).trim());
mqttsDeviceDatas.setMessage(new String(heapMqttMessage.getMessage(), "UTF-8").trim());
mqttsDeviceDatas.setStatus(message.decoderResult().toString());
mqttsDeviceDatas.setCreate_time(LocalDateTimeUtil.now());
DeviceDatasInterceptor.mqttsDeviceDatasService.insert(mqttsDeviceDatas);
DeviceDatasInterceptor.remoteMqttsDeviceDatasService.add(mqttsDeviceDatas);
/* if (mqttReceiveContext.getConfiguration().getClusterConfig().isEnable()) {
mqttReceiveContext.getClusterRegistry().spreadPublishMessage(heapMqttMessage).subscribeOn(Schedulers.boundedElastic()).subscribe();
}
......@@ -110,6 +109,7 @@ public class DeviceDatasInterceptor implements Interceptor {
.qos(fixedHeader.qosLevel().value())
.build();
}
/**
* 排序
* 值越大权重越高
......
package net.mqtts.link.service.impl;
package net.mqtts.broker.service;
import io.github.quickmsg.common.message.MessageRegistry;
import io.github.quickmsg.common.message.RetainMessage;
......
package net.mqtts.link.service.impl;
package net.mqtts.broker.service;
import io.github.quickmsg.common.auth.PasswordAuthentication;
import lombok.extern.slf4j.Slf4j;
import net.mqtts.link.common.enums.DeviceConnectStatus;
import net.mqtts.link.common.enums.DeviceStatus;
import net.mqtts.link.common.enums.ProtocolType;
import net.mqtts.link.domain.device.MqttsDevice;
import net.mqtts.link.service.device.MqttsDeviceService;
import net.mqtts.link.api.RemoteMqttsDeviceService;
import net.mqtts.link.api.domain.MqttsDevice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
......@@ -33,7 +30,7 @@ public class PasswordAuthenticationImpl implements PasswordAuthentication {
private static PasswordAuthenticationImpl PasswordAuthenticationImpl;
@Autowired
private MqttsDeviceService mqttsDeviceService;
private RemoteMqttsDeviceService mqttsDeviceService;
@PostConstruct
......@@ -52,10 +49,10 @@ public class PasswordAuthenticationImpl implements PasswordAuthentication {
*/
@Override
public boolean auth(String userName, byte[] passwordInBytes, String clientIdentifier) {
MqttsDevice oneByClientIdAndUserNameAndPassword = PasswordAuthenticationImpl.mqttsDeviceService.findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType(clientIdentifier, userName, new String(passwordInBytes), DeviceStatus.ENABLE.getValue(), ProtocolType.MQTT.getValue());
if (Optional.ofNullable(oneByClientIdAndUserNameAndPassword).isPresent()){
MqttsDevice mqttsDevice = PasswordAuthenticationImpl.mqttsDeviceService.findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType(clientIdentifier, userName, new String(passwordInBytes), "ENABLE", "MQTT").getData();
if (Optional.ofNullable(mqttsDevice).isPresent()) {
//更改设备在线状态为在线
PasswordAuthenticationImpl.mqttsDeviceService.updateConnectStatusByClientId(DeviceConnectStatus.ONLINE.getValue(),clientIdentifier);
PasswordAuthenticationImpl.mqttsDeviceService.updateConnectStatusByClientId(new MqttsDevice("INIT", clientIdentifier));
return true;
}
return false;
......
net.mqtts.broker.service.DemoMessageInterceptor
net.mqtts.broker.service.DeviceActionInterceptor
net.mqtts.broker.service.DeviceDatasInterceptor
\ No newline at end of file
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
,----, ,----,
____ ,/ .`| ,/ .`|
,' , `. ,----.. ,` .' : ,` .' : .--.--.
,-+-,.' _ | / / \ ; ; / ; ; // / '.
,-+-. ; , || / . : .'___,/ ,'.'___,/ ,'| : /`. /
,--.'|' | ;| . / ;. \| : | | : | ; | |--`
| | ,', | ':. ; / ` ;; |.'; ; ; |.'; ; | : ;_
| | / | | ||; | ; \ ; |`----' | | `----' | | \ \ `.
' | : | : |,| : | ; | ' ' : ; ' : ; `----. \
; . | ; |--' . | ' ' ' : | | ' | | ' __ \ \ |
| : | | , ' ; \; / | ' : | ' : | / /`--' /
| : ' |/ \ \ ', . \ ; |.' ; |.' '--'. /
; | |`-' ; : ; | '---' '---' `--'---'
| ;/ \ \ .'`--"
'---' `---`
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/mqtts-broker" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%black(mqtts.net) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger) - %cyan(%msg%n)" />
<!-- mqtts.net输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="net.mqtts" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
</configuration>
\ No newline at end of file
......@@ -89,40 +89,14 @@
<version>3.1.0</version>
</dependency>
<!-- https://github.com/quickmsg/smqtt V1.0.9 -->
<dependency>
<groupId>io.github.quickmsg</groupId>
<artifactId>smqtt-spring-boot-starter</artifactId>
<version>1.0.9</version>
<!-- 去除非必要版本 -->
<exclusions>
<exclusion>
<groupId>io.github.quickmsg</groupId>
<artifactId>smqtt-ui</artifactId>
</exclusion>
</exclusions>
<groupId>net.mqtts</groupId>
<artifactId>mqtts-api-link</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<!--<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.5</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>-->
<build>
<plugins>
<!--打包jar-->
......
package net.mqtts.link;
import io.github.quickmsg.starter.EnableMqttServer;
import net.mqtts.common.security.annotation.EnableCustomConfig;
import net.mqtts.common.security.annotation.EnableRyFeignClients;
import net.mqtts.common.swagger.annotation.EnableCustomSwagger2;
import net.mqtts.link.service.impl.PasswordAuthenticationImpl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.CrossOrigin;
import java.util.Iterator;
import java.util.ServiceLoader;
/**
* Link
*
* @author mqtts
*/
@EnableMqttServer
@EnableCustomConfig
@EnableCustomSwagger2
@EnableRyFeignClients
......
package net.mqtts.link.controller.device;
import net.mqtts.common.core.domain.R;
import net.mqtts.common.core.web.controller.BaseController;
import net.mqtts.common.core.web.domain.AjaxResult;
import net.mqtts.common.core.web.page.TableDataInfo;
import net.mqtts.common.log.annotation.Log;
import net.mqtts.common.log.enums.BusinessType;
import net.mqtts.common.security.annotation.PreAuthorize;
import net.mqtts.link.api.domain.MqttsDeviceAction;
import net.mqtts.link.service.device.MqttsDeviceActionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 设备动作Controller
*
* @author shisen
* @date 2021-11-20
*/
@RestController
@RequestMapping("/device/action")
public class MqttsDeviceActionController extends BaseController {
@Autowired
private MqttsDeviceActionService mqttsDeviceActionService;
/**
* 查询设备动作列表
*/
@PreAuthorize(hasPermi = "link:device:action:list")
@GetMapping("/list")
public TableDataInfo list(MqttsDeviceAction mqttsDeviceAction) {
startPage();
List<MqttsDeviceAction> list = mqttsDeviceActionService.selectMqttsDeviceActionList(mqttsDeviceAction);
return getDataTable(list);
}
/**
* 新增设备动作
*/
@Log(title = "设备动作", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R add(@RequestBody MqttsDeviceAction mqttsDeviceAction) {
return R.ok(mqttsDeviceActionService.insertOrUpdate(mqttsDeviceAction));
}
/**
* 删除设备动作
*/
@PreAuthorize(hasPermi = "link:device:action:remove")
@Log(title = "设备管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(mqttsDeviceActionService.deleteMqttsDeviceActionByIds(ids));
}
}
......@@ -4,6 +4,7 @@ import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import net.mqtts.common.core.domain.R;
import net.mqtts.common.core.utils.poi.ExcelUtil;
import net.mqtts.common.core.web.controller.BaseController;
import net.mqtts.common.core.web.domain.AjaxResult;
......@@ -11,28 +12,20 @@ import net.mqtts.common.core.web.page.TableDataInfo;
import net.mqtts.common.log.annotation.Log;
import net.mqtts.common.log.enums.BusinessType;
import net.mqtts.common.security.annotation.PreAuthorize;
import net.mqtts.link.api.domain.MqttsDevice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import net.mqtts.link.domain.device.MqttsDevice;
import org.springframework.web.bind.annotation.*;
import net.mqtts.link.service.device.MqttsDeviceService;
/**
* 设备管理Controller
*
*
* @author mqtts
* @date 2021-10-22
*/
@RestController
@RequestMapping("/device")
public class MqttsDeviceController extends BaseController
{
public class MqttsDeviceController extends BaseController {
@Autowired
private MqttsDeviceService mqttsDeviceService;
......@@ -41,8 +34,7 @@ public class MqttsDeviceController extends BaseController
*/
@PreAuthorize(hasPermi = "link:device:list")
@GetMapping("/list")
public TableDataInfo list(MqttsDevice mqttsDevice)
{
public TableDataInfo list(MqttsDevice mqttsDevice) {
startPage();
List<MqttsDevice> list = mqttsDeviceService.selectMqttsDeviceList(mqttsDevice);
return getDataTable(list);
......@@ -54,8 +46,7 @@ public class MqttsDeviceController extends BaseController
@PreAuthorize(hasPermi = "link:device:export")
@Log(title = "设备管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, MqttsDevice mqttsDevice) throws IOException
{
public void export(HttpServletResponse response, MqttsDevice mqttsDevice) throws IOException {
List<MqttsDevice> list = mqttsDeviceService.selectMqttsDeviceList(mqttsDevice);
ExcelUtil<MqttsDevice> util = new ExcelUtil<MqttsDevice>(MqttsDevice.class);
util.exportExcel(response, list, "设备管理数据");
......@@ -66,8 +57,7 @@ public class MqttsDeviceController extends BaseController
*/
@PreAuthorize(hasPermi = "link:device:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(mqttsDeviceService.selectMqttsDeviceById(id));
}
......@@ -77,8 +67,7 @@ public class MqttsDeviceController extends BaseController
@PreAuthorize(hasPermi = "link:device:add")
@Log(title = "设备管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody MqttsDevice mqttsDevice)
{
public AjaxResult add(@RequestBody MqttsDevice mqttsDevice) {
return toAjax(mqttsDeviceService.insertMqttsDevice(mqttsDevice));
}
......@@ -88,8 +77,7 @@ public class MqttsDeviceController extends BaseController
@PreAuthorize(hasPermi = "link:device:edit")
@Log(title = "设备管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody MqttsDevice mqttsDevice)
{
public AjaxResult edit(@RequestBody MqttsDevice mqttsDevice) {
return toAjax(mqttsDeviceService.updateMqttsDevice(mqttsDevice));
}
......@@ -98,9 +86,29 @@ public class MqttsDeviceController extends BaseController
*/
@PreAuthorize(hasPermi = "link:device:remove")
@Log(title = "设备管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(mqttsDeviceService.deleteMqttsDeviceByIds(ids));
}
/**
* 更新设备在线状态
*/
@Log(title = "设备管理", businessType = BusinessType.UPDATE)
@PutMapping("/updateConnectStatusByClientId")
public R updateConnectStatusByClientId(@RequestBody MqttsDevice mqttsDevice) {
return R.ok(mqttsDeviceService.updateConnectStatusByClientId(mqttsDevice.getConnectStatus(), mqttsDevice.getClientId()));
}
/**
* 认证接口
*/
@GetMapping("/findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType")
public R<MqttsDevice> findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType(@RequestParam(value = "clientId", required = true) String clientId,
@RequestParam(value = "userName", required = true) String userName,
@RequestParam(value = "password", required = true) String password,
@RequestParam(value = "deviceStatus", required = true) String deviceStatus,
@RequestParam(value = "protocolType", required = true) String protocolType) {
return R.ok(mqttsDeviceService.findOneByClientIdAndUserNameAndPasswordAndDeviceStatusAndProtocolType(clientId, userName, password, deviceStatus, protocolType));
}
}
package net.mqtts.link.controller.device;
import net.mqtts.common.core.domain.R;
import net.mqtts.common.core.web.controller.BaseController;
import net.mqtts.common.core.web.domain.AjaxResult;
import net.mqtts.common.core.web.page.TableDataInfo;
import net.mqtts.common.log.annotation.Log;
import net.mqtts.common.log.enums.BusinessType;
import net.mqtts.common.security.annotation.PreAuthorize;
import net.mqtts.link.api.domain.MqttsDeviceDatas;
import net.mqtts.link.service.device.MqttsDeviceDatasService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 设备消息Controller
*
* @author shisen
* @date 2021-11-20
*/
@RestController
@RequestMapping("/device/datas")
public class MqttsDeviceDatasController extends BaseController {
@Autowired
private MqttsDeviceDatasService mqttsDeviceDatasService;
/**
* 查询设备消息
*/
@PreAuthorize(hasPermi = "link:device:datas:list")
@GetMapping("/list")
public TableDataInfo list(MqttsDeviceDatas mqttsDeviceDatas) {
startPage();
List<MqttsDeviceDatas> list = mqttsDeviceDatasService.selectMqttsDeviceDatasList(mqttsDeviceDatas);
return getDataTable(list);
}
/**
* 新增设备消息
*/
@Log(title = "设备消息", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R add(@RequestBody MqttsDeviceDatas mqttsDeviceDatas) {
return R.ok(mqttsDeviceDatasService.insertOrUpdate(mqttsDeviceDatas));
}
/**
* 删除设备消息
*/
@PreAuthorize(hasPermi = "link:device:datas:remove")
@Log(title = "设备消息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(mqttsDeviceDatasService.deleteMqttsDeviceDatasByIds(ids));
}
}
package net.mqtts.link.mapper.device;
import java.util.List;
import net.mqtts.link.domain.device.MqttsDeviceAction;
import net.mqtts.link.api.domain.MqttsDeviceAction;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Mapper
public interface MqttsDeviceActionMapper {
/**
* delete by primary key
*
* @param id primaryKey
* @return deleteCount
*/
......@@ -37,6 +29,7 @@ public interface MqttsDeviceActionMapper {
/**
* insert record to table
*
* @param record the record
* @return insert count
*/
......@@ -50,13 +43,23 @@ public interface MqttsDeviceActionMapper {
/**
* insert record to table selective
*
* @param record the record
* @return insert count
*/
int insertSelective(MqttsDeviceAction record);
/**
* 查询设备动作列表
*
* @param record
* @return
*/
List<MqttsDeviceAction> selectMqttsDeviceActionList(MqttsDeviceAction record);
/**
* select by primary key
*
* @param id primary key
* @return object by primary key
*/
......@@ -64,6 +67,7 @@ public interface MqttsDeviceActionMapper {
/**
* update record selective
*
* @param record the updated record
* @return update count
*/
......@@ -73,6 +77,7 @@ public interface MqttsDeviceActionMapper {
/**
* update record
*
* @param record the updated record
* @return update count
*/
......@@ -83,4 +88,6 @@ public interface MqttsDeviceActionMapper {
int updateBatchSelective(List<MqttsDeviceAction> list);
int batchInsert(@Param("list") List<MqttsDeviceAction> list);
int deleteMqttsDeviceActionByIds(Long[] ids);
}
\ No newline at end of file
package net.mqtts.link.mapper.device;
import java.util.List;
import net.mqtts.link.domain.device.MqttsDeviceDatas;
import net.mqtts.link.api.domain.MqttsDeviceDatas;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -55,6 +56,8 @@ public interface MqttsDeviceDatasMapper {
*/
int insertSelective(MqttsDeviceDatas record);
List<MqttsDeviceDatas> selectMqttsDeviceDatasList(MqttsDeviceDatas record);
/**
* select by primary key
* @param id primary key
......@@ -83,4 +86,6 @@ public interface MqttsDeviceDatasMapper {
int updateBatchSelective(List<MqttsDeviceDatas> list);
int batchInsert(@Param("list") List<MqttsDeviceDatas> list);
int deleteMqttsDeviceDatasByIds(Long[] ids);
}
\ No newline at end of file
package net.mqtts.link.mapper.device;
import net.mqtts.link.api.domain.MqttsDevice;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import net.mqtts.link.domain.device.MqttsDevice;
/**
* 设备管理Mapper接口
*
......
package net.mqtts.link.service.device;
import java.util.List;
import net.mqtts.link.domain.device.MqttsDeviceAction;
/**
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
import net.mqtts.link.api.domain.MqttsDeviceAction;
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
import java.util.List;
*/
public interface MqttsDeviceActionService{
/**
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
public interface MqttsDeviceActionService {
int deleteByPrimaryKey(Long id);
......@@ -38,6 +30,8 @@ public interface MqttsDeviceActionService{
int insertSelective(MqttsDeviceAction record);
List<MqttsDeviceAction> selectMqttsDeviceActionList(MqttsDeviceAction record);
MqttsDeviceAction selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(MqttsDeviceAction record);
......@@ -52,4 +46,5 @@ public interface MqttsDeviceActionService{
int batchInsert(List<MqttsDeviceAction> list);
int deleteMqttsDeviceActionByIds(Long[] ids);
}
package net.mqtts.link.service.device;
import java.util.List;
import net.mqtts.link.domain.device.MqttsDeviceDatas;
/**
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
import net.mqtts.link.api.domain.MqttsDeviceDatas;
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
import java.util.List;
*/
public interface MqttsDeviceDatasService{
/**
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
public interface MqttsDeviceDatasService {
int deleteByPrimaryKey(Long id);
......@@ -38,6 +30,8 @@ public interface MqttsDeviceDatasService{
int insertSelective(MqttsDeviceDatas record);
List<MqttsDeviceDatas> selectMqttsDeviceDatasList(MqttsDeviceDatas record);
MqttsDeviceDatas selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(MqttsDeviceDatas record);
......@@ -52,4 +46,5 @@ public interface MqttsDeviceDatasService{
int batchInsert(List<MqttsDeviceDatas> list);
int deleteMqttsDeviceDatasByIds(Long[] ids);
}
package net.mqtts.link.service.device;
import java.util.List;
import net.mqtts.link.api.domain.MqttsDevice;
import net.mqtts.link.domain.device.MqttsDevice;
import java.util.List;
/**
* 设备管理Service接口
......
package net.mqtts.link.service.device.impl;
import net.mqtts.link.domain.device.MqttsDeviceAction;
import net.mqtts.link.api.domain.MqttsDeviceAction;
import net.mqtts.link.mapper.device.MqttsDeviceActionMapper;
import net.mqtts.link.service.device.MqttsDeviceActionService;
import org.springframework.stereotype.Service;
......@@ -9,28 +9,18 @@ import javax.annotation.Resource;
import java.util.List;
/**
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
* @Description: java类作用描述
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/18$ 9:41$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/18$ 9:41$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Service
public class MqttsDeviceActionServiceImpl implements MqttsDeviceActionService{
public class MqttsDeviceActionServiceImpl implements MqttsDeviceActionService {
@Resource
private MqttsDeviceActionMapper mqttsDeviceActionMapper;
......@@ -65,6 +55,11 @@ public class MqttsDeviceActionServiceImpl implements MqttsDeviceActionService{
return mqttsDeviceActionMapper.insertSelective(record);
}
@Override
public List<MqttsDeviceAction> selectMqttsDeviceActionList(MqttsDeviceAction record) {
return mqttsDeviceActionMapper.selectMqttsDeviceActionList(record);
}
@Override
public MqttsDeviceAction selectByPrimaryKey(Long id) {
return mqttsDeviceActionMapper.selectByPrimaryKey(id);
......@@ -100,4 +95,9 @@ public class MqttsDeviceActionServiceImpl implements MqttsDeviceActionService{
return mqttsDeviceActionMapper.batchInsert(list);
}
@Override
public int deleteMqttsDeviceActionByIds(Long[] ids) {
return mqttsDeviceActionMapper.deleteMqttsDeviceActionByIds(ids);
}
}
package net.mqtts.link.service.device.impl;
import net.mqtts.link.domain.device.MqttsDeviceDatas;
import net.mqtts.link.api.domain.MqttsDeviceDatas;
import net.mqtts.link.mapper.device.MqttsDeviceDatasMapper;
import net.mqtts.link.service.device.MqttsDeviceDatasService;
import org.springframework.stereotype.Service;
......@@ -65,6 +65,11 @@ public class MqttsDeviceDatasServiceImpl implements MqttsDeviceDatasService{
return mqttsDeviceDatasMapper.insertSelective(record);
}
@Override
public List<MqttsDeviceDatas> selectMqttsDeviceDatasList(MqttsDeviceDatas record) {
return mqttsDeviceDatasMapper.selectMqttsDeviceDatasList(record);
}
@Override
public MqttsDeviceDatas selectByPrimaryKey(Long id) {
return mqttsDeviceDatasMapper.selectByPrimaryKey(id);
......@@ -100,4 +105,9 @@ public class MqttsDeviceDatasServiceImpl implements MqttsDeviceDatasService{
return mqttsDeviceDatasMapper.batchInsert(list);
}
@Override
public int deleteMqttsDeviceDatasByIds(Long[] ids) {
return mqttsDeviceDatasMapper.deleteMqttsDeviceDatasByIds(ids);
}
}
......@@ -2,7 +2,7 @@ package net.mqtts.link.service.device.impl;
import net.mqtts.common.core.utils.DateUtils;
import net.mqtts.common.security.service.TokenService;
import net.mqtts.link.domain.device.MqttsDevice;
import net.mqtts.link.api.domain.MqttsDevice;
import net.mqtts.link.mapper.device.MqttsDeviceMapper;
import net.mqtts.link.service.device.MqttsDeviceService;
import org.springframework.beans.factory.annotation.Autowired;
......
net.mqtts.link.service.impl.DemoMessageInterceptor
net.mqtts.link.service.impl.DeviceActionInterceptor
net.mqtts.link.service.impl.DeviceDatasInterceptor
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.mqtts.link.mapper.device.MqttsDeviceActionMapper">
<resultMap id="BaseResultMap" type="net.mqtts.link.domain.device.MqttsDeviceAction">
<resultMap id="BaseResultMap" type="net.mqtts.link.api.domain.MqttsDeviceAction">
<!--@mbg.generated-->
<!--@Table mqtts.mqtts_device_action-->
<id column="id" jdbcType="BIGINT" property="id" />
......@@ -10,11 +10,21 @@
<result column="status" jdbcType="VARCHAR" property="status" />
<result column="create_time" jdbcType="TIMESTAMP" property="create_time" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="net.mqtts.link.domain.device.MqttsDeviceAction">
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="net.mqtts.link.api.domain.MqttsDeviceAction">
<!--@mbg.generated-->
<!--@Table mqtts.mqtts_device_action-->
<result column="message" jdbcType="LONGVARCHAR" property="message" />
</resultMap>
<resultMap id="MqttsDeviceActionResult" type="net.mqtts.link.api.domain.MqttsDeviceAction">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="device_id" jdbcType="VARCHAR" property="device_id" />
<result column="action_type" jdbcType="VARCHAR" property="action_type" />
<result column="status" jdbcType="VARCHAR" property="status" />
<result column="message" jdbcType="LONGVARCHAR" property="message" />
<result column="create_time" jdbcType="TIMESTAMP" property="create_time" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, device_id, action_type, `status`, create_time
......@@ -23,6 +33,19 @@
<!--@mbg.generated-->
message
</sql>
<sql id="selectMqttsDeviceActionVo">
select id, device_id, action_type, message, status, create_time from mqtts_device_action
</sql>
<select id="selectMqttsDeviceActionList" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction" resultMap="MqttsDeviceActionResult">
<include refid="selectMqttsDeviceActionVo"/>
<where>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="deviceId != null and deviceId != ''"> and device_id = #{deviceId}</if>
</where>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="ResultMapWithBLOBs">
<!--@mbg.generated-->
select
......@@ -37,14 +60,14 @@
delete from mqtts.mqtts_device_action
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction" useGeneratedKeys="true">
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_action (device_id, action_type, `status`,
create_time, message)
values (#{device_id,jdbcType=VARCHAR}, #{action_type,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR},
#{create_time,jdbcType=TIMESTAMP}, #{message,jdbcType=LONGVARCHAR})
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction" useGeneratedKeys="true">
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_action
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -82,7 +105,7 @@
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction">
<update id="updateByPrimaryKeySelective" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction">
<!--@mbg.generated-->
update mqtts.mqtts_device_action
<set>
......@@ -104,7 +127,7 @@
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction">
<update id="updateByPrimaryKeyWithBLOBs" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction">
<!--@mbg.generated-->
update mqtts.mqtts_device_action
set device_id = #{device_id,jdbcType=VARCHAR},
......@@ -114,7 +137,7 @@
message = #{message,jdbcType=LONGVARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction">
<update id="updateByPrimaryKey" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction">
<!--@mbg.generated-->
update mqtts.mqtts_device_action
set device_id = #{device_id,jdbcType=VARCHAR},
......@@ -213,7 +236,7 @@
#{item.create_time,jdbcType=TIMESTAMP}, #{item.message,jdbcType=LONGVARCHAR})
</foreach>
</insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction" useGeneratedKeys="true">
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_action
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -246,7 +269,7 @@
create_time = #{create_time,jdbcType=TIMESTAMP},
</trim>
</insert>
<insert id="insertOrUpdateWithBLOBs" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction" useGeneratedKeys="true">
<insert id="insertOrUpdateWithBLOBs" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_action
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -282,7 +305,7 @@
message = #{message,jdbcType=LONGVARCHAR},
</trim>
</insert>
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceAction" useGeneratedKeys="true">
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceAction" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_action
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -348,4 +371,11 @@
</if>
</trim>
</insert>
<delete id="deleteMqttsDeviceActionByIds" parameterType="String">
delete from mqtts_device_action where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.mqtts.link.mapper.device.MqttsDeviceDatasMapper">
<resultMap id="BaseResultMap" type="net.mqtts.link.domain.device.MqttsDeviceDatas">
<resultMap id="BaseResultMap" type="net.mqtts.link.api.domain.MqttsDeviceDatas">
<!--@mbg.generated-->
<!--@Table mqtts.mqtts_device_datas-->
<id column="id" jdbcType="BIGINT" property="id" />
......@@ -11,11 +11,12 @@
<result column="status" jdbcType="VARCHAR" property="status" />
<result column="create_time" jdbcType="TIMESTAMP" property="create_time" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="net.mqtts.link.domain.device.MqttsDeviceDatas">
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="net.mqtts.link.api.domain.MqttsDeviceDatas">
<!--@mbg.generated-->
<!--@Table mqtts.mqtts_device_datas-->
<result column="message" jdbcType="LONGVARCHAR" property="message" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, device_id, message_id, topic, `status`, create_time
......@@ -24,6 +25,20 @@
<!--@mbg.generated-->
message
</sql>
<sql id="selectMqttsDeviceDatasVo">
select id, device_id, message_id, topic, `status`, message,create_time from mqtts_device_datas
</sql>
<select id="selectMqttsDeviceDatasList" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas" resultMap="BaseResultMap">
<include refid="selectMqttsDeviceDatasVo"/>
<where>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="deviceId != null and deviceId != ''"> and device_id = #{deviceId}</if>
</where>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="ResultMapWithBLOBs">
<!--@mbg.generated-->
select
......@@ -38,7 +53,7 @@
delete from mqtts.mqtts_device_datas
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas" useGeneratedKeys="true">
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_datas (device_id, message_id, topic,
`status`, create_time, message
......@@ -47,7 +62,7 @@
#{status,jdbcType=VARCHAR}, #{create_time,jdbcType=TIMESTAMP}, #{message,jdbcType=LONGVARCHAR}
)
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas" useGeneratedKeys="true">
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_datas
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -91,7 +106,7 @@
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas">
<update id="updateByPrimaryKeySelective" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas">
<!--@mbg.generated-->
update mqtts.mqtts_device_datas
<set>
......@@ -116,7 +131,7 @@
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas">
<update id="updateByPrimaryKeyWithBLOBs" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas">
<!--@mbg.generated-->
update mqtts.mqtts_device_datas
set device_id = #{device_id,jdbcType=VARCHAR},
......@@ -127,7 +142,7 @@
message = #{message,jdbcType=LONGVARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas">
<update id="updateByPrimaryKey" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas">
<!--@mbg.generated-->
update mqtts.mqtts_device_datas
set device_id = #{device_id,jdbcType=VARCHAR},
......@@ -240,7 +255,7 @@
)
</foreach>
</insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas" useGeneratedKeys="true">
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_datas
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -276,7 +291,7 @@
create_time = #{create_time,jdbcType=TIMESTAMP},
</trim>
</insert>
<insert id="insertOrUpdateWithBLOBs" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas" useGeneratedKeys="true">
<insert id="insertOrUpdateWithBLOBs" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_datas
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -315,7 +330,7 @@
message = #{message,jdbcType=LONGVARCHAR},
</trim>
</insert>
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.domain.device.MqttsDeviceDatas" useGeneratedKeys="true">
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="net.mqtts.link.api.domain.MqttsDeviceDatas" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into mqtts.mqtts_device_datas
<trim prefix="(" suffix=")" suffixOverrides=",">
......@@ -390,4 +405,13 @@
</if>
</trim>
</insert>
<delete id="deleteMqttsDeviceDatasByIds" parameterType="String">
delete from mqtts_device_action where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
......@@ -29,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update_time,
remark
</sql>
<resultMap id="BaseResultMap" type="net.mqtts.link.domain.device.MqttsDevice">
<resultMap id="BaseResultMap" type="net.mqtts.link.api.domain.MqttsDevice">
<result column="id" property="id"/>
<result column="client_id" property="clientId"/>
<result column="user_name" property="userName"/>
......@@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result column="update_time" property="updateTime"/>
<result column="remark" property="remark"/>
</resultMap>
<resultMap type="net.mqtts.link.domain.device.MqttsDevice" id="MqttsDeviceResult">
<resultMap type="net.mqtts.link.api.domain.MqttsDevice" id="MqttsDeviceResult">
<result property="id" column="id" />
<result property="clientId" column="client_id" />
<result property="userName" column="user_name" />
......@@ -86,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select id, client_id, user_name, password, auth_mode, device_id, device_name, latitude, longitude, connector, device_description, device_status, connect_status, is_will, device_tags, product_id, manufacturer_id, protocol_type, device_type, create_by, create_time, update_by, update_time, remark from mqtts_device
</sql>
<select id="selectMqttsDeviceList" parameterType="net.mqtts.link.domain.device.MqttsDevice" resultMap="MqttsDeviceResult">
<select id="selectMqttsDeviceList" parameterType="net.mqtts.link.api.domain.MqttsDevice" resultMap="MqttsDeviceResult">
<include refid="selectMqttsDeviceVo"/>
<where>
<if test="clientId != null and clientId != ''"> and client_id like concat('%', #{clientId}, '%')</if>
......@@ -108,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</select>
<insert id="insertMqttsDevice" parameterType="net.mqtts.link.domain.device.MqttsDevice">
<insert id="insertMqttsDevice" parameterType="net.mqtts.link.api.domain.MqttsDevice">
insert into mqtts_device
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
......@@ -164,7 +164,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateMqttsDevice" parameterType="net.mqtts.link.domain.device.MqttsDevice">
<update id="updateMqttsDevice" parameterType="net.mqtts.link.api.domain.MqttsDevice">
update mqtts_device
<trim prefix="SET" suffixOverrides=",">
<if test="clientId != null and clientId != ''">client_id = #{clientId},</if>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册