Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
李苗
/
Vion-DevOps
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 3d032fa0
authored
Nov 26, 2024
by
HlQ
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
[add]
1.添加升级日志上传和获取接口 2.添加统一升级指令接口
1 parent
a0ef9ded
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
158 additions
and
10 deletions
src/main/java/vion/advice/LogAspect.java
src/main/java/vion/constant/MqttTopic.java
src/main/java/vion/controller/monitor/AgentController.java
src/main/java/vion/controller/mqtt/MonitorController.java
src/main/java/vion/mapper/monitor/UpgradeInfoMapper.java
src/main/java/vion/model/monitor/UpgradeInfo.java
src/main/java/vion/service/impl/monitor/AgentServiceImpl.java
src/main/java/vion/service/impl/monitor/UpgradeInfoServiceImpl.java
src/main/java/vion/service/monitor/IAgentService.java
src/main/java/vion/service/monitor/IUpgradeInfoService.java
src/main/java/vion/utils/ip/IPUtil.java
src/main/java/vion/advice/LogAspect.java
View file @
3d032fa
...
@@ -63,7 +63,7 @@ public class LogAspect {
...
@@ -63,7 +63,7 @@ public class LogAspect {
request
.
getRequestURI
(),
request
.
getRequestURI
(),
request
.
getMethod
(),
request
.
getMethod
(),
ip
,
ip
,
IPUtil
.
get
Ip
(
ip
),
IPUtil
.
get
Addr
(
ip
),
username
,
username
,
args
,
args
,
StrUtil
.
replaceChars
(
ServletUtil
.
getBody
(
request
),
" \r\n"
,
""
)
StrUtil
.
replaceChars
(
ServletUtil
.
getBody
(
request
),
" \r\n"
,
""
)
...
...
src/main/java/vion/constant/MqttTopic.java
View file @
3d032fa
...
@@ -7,10 +7,14 @@ public class MqttTopic {
...
@@ -7,10 +7,14 @@ public class MqttTopic {
public
final
static
String
STORE_OTA_TOPIC
=
"/SA/{}/ota"
;
public
final
static
String
STORE_OTA_TOPIC
=
"/SA/{}/ota"
;
//store agent 服务列表监听
//store agent 服务列表监听
public
final
static
String
STORE_SERVICE_TOPIC
=
"/SA/{}/service/push"
;
public
final
static
String
STORE_SERVICE_TOPIC
=
"/SA/{}/service/push"
;
//所有 store agent 统一升级
public
final
static
String
STORE_ALL_OTA_TOPIC
=
"/SA/all/ota"
;
//mall agent 事件监听
//mall agent 事件监听
public
final
static
String
MALL_EVENT_TOPIC
=
"/MA/{}/event/push"
;
public
final
static
String
MALL_EVENT_TOPIC
=
"/MA/{}/event/push"
;
//mall agent 升级监听
//mall agent 升级监听
public
final
static
String
MALL_OTA_TOPIC
=
"/MA/{}/ota"
;
public
final
static
String
MALL_OTA_TOPIC
=
"/MA/{}/ota"
;
//mall agent 服务列表监听
//mall agent 服务列表监听
public
final
static
String
MALL_SERVICE_TOPIC
=
"/MA/{}/service/push"
;
public
final
static
String
MALL_SERVICE_TOPIC
=
"/MA/{}/service/push"
;
//所有 mall agent 统一升级
public
final
static
String
MALL_ALL_OTA_TOPIC
=
"/MA/all/ota"
;
}
}
src/main/java/vion/controller/monitor/AgentController.java
View file @
3d032fa
...
@@ -9,7 +9,9 @@ import vion.dto.monitor.AgentDTO;
...
@@ -9,7 +9,9 @@ import vion.dto.monitor.AgentDTO;
import
vion.model.monitor.AgentRecord
;
import
vion.model.monitor.AgentRecord
;
import
vion.model.monitor.RAgentService
;
import
vion.model.monitor.RAgentService
;
import
vion.model.monitor.ServiceInfo
;
import
vion.model.monitor.ServiceInfo
;
import
vion.model.monitor.UpgradeInfo
;
import
vion.service.monitor.IAgentService
;
import
vion.service.monitor.IAgentService
;
import
vion.service.monitor.IUpgradeInfoService
;
import
vion.vo.monitor.AgentVO
;
import
vion.vo.monitor.AgentVO
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
...
@@ -24,7 +26,9 @@ import java.util.List;
...
@@ -24,7 +26,9 @@ import java.util.List;
public
class
AgentController
{
public
class
AgentController
{
private
final
IAgentService
agentService
;
private
final
IAgentService
agentService
;
private
final
IUpgradeInfoService
upgradeInfoService
;
// region agent 删改查
@GetMapping
@GetMapping
@SaCheckPermission
(
value
=
"agent:list"
,
orRole
=
"admin"
)
@SaCheckPermission
(
value
=
"agent:list"
,
orRole
=
"admin"
)
public
Page
<
AgentVO
>
list
(
AgentDTO
dto
)
{
public
Page
<
AgentVO
>
list
(
AgentDTO
dto
)
{
...
@@ -49,13 +53,39 @@ public class AgentController {
...
@@ -49,13 +53,39 @@ public class AgentController {
public
String
remove
(
@PathVariable
Long
id
)
{
public
String
remove
(
@PathVariable
Long
id
)
{
return
agentService
.
removeById
(
id
)
?
"删除成功"
:
"删除失败"
;
return
agentService
.
removeById
(
id
)
?
"删除成功"
:
"删除失败"
;
}
}
// endregion
// region agent 升级
@PostMapping
(
"/upgrade/{uid}"
)
@PostMapping
(
"/upgrade/{uid}"
)
@SaCheckPermission
(
value
=
"agent:upgrade"
,
orRole
=
"admin"
)
@SaCheckPermission
(
value
=
"agent:upgrade"
,
orRole
=
"admin"
)
public
String
upgradeCommand
(
@PathVariable
String
uid
,
Long
upgradeId
)
{
public
String
upgradeCommand
(
@PathVariable
String
uid
,
Long
upgradeId
)
{
return
agentService
.
upgradeCommand
(
uid
,
upgradeId
);
return
agentService
.
upgradeCommand
(
uid
,
upgradeId
);
}
}
@PostMapping
(
"/upgrade/store"
)
@SaCheckPermission
(
value
=
"agent:upgrade:store"
,
orRole
=
"admin"
)
public
String
upgradeStoreCommand
(
Long
upgradeId
)
{
return
agentService
.
upgradeStoreCommand
(
upgradeId
);
}
@PostMapping
(
"/upgrade/mall"
)
@SaCheckPermission
(
value
=
"agent:upgrade:mall"
,
orRole
=
"admin"
)
public
String
upgradeMallCommand
(
Long
upgradeId
)
{
return
agentService
.
upgradeMallCommand
(
upgradeId
);
}
@GetMapping
(
"/upgrade/info/{uid}"
)
@SaCheckPermission
(
value
=
"agent:upgrade:info"
,
orRole
=
"admin"
)
public
List
<
UpgradeInfo
>
getUpgradeInfoByUid
(
@PathVariable
String
uid
,
String
version
)
{
return
upgradeInfoService
.
lambdaQuery
()
.
eq
(
UpgradeInfo:
:
getAgentUid
,
uid
)
.
eq
(
UpgradeInfo:
:
getVersion
,
version
)
.
orderByDesc
(
UpgradeInfo:
:
getReportTime
)
.
list
();
}
// endregion
// region agent 关联服务相关接口
@GetMapping
(
"/service/{uid}"
)
@GetMapping
(
"/service/{uid}"
)
@SaCheckPermission
(
value
=
"agent:service:query"
,
orRole
=
"admin"
)
@SaCheckPermission
(
value
=
"agent:service:query"
,
orRole
=
"admin"
)
public
List
<
ServiceInfo
>
getServicesByUid
(
@PathVariable
String
uid
)
{
public
List
<
ServiceInfo
>
getServicesByUid
(
@PathVariable
String
uid
)
{
...
@@ -85,6 +115,7 @@ public class AgentController {
...
@@ -85,6 +115,7 @@ public class AgentController {
public
String
assign
(
@PathVariable
String
uid
,
@RequestBody
List
<
ServiceInfo
>
serviceInfoList
)
{
public
String
assign
(
@PathVariable
String
uid
,
@RequestBody
List
<
ServiceInfo
>
serviceInfoList
)
{
return
agentService
.
assign
(
uid
,
serviceInfoList
);
return
agentService
.
assign
(
uid
,
serviceInfoList
);
}
}
// endregion
@GetMapping
(
"/form/{uid}"
)
@GetMapping
(
"/form/{uid}"
)
@SaCheckPermission
(
value
=
"agent:form"
,
orRole
=
"admin"
)
@SaCheckPermission
(
value
=
"agent:form"
,
orRole
=
"admin"
)
...
...
src/main/java/vion/controller/mqtt/MonitorController.java
View file @
3d032fa
...
@@ -3,11 +3,9 @@ package vion.controller.mqtt;
...
@@ -3,11 +3,9 @@ package vion.controller.mqtt;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
vion.dto.monitor.OrgDTO
;
import
vion.dto.monitor.OrgDTO
;
import
vion.model.monitor.Agent
;
import
vion.model.monitor.*
;
import
vion.model.monitor.AgentRecord
;
import
vion.model.monitor.ServiceRecord
;
import
vion.model.monitor.Upgrade
;
import
vion.service.monitor.IAgentService
;
import
vion.service.monitor.IAgentService
;
import
vion.service.monitor.IUpgradeInfoService
;
import
java.util.List
;
import
java.util.List
;
...
@@ -21,6 +19,7 @@ import java.util.List;
...
@@ -21,6 +19,7 @@ import java.util.List;
public
class
MonitorController
{
public
class
MonitorController
{
private
final
IAgentService
agentService
;
private
final
IAgentService
agentService
;
private
final
IUpgradeInfoService
upgradeInfoService
;
/**
/**
* Agent 注册
* Agent 注册
...
@@ -44,6 +43,11 @@ public class MonitorController {
...
@@ -44,6 +43,11 @@ public class MonitorController {
return
agentService
.
getUpgradeInfo
(
id
);
return
agentService
.
getUpgradeInfo
(
id
);
}
}
@PostMapping
(
"/upgrade/info"
)
public
String
reportUpgradeInfo
(
@RequestBody
UpgradeInfo
upgradeInfo
)
{
return
upgradeInfoService
.
save
(
upgradeInfo
)
?
"success"
:
"error"
;
}
/**
/**
* Agent 发送服务器信息
* Agent 发送服务器信息
*
*
...
...
src/main/java/vion/mapper/monitor/UpgradeInfoMapper.java
0 → 100644
View file @
3d032fa
package
vion
.
mapper
.
monitor
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
vion.model.monitor.UpgradeInfo
;
/**
* @author vion
* @date 2024/11/24
*/
public
interface
UpgradeInfoMapper
extends
BaseMapper
<
UpgradeInfo
>
{
}
\ No newline at end of file
\ No newline at end of file
src/main/java/vion/model/monitor/UpgradeInfo.java
0 → 100644
View file @
3d032fa
package
vion
.
model
.
monitor
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.time.LocalDateTime
;
/**
* @author vion
* @date 2024/11/24
*/
@Getter
@Setter
@TableName
(
value
=
"m_upgrade_info"
)
public
class
UpgradeInfo
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
@TableField
(
value
=
"agent_uid"
)
private
String
agentUid
;
/**
* 版本号
*/
@TableField
(
value
=
"version"
)
private
String
version
;
/**
* 内容
*/
@TableField
(
value
=
"content"
)
private
String
content
;
/**
* 上报时间
*/
@TableField
(
value
=
"report_time"
)
private
LocalDateTime
reportTime
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
LocalDateTime
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
LocalDateTime
updateTime
;
}
\ No newline at end of file
\ No newline at end of file
src/main/java/vion/service/impl/monitor/AgentServiceImpl.java
View file @
3d032fa
...
@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Value;
...
@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
vion.constant.MqttMessageType
;
import
vion.constant.MqttMessageType
;
import
vion.constant.MqttTopic
;
import
vion.dto.monitor.AgentDTO
;
import
vion.dto.monitor.AgentDTO
;
import
vion.dto.monitor.MqttAuthDTO
;
import
vion.dto.monitor.MqttAuthDTO
;
import
vion.dto.monitor.OrgDTO
;
import
vion.dto.monitor.OrgDTO
;
...
@@ -30,6 +31,7 @@ import vion.model.monitor.*;
...
@@ -30,6 +31,7 @@ import vion.model.monitor.*;
import
vion.service.monitor.*
;
import
vion.service.monitor.*
;
import
vion.utils.JsonUtil
;
import
vion.utils.JsonUtil
;
import
vion.utils.TopicUtil
;
import
vion.utils.TopicUtil
;
import
vion.utils.ip.IPUtil
;
import
vion.vo.monitor.AgentVO
;
import
vion.vo.monitor.AgentVO
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
...
@@ -99,9 +101,9 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp
...
@@ -99,9 +101,9 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp
.
collect
(
Collectors
.
toMap
(
.
collect
(
Collectors
.
toMap
(
Map
.
Entry
::
getKey
,
Map
.
Entry
::
getKey
,
entry
->
entry
.
getValue
().
stream
()
entry
->
entry
.
getValue
().
stream
()
.
map
(
rec
->
(
rec
.
getStatus
()
!
=
200
.
map
(
rec
->
(
rec
.
getStatus
()
=
=
200
||
rec
.
getResponseTime
()
>
1000L
&&
rec
.
getResponseTime
()
<
1000L
||
(
rec
.
getBodyCode
()
!=
200
||
rec
.
getBodyStatus
()))
?
rec
.
getName
()
:
"success"
)
&&
(
rec
.
getBodyCode
()
==
200
||
rec
.
getBodyStatus
()))
?
"success"
:
rec
.
getName
()
)
.
distinct
()
.
distinct
()
.
filter
(
StrUtil:
:
isNotBlank
)
.
filter
(
StrUtil:
:
isNotBlank
)
.
collect
(
Collectors
.
joining
(
","
))
.
collect
(
Collectors
.
joining
(
","
))
...
@@ -142,6 +144,20 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp
...
@@ -142,6 +144,20 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp
}
}
@Override
@Override
public
String
upgradeStoreCommand
(
Long
upgradeId
)
{
var
node
=
JsonUtil
.
createObj
().
put
(
"upgradeId"
,
upgradeId
);
client
.
publish
(
MqttTopic
.
STORE_ALL_OTA_TOPIC
,
JsonUtil
.
toJsonByte
(
node
),
MqttQoS
.
QOS2
);
return
"升级指令下发成功,请稍后查看Agent版本号"
;
}
@Override
public
String
upgradeMallCommand
(
Long
upgradeId
)
{
var
node
=
JsonUtil
.
createObj
().
put
(
"upgradeId"
,
upgradeId
);
client
.
publish
(
MqttTopic
.
MALL_ALL_OTA_TOPIC
,
JsonUtil
.
toJsonByte
(
node
),
MqttQoS
.
QOS2
);
return
"升级指令下发成功,请稍后查看Agent版本号"
;
}
@Override
public
List
<
ServiceInfo
>
getServicesByUid
(
String
uid
)
{
public
List
<
ServiceInfo
>
getServicesByUid
(
String
uid
)
{
var
wrapper
=
new
MPJLambdaWrapper
<
ServiceInfo
>()
var
wrapper
=
new
MPJLambdaWrapper
<
ServiceInfo
>()
.
selectAs
(
RAgentService:
:
getId
,
ServiceInfo:
:
getId
)
.
selectAs
(
RAgentService:
:
getId
,
ServiceInfo:
:
getId
)
...
@@ -446,7 +462,11 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp
...
@@ -446,7 +462,11 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp
log
.
info
(
"Monitor Server 连接 Mqtt Server 成功. clientid:{}, ip:{}"
,
clientid
,
ip
);
log
.
info
(
"Monitor Server 连接 Mqtt Server 成功. clientid:{}, ip:{}"
,
clientid
,
ip
);
return
;
return
;
}
}
this
.
lambdaUpdate
().
set
(
Agent:
:
getStatus
,
1
).
set
(
Agent:
:
getIpaddr
,
ip
).
eq
(
Agent:
:
getUid
,
clientid
).
update
(
new
Agent
());
this
.
lambdaUpdate
().
set
(
Agent:
:
getStatus
,
1
)
.
set
(
Agent:
:
getIpaddr
,
ip
)
.
set
(
Agent:
:
getAddr
,
IPUtil
.
getAddr
(
ip
))
.
eq
(
Agent:
:
getUid
,
clientid
)
.
update
(
new
Agent
());
log
.
info
(
"Agent 连接 Mqtt Server 成功. clientid:{}, ip:{}"
,
clientid
,
ip
);
log
.
info
(
"Agent 连接 Mqtt Server 成功. clientid:{}, ip:{}"
,
clientid
,
ip
);
}
}
...
...
src/main/java/vion/service/impl/monitor/UpgradeInfoServiceImpl.java
0 → 100644
View file @
3d032fa
package
vion
.
service
.
impl
.
monitor
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
vion.mapper.monitor.UpgradeInfoMapper
;
import
vion.model.monitor.UpgradeInfo
;
import
vion.service.monitor.IUpgradeInfoService
;
/**
* @author vion
* @date 2024/11/24
*/
@Service
public
class
UpgradeInfoServiceImpl
extends
ServiceImpl
<
UpgradeInfoMapper
,
UpgradeInfo
>
implements
IUpgradeInfoService
{
}
src/main/java/vion/service/monitor/IAgentService.java
View file @
3d032fa
...
@@ -29,6 +29,10 @@ public interface IAgentService extends MPJBaseService<Agent> {
...
@@ -29,6 +29,10 @@ public interface IAgentService extends MPJBaseService<Agent> {
String
upgradeCommand
(
String
uid
,
Long
upgradeId
);
String
upgradeCommand
(
String
uid
,
Long
upgradeId
);
String
upgradeStoreCommand
(
Long
upgradeId
);
String
upgradeMallCommand
(
Long
upgradeId
);
List
<
ServiceInfo
>
getServicesByUid
(
String
uid
);
List
<
ServiceInfo
>
getServicesByUid
(
String
uid
);
String
saveServicesByUid
(
String
uid
,
@RequestBody
List
<
ServiceInfo
>
ServiceInfoList
);
String
saveServicesByUid
(
String
uid
,
@RequestBody
List
<
ServiceInfo
>
ServiceInfoList
);
...
...
src/main/java/vion/service/monitor/IUpgradeInfoService.java
0 → 100644
View file @
3d032fa
package
vion
.
service
.
monitor
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
vion.model.monitor.UpgradeInfo
;
/**
* @author vion
* @date 2024/11/24
*/
public
interface
IUpgradeInfoService
extends
IService
<
UpgradeInfo
>{
}
src/main/java/vion/utils/ip/IPUtil.java
View file @
3d032fa
...
@@ -189,7 +189,7 @@ public class IPUtil {
...
@@ -189,7 +189,7 @@ public class IPUtil {
put
(
36492
,
"谷歌云"
);
put
(
36492
,
"谷歌云"
);
}};
}};
public
static
String
get
Ip
(
String
ip
)
{
public
static
String
get
Addr
(
String
ip
)
{
var
cityDB
=
FileUtil
.
file
(
cityPath
);
var
cityDB
=
FileUtil
.
file
(
cityPath
);
var
asnDB
=
FileUtil
.
file
(
asnPath
);
var
asnDB
=
FileUtil
.
file
(
asnPath
);
try
(
DatabaseReader
cityReader
=
new
DatabaseReader
.
Builder
(
cityDB
)
try
(
DatabaseReader
cityReader
=
new
DatabaseReader
.
Builder
(
cityDB
)
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment