Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit ba3edcd9
由
LN
编写于
2022-02-15 14:53:23 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
新增消息模塊
1 个父辈
6a68d776
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
521 行增加
和
0 行删除
src/main/java/com/neotel/smfcore/core/message/enums/MessageType.java
src/main/java/com/neotel/smfcore/core/message/rest/MessageController.java
src/main/java/com/neotel/smfcore/core/message/rest/bean/dto/MessageDto.java
src/main/java/com/neotel/smfcore/core/message/rest/bean/mapstruct/MessageMapper.java
src/main/java/com/neotel/smfcore/core/message/rest/bean/query/MessageCriteria.java
src/main/java/com/neotel/smfcore/core/message/service/bean/DataContent.java
src/main/java/com/neotel/smfcore/core/message/service/dao/IMessageDao.java
src/main/java/com/neotel/smfcore/core/message/service/dao/impl/MessageDaoImpl.java
src/main/java/com/neotel/smfcore/core/message/service/manager/IMessageManager.java
src/main/java/com/neotel/smfcore/core/message/service/manager/impl/MessageManagerImpl.java
src/main/java/com/neotel/smfcore/core/message/service/po/Message.java
src/main/java/com/neotel/smfcore/core/message/util/DeviceMessageUtil.java
src/main/java/com/neotel/smfcore/core/message/enums/MessageType.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
enums
;
public
enum
MessageType
{
/**
*0 消息
*/
INFO
,
/**
* 1 警告
*/
WARNING
,
/**
* 2 错误
*/
ERROR
,
}
src/main/java/com/neotel/smfcore/core/message/rest/MessageController.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
rest
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.message.rest.bean.dto.MessageDto
;
import
com.neotel.smfcore.core.message.rest.bean.mapstruct.MessageMapper
;
import
com.neotel.smfcore.core.message.rest.bean.query.MessageCriteria
;
import
com.neotel.smfcore.core.message.service.manager.IMessageManager
;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
@Slf4j
@RestController
@RequiredArgsConstructor
@Api
(
tags
=
"日志管理:消息查询"
)
@RequestMapping
(
"api/message"
)
public
class
MessageController
{
@Autowired
IMessageManager
messageManager
;
@Autowired
MessageMapper
messageMapper
;
@ApiOperation
(
"导出消息列表"
)
@GetMapping
(
value
=
"/download"
)
public
void
download
(
HttpServletResponse
response
,
MessageCriteria
criteria
,
HttpServletRequest
request
)
throws
Exception
{
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
List
<
Message
>
list
=
messageManager
.
findByQuery
(
query
);
//下载
messageManager
.
download
(
list
,
response
,
request
.
getLocale
());
}
@ApiOperation
(
"查询列表"
)
@GetMapping
@PreAuthorize
(
"@el.check('message')"
)
public
PageData
<
MessageDto
>
query
(
MessageCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
){
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
PageData
<
Message
>
messagePageData
=
messageManager
.
findByPage
(
query
,
pageable
);
List
<
MessageDto
>
dtos
=
messageMapper
.
toDto
(
messagePageData
.
getContent
());
for
(
int
i
=
0
;
i
<
dtos
.
size
();
i
++)
{
if
(
ObjectUtil
.
isNotEmpty
(
dtos
.
get
(
i
).
getMsgCode
())){
dtos
.
get
(
i
).
setMsg
(
MessageUtils
.
getText
(
dtos
.
get
(
i
).
getMsgCode
(),
dtos
.
get
(
i
).
getMsgParams
(),
request
.
getLocale
(),
dtos
.
get
(
i
).
getMsg
()));
}
}
return
new
PageData
(
dtos
,
messagePageData
.
getTotalElements
());
}
@ApiOperation
(
"获取设备列表"
)
@GetMapping
(
value
=
"/deviceList"
)
@PreAuthorize
(
"@el.check('message')"
)
public
List
<
String
>
getTypeList
(
)
{
List
<
String
>
typeList
=
messageManager
.
findDeviceNameList
();
return
typeList
;
}
}
src/main/java/com/neotel/smfcore/core/message/rest/bean/dto/MessageDto.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
rest
.
bean
.
dto
;
import
com.neotel.smfcore.core.message.service.bean.DataContent
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
@Data
public
class
MessageDto
implements
Serializable
{
@ApiModelProperty
(
value
=
"ID"
)
private
String
id
;
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
createDate
;
@ApiModelProperty
(
value
=
"设备名称"
)
private
String
deviceName
;
@ApiModelProperty
(
value
=
"设备ID"
)
private
String
deviceId
;
@ApiModelProperty
(
value
=
"设备模块"
)
private
String
module
;
@ApiModelProperty
(
value
=
"消息类型,info,warning,error"
)
private
String
type
;
@ApiModelProperty
(
value
=
"消息字符串Code"
)
private
String
msgCode
;
@ApiModelProperty
(
value
=
"消息内容"
)
private
String
msg
;
@ApiModelProperty
(
value
=
"参数"
)
private
String
[]
msgParams
;
@ApiModelProperty
(
value
=
"数据参数"
)
private
List
<
DataContent
>
dataList
;
@ApiModelProperty
(
value
=
"结束时间"
)
private
Date
finishTime
;
}
src/main/java/com/neotel/smfcore/core/message/rest/bean/mapstruct/MessageMapper.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
rest
.
bean
.
mapstruct
;
import
com.neotel.smfcore.common.base.BaseMapper
;
import
com.neotel.smfcore.core.message.rest.bean.dto.MessageDto
;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
public
interface
MessageMapper
extends
BaseMapper
<
MessageDto
,
Message
>
{
}
src/main/java/com/neotel/smfcore/core/message/rest/bean/query/MessageCriteria.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
rest
.
bean
.
query
;
import
com.neotel.smfcore.common.annotation.QueryCondition
;
import
com.neotel.smfcore.common.bean.BetweenData
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
@Data
public
class
MessageCriteria
{
@QueryCondition
(
blurry
=
"deviceName,module,msg"
)
private
String
blurry
;
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"updateDate"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
BetweenData
<
Date
>
createDate
;
@QueryCondition
@ApiModelProperty
(
"设备"
)
private
String
deviceName
;
@QueryCondition
@ApiModelProperty
(
"模块"
)
private
String
module
;
@QueryCondition
@ApiModelProperty
(
"默认内容"
)
private
String
msg
;
@QueryCondition
@ApiModelProperty
(
"类型"
)
private
String
type
;
}
src/main/java/com/neotel/smfcore/core/message/service/bean/DataContent.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
service
.
bean
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
DataContent
{
/**
* key
*/
private
String
key
;
/**
* value
*/
private
String
value
;
}
src/main/java/com/neotel/smfcore/core/message/service/dao/IMessageDao.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
public
interface
IMessageDao
extends
IBaseDao
{
}
src/main/java/com/neotel/smfcore/core/message/service/dao/impl/MessageDaoImpl.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.core.message.service.dao.IMessageDao
;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
org.springframework.stereotype.Service
;
@Service
public
class
MessageDaoImpl
extends
AbstractBaseDao
implements
IMessageDao
{
@Override
public
Class
getEntityClass
()
{
return
Message
.
class
;
}
}
src/main/java/com/neotel/smfcore/core/message/service/manager/IMessageManager.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
import
java.util.Locale
;
public
interface
IMessageManager
extends
IBaseManager
<
Message
>
{
void
download
(
List
<
Message
>
list
,
HttpServletResponse
response
,
Locale
locale
);
List
<
String
>
findDeviceNameList
();
}
src/main/java/com/neotel/smfcore/core/message/service/manager/impl/MessageManagerImpl.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
service
.
manager
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.core.language.service.nanager.impl.LanguageMsgManagerImpl
;
import
com.neotel.smfcore.core.language.service.po.LanguageMsg
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
import
com.neotel.smfcore.core.message.service.dao.IMessageDao
;
import
com.neotel.smfcore.core.message.service.manager.IMessageManager
;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
com.neotel.smfcore.security.service.po.User
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.aggregation.Aggregation
;
import
org.springframework.data.mongodb.core.aggregation.AggregationResults
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.*
;
@Service
@Slf4j
public
class
MessageManagerImpl
implements
IMessageManager
{
@Autowired
IMessageDao
messageDao
;
@Override
public
Message
get
(
String
id
)
{
return
messageDao
.
findOneById
(
id
);
}
@Override
public
Message
save
(
Message
object
)
throws
ValidateException
{
return
messageDao
.
save
(
object
);
}
@Override
public
void
delete
(
Message
object
)
throws
ValidateException
{
messageDao
.
removeOneById
(
object
.
getId
());
}
@Override
public
PageData
<
Message
>
findByPage
(
Query
query
,
Pageable
pageable
)
{
int
totalCount
=
messageDao
.
countByQuery
(
query
);
List
<
Message
>
messages
=
messageDao
.
findByQuery
(
query
,
pageable
);
return
new
PageData
(
messages
,
totalCount
);
}
@Override
public
List
<
Message
>
findByQuery
(
Query
query
)
{
return
messageDao
.
findByQuery
(
query
);
}
@Override
public
void
download
(
List
<
Message
>
messages
,
HttpServletResponse
response
,
Locale
locale
)
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
String
device
=
MessageUtils
.
getText
(
"smfcore.messages.device"
,
locale
,
"设备"
);
String
module
=
MessageUtils
.
getText
(
"smfcore.messages.module"
,
locale
,
"模块"
);
String
type
=
MessageUtils
.
getText
(
"smfcore.messages.type"
,
locale
,
"类型"
);
String
createDate
=
MessageUtils
.
getText
(
"smfcore.messages.createDate"
,
locale
,
"创建时间"
);
String
msg
=
MessageUtils
.
getText
(
"smfcore.messages.msg"
,
locale
,
"内容"
);
String
info
=
MessageUtils
.
getText
(
"smfcorre.message.info"
,
locale
,
"消息"
);
String
warning
=
MessageUtils
.
getText
(
"smfcorre.message.warning"
,
locale
,
"警告"
);
String
error
=
MessageUtils
.
getText
(
"smfcorre.message.error"
,
locale
,
"错误"
);
List
<
String
>
titles
=
new
ArrayList
<>();
titles
.
add
(
device
);
titles
.
add
(
module
);
titles
.
add
(
type
);
titles
.
add
(
createDate
);
titles
.
add
(
msg
);
for
(
Message
obj
:
messages
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
device
,
obj
.
getDeviceName
());
map
.
put
(
module
,
obj
.
getModule
());
String
typeV
=
info
;
if
(
obj
.
getType
().
equals
(
MessageType
.
WARNING
.
name
())){
typeV
=
warning
;
}
else
if
(
obj
.
getType
().
equals
(
MessageType
.
ERROR
.
name
())){
typeV
=
error
;
}
map
.
put
(
type
,
typeV
);
map
.
put
(
createDate
,
DateUtil
.
toDateTimeString
(
obj
.
getCreateDate
()));
String
msgV
=
obj
.
getMsg
();
if
(
ObjectUtil
.
isNotEmpty
(
obj
.
getMsgCode
())){
msgV
=
MessageUtils
.
getText
(
obj
.
getMsgCode
(),
obj
.
getMsgParams
(),
locale
,
obj
.
getMsg
());
}
map
.
put
(
msg
,
msgV
);
list
.
add
(
map
);
}
try
{
FileUtil
.
downloadCSV
(
list
,
titles
,
response
);
}
catch
(
Exception
e
)
{
log
.
error
(
"导出失败"
+
e
.
getMessage
(),
e
);
}
}
@Override
public
List
<
String
>
findDeviceNameList
()
{
Aggregation
agg
=
Aggregation
.
newAggregation
(
Aggregation
.
match
(
Criteria
.
where
(
"deviceName"
).
exists
(
true
)),
Aggregation
.
group
(
"deviceName"
).
first
(
"deviceName"
).
as
(
"deviceName"
)
);
AggregationResults
<
MsgDeviceName
>
results
=
messageDao
.
getMongoTemplate
().
aggregate
(
agg
,
Message
.
class
,
MsgDeviceName
.
class
);
List
<
MsgDeviceName
>
deviceNames
=
results
.
getMappedResults
();
List
<
String
>
result
=
new
ArrayList
<>();
for
(
MsgDeviceName
device
:
deviceNames
)
{
result
.
add
(
device
.
getDeviceName
());
}
return
result
;
}
@Data
private
class
MsgDeviceName
{
private
String
deviceName
;
}
}
src/main/java/com/neotel/smfcore/core/message/service/po/Message.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
import
com.neotel.smfcore.core.message.service.bean.DataContent
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.io.Serializable
;
import
java.sql.Date
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
@Document
@NoArgsConstructor
@AllArgsConstructor
public
class
Message
extends
BasePo
implements
Serializable
{
public
static
Message
newMsg
(
MessageType
type
,
String
deviceName
,
String
deviceId
,
String
module
,
String
msgCode
,
String
msg
,
String
[]
msgParams
){
Message
message
=
new
Message
(
deviceName
,
deviceId
,
module
,
type
.
name
(),
msgCode
,
msg
,
msgParams
,
null
,
null
);
return
message
;
}
/**
* 设备名称
*/
private
String
deviceName
;
/**
* 设备ID
*/
private
String
deviceId
;
/**
* 设备模块
*/
private
String
module
;
/**
* 消息类型,info,warning,error
*/
private
String
type
;
/**
* 消息字符串Code
*/
private
String
msgCode
;
/**
* 消息内容
*/
private
String
msg
;
/**
* 参数
*/
private
String
[]
msgParams
;
/**
* 数据参数
*/
private
List
<
DataContent
>
dataList
;
/**
* 结束时间
*/
private
Date
finishTime
;
public
void
addData
(
String
key
,
String
value
){
if
(
dataList
==
null
){
dataList
=
new
ArrayList
<>();
}
dataList
.
add
(
new
DataContent
(
key
,
value
));
}
}
src/main/java/com/neotel/smfcore/core/message/util/DeviceMessageUtil.java
0 → 100644
查看文件 @
ba3edcd
package
com
.
neotel
.
smfcore
.
core
.
message
.
util
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
import
com.neotel.smfcore.core.message.service.manager.IMessageManager
;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
DeviceMessageUtil
{
private
static
DataCache
dataCache
;
private
static
IMessageManager
messageManager
;
@Autowired
public
void
seDataCache
(
DataCache
dataCache
)
{
this
.
dataCache
=
dataCache
;
}
@Autowired
public
void
setMessageManager
(
IMessageManager
messageManager
)
{
this
.
messageManager
=
messageManager
;
}
/**
* 流水线提示消息,只保存最后一条
*/
public
static
String
lineMsg
=
""
;
public
static
void
updateLineMsg
(
String
lineMsg
,
String
code
,
String
cids
,
String
posName
)
{
lineMsg
=
lineMsg
;
Message
message
=
Message
.
newMsg
(
MessageType
.
WARNING
,
"server"
,
""
,
""
,
""
,
lineMsg
,
null
);
if
(
ObjectUtil
.
isNotEmpty
(
code
))
{
message
.
addData
(
"code"
,
code
);
}
if
(
ObjectUtil
.
isNotEmpty
(
cids
))
{
message
.
addData
(
"cids"
,
cids
);
}
if
(
ObjectUtil
.
isNotEmpty
(
posName
))
{
message
.
addData
(
"posName"
,
posName
);
}
messageManager
.
save
(
message
);
}
public
static
void
addErrorMessage
(
String
cid
,
String
moudle
,
String
msgCode
,
String
msg
,
String
[]
msgParam
)
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
!=
null
)
{
Message
message
=
Message
.
newMsg
(
MessageType
.
ERROR
,
storage
.
getName
(),
storage
.
getId
(),
moudle
,
msgCode
,
msg
,
msgParam
);
messageManager
.
save
(
message
);
}
}
public
static
void
addOnlineMessage
(
String
cid
,
String
moudle
,
String
ip
)
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
!=
null
)
{
Message
message
=
Message
.
newMsg
(
MessageType
.
INFO
,
storage
.
getName
(),
storage
.
getId
(),
moudle
,
"smfcore.messages.online"
,
"上线"
,
null
);
message
.
addData
(
"ip"
,
ip
);
messageManager
.
save
(
message
);
}
}
public
static
void
addOfflineMessage
(
String
cid
,
String
moudle
)
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
!=
null
)
{
Message
message
=
Message
.
newMsg
(
MessageType
.
INFO
,
storage
.
getName
(),
storage
.
getId
(),
moudle
,
"smfcore.messages.offline"
,
"离线"
,
null
);
messageManager
.
save
(
message
);
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论