From 6f4f2e204993036e3a9cc3c503a15886764b298e Mon Sep 17 00:00:00 2001 From: Quieter <2316696377@qq.com> Date: Mon, 14 Sep 2020 21:41:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 36 ++++- ruoyi-admin/pom.xml | 11 ++ .../monitor/SysUserOnlineController.java | 7 +- ruoyi-common/pom.xml | 17 +++ .../core/controller/BaseController.java | 28 ---- .../ruoyi/framework/config/MyBatisConfig.java | 69 --------- .../system/service/ISysUserOnlineService.java | 6 +- .../impl/SysUserOnlineServiceImpl.java | 131 +++++++++--------- 8 files changed, 131 insertions(+), 174 deletions(-) delete mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java diff --git a/pom.xml b/pom.xml index a664b5332..d9ae53d8c 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,6 @@ 1.8 1.6.0 2.0.0 - 1.3.2 1.1.22 1.19 2.3.2 @@ -30,6 +29,7 @@ 1.3.3 3.17 1.7 + 4.2.1 @@ -202,6 +202,12 @@ ${ruoyi.version} + + com.querydsl + querydsl-jpa + ${querydsl.version} + + @@ -215,13 +221,31 @@ pom - - - - - + + com.mysema.maven + apt-maven-plugin + 1.1.3 + + + + process + + + target/generated-sources/java + com.querydsl.apt.jpa.JPAAnnotationProcessor + + + + + + com.querydsl + querydsl-apt + ${querydsl.version} + + + org.apache.maven.plugins maven-compiler-plugin diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 06a6028ce..94e6abf6f 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -79,6 +79,17 @@ ruoyi-generator + + org.flywaydb + flyway-core + + + + + com.fasterxml.jackson.datatype + jackson-datatype-hibernate5 + 2.10.1 + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java index d9a09f0f2..4ba0eaeab 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java @@ -49,11 +49,8 @@ public class SysUserOnlineController extends BaseController @RequiresPermissions("monitor:online:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(SysUserOnline userOnline) - { - startPage(); - List list = userOnlineService.selectUserOnlineList(userOnline); - return getDataTable(list); + public TableDataInfo list(SysUserOnline userOnline) { + return getDataTable(userOnlineService.selectUserOnlineList(userOnline, getPageRequest())); } @RequiresPermissions(value = { "monitor:online:batchForceLogout", "monitor:online:forceLogout" }, logical = Logical.OR) diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 5adbe2a15..31f7a433c 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -101,6 +101,23 @@ javax.servlet-api + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + org.projectlombok + lombok + + + + com.querydsl + querydsl-jpa + + \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java index 6adeffb47..69d4bf49c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java @@ -46,34 +46,6 @@ public class BaseController { }); } - /** - * 设置请求分页数据 - */ - protected void startPage() - { - PageDomain pageDomain = TableSupport.buildPageRequest(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) - { - String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); - PageHelper.startPage(pageNum, pageSize, orderBy); - } - } - - /** - * 设置请求排序数据 - */ - protected void startOrderBy() - { - PageDomain pageDomain = TableSupport.buildPageRequest(); - if (StringUtils.isNotEmpty(pageDomain.getOrderBy())) - { - String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); - PageHelper.orderBy(orderBy); - } - } - /** * 获取request */ diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java deleted file mode 100644 index 7a9d0ba2d..000000000 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ruoyi.framework.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.core.type.classreading.CachingMetadataReaderFactory; -import org.springframework.core.type.classreading.MetadataReader; -import org.springframework.core.type.classreading.MetadataReaderFactory; -import org.springframework.util.ClassUtils; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -/** - * Mybatis支持*匹配扫描包 - * - * @author ruoyi - */ -@Configuration -public class MyBatisConfig { - @Autowired - private Environment env; - - static final String DEFAULT_RESOURCE_PATTERN = "**/*.class"; - - public static String setTypeAliasesPackage(String typeAliasesPackage) { - ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); - MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver); - List allResult = new ArrayList(); - try { - for (String aliasesPackage : typeAliasesPackage.split(",")) { - List result = new ArrayList(); - aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX - + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN; - Resource[] resources = resolver.getResources(aliasesPackage); - if (resources != null && resources.length > 0) { - MetadataReader metadataReader = null; - for (Resource resource : resources) { - if (resource.isReadable()) { - metadataReader = metadataReaderFactory.getMetadataReader(resource); - try { - result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName()); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - } - } - } - if (result.size() > 0) { - HashSet hashResult = new HashSet(result); - allResult.addAll(hashResult); - } - } - if (allResult.size() > 0) { - typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0])); - } else { - throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包"); - } - } catch (IOException e) { - e.printStackTrace(); - } - return typeAliasesPackage; - } -} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java index 50c99a1cb..7b1a87cc5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java @@ -3,6 +3,8 @@ package com.ruoyi.system.service; import java.util.Date; import java.util.List; import com.ruoyi.system.domain.SysUserOnline; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; /** * 在线用户 服务层 @@ -40,7 +42,7 @@ public interface ISysUserOnlineService * * @param online 会话信息 */ - public void saveOnline(SysUserOnline online); + public SysUserOnline saveOnline(SysUserOnline online); /** * 查询会话集合 @@ -48,7 +50,7 @@ public interface ISysUserOnlineService * @param userOnline 分页参数 * @return 会话集合 */ - public List selectUserOnlineList(SysUserOnline userOnline); + public Page selectUserOnlineList(SysUserOnline userOnline, Pageable pageable); /** * 强退用户 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java index c170d4258..dfbc043b3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java @@ -1,123 +1,128 @@ package com.ruoyi.system.service.impl; - -import java.io.Serializable; -import java.util.Date; -import java.util.Deque; -import java.util.List; +import com.ruoyi.common.base.BaseService; +import com.ruoyi.common.constant.ShiroConstants; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.domain.SysUserOnline; +import com.ruoyi.system.repository.SysUserOnlineRepository; +import com.ruoyi.system.service.ISysUserOnlineService; import org.apache.shiro.cache.Cache; import org.apache.shiro.cache.ehcache.EhCacheManager; 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 com.ruoyi.common.constant.ShiroConstants; -import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.system.domain.SysUserOnline; -import com.ruoyi.system.mapper.SysUserOnlineMapper; -import com.ruoyi.system.service.ISysUserOnlineService; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.Deque; +import java.util.List; /** * 在线用户 服务层处理 - * + * * @author ruoyi */ @Service -public class SysUserOnlineServiceImpl implements ISysUserOnlineService -{ +public class SysUserOnlineServiceImpl extends BaseService implements ISysUserOnlineService { + @Autowired - private SysUserOnlineMapper userOnlineDao; - + private SysUserOnlineRepository sysUserOnlineRepository; @Autowired private EhCacheManager ehCacheManager; /** * 通过会话序号查询信息 - * + * * @param sessionId 会话ID * @return 在线用户信息 */ @Override - public SysUserOnline selectOnlineById(String sessionId) - { - return userOnlineDao.selectOnlineById(sessionId); + public SysUserOnline selectOnlineById(String sessionId) { + return sysUserOnlineRepository.findById(sessionId).orElse(null); } /** * 通过会话序号删除信息 - * + * * @param sessionId 会话ID * @return 在线用户信息 */ + @Transactional @Override - public void deleteOnlineById(String sessionId) - { - SysUserOnline userOnline = selectOnlineById(sessionId); - if (StringUtils.isNotNull(userOnline)) - { - userOnlineDao.deleteOnlineById(sessionId); - } + public void deleteOnlineById(String sessionId) { + sysUserOnlineRepository.deleteById(sessionId); } /** * 通过会话序号删除信息 - * + * * @param sessions 会话ID集合 * @return 在线用户信息 */ + @Transactional @Override - public void batchDeleteOnline(List sessions) - { - for (String sessionId : sessions) - { - SysUserOnline userOnline = selectOnlineById(sessionId); - if (StringUtils.isNotNull(userOnline)) - { - userOnlineDao.deleteOnlineById(sessionId); - } + public void batchDeleteOnline(List sessions) { + for (String sessionId : sessions) { + deleteOnlineById(sessionId); } } /** * 保存会话信息 - * + * * @param online 会话信息 */ @Override - public void saveOnline(SysUserOnline online) - { - userOnlineDao.saveOnline(online); + public SysUserOnline saveOnline(SysUserOnline online) { + return sysUserOnlineRepository.save(online); } /** * 查询会话集合 - * + * * @param userOnline 在线用户 */ @Override - public List selectUserOnlineList(SysUserOnline userOnline) - { - return userOnlineDao.selectUserOnlineList(userOnline); + public Page selectUserOnlineList(SysUserOnline userOnline, Pageable pageable) { + return sysUserOnlineRepository.findAll(getSpecification(userOnline), pageable); + } + + private Specification getSpecification(SysUserOnline userOnline){ + return new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + List predicates = new ArrayList<>(); + if(StringUtils.isNotEmpty(userOnline.getIpaddr())){ + predicates.add(criteriaBuilder.like(root.get("ipaddr").as(String.class), "%" + userOnline.getIpaddr() + "%")); + } + if(StringUtils.isNotEmpty(userOnline.getLoginName())){ + predicates.add(criteriaBuilder.like(root.get("loginName").as(String.class), "%" + userOnline.getLoginName() + "%")); + } + return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])); + } + }; } /** * 强退用户 - * + * * @param sessionId 会话ID */ + @Transactional @Override - public void forceLogout(String sessionId) - { - userOnlineDao.deleteOnlineById(sessionId); + public void forceLogout(String sessionId) { + deleteOnlineById(sessionId); } - /** - * 清理用户缓存 - * - * @param loginName 登录名称 - * @param sessionId 会话ID - */ @Override - public void removeUserCache(String loginName, String sessionId) - { + public void removeUserCache(String loginName, String sessionId) { Cache> cache = ehCacheManager.getCache(ShiroConstants.SYS_USERCACHE); Deque deque = cache.get(loginName); if (StringUtils.isEmpty(deque) || deque.size() == 0) @@ -129,13 +134,11 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService /** * 查询会话集合 - * + * * @param expiredDate 失效日期 */ @Override - public List selectOnlineByExpired(Date expiredDate) - { - String lastAccessTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, expiredDate); - return userOnlineDao.selectOnlineByExpired(lastAccessTime); + public List selectOnlineByExpired(Date expiredDate) { + return sysUserOnlineRepository.findByLastAccessTimeLessThanEqual(expiredDate); } -} +} \ No newline at end of file