Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
8b21acf2
提交
8b21acf2
authored
4月 21, 2022
作者:
谭志磊
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
style : 访客代码格式,注释调整
上级
7bf585c5
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
56 行增加
和
144 行删除
+56
-144
GbRabbitmqReceiver.java
...n/java/com/yiring/app/rabbitmq/zy/GbRabbitmqReceiver.java
+0
-132
VisitorService.java
...n/java/com/yiring/app/service/visitor/VisitorService.java
+15
-0
VisitorServiceImpl.java
...m/yiring/app/service/visitor/impl/VisitorServiceImpl.java
+28
-0
VisitorController.java
...in/java/com/yiring/app/web/visitor/VisitorController.java
+13
-12
没有找到文件。
app/src/main/java/com/yiring/app/rabbitmq/zy/GbRabbitmqReceiver.java
deleted
100644 → 0
浏览文件 @
7bf585c5
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
rabbitmq
.
zy
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.rabbitmq.client.Channel
;
import
com.yiring.app.config.zy.ZyRabbitConfig
;
import
com.yiring.app.push.domain.PushMessage
;
import
com.yiring.app.push.service.PushService
;
import
java.io.IOException
;
import
javax.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitHandler
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* 国标 RabbitMQ 消息监听(消息消费者)
*
* @author tzl
* @version 0.1
* 2022/4/13 17:13
*/
@Slf4j
@Component
@Configuration
@ConditionalOnProperty
(
prefix
=
"zy-config.rabbitmq"
,
value
=
"enabled"
,
havingValue
=
"true"
)
public
class
GbRabbitmqReceiver
{
// TODO
// 1. 新增消息订阅定时任务,检查是否正常订阅了真源定位系统的消息
// 2. 如果没有所需的订阅记录,则发起消息订阅(见接口文档: 6.2)
// 3. 订阅 position(定位数据)、lowPower(低电量报警)、deviceStatus(设备状态)、keyWarning(按键报警)
@Resource
PushService
pushService
;
/**
* 订阅真源定位系统 RabbitMQ 推送过来的消息(主动订阅的一些消息类别)
* 参见: 定位平台接口规范V3.0.1 - 通用版.pdf #6
* @param msg 消息内容
* @param channel 消息通道
* @param message 消息主体
* @throws IOException 消息确认异常
*/
@RabbitHandler
@RabbitListener
(
queues
=
ZyRabbitConfig
.
MESSAGE_QUEUES_NAME
,
containerFactory
=
ZyRabbitConfig
.
LISTENER_FACTORY_NAME
)
public
void
listen
(
String
msg
,
Channel
channel
,
Message
message
)
throws
IOException
{
// 手动确认消息已收到
channel
.
basicAck
(
message
.
getMessageProperties
().
getDeliveryTag
(),
false
);
try
{
// 将消息转换成 JSON 格式
JSONObject
info
=
JSON
.
parseObject
(
msg
);
log
.
info
(
"Receiver Message: {}"
,
info
);
// 解构消息内容
JSONObject
data
=
info
.
getJSONObject
(
"params"
);
String
method
=
info
.
getString
(
"method"
);
switch
(
method
)
{
// 实时定位
case
"position"
->
processPositionMessage
(
data
);
// 设备低电量
case
"lowPower"
->
processLowPowerMessage
(
data
);
// 设备状态变更
case
"deviceStatus"
->
processDeviceStatusMessage
(
data
);
// 按键报警
case
"keyWarning"
->
processKeyWarningMessage
(
data
);
default
->
log
.
warn
(
"Unknown Message Type: {}"
,
info
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
/**
* 处理定位消息
* @param data 消息内容
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
processPositionMessage
(
JSONObject
data
)
{
// TODO
log
.
info
(
"Position Message: {}"
,
data
);
// 包装消息
// TODO
// 1. 解析消息内容,进行围栏、出入标识判断等处理,将定位记录录入数据库
// 2. 创建一条需要进行消息推送的记录
// 3. 将记录推送的消息推送模块
// WebSocket 消息推送
pushService
.
push
(
PushMessage
.
Type
.
WS
,
data
);
}
/**
* 处理低电量报警消息
* @param data 消息内容
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
processLowPowerMessage
(
JSONObject
data
)
{
// TODO
log
.
info
(
"LowPower Message: {}"
,
data
);
}
/**
* 处理设备状态更新消息
* @param data 消息内容
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
processDeviceStatusMessage
(
JSONObject
data
)
{
// TODO
log
.
info
(
"DeviceStatus Message: {}"
,
data
);
}
/**
* 处理按键报警消息
* @param data 消息内容
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
processKeyWarningMessage
(
JSONObject
data
)
{
// TODO
log
.
info
(
"KeyWarning Message: {}"
,
data
);
}
}
app/src/main/java/com/yiring/app/service/visitor/VisitorService.java
浏览文件 @
8b21acf2
...
...
@@ -56,4 +56,19 @@ public interface VisitorService {
* @param response HttpServletResponse
*/
void
exportVisitor
(
VisitorQueryParam
visitorQueryParam
,
HttpServletResponse
response
);
/**
* 发卡
* @param labelCard 标签卡号
* @param idParam 主键id
* @return 是否成功
*/
Result
<
String
>
cardSend
(
String
labelCard
,
IdParam
idParam
);
/**
* 收卡
* @param idParam 主键id
* @return 是否成功
*/
Result
<
String
>
cardRec
(
IdParam
idParam
);
}
app/src/main/java/com/yiring/app/service/visitor/impl/VisitorServiceImpl.java
浏览文件 @
8b21acf2
...
...
@@ -185,6 +185,34 @@ public class VisitorServiceImpl implements VisitorService {
}
}
@Override
public
Result
<
String
>
cardSend
(
String
labelCard
,
IdParam
idParam
)
{
Optional
<
Visitor
>
optional
=
visitorRepository
.
findById
(
idParam
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
NOT_FOUND
);
}
Visitor
visitor
=
optional
.
get
();
//状态变更为使用中
visitor
.
setLabelCardStatus
(
"2"
);
visitor
.
setCardSendTime
(
LocalDateTime
.
now
());
visitor
.
setLabelCard
(
labelCard
);
visitorRepository
.
saveAndFlush
(
visitor
);
return
Result
.
ok
();
}
@Override
public
Result
<
String
>
cardRec
(
IdParam
idParam
)
{
Optional
<
Visitor
>
optional
=
visitorRepository
.
findById
(
idParam
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
NOT_FOUND
);
}
Visitor
visitor
=
optional
.
get
();
visitor
.
setLabelCardStatus
(
"3"
);
visitor
.
setCardRecTime
(
LocalDateTime
.
now
());
visitorRepository
.
saveAndFlush
(
visitor
);
return
Result
.
ok
();
}
public
boolean
hasCarNum
(
String
carNum
)
{
Visitor
visitor
=
Visitor
.
builder
().
visitorCarNum
(
carNum
).
build
();
return
visitorRepository
.
count
(
Example
.
of
(
visitor
))
>
0
;
...
...
app/src/main/java/com/yiring/app/web/visitor/VisitorController.java
浏览文件 @
8b21acf2
...
...
@@ -9,6 +9,7 @@ import com.yiring.common.core.Result;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.vo.PageVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -47,18 +48,18 @@ public class VisitorController {
return
visitorService
.
updateVisitor
(
visitorParam
,
idParam
);
}
//
@ApiOperation(value = "收卡")
//
@PostMapping("cardRec")
// public Result<Lo
ng> cardRec(@Valid IdParam idParam) {
// return ca
rService.cardRec(idParam);
//
}
//
//
@ApiOperation(value = "发卡")
//
@ApiImplicitParam(value = "标签卡", example = "DW8544568", required = true, name = "labelCard")
//
@PostMapping("cardSend")
// public Result<Lo
ng> cardSend(@Valid IdParam idParam, String labelCard) {
// return carService.cardSend(idParam, labelCard
);
//
}
@ApiOperation
(
value
=
"收卡"
)
@PostMapping
(
"cardRec"
)
public
Result
<
Stri
ng
>
cardRec
(
@Valid
IdParam
idParam
)
{
return
visito
rService
.
cardRec
(
idParam
);
}
@ApiOperation
(
value
=
"发卡"
)
@ApiImplicitParam
(
value
=
"标签卡"
,
example
=
"DW8544568"
,
required
=
true
,
name
=
"labelCard"
)
@PostMapping
(
"cardSend"
)
public
Result
<
Stri
ng
>
cardSend
(
@Valid
IdParam
idParam
,
String
labelCard
)
{
return
visitorService
.
cardSend
(
labelCard
,
idParam
);
}
@ApiOperation
(
value
=
"删除访客信息"
)
@PostMapping
(
"deleteVisitor"
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论