Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
7c35a79c
Commit
7c35a79c
authored
May 05, 2020
by
ZhengJie
Browse files
[新增功能](el-admin v2.5): v2.5 beta
详情
https://www.ydyno.com/archives/1225.html
parent
d35ffc9d
Changes
295
Hide whitespace changes
Inline
Side-by-side
eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/WebSocketServer.java
View file @
7c35a79c
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
me.zhengjie.modules.mnt.websocket
;
import
com.alibaba.fastjson.JSONObject
;
...
...
@@ -11,8 +26,8 @@ import java.io.IOException;
import
java.util.Objects
;
import
java.util.concurrent.CopyOnWriteArraySet
;
/**
* @author
:
ZhangHouYing
* @date
:
2019-08-10 15:46
* @author ZhangHouYing
* @date 2019-08-10 15:46
*/
@ServerEndpoint
(
"/webSocket/{sid}"
)
@Slf4j
...
...
eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.config
;
import
me.zhengjie.modules.monitor.service.VisitsService
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.stereotype.Component
;
/**
* 初始化站点统计
* @author Zheng Jie
*/
@Component
public
class
VisitsInitialization
implements
ApplicationRunner
{
private
final
VisitsService
visitsService
;
public
VisitsInitialization
(
VisitsService
visitsService
)
{
this
.
visitsService
=
visitsService
;
}
@Override
public
void
run
(
ApplicationArguments
args
){
System
.
out
.
println
(
"--------------- 初始化站点统计,如果存在今日统计则跳过 ---------------"
);
visitsService
.
save
();
System
.
out
.
println
(
"--------------- 初始化站点统计完成 ---------------"
);
}
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/Server.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.domain
;
import
lombok.Data
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
javax.persistence.*
;
import
java.io.Serializable
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Entity
@Data
@Table
(
name
=
"monitor_server"
)
public
class
Server
implements
Serializable
{
/**
* 编号
*/
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
private
Integer
id
;
/**
* 名称
*/
@Column
(
name
=
"name"
)
private
String
name
;
/**
* IP地址
*/
@Column
(
name
=
"address"
,
nullable
=
false
)
private
String
address
;
/**
* 访问端口
*/
@Column
(
name
=
"port"
)
private
Integer
port
;
/**
* 状态
*/
@Column
(
name
=
"state"
)
private
String
state
;
/**
* CPU使用率
*/
@Column
(
name
=
"cpu_rate"
)
private
Double
cpuRate
;
/**
* CPU内核数
*/
@Column
(
name
=
"cpu_core"
)
private
Integer
cpuCore
;
/**
* 内存总数
*/
@Column
(
name
=
"mem_total"
)
private
Double
memTotal
;
/**
* 内存使用量
*/
@Column
(
name
=
"mem_used"
)
private
Double
memUsed
;
/**
* 磁盘总量
*/
@Column
(
name
=
"disk_total"
)
private
Double
diskTotal
;
/**
* 磁盘使用量
*/
@Column
(
name
=
"disk_used"
)
private
Double
diskUsed
;
/**
* 交换区总量
*/
@Column
(
name
=
"swap_total"
)
private
Double
swapTotal
;
/**
* 交换区使用量
*/
@Column
(
name
=
"swap_used"
)
private
Double
swapUsed
;
/**
* 排序
*/
@Column
(
name
=
"sort"
)
private
Integer
sort
;
public
void
copy
(
Server
source
){
BeanUtil
.
copyProperties
(
source
,
this
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
));
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/Visits.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.domain
;
import
lombok.Data
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
/**
* pv 与 ip 统计
*
* @author Zheng Jie
* @date 2018-12-13
*/
@Entity
@Data
@Table
(
name
=
"visits"
)
public
class
Visits
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
unique
=
true
)
private
String
date
;
@Column
(
name
=
"pv_counts"
)
private
Long
pvCounts
;
@Column
(
name
=
"ip_counts"
)
private
Long
ipCounts
;
@CreationTimestamp
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
@Column
(
name
=
"week_day"
)
private
String
weekDay
;
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/RedisVo.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.domain.vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
/**
* @author Zheng Jie
* @date 2018-12-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RedisVo
implements
Serializable
{
@NotBlank
private
String
key
;
@NotBlank
private
String
value
;
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/ServerRepository.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.repository
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
public
interface
ServerRepository
extends
JpaRepository
<
Server
,
Integer
>,
JpaSpecificationExecutor
<
Server
>
{
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.repository
;
import
me.zhengjie.modules.monitor.domain.Visits
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author Zheng Jie
* @date 2018-12-13
*/
@Repository
public
interface
VisitsRepository
extends
JpaRepository
<
Visits
,
Long
>
{
/**
* findByDate
* @param date 日期
* @return Visits
*/
Visits
findByDate
(
String
date
);
/**
* 获得一个时间段的记录
* @param date1 日期1
* @param date2 日期2
* @return List
*/
@Query
(
value
=
"select * FROM visits where create_time between ?1 and ?2"
,
nativeQuery
=
true
)
List
<
Visits
>
findAllVisits
(
String
date1
,
String
date2
);
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/ServerController.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.rest
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.service.ServerService
;
import
me.zhengjie.modules.monitor.service.dto.ServerQueryCriteria
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Set
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Api
(
tags
=
"服务监控管理"
)
@RestController
@RequestMapping
(
"/api/server"
)
public
class
ServerController
{
private
final
ServerService
serverService
;
public
ServerController
(
ServerService
serverService
)
{
this
.
serverService
=
serverService
;
}
@GetMapping
@Log
(
"查询服务监控"
)
@ApiOperation
(
"查询服务监控"
)
@PreAuthorize
(
"@el.check('server:list')"
)
public
ResponseEntity
<
Object
>
getServers
(
ServerQueryCriteria
criteria
,
Pageable
pageable
){
return
new
ResponseEntity
<>(
serverService
.
queryAll
(
criteria
,
pageable
),
HttpStatus
.
OK
);
}
@PostMapping
@Log
(
"新增服务监控"
)
@ApiOperation
(
"新增服务监控"
)
@PreAuthorize
(
"@el.check('server:add')"
)
public
ResponseEntity
<
Object
>
create
(
@Validated
@RequestBody
Server
resources
){
return
new
ResponseEntity
<>(
serverService
.
create
(
resources
),
HttpStatus
.
CREATED
);
}
@PutMapping
@Log
(
"修改服务监控"
)
@ApiOperation
(
"修改服务监控"
)
@PreAuthorize
(
"@el.check('server:edit')"
)
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
Server
resources
){
serverService
.
update
(
resources
);
return
new
ResponseEntity
<>(
HttpStatus
.
NO_CONTENT
);
}
@DeleteMapping
@Log
(
"删除服务监控"
)
@ApiOperation
(
"删除服务监控"
)
@PreAuthorize
(
"@el.check('server:del')"
)
public
ResponseEntity
<
Object
>
delete
(
@RequestBody
Set
<
Integer
>
ids
){
serverService
.
delete
(
ids
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.rest
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
me.zhengjie.modules.monitor.service.VisitsService
;
import
me.zhengjie.utils.RequestHolder
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author Zheng Jie
* @date 2018-12-13
*/
@RestController
@RequestMapping
(
"/api/visits"
)
@Api
(
tags
=
"系统:访问记录管理"
)
public
class
VisitsController
{
private
final
VisitsService
visitsService
;
public
VisitsController
(
VisitsService
visitsService
)
{
this
.
visitsService
=
visitsService
;
}
@PostMapping
@ApiOperation
(
"创建访问记录"
)
public
ResponseEntity
<
Object
>
create
(){
visitsService
.
count
(
RequestHolder
.
getHttpServletRequest
());
return
new
ResponseEntity
<>(
HttpStatus
.
CREATED
);
}
@GetMapping
@ApiOperation
(
"查询"
)
public
ResponseEntity
<
Object
>
get
(){
return
new
ResponseEntity
<>(
visitsService
.
get
(),
HttpStatus
.
OK
);
}
@GetMapping
(
value
=
"/chartData"
)
@ApiOperation
(
"查询图表数据"
)
public
ResponseEntity
<
Object
>
getChartData
(){
return
new
ResponseEntity
<>(
visitsService
.
getChartData
(),
HttpStatus
.
OK
);
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/ServerService.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.service
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.service.dto.ServerDTO
;
import
me.zhengjie.modules.monitor.service.dto.ServerQueryCriteria
;
import
org.springframework.data.domain.Pageable
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
public
interface
ServerService
{
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map
<
String
,
Object
>
queryAll
(
ServerQueryCriteria
criteria
,
Pageable
pageable
);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<ServerDTO>
*/
List
<
ServerDTO
>
queryAll
(
ServerQueryCriteria
criteria
);
/**
* 根据ID查询
* @param id ID
* @return ServerDTO
*/
ServerDTO
findById
(
Integer
id
);
/**
* 创建服务监控
* @param resources /
* @return /
*/
ServerDTO
create
(
Server
resources
);
/**
* 编辑服务监控
* @param resources /
*/
void
update
(
Server
resources
);
/**
* 删除
* @param id /
*/
void
delete
(
Set
<
Integer
>
id
);
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.service
;
import
org.springframework.scheduling.annotation.Async
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author Zheng Jie
* @date 2018-12-13
*/
public
interface
VisitsService
{
/**
* 提供给定时任务,每天0点执行
*/
void
save
();
/**
* 新增记录
* @param request /
*/
@Async
void
count
(
HttpServletRequest
request
);
/**
* 获取数据
* @return /
*/
Object
get
();
/**
* getChartData
* @return /
*/
Object
getChartData
();
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/dto/ServerDTO.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.service.dto
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Data
public
class
ServerDTO
implements
Serializable
{
private
Integer
id
;
private
String
name
;
private
String
address
;
private
Integer
port
;
private
String
state
;
/** CPU使用率 */
private
Float
cpuRate
;
/** CPU内核数 */
private
Integer
cpuCore
;
/** 内存总数 */
private
Float
memTotal
;
/** 内存使用量 */
private
Float
memUsed
;
/** 磁盘总量 */
private
Float
diskTotal
;
/** 磁盘使用量 */
private
Float
diskUsed
;
/** 交换区总量 */
private
Float
swapTotal
;
/** 交换区使用量 */
private
Float
swapUsed
;
private
Integer
sort
;
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/dto/ServerQueryCriteria.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.service.dto
;
import
lombok.Data
;
import
me.zhengjie.annotation.Query
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Data
public
class
ServerQueryCriteria
{
@Query
(
blurry
=
"name,address"
)
private
String
blurry
;
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/ServerServiceImpl.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.service.impl
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.repository.ServerRepository
;
import
me.zhengjie.modules.monitor.service.ServerService
;
import
me.zhengjie.modules.monitor.service.dto.ServerDTO
;
import
me.zhengjie.modules.monitor.service.dto.ServerQueryCriteria
;
import
me.zhengjie.modules.monitor.service.mapper.ServerMapper
;
import
me.zhengjie.utils.PageUtil
;
import
me.zhengjie.utils.QueryHelp
;
import
me.zhengjie.utils.ValidationUtil
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
ServerServiceImpl
implements
ServerService
{
private
final
ServerRepository
serverRepository
;
private
final
ServerMapper
serverMapper
;
public
ServerServiceImpl
(
ServerRepository
serverRepository
,
ServerMapper
serverMapper
)
{
this
.
serverRepository
=
serverRepository
;
this
.
serverMapper
=
serverMapper
;
}
@Override
public
Map
<
String
,
Object
>
queryAll
(
ServerQueryCriteria
criteria
,
Pageable
pageable
){
Page
<
Server
>
page
=
serverRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
page
.
forEach
(
server
->
{
try
{
server
.
setState
(
"1"
);
String
url
=
String
.
format
(
"http://%s:%d/api/serverMonitor"
,
server
.
getAddress
(),
server
.
getPort
());
String
res
=
HttpUtil
.
get
(
url
,
3000
);
JSONObject
obj
=
JSONObject
.
parseObject
(
res
);
server
.
setCpuRate
(
obj
.
getDouble
(
"cpuRate"
));
server
.
setCpuCore
(
obj
.
getInteger
(
"cpuCore"
));
server
.
setMemTotal
(
obj
.
getDouble
(
"memTotal"
));
server
.
setMemUsed
(
obj
.
getDouble
(
"memUsed"
));
server
.
setDiskTotal
(
obj
.
getDouble
(
"diskTotal"
));
server
.
setDiskUsed
(
obj
.
getDouble
(
"diskUsed"
));
server
.
setSwapTotal
(
obj
.
getDouble
(
"swapTotal"
));
server
.
setSwapUsed
(
obj
.
getDouble
(
"swapUsed"
));
}
catch
(
Exception
e
)
{
server
.
setState
(
"0"
);
e
.
printStackTrace
();
}
});
return
PageUtil
.
toPage
(
page
.
map
(
serverMapper:
:
toDto
));
}
@Override
public
List
<
ServerDTO
>
queryAll
(
ServerQueryCriteria
criteria
){
return
serverMapper
.
toDto
(
serverRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
}
@Override
public
ServerDTO
findById
(
Integer
id
)
{
Server
server
=
serverRepository
.
findById
(
id
).
orElseGet
(
Server:
:
new
);
ValidationUtil
.
isNull
(
server
.
getId
(),
"Server"
,
"id"
,
id
);
return
serverMapper
.
toDto
(
server
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ServerDTO
create
(
Server
resources
)
{
return
serverMapper
.
toDto
(
serverRepository
.
save
(
resources
));
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
Server
resources
)
{
Server
server
=
serverRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
Server:
:
new
);
ValidationUtil
.
isNull
(
server
.
getId
(),
"Server"
,
"id"
,
resources
.
getId
());
server
.
copy
(
resources
);
serverRepository
.
save
(
server
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Set
<
Integer
>
ids
)
{
for
(
Integer
id
:
ids
)
{
serverRepository
.
deleteById
(
id
);
}
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.service.impl
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.modules.monitor.domain.Visits
;
import
me.zhengjie.modules.monitor.repository.VisitsRepository
;
import
me.zhengjie.modules.monitor.service.VisitsService
;
import
me.zhengjie.repository.LogRepository
;
import
me.zhengjie.utils.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.servlet.http.HttpServletRequest
;
import
java.time.LocalDate
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author Zheng Jie
* @date 2018-12-13
*/
@Slf4j
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
VisitsServiceImpl
implements
VisitsService
{
private
final
VisitsRepository
visitsRepository
;
private
final
LogRepository
logRepository
;
public
VisitsServiceImpl
(
VisitsRepository
visitsRepository
,
LogRepository
logRepository
)
{
this
.
visitsRepository
=
visitsRepository
;
this
.
logRepository
=
logRepository
;
}
@Override
public
void
save
()
{
LocalDate
localDate
=
LocalDate
.
now
();
Visits
visits
=
visitsRepository
.
findByDate
(
localDate
.
toString
());
if
(
visits
==
null
){
visits
=
new
Visits
();
visits
.
setWeekDay
(
StringUtils
.
getWeekDay
());
visits
.
setPvCounts
(
1L
);
visits
.
setIpCounts
(
1L
);
visits
.
setDate
(
localDate
.
toString
());
visitsRepository
.
save
(
visits
);
}
}
@Override
public
void
count
(
HttpServletRequest
request
)
{
LocalDate
localDate
=
LocalDate
.
now
();
Visits
visits
=
visitsRepository
.
findByDate
(
localDate
.
toString
());
visits
.
setPvCounts
(
visits
.
getPvCounts
()+
1
);
long
ipCounts
=
logRepository
.
findIp
(
localDate
.
toString
(),
localDate
.
plusDays
(
1
).
toString
());
visits
.
setIpCounts
(
ipCounts
);
visitsRepository
.
save
(
visits
);
}
@Override
public
Object
get
()
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>(
4
);
LocalDate
localDate
=
LocalDate
.
now
();
Visits
visits
=
visitsRepository
.
findByDate
(
localDate
.
toString
());
List
<
Visits
>
list
=
visitsRepository
.
findAllVisits
(
localDate
.
minusDays
(
6
).
toString
(),
localDate
.
plusDays
(
1
).
toString
());
long
recentVisits
=
0
,
recentIp
=
0
;
for
(
Visits
data
:
list
)
{
recentVisits
+=
data
.
getPvCounts
();
recentIp
+=
data
.
getIpCounts
();
}
map
.
put
(
"newVisits"
,
visits
.
getPvCounts
());
map
.
put
(
"newIp"
,
visits
.
getIpCounts
());
map
.
put
(
"recentVisits"
,
recentVisits
);
map
.
put
(
"recentIp"
,
recentIp
);
return
map
;
}
@Override
public
Object
getChartData
()
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>(
3
);
LocalDate
localDate
=
LocalDate
.
now
();
List
<
Visits
>
list
=
visitsRepository
.
findAllVisits
(
localDate
.
minusDays
(
6
).
toString
(),
localDate
.
plusDays
(
1
).
toString
());
map
.
put
(
"weekDays"
,
list
.
stream
().
map
(
Visits:
:
getWeekDay
).
collect
(
Collectors
.
toList
()));
map
.
put
(
"visitsData"
,
list
.
stream
().
map
(
Visits:
:
getPvCounts
).
collect
(
Collectors
.
toList
()));
map
.
put
(
"ipData"
,
list
.
stream
().
map
(
Visits:
:
getIpCounts
).
collect
(
Collectors
.
toList
()));
return
map
;
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/mapper/ServerMapper.java
deleted
100644 → 0
View file @
d35ffc9d
package
me.zhengjie.modules.monitor.service.mapper
;
import
me.zhengjie.base.BaseMapper
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.service.dto.ServerDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
public
interface
ServerMapper
extends
BaseMapper
<
ServerDTO
,
Server
>
{
}
eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java
View file @
7c35a79c
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
me.zhengjie.modules.quartz.config
;
import
lombok.RequiredArgsConstructor
;
import
me.zhengjie.modules.quartz.domain.QuartzJob
;
import
me.zhengjie.modules.quartz.repository.QuartzJobRepository
;
import
me.zhengjie.modules.quartz.utils.QuartzManage
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
...
...
@@ -14,17 +29,12 @@ import java.util.List;
* @date 2019-01-07
*/
@Component
@RequiredArgsConstructor
public
class
JobRunner
implements
ApplicationRunner
{
private
final
QuartzJobRepository
quartzJobRepository
;
private
final
QuartzManage
quartzManage
;
public
JobRunner
(
QuartzJobRepository
quartzJobRepository
,
QuartzManage
quartzManage
)
{
this
.
quartzJobRepository
=
quartzJobRepository
;
this
.
quartzManage
=
quartzManage
;
}
/**
* 项目启动时重新激活启用的定时任务
* @param applicationArguments /
...
...
eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java
View file @
7c35a79c
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
me.zhengjie.modules.quartz.config
;
import
org.quartz.Scheduler
;
...
...
eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java
View file @
7c35a79c
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
me.zhengjie.modules.quartz.domain
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.hibernate.annotations.CreationTimestamp
;
import
me.zhengjie.base.BaseEntity
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
/**
* @author Zheng Jie
...
...
@@ -16,51 +31,51 @@ import java.sql.Timestamp;
@Getter
@Setter
@Entity
@Table
(
name
=
"quartz_job"
)
public
class
QuartzJob
implements
Serializable
{
@Table
(
name
=
"
sys_
quartz_job"
)
public
class
QuartzJob
extends
BaseEntity
implements
Serializable
{
public
static
final
String
JOB_KEY
=
"JOB_KEY"
;
@Id
@
GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@
Column
(
name
=
"job_id"
)
@NotNull
(
groups
=
{
Update
.
class
})
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
/** 定时器名称 */
@Column
(
name
=
"job_name"
)
@ApiModelProperty
(
value
=
"定时器名称"
)
private
String
jobName
;
/** Bean名称 */
@Column
(
name
=
"bean_name"
)
@NotBlank
@ApiModelProperty
(
value
=
"Bean名称"
)
private
String
beanName
;
/** 方法名称 */
@Column
(
name
=
"method_name"
)
@NotBlank
@ApiModelProperty
(
value
=
"方法名称"
)
private
String
methodName
;
/** 参数 */
@Column
(
name
=
"params"
)
@ApiModelProperty
(
value
=
"参数"
)
private
String
params
;
/** cron表达式 */
@Column
(
name
=
"cron_expression"
)
@NotBlank
@ApiModelProperty
(
value
=
"cron表达式"
)
private
String
cronExpression
;
/** 状态 */
@Column
(
name
=
"is_pause"
)
@ApiModelProperty
(
value
=
"状态,暂时或启动"
)
private
Boolean
isPause
=
false
;
/** 备注 */
@Column
(
name
=
"remark"
)
@NotBlank
private
String
remark
;
@ApiModelProperty
(
value
=
"负责人"
)
private
String
personInCharge
;
@Column
(
name
=
"create_time"
)
@CreationTimestamp
private
Timestamp
createTime
;
@ApiModelProperty
(
value
=
"报警邮箱"
)
private
String
email
;
public
@interface
Update
{}
@ApiModelProperty
(
value
=
"子任务"
)
private
String
subTask
;
@ApiModelProperty
(
value
=
"失败后暂停"
)
private
Boolean
pauseAfterFailure
;
@NotBlank
@ApiModelProperty
(
value
=
"备注"
)
private
String
description
;
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java
View file @
7c35a79c
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
me.zhengjie.modules.quartz.domain
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
...
...
@@ -13,46 +28,40 @@ import java.sql.Timestamp;
*/
@Entity
@Data
@Table
(
name
=
"quartz_log"
)
@Table
(
name
=
"
sys_
quartz_log"
)
public
class
QuartzLog
implements
Serializable
{
@Id
@Column
(
name
=
"log_id"
)
@ApiModelProperty
(
value
=
"ID"
,
hidden
=
true
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
/** 任务名称 */
@Column
(
name
=
"job_name"
)
@ApiModelProperty
(
value
=
"任务名称"
,
hidden
=
true
)
private
String
jobName
;
/** Bean名称 */
@Column
(
name
=
"baen_name"
)
@ApiModelProperty
(
value
=
"bean名称"
,
hidden
=
true
)
private
String
beanName
;
/** 方法名称 */
@Column
(
name
=
"method_name"
)
@ApiModelProperty
(
value
=
"方法名称"
,
hidden
=
true
)
private
String
methodName
;
/** 参数 */
@Column
(
name
=
"params"
)
@ApiModelProperty
(
value
=
"参数"
,
hidden
=
true
)
private
String
params
;
/** cron表达式 */
@Column
(
name
=
"cron_expression"
)
@ApiModelProperty
(
value
=
"cron表达式"
,
hidden
=
true
)
private
String
cronExpression
;
/** 状态 */
@Column
(
name
=
"is_success"
)
@ApiModelProperty
(
value
=
"状态"
,
hidden
=
true
)
private
Boolean
isSuccess
;
/** 异常详细 */
@Column
(
name
=
"exception_detail"
,
columnDefinition
=
"text"
)
@ApiModelProperty
(
value
=
"异常详情"
,
hidden
=
true
)
private
String
exceptionDetail
;
/** 耗时(毫秒) */
@ApiModelProperty
(
value
=
"执行耗时"
,
hidden
=
true
)
private
Long
time
;
/** 创建日期 */
@CreationTimestamp
@
Column
(
name
=
"create_time"
)
@
ApiModelProperty
(
value
=
"创建时间"
,
hidden
=
true
)
private
Timestamp
createTime
;
}
Prev
1
…
3
4
5
6
7
8
9
10
11
…
15
Next
Write
Preview
Supports
Markdown
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