Commit 3d74dac9 authored by 郑杰's avatar 郑杰
Browse files

eladmin 1.0 版本发布

parents
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));
}
}
}
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));
}
}
}
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));
}
}
}
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));
}
}
}
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
# 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
<?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
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]);
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment