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