Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
iot-service
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SuperHive
back-end
iot-service
Commits
1a639a0f
Commit
1a639a0f
authored
Aug 14, 2020
by
huangcb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加获取设备接入信息功能接口
parent
431f4572
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
322 additions
and
30 deletions
+322
-30
MqttAcl.java
...java/com/esv/datacenter/iot/common/component/MqttAcl.java
+8
-2
MqttClientAuthComponent.java
...acenter/iot/common/component/MqttClientAuthComponent.java
+56
-2
DeviceInstanceController.java
...dule/devicemodel/controller/DeviceInstanceController.java
+16
-0
DeviceInstanceDao.java
...acenter/iot/module/devicemodel/dao/DeviceInstanceDao.java
+10
-0
DeviceInstanceFullMapDto.java
.../iot/module/devicemodel/dto/DeviceInstanceFullMapDto.java
+42
-0
DeviceInstanceForm.java
...enter/iot/module/devicemodel/form/DeviceInstanceForm.java
+2
-2
DeviceInstanceService.java
...iot/module/devicemodel/service/DeviceInstanceService.java
+20
-0
DeviceDataMapServiceImpl.java
...le/devicemodel/service/impl/DeviceDataMapServiceImpl.java
+5
-2
DeviceInstanceServiceImpl.java
...e/devicemodel/service/impl/DeviceInstanceServiceImpl.java
+46
-6
DeviceInstanceAccessInfoVO.java
...iot/module/devicemodel/vo/DeviceInstanceAccessInfoVO.java
+48
-0
DeviceInstanceMqttTopicInfoVO.java
.../module/devicemodel/vo/DeviceInstanceMqttTopicInfoVO.java
+33
-0
DeviceInstanceDao.xml
src/main/resources/mapper/devicemodel/DeviceInstanceDao.xml
+25
-0
BaseTestController.java
src/test/java/com/esv/datacenter/iot/BaseTestController.java
+2
-4
SimpleTest.java
src/test/java/com/esv/datacenter/iot/SimpleTest.java
+3
-11
MqttClientAuthComponentTest.java
...ter/iot/common/component/MqttClientAuthComponentTest.java
+6
-1
No files found.
src/main/java/com/esv/datacenter/iot/common/component/MqttAcl.java
View file @
1a639a0f
...
...
@@ -4,6 +4,8 @@ import lombok.Data;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.Date
;
/**
* @description:
* @author: huangchaobin@esvtek.com
...
...
@@ -24,7 +26,7 @@ public class MqttAcl {
/**
* IpAddress
*/
private
String
ip
A
ddr
;
private
String
ip
a
ddr
;
/**
* Username
*/
...
...
@@ -32,7 +34,7 @@ public class MqttAcl {
/**
* ClientId
*/
private
String
client
I
d
;
private
String
client
i
d
;
/**
* 1: subscribe, 2: publish, 3: pubsub
*/
...
...
@@ -41,6 +43,10 @@ public class MqttAcl {
* Topic Filter
*/
private
String
topic
;
/**
* create time
*/
private
Date
create_time
;
@Override
public
String
toString
()
{
...
...
src/main/java/com/esv/datacenter/iot/common/component/MqttClientAuthComponent.java
View file @
1a639a0f
package
com
.
esv
.
datacenter
.
iot
.
common
.
component
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zaxxer.hikari.HikariDataSource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.cloud.context.config.annotation.RefreshScope
;
import
org.springframework.dao.DataAccessException
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
/**
...
...
@@ -68,7 +73,7 @@ public class MqttClientAuthComponent {
public
void
saveClientAcl
(
List
<
MqttAcl
>
mqttAclList
)
{
HikariDataSource
dataSource
=
this
.
getHikariDataSource4Transaction
();
String
clientId
=
mqttAclList
.
get
(
0
).
getClient
I
d
();
String
clientId
=
mqttAclList
.
get
(
0
).
getClient
i
d
();
try
{
JdbcTemplate
jdbcTemplate
=
new
JdbcTemplate
(
dataSource
);
// 删除clientId原有记录
...
...
@@ -85,7 +90,7 @@ public class MqttClientAuthComponent {
.
append
(
"(allow, username, clientid, access, topic) VALUES("
)
.
append
(
mqttAcl
.
getAllow
())
.
append
(
",'"
).
append
(
clientAuthUserName
).
append
(
"'"
)
.
append
(
",'"
).
append
(
mqttAcl
.
getClient
I
d
()).
append
(
"'"
)
.
append
(
",'"
).
append
(
mqttAcl
.
getClient
i
d
()).
append
(
"'"
)
.
append
(
","
).
append
(
mqttAcl
.
getAccess
())
.
append
(
",'"
).
append
(
mqttAcl
.
getTopic
()).
append
(
"'"
)
.
append
(
");"
);
...
...
@@ -135,6 +140,55 @@ public class MqttClientAuthComponent {
}
}
/**
* @description 获取客户端的Topic信息
* @param clientId:
* @return java.util.List<com.esv.datacenter.iot.common.component.MqttAcl>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/14 10:47
**/
public
List
<
MqttAcl
>
getClientTopicInfo
(
String
clientId
)
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"SELECT * FROM "
).
append
(
tableName
).
append
(
" where clientid = ?;"
);
String
querySql
=
sb
.
toString
();
log
.
info
(
"查询SQL:{}"
,
querySql
);
List
<
MqttAcl
>
mqttAclList
=
null
;
HikariDataSource
dataSource
=
this
.
getHikariDataSource
();
try
{
JdbcTemplate
jdbcTemplate
=
new
JdbcTemplate
(
dataSource
);
Object
[]
args
=
new
Object
[]
{
clientId
};
List
<
Map
<
String
,
Object
>>
resultMapList
=
jdbcTemplate
.
queryForList
(
querySql
,
args
);
mqttAclList
=
new
ArrayList
<>();
for
(
Map
<
String
,
Object
>
map
:
resultMapList
)
{
JSONObject
json
=
new
JSONObject
();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
map
.
entrySet
()){
json
.
put
(
entry
.
getKey
(),
entry
.
getValue
());
}
MqttAcl
mqttAcl
=
JSON
.
parseObject
(
json
.
toString
(),
MqttAcl
.
class
);
mqttAclList
.
add
(
mqttAcl
);
}
}
catch
(
DataAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
log
.
error
(
"查询[clientId={}]Topic信息失败"
,
clientId
);
log
.
error
(
e
.
getMessage
(),
e
);
throw
e
;
}
finally
{
// 关闭数据源
if
(
Objects
.
nonNull
(
dataSource
)
&&
!
dataSource
.
isClosed
())
{
dataSource
.
close
();
}
}
return
mqttAclList
;
}
public
HikariDataSource
getHikariDataSource
()
{
HikariDataSource
dataSource
=
this
.
dynamicDataSource
.
getDynamicDataSource
(
initDataSourceConfig
());
return
dataSource
;
}
private
HikariDataSource
getHikariDataSource4Transaction
()
{
HikariDataSource
dataSource
=
this
.
dynamicDataSource
.
getDynamicDataSource4Transaction
(
initDataSourceConfig
());
return
dataSource
;
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/controller/DeviceInstanceController.java
View file @
1a639a0f
...
...
@@ -120,4 +120,20 @@ public class DeviceInstanceController {
return
EResponse
.
ok
(
deviceInstanceService
.
getInstanceListByTypeId
(
form
.
getDeviceTypeId
()));
}
/**
* @description 获取设备接入信息
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/14 9:43
**/
@PostMapping
(
"/accessInfo/get"
)
public
EResponse
getAccessInfo
(
@RequestBody
@Validated
(
ValidatorDetail
.
class
)
DeviceInstanceForm
form
)
throws
EException
{
if
(!
deviceInstanceService
.
isValidId
(
form
.
getId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备ID"
);
}
return
EResponse
.
ok
(
deviceInstanceService
.
getAccessInfoByInstanceId
(
form
.
getId
()));
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dao/DeviceInstanceDao.java
View file @
1a639a0f
...
...
@@ -3,6 +3,7 @@ package com.esv.datacenter.iot.module.devicemodel.dao;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto
;
import
com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceFullMapDto
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm
;
import
org.apache.ibatis.annotations.Mapper
;
...
...
@@ -47,5 +48,14 @@ public interface DeviceInstanceDao extends BaseMapper<DeviceInstanceEntity> {
* @createTime 2020/08/13 16:58
**/
List
<
DeviceInstanceDto
>
select4List
(
DeviceInstanceDto
dto
);
/**
* @description 查询设备实例的设备类型、数据模型映射
* @param instanceId:
* @return java.util.List<com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceFullMapDto>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/14 11:14
**/
List
<
DeviceInstanceFullMapDto
>
selectDeviceInstanceFullMap
(
Long
instanceId
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dto/DeviceInstanceFullMapDto.java
0 → 100644
View file @
1a639a0f
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dto
;
import
lombok.Data
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/14 11:10
* @version:1.0
*/
@Data
public
class
DeviceInstanceFullMapDto
{
/**
* 设备实例ID
*/
private
Long
instanceId
;
/**
* 设备实例名称
*/
private
String
instanceName
;
/**
* 通信ID
**/
private
String
communicationId
;
/**
* 设备类型ID
*/
private
Long
deviceTypeId
;
/**
* 设备类型名称
*/
private
String
deviceTypeName
;
/**
* 数据模型ID
*/
private
Long
dataModelId
;
/**
* 数据模型名称
*/
private
String
dataModelName
;
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/form/DeviceInstanceForm.java
View file @
1a639a0f
...
...
@@ -22,12 +22,12 @@ public class DeviceInstanceForm {
/**
*
*/
@NotNull
(
message
=
"[设备ID]不能为空"
,
groups
=
{
ValidatorDelete
.
class
,
ValidatorUpdate
.
class
})
@NotNull
(
message
=
"[设备ID]不能为空"
,
groups
=
{
ValidatorDelete
.
class
,
ValidatorUpdate
.
class
,
ValidatorDetail
.
class
})
private
Long
id
;
/**
* 设备类型ID
*/
// @NotNull(message = "[设备类型ID]不能为空", groups = {ValidatorInsert.class, ValidatorLis
t.class, ValidatorListById.class})
@NotNull
(
message
=
"[设备类型ID]不能为空"
,
groups
=
{
ValidatorInser
t
.
class
,
ValidatorListById
.
class
})
private
Long
deviceTypeId
;
/**
* 设备名称
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceInstanceService.java
View file @
1a639a0f
...
...
@@ -3,8 +3,10 @@ package com.esv.datacenter.iot.module.devicemodel.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.common.vo.PageResultVO
;
import
com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto
;
import
com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceFullMapDto
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceAccessInfoVO
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceVO
;
import
java.util.List
;
...
...
@@ -137,5 +139,23 @@ public interface DeviceInstanceService extends IService<DeviceInstanceEntity> {
**/
void
saveInstanceMqttTopicAuth
(
Long
deviceTypeId
,
Long
deviceInstanceId
,
String
clientId
);
/**
* @description 获取设备实例的设备类型、数据模型映射
* @param instanceId:
* @return java.util.List<com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceFullMapDto>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/14 11:15
**/
List
<
DeviceInstanceFullMapDto
>
getDeviceInstanceFullMap
(
Long
instanceId
);
/**
* @description 获取设备接入信息
* @param id:
* @return com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceAccessInfoVO
* @author huangChaobin@esvtek.com
* @createTime 2020/08/14 10:57
**/
DeviceInstanceAccessInfoVO
getAccessInfoByInstanceId
(
Long
id
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceDataMapServiceImpl.java
View file @
1a639a0f
...
...
@@ -73,10 +73,13 @@ public class DeviceDataMapServiceImpl extends ServiceImpl<DeviceDataMapDao, Devi
for
(
String
dataModelId
:
dataModelIdList
)
{
MqttAcl
mqttAcl
=
new
MqttAcl
();
mqttAcl
.
setAllow
(
1
);
mqttAcl
.
setClient
I
d
(
communicationId
);
mqttAcl
.
setClient
i
d
(
communicationId
);
mqttAcl
.
setAccess
(
2
);
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"$esv/iot/"
).
append
(
dataModelId
).
append
(
deviceTypeId
).
append
(
deviceInstanceId
).
append
(
"/data/upload"
);
sb
.
append
(
"$esv/iot/"
)
.
append
(
dataModelId
).
append
(
"/"
)
.
append
(
deviceTypeId
).
append
(
"/"
)
.
append
(
deviceInstanceId
).
append
(
"/data/upload"
);
mqttAcl
.
setTopic
(
sb
.
toString
());
mqttAclList
.
add
(
mqttAcl
);
}
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceInstanceServiceImpl.java
View file @
1a639a0f
...
...
@@ -13,10 +13,13 @@ import com.esv.datacenter.iot.common.vo.PageResultVO;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity
;
import
com.esv.datacenter.iot.module.devicemodel.dao.DeviceInstanceDao
;
import
com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto
;
import
com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceFullMapDto
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceDataMapService
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceInstanceService
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceAccessInfoVO
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceMqttTopicInfoVO
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -25,10 +28,6 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
@Service
(
"deviceInstanceService"
)
...
...
@@ -204,14 +203,55 @@ public class DeviceInstanceServiceImpl extends ServiceImpl<DeviceInstanceDao, De
for
(
DataModelEntity
dataModelEntity
:
dataModelEntityList
)
{
MqttAcl
mqttAcl
=
new
MqttAcl
();
mqttAcl
.
setAllow
(
1
);
mqttAcl
.
setClient
I
d
(
clientId
);
mqttAcl
.
setClient
i
d
(
clientId
);
mqttAcl
.
setAccess
(
2
);
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"$esv/iot/"
).
append
(
dataModelEntity
.
getId
()).
append
(
deviceTypeId
).
append
(
deviceInstanceId
).
append
(
"/data/upload"
);
sb
.
append
(
"$esv/iot/"
)
.
append
(
dataModelEntity
.
getId
()).
append
(
"/"
)
.
append
(
deviceTypeId
).
append
(
"/"
)
.
append
(
deviceInstanceId
).
append
(
"/data/upload"
);
mqttAcl
.
setTopic
(
sb
.
toString
());
mqttAclList
.
add
(
mqttAcl
);
}
mqttClientAuthComponent
.
saveClientAcl
(
mqttAclList
);
}
@Override
public
List
<
DeviceInstanceFullMapDto
>
getDeviceInstanceFullMap
(
Long
instanceId
)
{
return
this
.
getBaseMapper
().
selectDeviceInstanceFullMap
(
instanceId
);
}
@Override
public
DeviceInstanceAccessInfoVO
getAccessInfoByInstanceId
(
Long
id
)
{
// 获取设备实例的设备类型、数据模型映射
List
<
DeviceInstanceFullMapDto
>
deviceInstanceFullMapDtoList
=
this
.
getDeviceInstanceFullMap
(
id
);
// 获取设备对应的Mqtt Topic信息
String
clientId
=
deviceInstanceFullMapDtoList
.
get
(
0
).
getCommunicationId
();
List
<
MqttAcl
>
mqttAclList
=
mqttClientAuthComponent
.
getClientTopicInfo
(
clientId
);
Map
<
Long
,
String
>
mqttTopicMap
=
new
HashMap
<>(
32
);
for
(
MqttAcl
mqttAcl
:
mqttAclList
)
{
Long
dataModelId
=
Long
.
parseLong
(
mqttAcl
.
getTopic
().
replaceFirst
(
"\\$esv/iot/"
,
""
).
substring
(
0
,
1
));
mqttTopicMap
.
put
(
dataModelId
,
mqttAcl
.
getTopic
());
}
// 构造返回数据
DeviceInstanceAccessInfoVO
vo
=
new
DeviceInstanceAccessInfoVO
();
vo
.
setInstanceId
(
deviceInstanceFullMapDtoList
.
get
(
0
).
getInstanceId
());
vo
.
setInstanceName
(
deviceInstanceFullMapDtoList
.
get
(
0
).
getInstanceName
());
vo
.
setCommunicationId
(
deviceInstanceFullMapDtoList
.
get
(
0
).
getCommunicationId
());
vo
.
setDeviceTypeId
(
deviceInstanceFullMapDtoList
.
get
(
0
).
getDeviceTypeId
());
vo
.
setDeviceTypeName
(
deviceInstanceFullMapDtoList
.
get
(
0
).
getDeviceTypeName
());
List
<
DeviceInstanceMqttTopicInfoVO
>
mqttTopicInfoVOList
=
new
ArrayList
<>();
for
(
DeviceInstanceFullMapDto
dto
:
deviceInstanceFullMapDtoList
)
{
DeviceInstanceMqttTopicInfoVO
topicInfoVO
=
new
DeviceInstanceMqttTopicInfoVO
();
topicInfoVO
.
setDataModelId
(
dto
.
getDataModelId
());
topicInfoVO
.
setDataModelName
(
dto
.
getDataModelName
());
topicInfoVO
.
setMqttTopic
(
mqttTopicMap
.
get
(
dto
.
getDataModelId
()));
}
vo
.
setMqttTopicInfoVOList
(
mqttTopicInfoVOList
);
return
vo
;
}
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/devicemodel/vo/DeviceInstanceAccessInfoVO.java
0 → 100644
View file @
1a639a0f
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
vo
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.List
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/14 10:49
* @version:1.0
*/
@Data
public
class
DeviceInstanceAccessInfoVO
{
/**
* 设备实例ID
*/
private
Long
instanceId
;
/**
* 设备实例名称
*/
private
String
instanceName
;
/**
* 通信ID
**/
private
String
communicationId
;
/**
* 设备类型ID
*/
private
Long
deviceTypeId
;
/**
* 设备类型名称
*/
private
String
deviceTypeName
;
/**
* Mqtt Topic信息列表
**/
List
<
DeviceInstanceMqttTopicInfoVO
>
mqttTopicInfoVOList
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/vo/DeviceInstanceMqttTopicInfoVO.java
0 → 100644
View file @
1a639a0f
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
vo
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/14 10:55
* @version:1.0
*/
@Data
public
class
DeviceInstanceMqttTopicInfoVO
{
/**
* 数据模型ID
*/
private
Long
dataModelId
;
/**
* 数据模型名称
*/
private
String
dataModelName
;
/**
* Mqtt Topic
*/
private
String
mqttTopic
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/resources/mapper/devicemodel/DeviceInstanceDao.xml
View file @
1a639a0f
...
...
@@ -67,4 +67,29 @@
ORDER BY b.name ASC
</select>
<select
id=
"selectDeviceInstanceFullMap"
parameterType=
"java.lang.Long"
resultType=
"com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceFullMapDto"
>
select
ab.*, ac.dataModelId, ac.dataModelName
from (select a.id as instanceId, a.name as instanceName, a.communication_id as communicationId,
b.id as deviceTypeId, b.name as deviceTypeName
from device_instance a, device_type b
where 1=1
<if
test=
"instanceId != null"
>
and a.id = #{instanceId}
</if>
and a.device_type_id = b.id and a.deleted = false and b.deleted = false)ab
left join (select a.id as instanceId, c.id as dataModelId, c.name as dataModelName
from device_instance a, data_model c, device_data_map d
where 1=1
<if
test=
"instanceId != null"
>
and a.id = #{instanceId}
</if>
and a.deleted = false and c.deleted = false
and a.device_type_id = d.device_type_id
and d.data_model_id = c.id)ac
on ab.instanceId=ac.instanceId
order by instanceId asc
</select>
</mapper>
\ No newline at end of file
src/test/java/com/esv/datacenter/iot/BaseTestController.java
View file @
1a639a0f
...
...
@@ -52,14 +52,12 @@ public class BaseTestController {
public
HttpHeaders
getDefaultHttpHeaders
()
{
HttpHeaders
httpHeaders
=
new
HttpHeaders
();
httpHeaders
.
add
(
"gateway_traceid"
,
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
));
httpHeaders
.
add
(
"esv_system"
,
"
cc
"
);
httpHeaders
.
add
(
"esv_system"
,
"
iot
"
);
httpHeaders
.
add
(
"esv_data_perm"
,
"0"
);
httpHeaders
.
add
(
"esv_tenant"
,
"1"
);
httpHeaders
.
add
(
"esv_department"
,
"1"
);
httpHeaders
.
add
(
"esv_department_children"
,
"1,2,3"
);
httpHeaders
.
add
(
"esv_department"
,
"0"
);
httpHeaders
.
add
(
"esv_user"
,
"1"
);
httpHeaders
.
add
(
"esv_account"
,
"admin"
);
httpHeaders
.
add
(
"Source-Type"
,
"1"
);
httpHeaders
.
add
(
CommonConstants
.
REQ_SOURCE_TYPE_KEY
,
CommonConstants
.
REQ_SOURCE_TYPE_WEB
);
return
httpHeaders
;
}
...
...
src/test/java/com/esv/datacenter/iot/SimpleTest.java
View file @
1a639a0f
package
com
.
esv
.
datacenter
.
iot
;
import
com.esv.datacenter.iot.common.util.FileUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
...
@@ -17,16 +16,9 @@ public class SimpleTest {
@Test
public
void
test
()
{
String
dataPath
=
"/data/SqlReservedWords.txt"
;
try
{
String
fileContent
=
FileUtils
.
getJarFileContent
(
this
.
getClass
(),
dataPath
);
String
[]
datas
=
fileContent
.
split
(
","
);
log
.
info
(
fileContent
);
log
.
info
(
datas
[
0
]);
log
.
info
(
datas
[
1
]);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
String
topic
=
"$esv/iot/1/2/3/data/upload"
;
Long
dataModelId
=
Long
.
parseLong
(
topic
.
replaceFirst
(
"\\$esv/iot/"
,
""
).
substring
(
0
,
1
));
log
.
info
(
String
.
valueOf
(
dataModelId
));
}
}
src/test/java/com/esv/datacenter/iot/common/component/MqttClientAuthComponentTest.java
View file @
1a639a0f
...
...
@@ -30,11 +30,16 @@ public class MqttClientAuthComponentTest {
MqttAcl
mqttAcl
=
new
MqttAcl
();
mqttAcl
.
setAllow
(
1
);
mqttAcl
.
setClient
I
d
(
String
.
valueOf
(
System
.
currentTimeMillis
()));
mqttAcl
.
setClient
i
d
(
String
.
valueOf
(
System
.
currentTimeMillis
()));
mqttAcl
.
setAccess
(
2
);
mqttAcl
.
setTopic
(
"$esv/iot/1/2/3/data/upload"
);
mqttAclList
.
add
(
mqttAcl
);
mqttClientAuthComponent
.
saveClientAcl
(
mqttAclList
);
}
@Test
public
void
getClientTopicInfo_test
()
{
mqttClientAuthComponent
.
getClientTopicInfo
(
"1597307123829"
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment