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
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/system/service/query/MenuQueryService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.service.query
;
import
me.zhengjie.system.domain.Menu
;
import
me.zhengjie.system.repository.MenuRepository
;
import
me.zhengjie.system.service.mapper.MenuMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
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-12-17
*/
@Service
@CacheConfig
(
cacheNames
=
"menu"
)
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
MenuQueryService
{
@Autowired
private
MenuRepository
menuRepository
;
@Autowired
private
MenuMapper
menuMapper
;
/**
* 不分页
*/
@Cacheable
(
key
=
"'queryAll:'+#p0"
)
public
List
queryAll
(
String
name
){
return
menuMapper
.
toDto
(
menuRepository
.
findAll
(
new
Spec
(
name
)));
}
class
Spec
implements
Specification
<
Menu
>
{
private
String
name
;
public
Spec
(
String
name
)
{
this
.
name
=
name
;
}
@Override
public
Predicate
toPredicate
(
Root
<
Menu
>
root
,
CriteriaQuery
<?>
criteriaQuery
,
CriteriaBuilder
cb
)
{
List
<
Predicate
>
list
=
new
ArrayList
<
Predicate
>();
if
(!
ObjectUtils
.
isEmpty
(
name
)){
/**
* 模糊
*/
list
.
add
(
cb
.
like
(
root
.
get
(
"name"
).
as
(
String
.
class
),
"%"
+
name
+
"%"
));
}
Predicate
[]
p
=
new
Predicate
[
list
.
size
()];
return
cb
.
and
(
list
.
toArray
(
p
));
}
}
}
src/main/java/me/zhengjie/system/service/query/PermissionQueryService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.service.query
;
import
me.zhengjie.system.domain.Permission
;
import
me.zhengjie.system.repository.PermissionRepository
;
import
me.zhengjie.system.service.mapper.PermissionMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
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-12-03
*/
@Service
@CacheConfig
(
cacheNames
=
"permission"
)
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
PermissionQueryService
{
@Autowired
private
PermissionRepository
permissionRepository
;
@Autowired
private
PermissionMapper
permissionMapper
;
/**
* 不分页
*/
@Cacheable
(
key
=
"'queryAll:'+#p0"
)
public
List
queryAll
(
String
name
){
return
permissionMapper
.
toDto
(
permissionRepository
.
findAll
(
new
Spec
(
name
)));
}
class
Spec
implements
Specification
<
Permission
>
{
private
String
name
;
public
Spec
(
String
name
)
{
this
.
name
=
name
;
}
@Override
public
Predicate
toPredicate
(
Root
<
Permission
>
root
,
CriteriaQuery
<?>
criteriaQuery
,
CriteriaBuilder
cb
)
{
List
<
Predicate
>
list
=
new
ArrayList
<
Predicate
>();
if
(!
ObjectUtils
.
isEmpty
(
name
)){
/**
* 模糊
*/
list
.
add
(
cb
.
like
(
root
.
get
(
"name"
).
as
(
String
.
class
),
"%"
+
name
+
"%"
));
}
Predicate
[]
p
=
new
Predicate
[
list
.
size
()];
return
cb
.
and
(
list
.
toArray
(
p
));
}
}
}
src/main/java/me/zhengjie/system/service/query/RoleQueryService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.service.query
;
import
me.zhengjie.common.utils.PageUtil
;
import
me.zhengjie.system.domain.Role
;
import
me.zhengjie.system.repository.RoleRepository
;
import
me.zhengjie.system.service.dto.RoleDTO
;
import
me.zhengjie.system.service.mapper.RoleMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
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-12-03
*/
@Service
@CacheConfig
(
cacheNames
=
"role"
)
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
RoleQueryService
{
@Autowired
private
RoleRepository
roleRepository
;
@Autowired
private
RoleMapper
roleMapper
;
/**
* 分页
*/
@Cacheable
(
keyGenerator
=
"keyGenerator"
)
public
Object
queryAll
(
RoleDTO
role
,
Pageable
pageable
){
Page
<
Role
>
page
=
roleRepository
.
findAll
(
new
Spec
(
role
),
pageable
);
return
PageUtil
.
toPage
(
page
.
map
(
roleMapper:
:
toDto
));
}
/**
* 不分页
*/
@Cacheable
(
keyGenerator
=
"keyGenerator"
)
public
Object
queryAll
(
RoleDTO
role
){
return
roleMapper
.
toDto
(
roleRepository
.
findAll
(
new
Spec
(
role
)));
}
class
Spec
implements
Specification
<
Role
>
{
private
RoleDTO
role
;
public
Spec
(
RoleDTO
role
){
this
.
role
=
role
;
}
@Override
public
Predicate
toPredicate
(
Root
<
Role
>
root
,
CriteriaQuery
<?>
criteriaQuery
,
CriteriaBuilder
cb
)
{
List
<
Predicate
>
list
=
new
ArrayList
<
Predicate
>();
if
(!
ObjectUtils
.
isEmpty
(
role
.
getName
())){
/**
* 模糊
*/
list
.
add
(
cb
.
like
(
root
.
get
(
"name"
).
as
(
String
.
class
),
"%"
+
role
.
getName
()+
"%"
));
}
Predicate
[]
p
=
new
Predicate
[
list
.
size
()];
return
cb
.
and
(
list
.
toArray
(
p
));
}
}
}
src/main/java/me/zhengjie/system/service/query/UserQueryService.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie.system.service.query
;
import
me.zhengjie.common.utils.PageUtil
;
import
me.zhengjie.system.domain.User
;
import
me.zhengjie.system.repository.UserRepository
;
import
me.zhengjie.system.service.dto.UserDTO
;
import
me.zhengjie.system.service.mapper.UserMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
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.*
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author jie
* @date 2018-11-22
*/
@Service
@CacheConfig
(
cacheNames
=
"user"
)
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
UserQueryService
{
@Autowired
private
UserRepository
userRepo
;
@Autowired
private
UserMapper
userMapper
;
/**
* 分页
*/
@Cacheable
(
keyGenerator
=
"keyGenerator"
)
public
Object
queryAll
(
UserDTO
user
,
Pageable
pageable
){
Page
<
User
>
page
=
userRepo
.
findAll
(
new
Spec
(
user
),
pageable
);
return
PageUtil
.
toPage
(
page
.
map
(
userMapper:
:
toDto
));
}
/**
* 不分页
*/
@Cacheable
(
keyGenerator
=
"keyGenerator"
)
public
Object
queryAll
(
UserDTO
user
){
return
userMapper
.
toDto
(
userRepo
.
findAll
(
new
Spec
(
user
)));
}
class
Spec
implements
Specification
<
User
>
{
private
UserDTO
user
;
public
Spec
(
UserDTO
user
){
this
.
user
=
user
;
}
@Override
public
Predicate
toPredicate
(
Root
<
User
>
root
,
CriteriaQuery
<?>
criteriaQuery
,
CriteriaBuilder
cb
)
{
List
<
Predicate
>
list
=
new
ArrayList
<
Predicate
>();
if
(!
ObjectUtils
.
isEmpty
(
user
.
getId
())){
/**
* 相等
*/
list
.
add
(
cb
.
equal
(
root
.
get
(
"id"
).
as
(
Long
.
class
),
user
.
getId
()));
}
if
(!
ObjectUtils
.
isEmpty
(
user
.
getEnabled
())){
/**
* 相等
*/
list
.
add
(
cb
.
equal
(
root
.
get
(
"enabled"
).
as
(
Boolean
.
class
),
user
.
getEnabled
()));
}
if
(!
ObjectUtils
.
isEmpty
(
user
.
getUsername
())){
/**
* 模糊
*/
list
.
add
(
cb
.
like
(
root
.
get
(
"username"
).
as
(
String
.
class
),
"%"
+
user
.
getUsername
()+
"%"
));
}
if
(!
ObjectUtils
.
isEmpty
(
user
.
getEmail
())){
/**
* 模糊
*/
list
.
add
(
cb
.
like
(
root
.
get
(
"email"
).
as
(
String
.
class
),
"%"
+
user
.
getEmail
()+
"%"
));
}
Predicate
[]
p
=
new
Predicate
[
list
.
size
()];
return
cb
.
and
(
list
.
toArray
(
p
));
}
}
}
src/main/resources/application.yml
0 → 100644
View file @
3d74dac9
server
:
port
:
80
#配置数据源
spring
:
datasource
:
druid
:
type
:
com.alibaba.druid.pool.DruidDataSource
driverClassName
:
net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url
:
jdbc:log4jdbc:mysql://localhost:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username
:
root
password
:
123456
# 初始化连接大小
initial-size
:
5
# 最小空闲连接数
min-idle
:
5
max-active
:
20
max-wait
:
30000
# 可关闭的空闲连接间隔时间
time-between-eviction-runs-millis
:
60000
# 配置连接在池中的最小生存时间
min-evictable-idle-time-millis
:
300000
validation-query
:
select '1' from dual
test-while-idle
:
true
test-on-borrow
:
false
test-on-return
:
false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements
:
true
max-open-prepared-statements
:
20
max-pool-prepared-statement-per-connection-size
:
20
# 配置监控统计拦截的filters
filters
:
stat
stat-view-servlet
:
url-pattern
:
/druid/*
reset-enable
:
false
login-username
:
admin
login-password
:
123456
web-stat-filter
:
url-pattern
:
/*
exclusions
:
"
*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
#配置 Jpa
jpa
:
properties
:
hibernate
:
show_sql
:
true
dialect
:
org.hibernate.dialect.MySQL5InnoDBDialect
hibernate
:
ddl-auto
:
update
naming
:
physical-strategy
:
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
open-in-view
:
true
jackson
:
time-zone
:
GMT+8
redis
:
#数据库索引
database
:
0
host
:
127.0.0.1
port
:
6379
password
:
jedis
:
pool
:
#最大连接数
max-active
:
100
#最大阻塞等待时间(负数表示没限制)
max-wait
:
2000
#最大空闲
max-idle
:
500
#最小空闲
min-idle
:
8
#连接超时时间
timeout
:
5000
#jwt
jwt
:
header
:
Authorization
secret
:
mySecret
# token 过期时间 1个小时
expiration
:
3600000
# expiration: 60000
auth
:
# 授权路径
path
:
/login
# 获取用户信息
account
:
/info
\ No newline at end of file
src/main/resources/log4jdbc.log4j2.properties
0 → 100644
View file @
3d74dac9
# If you use SLF4J. First, you need to tell log4jdbc-log4j2 that you want to use the SLF4J logger
log4jdbc.spylogdelegator.name
=
net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
\ No newline at end of file
src/main/resources/logback.xml
0 → 100644
View file @
3d74dac9
<?xml version="1.0" encoding="UTF-8"?>
<configuration
scan=
"true"
scanPeriod=
"60 seconds"
debug=
"false"
>
<contextName>
elune
</contextName>
<property
name=
"log.path"
value=
"log"
/>
<!--输出到控制台-->
<appender
name=
"console"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder>
<pattern>
%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)
</pattern>
<charset>
utf-8
</charset>
</encoder>
</appender>
<!--输出到文件-->
<!--<appender name="file" class="ch.qos.logback.system.rolling.RollingFileAppender">-->
<!--<rollingPolicy class="ch.qos.logback.system.rolling.TimeBasedRollingPolicy">-->
<!--<fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>-->
<!--</rollingPolicy>-->
<!--<encoder>-->
<!--<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<!--</encoder>-->
<!--</appender>-->
<!--普通日志输出到控制台-->
<root
level=
"info"
>
<appender-ref
ref=
"console"
/>
<!--<appender-ref ref="file" />-->
</root>
<!-- logback为java中的包 -->
<logger
name=
"me.aurora.rest"
level=
"WARN"
additivity=
"false"
/>
<!--监控sql日志输出 -->
<logger
name=
"jdbc.sqlonly"
level=
"INFO"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
</logger>
<logger
name=
"jdbc.resultset"
level=
"ERROR"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
</logger>
<logger
name=
"jdbc.resultsettable"
level=
"INFO"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
</logger>
<logger
name=
"jdbc.connection"
level=
"OFF"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
</logger>
<logger
name=
"jdbc.sqltiming"
level=
"OFF"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
</logger>
<logger
name=
"jdbc.audit"
level=
"OFF"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
</logger>
</configuration>
\ No newline at end of file
src/test/java/me/zhengjie/EladminApplicationTests.java
0 → 100644
View file @
3d74dac9
package
me.zhengjie
;
import
me.zhengjie.monitor.domain.vo.RedisVo
;
import
me.zhengjie.monitor.service.RedisService
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.Calendar
;
import
java.util.Date
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
EladminApplicationTests
{
@Autowired
private
RedisService
redisService
;
@Test
public
static
void
main
(
String
[]
args
)
{
String
[]
weekDays
=
{
"Sun"
,
"Mon"
,
"Tue"
,
"Wed"
,
"Thu"
,
"Fri"
,
"Sat"
};
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
new
Date
());
int
w
=
cal
.
get
(
Calendar
.
DAY_OF_WEEK
)
-
1
;
if
(
w
<
0
){
w
=
0
;
}
System
.
out
.
println
(
weekDays
[
w
]);
}
}
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