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
3d74dac9
"jetbrains:/idea/checkout/git" did not exist on "a0596273c2f806bad2295898b3d2af7613951124"
Commit
3d74dac9
authored
Dec 22, 2018
by
郑杰
Browse files
eladmin 1.0 版本发布
parents
Changes
88
Hide whitespace changes
Inline
Side-by-side
src/main/java/me/zhengjie/monitor/rest/LoggingController.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.rest
;
import
me.zhengjie.monitor.domain.Logging
;
import
me.zhengjie.monitor.service.query.LoggingQueryService
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author jie
* @date 2018-11-24
*/
@RestController
@RequestMapping
(
"api"
)
public
class
LoggingController
{
@Autowired
private
LoggingQueryService
loggingQueryService
;
@GetMapping
(
value
=
"logs"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','USER')"
)
public
ResponseEntity
getLogs
(
Logging
logging
,
Pageable
pageable
){
return
new
ResponseEntity
(
loggingQueryService
.
queryAll
(
logging
,
pageable
),
HttpStatus
.
OK
);
}
}
src/main/java/me/zhengjie/monitor/rest/RedisController.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.rest
;
import
me.zhengjie.common.aop.log.Log
;
import
me.zhengjie.monitor.domain.vo.RedisVo
;
import
me.zhengjie.monitor.service.RedisService
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.*
;
/**
* @author jie
* @date 2018-12-10
*/
@RestController
@RequestMapping
(
"api"
)
public
class
RedisController
{
@Autowired
private
RedisService
redisService
;
@Log
(
description
=
"查询Redis缓存"
)
@GetMapping
(
value
=
"/redis"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','REDIS_ALL','REDIS_SELECT')"
)
public
ResponseEntity
getRedis
(
String
key
,
Pageable
pageable
){
return
new
ResponseEntity
(
redisService
.
findByKey
(
key
,
pageable
),
HttpStatus
.
OK
);
}
@Log
(
description
=
"新增Redis缓存"
)
@PostMapping
(
value
=
"/redis"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','REDIS_ALL','REDIS_CREATE')"
)
public
ResponseEntity
create
(
@Validated
@RequestBody
RedisVo
resources
){
redisService
.
save
(
resources
);
return
new
ResponseEntity
(
HttpStatus
.
CREATED
);
}
@Log
(
description
=
"修改Redis缓存"
)
@PutMapping
(
value
=
"/redis"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','REDIS_ALL','REDIS_EDIT')"
)
public
ResponseEntity
update
(
@Validated
@RequestBody
RedisVo
resources
){
redisService
.
save
(
resources
);
return
new
ResponseEntity
(
HttpStatus
.
NO_CONTENT
);
}
@Log
(
description
=
"删除Redis缓存"
)
@DeleteMapping
(
value
=
"/redis/{key}"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')"
)
public
ResponseEntity
delete
(
@PathVariable
String
key
){
redisService
.
delete
(
key
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
@Log
(
description
=
"清空Redis缓存"
)
@DeleteMapping
(
value
=
"/redis/all"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')"
)
public
ResponseEntity
deleteAll
(){
redisService
.
flushdb
();
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
}
src/main/java/me/zhengjie/monitor/rest/VisitsController.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.rest
;
import
me.zhengjie.common.utils.RequestHolder
;
import
me.zhengjie.monitor.service.VisitsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
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 jie
* @date 2018-12-13
*/
@RestController
@RequestMapping
(
"api"
)
public
class
VisitsController
{
@Autowired
private
VisitsService
visitsService
;
@PostMapping
(
value
=
"/visits"
)
public
ResponseEntity
create
(){
visitsService
.
save
(
RequestHolder
.
getHttpServletRequest
());
return
new
ResponseEntity
(
HttpStatus
.
CREATED
);
}
@GetMapping
(
value
=
"/visits"
)
public
ResponseEntity
get
(){
return
new
ResponseEntity
(
visitsService
.
get
(),
HttpStatus
.
OK
);
}
@GetMapping
(
value
=
"/visits/chartData"
)
public
ResponseEntity
getChartData
(){
return
new
ResponseEntity
(
visitsService
.
getChartData
(),
HttpStatus
.
OK
);
}
}
src/main/java/me/zhengjie/monitor/service/LoggingService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.service
;
import
me.zhengjie.monitor.domain.Logging
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.springframework.scheduling.annotation.Async
;
/**
* @author jie
* @date 2018-11-24
*/
public
interface
LoggingService
{
/**
* 新增日志
* @param joinPoint
* @param logging
*/
@Async
void
save
(
ProceedingJoinPoint
joinPoint
,
Logging
logging
);
}
src/main/java/me/zhengjie/monitor/service/RedisService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.service
;
import
me.zhengjie.monitor.domain.vo.RedisVo
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
/**
* 可自行扩展
* @author jie
* @date 2018-12-10
*/
public
interface
RedisService
{
/**
* findById
* @param key
* @return
*/
public
Page
findByKey
(
String
key
,
Pageable
pageable
);
/**
* create
* @param redisVo
*/
public
void
save
(
RedisVo
redisVo
);
/**
* delete
* @param key
*/
public
void
delete
(
String
key
);
/**
* 清空所有缓存
*/
public
void
flushdb
();
}
src/main/java/me/zhengjie/monitor/service/VisitsService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.service
;
import
org.springframework.scheduling.annotation.Async
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author jie
* @date 2018-12-13
*/
public
interface
VisitsService
{
/**
* 新增记录
* @param request
*/
@Async
void
save
(
HttpServletRequest
request
);
/**
* 获取数据
* @return
*/
Object
get
();
/**
* getChartData
* @return
*/
Object
getChartData
();
}
src/main/java/me/zhengjie/monitor/service/impl/LoggingServiceImpl.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.service.impl
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
me.zhengjie.common.utils.IpUtil
;
import
me.zhengjie.common.utils.RequestHolder
;
import
me.zhengjie.core.security.AuthorizationUser
;
import
me.zhengjie.core.utils.JwtTokenUtil
;
import
me.zhengjie.monitor.domain.Logging
;
import
me.zhengjie.monitor.repository.LoggingRepository
;
import
me.zhengjie.monitor.service.LoggingService
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
/**
* @author jie
* @date 2018-11-24
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
LoggingServiceImpl
implements
LoggingService
{
@Autowired
private
LoggingRepository
loggingRepository
;
@Value
(
"${jwt.header}"
)
private
String
tokenHeader
;
@Autowired
private
JwtTokenUtil
jwtTokenUtil
;
private
final
String
LOGINPATH
=
"authenticationLogin"
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
save
(
ProceedingJoinPoint
joinPoint
,
Logging
logging
){
// 获取request
HttpServletRequest
request
=
RequestHolder
.
getHttpServletRequest
();
MethodSignature
signature
=
(
MethodSignature
)
joinPoint
.
getSignature
();
Method
method
=
signature
.
getMethod
();
me
.
zhengjie
.
common
.
aop
.
log
.
Log
log
=
method
.
getAnnotation
(
me
.
zhengjie
.
common
.
aop
.
log
.
Log
.
class
);
// 描述
if
(
log
!=
null
)
{
logging
.
setDescription
(
log
.
description
());
}
// 方法路径
String
methodName
=
joinPoint
.
getTarget
().
getClass
().
getName
()+
"."
+
signature
.
getName
()+
"()"
;
String
params
=
"{"
;
//参数值
Object
[]
argValues
=
joinPoint
.
getArgs
();
//参数名称
String
[]
argNames
=
((
MethodSignature
)
joinPoint
.
getSignature
()).
getParameterNames
();
// 用户名
String
username
=
""
;
if
(
argValues
!=
null
){
for
(
int
i
=
0
;
i
<
argValues
.
length
;
i
++)
{
params
+=
" "
+
argNames
[
i
]
+
": "
+
argValues
[
i
];
}
}
// 获取IP地址
logging
.
setRequestIp
(
IpUtil
.
getIP
(
request
));
if
(!
LOGINPATH
.
equals
(
signature
.
getName
())){
UserDetails
userDetails
=
(
UserDetails
)
SecurityContextHolder
.
getContext
().
getAuthentication
().
getPrincipal
();
username
=
userDetails
.
getUsername
();
}
else
{
AuthorizationUser
user
=
JSONUtil
.
toBean
(
new
JSONObject
(
argValues
[
0
]),
AuthorizationUser
.
class
);
username
=
user
.
getUsername
();
}
logging
.
setMethod
(
methodName
);
logging
.
setUsername
(
username
);
logging
.
setParams
(
params
+
" }"
);
loggingRepository
.
save
(
logging
);
}
}
src/main/java/me/zhengjie/monitor/service/impl/RedisServiceImpl.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.service.impl
;
import
me.zhengjie.common.utils.PageUtil
;
import
me.zhengjie.monitor.domain.vo.RedisVo
;
import
me.zhengjie.monitor.service.RedisService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
redis.clients.jedis.Jedis
;
import
redis.clients.jedis.JedisPool
;
import
java.util.*
;
/**
* @author jie
* @date 2018-12-10
*/
@Service
public
class
RedisServiceImpl
implements
RedisService
{
@Autowired
JedisPool
pool
;
@Override
public
Page
findByKey
(
String
key
,
Pageable
pageable
){
Jedis
jedis
=
null
;
try
{
jedis
=
pool
.
getResource
();
List
<
RedisVo
>
redisVos
=
new
ArrayList
<>();
if
(!
key
.
equals
(
"*"
)){
key
=
"*"
+
key
+
"*"
;
}
for
(
String
s
:
jedis
.
keys
(
key
))
{
RedisVo
redisVo
=
new
RedisVo
(
s
,
jedis
.
get
(
s
));
redisVos
.
add
(
redisVo
);
}
Page
<
RedisVo
>
page
=
new
PageImpl
<
RedisVo
>(
PageUtil
.
toPage
(
pageable
.
getPageNumber
(),
pageable
.
getPageSize
(),
redisVos
),
pageable
,
redisVos
.
size
());
return
page
;
}
finally
{
if
(
null
!=
jedis
){
jedis
.
close
();
// 释放资源还给连接池
}
}
}
@Override
public
void
save
(
RedisVo
redisVo
)
{
Jedis
jedis
=
null
;
try
{
jedis
=
pool
.
getResource
();
jedis
.
set
(
redisVo
.
getKey
(),
redisVo
.
getValue
());
}
finally
{
if
(
null
!=
jedis
){
jedis
.
close
();
// 释放资源还给连接池
}
}
}
@Override
public
void
delete
(
String
key
)
{
Jedis
jedis
=
null
;
try
{
jedis
=
pool
.
getResource
();
jedis
.
del
(
key
);
}
finally
{
if
(
null
!=
jedis
){
jedis
.
close
();
// 释放资源还给连接池
}
}
}
@Override
public
void
flushdb
()
{
Jedis
jedis
=
null
;
try
{
jedis
=
pool
.
getResource
();
jedis
.
flushDB
();
}
finally
{
if
(
null
!=
jedis
){
jedis
.
close
();
// 释放资源还给连接池
}
}
}
}
src/main/java/me/zhengjie/monitor/service/impl/VisitsServiceImpl.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.service.impl
;
import
me.zhengjie.common.utils.IpUtil
;
import
me.zhengjie.common.utils.RequestHolder
;
import
me.zhengjie.common.utils.TimeUtil
;
import
me.zhengjie.monitor.domain.Logging
;
import
me.zhengjie.monitor.domain.Visits
;
import
me.zhengjie.monitor.repository.LoggingRepository
;
import
me.zhengjie.monitor.repository.VisitsRepository
;
import
me.zhengjie.monitor.service.VisitsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author jie
* @date 2018-12-13
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
VisitsServiceImpl
implements
VisitsService
{
@Autowired
private
VisitsRepository
visitsRepository
;
@Autowired
private
LoggingRepository
loggingRepository
;
@Override
public
void
save
(
HttpServletRequest
request
)
{
LocalDate
localDate
=
LocalDate
.
now
();
Visits
visits
=
visitsRepository
.
findByDate
(
localDate
.
toString
());
if
(
visits
!=
null
){
visits
.
setPvCounts
(
visits
.
getPvCounts
()+
1
);
long
ipCounts
=
loggingRepository
.
findIp
(
localDate
.
toString
(),
localDate
.
plusDays
(
1
).
toString
());
visits
.
setIpCounts
(
ipCounts
);
}
else
{
visits
=
new
Visits
();
visits
.
setWeekDay
(
TimeUtil
.
getWeekDay
());
visits
.
setPvCounts
(
1L
);
visits
.
setIpCounts
(
1L
);
visits
.
setDate
(
localDate
.
toString
());
}
visitsRepository
.
save
(
visits
);
}
@Override
public
Object
get
()
{
Map
map
=
new
HashMap
();
LocalDate
localDate
=
LocalDate
.
now
();
Visits
visits
=
visitsRepository
.
findByDate
(
localDate
.
toString
());
if
(
visits
==
null
){
save
(
RequestHolder
.
getHttpServletRequest
());
}
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
map
=
new
HashMap
();
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
;
}
}
src/main/java/me/zhengjie/monitor/service/query/LoggingQueryService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.monitor.service.query
;
import
me.zhengjie.monitor.domain.Logging
;
import
me.zhengjie.monitor.repository.LoggingRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.ObjectUtils
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author jie
* @date 2018-11-24
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
LoggingQueryService
{
@Autowired
private
LoggingRepository
loggingRepository
;
public
Page
queryAll
(
Logging
logging
,
Pageable
pageable
){
return
loggingRepository
.
findAll
(
new
Spec
(
logging
),
pageable
);
}
public
List
queryAll
(
Logging
logging
){
return
loggingRepository
.
findAll
(
new
Spec
(
logging
));
}
class
Spec
implements
Specification
<
Logging
>
{
private
Logging
logging
;
public
Spec
(
Logging
logging
){
this
.
logging
=
logging
;
}
@Override
public
Predicate
toPredicate
(
Root
<
Logging
>
root
,
CriteriaQuery
<?>
criteriaQuery
,
CriteriaBuilder
cb
)
{
List
<
Predicate
>
list
=
new
ArrayList
<
Predicate
>();
if
(!
ObjectUtils
.
isEmpty
(
logging
.
getUsername
())){
list
.
add
(
cb
.
like
(
root
.
get
(
"username"
).
as
(
String
.
class
),
"%"
+
logging
.
getUsername
()+
"%"
));
}
if
(!
ObjectUtils
.
isEmpty
(
logging
.
getLogType
()))
{
list
.
add
(
cb
.
equal
(
root
.
get
(
"logType"
).
as
(
String
.
class
),
logging
.
getLogType
()));
}
Predicate
[]
p
=
new
Predicate
[
list
.
size
()];
return
cb
.
and
(
list
.
toArray
(
p
));
}
}
}
src/main/java/me/zhengjie/system/domain/Menu.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.domain
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
java.sql.Timestamp
;
import
java.util.Set
;
/**
* @author jie
* @date 2018-12-17
*/
@Entity
@Getter
@Setter
@Table
(
name
=
"menu"
)
public
class
Menu
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@NotBlank
private
String
name
;
@Column
(
unique
=
true
)
private
Long
soft
;
@Column
(
name
=
"path"
)
private
String
path
;
private
String
component
;
private
String
icon
;
/**
* 上级菜单ID
*/
@Column
(
name
=
"pid"
,
nullable
=
false
)
private
Long
pid
;
/**
* 是否为外链 true/false
*/
private
Boolean
iFrame
;
@ManyToMany
@JoinTable
(
name
=
"menus_roles"
,
joinColumns
=
{
@JoinColumn
(
name
=
"menu_id"
,
referencedColumnName
=
"id"
)},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"role_id"
,
referencedColumnName
=
"id"
)})
private
Set
<
Role
>
roles
;
@CreationTimestamp
private
Timestamp
createTime
;
}
src/main/java/me/zhengjie/system/domain/Permission.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
import
java.util.Set
;
/**
* @author jie
* @date 2018-12-03
*/
@Entity
@Getter
@Setter
@Table
(
name
=
"permission"
)
public
class
Permission
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@NotBlank
private
String
name
;
/**
* 上级类目
*/
@NotNull
@Column
(
name
=
"pid"
,
nullable
=
false
)
private
Long
pid
;
@NotBlank
private
String
alias
;
@JsonIgnore
@ManyToMany
(
mappedBy
=
"permissions"
)
private
Set
<
Role
>
roles
;
@CreationTimestamp
private
Timestamp
createTime
;
@Override
public
String
toString
()
{
return
"Permission{"
+
"id="
+
id
+
", name='"
+
name
+
'\''
+
", pid="
+
pid
+
", alias='"
+
alias
+
'\''
+
", createTime="
+
createTime
+
'}'
;
}
}
src/main/java/me/zhengjie/system/domain/Role.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
import
java.util.Set
;
/**
* 角色
* @author jie
* @date 2018-11-22
*/
@Entity
@Table
(
name
=
"role"
)
@Getter
@Setter
public
class
Role
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
)
@NotBlank
private
String
name
;
@Column
private
String
remark
;
@JsonIgnore
@ManyToMany
(
mappedBy
=
"roles"
)
private
Set
<
User
>
users
;
@ManyToMany
@JoinTable
(
name
=
"roles_permissions"
,
joinColumns
=
{
@JoinColumn
(
name
=
"role_id"
,
referencedColumnName
=
"id"
)},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"permission_id"
,
referencedColumnName
=
"id"
)})
private
Set
<
Permission
>
permissions
;
@JsonIgnore
@ManyToMany
(
mappedBy
=
"roles"
)
private
Set
<
Menu
>
menus
;
@Column
@CreationTimestamp
private
Timestamp
createTime
;
@Override
public
String
toString
()
{
return
"Role{"
+
"id="
+
id
+
", name='"
+
name
+
'\''
+
", remark='"
+
remark
+
'\''
+
", createDateTime="
+
createTime
+
'}'
;
}
}
src/main/java/me/zhengjie/system/domain/User.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.domain
;
import
java.io.Serializable
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.hibernate.annotations.CreationTimestamp
;
import
java.sql.Timestamp
;
import
java.util.Date
;
import
java.util.Set
;
/**
* @author jie
* @date 2018-11-22
*/
@Entity
@Getter
@Setter
@Table
(
name
=
"user"
)
public
class
User
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@NotBlank
private
String
username
;
private
String
avatar
;
@NotBlank
@Pattern
(
regexp
=
"([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}"
,
message
=
"格式错误"
)
private
String
email
;
@NotNull
private
Boolean
enabled
;
private
String
password
;
@CreationTimestamp
private
Timestamp
createTime
;
private
Date
lastPasswordResetTime
;
@ManyToMany
@JoinTable
(
name
=
"users_roles"
,
joinColumns
=
{
@JoinColumn
(
name
=
"user_id"
,
referencedColumnName
=
"id"
)},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"role_id"
,
referencedColumnName
=
"id"
)})
private
Set
<
Role
>
roles
;
@Override
public
String
toString
()
{
return
"User{"
+
"id="
+
id
+
", username='"
+
username
+
'\''
+
", avatar='"
+
avatar
+
'\''
+
", email='"
+
email
+
'\''
+
", enabled="
+
enabled
+
", password='"
+
password
+
'\''
+
", createTime="
+
createTime
+
", lastPasswordResetTime="
+
lastPasswordResetTime
+
'}'
;
}
}
\ No newline at end of file
src/main/java/me/zhengjie/system/domain/vo/MenuMetaVo.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.domain.vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
/**
* @author jie
* @date 2018-12-20
*/
@Data
@AllArgsConstructor
public
class
MenuMetaVo
{
private
String
title
;
private
String
icon
;
}
src/main/java/me/zhengjie/system/domain/vo/MenuVo.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.domain.vo
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
lombok.Data
;
import
java.util.List
;
/**
* 构建前端路由时用到
* @author jie
* @date 2018-12-20
*/
@Data
@JsonInclude
(
JsonInclude
.
Include
.
NON_EMPTY
)
public
class
MenuVo
{
private
String
name
;
private
String
path
;
private
String
component
;
private
Boolean
alwaysShow
;
private
MenuMetaVo
meta
;
private
List
<
MenuVo
>
children
;
}
src/main/java/me/zhengjie/system/repository/MenuRepository.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.repository
;
import
me.zhengjie.system.domain.Menu
;
import
me.zhengjie.system.domain.Role
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author jie
* @date 2018-12-17
*/
public
interface
MenuRepository
extends
JpaRepository
<
Menu
,
Long
>,
JpaSpecificationExecutor
{
/**
* findByName
* @param name
* @return
*/
Menu
findByName
(
String
name
);
/**
* findByRoles
* @param roleSet
* @return
*/
Set
<
Menu
>
findByRoles
(
Set
<
Role
>
roleSet
);
/**
* findByPid
* @param pid
* @return
*/
List
<
Menu
>
findByPid
(
long
pid
);
}
src/main/java/me/zhengjie/system/repository/PermissionRepository.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.repository
;
import
me.zhengjie.system.domain.Permission
;
import
me.zhengjie.system.domain.Role
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author jie
* @date 2018-12-03
*/
public
interface
PermissionRepository
extends
JpaRepository
<
Permission
,
Long
>,
JpaSpecificationExecutor
{
/**
* findByName
* @param name
* @return
*/
Permission
findByName
(
String
name
);
/**
* findByRoles
* @param roleSet
* @return
*/
Set
<
Permission
>
findByRoles
(
Set
<
Role
>
roleSet
);
/**
* findByPid
* @param pid
* @return
*/
List
<
Permission
>
findByPid
(
long
pid
);
}
src/main/java/me/zhengjie/system/repository/RoleRepository.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.repository
;
import
me.zhengjie.system.domain.Role
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author jie
* @date 2018-12-03
*/
public
interface
RoleRepository
extends
JpaRepository
<
Role
,
Long
>,
JpaSpecificationExecutor
{
/**
* findByName
* @param name
* @return
*/
Role
findByName
(
String
name
);
}
src/main/java/me/zhengjie/system/repository/UserRepository.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.repository
;
import
me.zhengjie.system.domain.User
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author jie
* @date 2018-11-22
*/
public
interface
UserRepository
extends
JpaRepository
<
User
,
Long
>,
JpaSpecificationExecutor
{
/**
* findByUsername
* @param username
* @return
*/
User
findByUsername
(
String
username
);
/**
* findByEmail
* @param email
* @return
*/
User
findByEmail
(
String
email
);
}
Prev
1
2
3
4
5
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