Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
黄嘉阳
/
iot-platform-server
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
1426a12d
authored
Sep 25, 2023
by
huangjy
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat:设备属性读取和写入,第三方接口api
parent
f40cf849
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
319 additions
and
2 deletions
server-api/src/main/java/com/makeit/api/controller/external/IotPlatExternalController.java → server-api/src/main/java/com/makeit/api/external/controller/IotPlatExternalController.java
server-api/src/main/java/com/makeit/api/external/filter/MyRequestWrapper.java
server-api/src/main/java/com/makeit/api/external/filter/RequestReplaceFilter.java
server-api/src/main/java/com/makeit/api/external/filter/SignAuthFilter.java
server-api/src/main/java/com/makeit/api/external/util/RSAUtils.java
server-common/src/main/java/com/makeit/enums/GlobalCodeMessageEnum.java
server-common/src/main/java/com/makeit/exception/ExceptionController.java
server-common/src/main/java/com/makeit/module/iot/service/IotDevicePropertiesOperateService.java
server-common/src/main/java/com/makeit/module/iot/vo/DeviceProperties.java
server-module/src/main/java/com/makeit/module/controller/wechat/device/PlatDeviceWechatController.java
server-service/src/main/java/com/makeit/dto/wechat/device/PlatDeviceAttrWechatDTO.java
server-service/src/main/java/com/makeit/service/platform/device/PlatDeviceService.java
server-service/src/main/java/com/makeit/service/platform/device/impl/PlatDeviceServiceImpl.java
server-web/src/main/java/com/makeit/ServerStartApplication.java
server-api/src/main/java/com/makeit/api/
controller/external
/IotPlatExternalController.java
→
server-api/src/main/java/com/makeit/api/
external/controller
/IotPlatExternalController.java
View file @
1426a12d
package
com
.
makeit
.
api
.
controller
.
external
;
package
com
.
makeit
.
api
.
external
.
controller
;
import
com.makeit.common.dto.BaseIdDTO
;
import
com.makeit.common.page.PageReqDTO
;
...
...
server-api/src/main/java/com/makeit/api/external/filter/MyRequestWrapper.java
0 → 100644
View file @
1426a12d
package
com
.
makeit
.
api
.
external
.
filter
;
import
org.apache.commons.io.IOUtils
;
import
javax.servlet.ReadListener
;
import
javax.servlet.ServletInputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequestWrapper
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
/**
* @Description: 解决request.getInputStream()只能读取一次的问题
* @PackageName: net.dlet.dhdemo.utils.dhutils
* @Name: MyRequestWrapper
* @Author: cure
* @CreateDate: 2020/09/06 4:44
* @ModifyUser:
* @ModifyDate:
* @ModifyDesc: 修改内容
* @DayNameFull: 星期日
* @ProjectName: dhdemo
* @Version: 1.0
**/
public
class
MyRequestWrapper
extends
HttpServletRequestWrapper
{
private
volatile
byte
[]
body
;
public
MyRequestWrapper
(
HttpServletRequest
request
)
throws
IOException
{
super
(
request
);
body
=
IOUtils
.
toByteArray
(
super
.
getInputStream
());
}
public
byte
[]
getBody
()
{
return
body
;
}
public
void
setBody
(
byte
[]
body
)
{
this
.
body
=
body
;
}
@Override
public
BufferedReader
getReader
()
throws
IOException
{
return
new
BufferedReader
(
new
InputStreamReader
(
getInputStream
()));
}
@Override
public
ServletInputStream
getInputStream
()
throws
IOException
{
return
new
RequestBodyCachingInputStream
(
body
);
}
private
class
RequestBodyCachingInputStream
extends
ServletInputStream
{
private
byte
[]
body
;
private
int
lastIndexRetrieved
=
-
1
;
private
ReadListener
listener
;
public
RequestBodyCachingInputStream
(
byte
[]
body
)
{
this
.
body
=
body
;
}
@Override
public
int
read
()
throws
IOException
{
if
(
isFinished
())
{
return
-
1
;
}
int
i
=
body
[
lastIndexRetrieved
+
1
];
lastIndexRetrieved
++;
if
(
isFinished
()
&&
listener
!=
null
)
{
try
{
listener
.
onAllDataRead
();
}
catch
(
IOException
e
)
{
listener
.
onError
(
e
);
throw
e
;
}
}
return
i
;
}
@Override
public
boolean
isFinished
()
{
return
lastIndexRetrieved
==
body
.
length
-
1
;
}
@Override
public
boolean
isReady
()
{
return
isFinished
();
}
@Override
public
void
setReadListener
(
ReadListener
listener
)
{
if
(
listener
==
null
)
{
throw
new
IllegalArgumentException
(
"listener cann not be null"
);
}
if
(
this
.
listener
!=
null
)
{
throw
new
IllegalArgumentException
(
"listener has been set"
);
}
this
.
listener
=
listener
;
if
(!
isFinished
())
{
try
{
listener
.
onAllDataRead
();
}
catch
(
IOException
e
)
{
listener
.
onError
(
e
);
}
}
else
{
try
{
listener
.
onAllDataRead
();
}
catch
(
IOException
e
)
{
listener
.
onError
(
e
);
}
}
}
@Override
public
int
available
()
throws
IOException
{
return
body
.
length
-
lastIndexRetrieved
-
1
;
}
@Override
public
void
close
()
throws
IOException
{
lastIndexRetrieved
=
body
.
length
-
1
;
body
=
null
;
}
}
}
\ No newline at end of file
server-api/src/main/java/com/makeit/api/external/filter/RequestReplaceFilter.java
0 → 100644
View file @
1426a12d
package
com
.
makeit
.
api
.
external
.
filter
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
javax.servlet.FilterChain
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
/**
* @Description:
* @PackageName: net.dlet.dhdemo.configure
* @Name: RequestReplaceFilter
* @Author: cure
* @CreateDate: 2020/09/06 4:58
* @ModifyUser:
* @ModifyDate:
* @ModifyDesc: 修改内容
* @DayNameFull: 星期日
* @ProjectName: dhdemo
* @Version: 1.0
**/
@Component
public
class
RequestReplaceFilter
extends
OncePerRequestFilter
{
@Override
protected
void
doFilterInternal
(
HttpServletRequest
request
,
HttpServletResponse
response
,
FilterChain
filterChain
)
throws
ServletException
,
IOException
{
if
(!(
request
instanceof
MyRequestWrapper
))
{
request
=
new
MyRequestWrapper
(
request
);
}
filterChain
.
doFilter
(
request
,
response
);
}
}
\ No newline at end of file
server-api/src/main/java/com/makeit/api/external/filter/SignAuthFilter.java
0 → 100644
View file @
1426a12d
package
com
.
makeit
.
api
.
external
.
filter
;
import
com.makeit.api.external.util.RSAUtils
;
import
com.makeit.utils.old.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
javax.servlet.*
;
import
javax.servlet.annotation.WebFilter
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
@WebFilter
(
urlPatterns
=
{
"/iot/external/*"
})
public
class
SignAuthFilter
implements
Filter
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
SignAuthFilter
.
class
);
@Override
public
void
init
(
FilterConfig
filterConfig
)
{
}
@Override
public
void
doFilter
(
ServletRequest
req
,
ServletResponse
res
,
FilterChain
chain
)
throws
IOException
{
HttpServletRequest
request
=
(
HttpServletRequest
)
req
;
HttpServletResponse
response
=
(
HttpServletResponse
)
res
;
try
{
String
sign
=
request
.
getHeader
(
"sign"
);
if
(
StringUtils
.
isEmpty
(
sign
))
{
response
.
sendError
(
403
,
"Forbidden"
);
return
;
}
logger
.
info
(
"getted Authorization is ---> "
+
sign
);
// 获取客户端ip
/* String ip = IpUtil.getIpAddr(request);
logger.info("getted ip is ---> " + ip);*/
MyRequestWrapper
requestWrapper
=
new
MyRequestWrapper
(
request
);
String
bodyString
=
new
String
(
requestWrapper
.
getBody
(),
StandardCharsets
.
UTF_8
);
logger
.
info
(
"getted requestbody data is ---> "
+
bodyString
);
String
decryptJson
=
RSAUtils
.
privateDecrypt
(
sign
,
RSAUtils
.
getPrivateKey
(
RSAUtils
.
PRIVATE_KEY
),
"UTF-8"
);
boolean
couldPass
=
decryptJson
.
equals
(
bodyString
);
if
(
couldPass
)
{
// 放行
chain
.
doFilter
(
requestWrapper
,
response
);
return
;
}
response
.
sendError
(
403
,
"Forbidden"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"验证失败: -> "
+
e
.
getMessage
(),
e
);
response
.
sendError
(
403
,
"Forbidden"
);
}
}
@Override
public
void
destroy
()
{
}
}
server-api/src/main/java/com/makeit/api/external/util/RSAUtils.java
0 → 100644
View file @
1426a12d
This diff is collapsed.
Click to expand it.
server-common/src/main/java/com/makeit/enums/GlobalCodeMessageEnum.java
View file @
1426a12d
...
...
@@ -18,6 +18,8 @@ public enum GlobalCodeMessageEnum {
SYSTEM_ERROR_EXCEPTION
(
500
,
"system.error.exception"
),
// 请求方法不对
SYSTEM_ERROR_NOT_ALLOWED
(
405
,
"system.error.method.not.allowed"
),
SYSTEM_ERROR_FORBIDDEN
(
403
,
"system.error.forbidden"
),
// 未找到
SYSTEM_ERROR_NOT_FOUND
(
404
,
"system.error.not.found"
),
...
...
server-common/src/main/java/com/makeit/exception/ExceptionController.java
View file @
1426a12d
...
...
@@ -35,6 +35,11 @@ public class ExceptionController implements ErrorController {
return
ApiResponseUtils
.
fail
(
GlobalCodeMessageEnum
.
SYSTEM_ERROR_NOT_ALLOWED
.
getCode
(),
GlobalCodeMessageEnum
.
SYSTEM_ERROR_NOT_ALLOWED
.
getMessage
());
}
// 403
if
(
GlobalCodeMessageEnum
.
SYSTEM_ERROR_FORBIDDEN
.
getCode
()
==
statusCode
)
{
return
ApiResponseUtils
.
fail
(
GlobalCodeMessageEnum
.
SYSTEM_ERROR_FORBIDDEN
.
getCode
(),
GlobalCodeMessageEnum
.
SYSTEM_ERROR_FORBIDDEN
.
getMessage
());
}
return
ApiResponseUtils
.
fail
(
GlobalCodeMessageEnum
.
SYSTEM_ERROR_EXCEPTION
.
getCode
(),
GlobalCodeMessageEnum
.
SYSTEM_ERROR_EXCEPTION
.
getMessage
());
...
...
server-common/src/main/java/com/makeit/module/iot/service/IotDevicePropertiesOperateService.java
View file @
1426a12d
package
com
.
makeit
.
module
.
iot
.
service
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.makeit.module.iot.util.HttpRequest
;
import
com.makeit.module.iot.util.SimpleHttpRequest
;
import
com.makeit.module.iot.vo.DeviceInstanceEntity
;
import
com.makeit.module.iot.vo.DeviceProperties
;
import
com.makeit.module.iot.vo.ResponseMessage
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -11,6 +14,7 @@ import org.springframework.scheduling.annotation.Async;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -23,6 +27,23 @@ public class IotDevicePropertiesOperateService extends IotCommonService {
public
static
final
String
DEVICE_PREFIX_URL
=
"/device-instance/"
;
public
DeviceProperties
deviceRead
(
String
deviceId
,
String
propertiesName
)
{
String
url
=
iotUrl
+
"device/standard/"
+
deviceId
+
"/property/"
+
propertiesName
;
HttpRequest
request
=
new
SimpleHttpRequest
(
url
,
httpClient
);
request
.
headers
(
headerUtils
.
createHeadersOfParams
(
new
HashMap
<>()));
try
{
ResponseMessage
responseMessage
=
sendGet
(
url
,
request
);
if
(
responseMessage
.
getStatus
()
==
200
)
{
return
JSON
.
parseObject
(
responseMessage
.
getResult
().
toString
(),
DeviceProperties
.
class
);
}
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
null
;
}
/**
* 把设备写入属性
*/
...
...
server-common/src/main/java/com/makeit/module/iot/vo/DeviceProperties.java
0 → 100644
View file @
1426a12d
package
com
.
makeit
.
module
.
iot
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
DeviceProperties
{
private
Long
createTime
;
private
String
formatValue
;
private
Integer
numberValue
;
@ApiModelProperty
(
"属性名称"
)
private
String
propertyName
;
private
Long
timestamp
;
private
String
type
;
@ApiModelProperty
(
"属性值"
)
private
Integer
value
;
}
server-module/src/main/java/com/makeit/module/controller/wechat/device/PlatDeviceWechatController.java
View file @
1426a12d
...
...
@@ -10,6 +10,8 @@ import com.makeit.dto.platform.device.PlatDeviceQueryDTO;
import
com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO
;
import
com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO
;
import
com.makeit.dto.wechat.device.PlatDeviceSetupDTO
;
import
com.makeit.global.annotation.AuthIgnore
;
import
com.makeit.module.iot.vo.DeviceProperties
;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
com.makeit.vo.platform.device.PlatDeviceViewVO
;
...
...
@@ -22,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* <p>
* 设备 前端控制器
...
...
@@ -65,6 +69,12 @@ public class PlatDeviceWechatController {
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"读取设备属性"
)
@PostMapping
(
"readDeviceProperties"
)
public
ApiResponseEntity
<
List
<
DeviceProperties
>>
readDeviceProperties
(
@RequestBody
PlatDeviceAttrWechatDTO
dto
)
{
return
ApiResponseUtils
.
success
(
platDeviceService
.
readDeviceProperties
(
dto
));
}
@ApiOperation
(
"编辑设备属性"
)
@PostMapping
(
"editDeviceProperties"
)
public
ApiResponseEntity
<?>
editDeviceProperties
(
@RequestBody
PlatDeviceAttrWechatDTO
dto
)
{
...
...
server-service/src/main/java/com/makeit/dto/wechat/device/PlatDeviceAttrWechatDTO.java
View file @
1426a12d
...
...
@@ -13,7 +13,7 @@ import lombok.Data;
* @since 2023-09-05
*/
@Data
@ApiModel
(
value
=
"PlatDeviceAttrWechatDTO对象"
,
description
=
"设备属性"
)
@ApiModel
(
value
=
"PlatDeviceAttrWechatDTO对象"
,
description
=
"设备属性
跌倒:安装方式 安装高度 空间人体:安装方式 功能模式
"
)
public
class
PlatDeviceAttrWechatDTO
{
@ApiModelProperty
(
value
=
"设备id"
)
...
...
@@ -30,5 +30,6 @@ public class PlatDeviceAttrWechatDTO {
"进\":1,\"单位\":\"cm\""
)
private
Integer
radarHight
;
private
String
readProperties
;
}
server-service/src/main/java/com/makeit/service/platform/device/PlatDeviceService.java
View file @
1426a12d
...
...
@@ -11,9 +11,12 @@ import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import
com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO
;
import
com.makeit.dto.wechat.device.PlatDeviceSetupDTO
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.module.iot.vo.DeviceProperties
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
com.makeit.vo.platform.device.PlatDeviceViewVO
;
import
java.util.List
;
/**
* <p>
* 设备 服务类
...
...
@@ -55,4 +58,6 @@ public interface PlatDeviceService extends IService<PlatDevice> {
void
saasEdit
(
PlatDeviceEditSaasDTO
dto
);
void
editDeviceProperties
(
PlatDeviceAttrWechatDTO
dto
);
List
<
DeviceProperties
>
readDeviceProperties
(
PlatDeviceAttrWechatDTO
dto
);
}
server-service/src/main/java/com/makeit/service/platform/device/impl/PlatDeviceServiceImpl.java
View file @
1426a12d
...
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.google.common.collect.Lists
;
import
com.makeit.common.dto.BaseTenantDTO
;
import
com.makeit.common.entity.BaseBusEntity
;
import
com.makeit.common.entity.BaseEntity
;
...
...
@@ -25,6 +26,7 @@ import com.makeit.enums.CodeMessageEnum;
import
com.makeit.exception.BusinessException
;
import
com.makeit.mapper.platform.device.PlatDeviceMapper
;
import
com.makeit.module.iot.service.IotDevicePropertiesOperateService
;
import
com.makeit.module.iot.vo.DeviceProperties
;
import
com.makeit.service.platform.auth.PlatOrgService
;
import
com.makeit.service.platform.device.PlatDeviceOtherService
;
import
com.makeit.service.platform.device.PlatDeviceService
;
...
...
@@ -284,4 +286,20 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
devicePropertiesOperateService
.
deviceWrite
(
dto
.
getDeviceId
(),
dto
.
getRadarMount
(),
dto
.
getRadarMode
(),
dto
.
getRadarHight
());
}
@Override
public
List
<
DeviceProperties
>
readDeviceProperties
(
PlatDeviceAttrWechatDTO
dto
)
{
List
<
DeviceProperties
>
devicePropertiesList
=
Lists
.
newArrayList
();
if
(
StringUtils
.
isNotEmpty
(
dto
.
getReadProperties
()))
{
String
[]
propertiesArr
=
dto
.
getReadProperties
().
split
(
","
);
for
(
String
s
:
propertiesArr
)
{
DeviceProperties
deviceProperties
=
devicePropertiesOperateService
.
deviceRead
(
dto
.
getDeviceId
(),
s
);
if
(
deviceProperties
!=
null
)
{
devicePropertiesList
.
add
(
deviceProperties
);
}
}
}
return
devicePropertiesList
;
}
}
server-web/src/main/java/com/makeit/ServerStartApplication.java
View file @
1426a12d
...
...
@@ -3,11 +3,13 @@ package com.makeit;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.web.servlet.ServletComponentScan
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
@EnableScheduling
@EnableAsync
@ServletComponentScan
@MapperScan
(
basePackages
=
{
"com.makeit.**.mapper"
})
//@SpringBootApplication(scanBasePackages = {"com.makeit"})
@SpringBootApplication
...
...
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