diff --git a/pom.xml b/pom.xml
index 23d3d3c25..0f1cc5fd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
5.2.2
3.1.1
2.3
- 1.30.0
+ 1.31.0
3.5.2
3.9.1
5.8.5
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 c43055f45..786214712 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
@@ -42,7 +42,7 @@ public class SysUserOnlineController extends BaseController {
@GetMapping("/list")
public TableDataInfo list(String ipaddr, String userName) {
// 获取所有未过期的 token
- List keys = StpUtil.searchTokenValue("", -1, 0);
+ List keys = StpUtil.searchTokenValue("", -1, 0, false);
List userOnlineDTOList = new ArrayList<>();
for (String key : keys) {
String token = key.replace(CacheConstants.LOGIN_TOKEN_KEY, "");
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
index 6d7c977de..fe9057892 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
@@ -17,27 +17,32 @@ import java.util.Date;
* MP注入处理器
*
* @author Lion Li
+ * @author Charles7c
* @date 2021/4/25
*/
@Slf4j
public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
+ /** 创建人 */
+ private static final String CREATE_BY = "createBy";
+ /** 创建时间 */
+ private static final String CREATE_TIME = "createTime";
+ /** 更新人 */
+ private static final String UPDATE_BY = "updateBy";
+ /** 更新时间 */
+ private static final String UPDATE_TIME = "updateTime";
+
@Override
public void insertFill(MetaObject metaObject) {
try {
- if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity) {
- BaseEntity baseEntity = (BaseEntity) metaObject.getOriginalObject();
- Date current = ObjectUtil.isNotNull(baseEntity.getCreateTime())
- ? baseEntity.getCreateTime() : new Date();
- baseEntity.setCreateTime(current);
- baseEntity.setUpdateTime(current);
- String username = StringUtils.isNotBlank(baseEntity.getCreateBy())
- ? baseEntity.getCreateBy() : getLoginUsername();
- // 当前已登录 且 创建人为空 则填充
- baseEntity.setCreateBy(username);
- // 当前已登录 且 更新人为空 则填充
- baseEntity.setUpdateBy(username);
+ if (ObjectUtil.isNull(metaObject)) {
+ return;
}
+
+ this.fillFieldValue(metaObject, CREATE_BY, this.getLoginUsername(), false);
+ this.fillFieldValue(metaObject, CREATE_TIME, new Date(), false);
+ this.fillFieldValue(metaObject, UPDATE_BY, this.getLoginUsername(), false);
+ this.fillFieldValue(metaObject, UPDATE_TIME, new Date(), false);
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
@@ -46,22 +51,32 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
@Override
public void updateFill(MetaObject metaObject) {
try {
- if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity) {
- BaseEntity baseEntity = (BaseEntity) metaObject.getOriginalObject();
- Date current = new Date();
- // 更新时间填充(不管为不为空)
- baseEntity.setUpdateTime(current);
- String username = getLoginUsername();
- // 当前已登录 更新人填充(不管为不为空)
- if (StringUtils.isNotBlank(username)) {
- baseEntity.setUpdateBy(username);
- }
+ if (ObjectUtil.isNull(metaObject)) {
+ return;
}
+
+ this.fillFieldValue(metaObject, UPDATE_BY, this.getLoginUsername(), true);
+ this.fillFieldValue(metaObject, UPDATE_TIME, new Date(), true);
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
}
+ /**
+ * 填充(注入)属性值
+ *
+ * @param metaObject 元数据对象
+ * @param fieldName 要填充的属性名
+ * @param fillFieldValue 要填充的属性值
+ * @param isOverride 如果属性值不为空,是否覆盖(true 覆盖、false 不覆盖)
+ */
+ private void fillFieldValue(MetaObject metaObject, String fieldName, Object fillFieldValue, boolean isOverride) {
+ if (metaObject.hasSetter(fieldName)) {
+ Object fieldValue = metaObject.getValue(fieldName);
+ setFieldValByName(fieldName, ObjectUtil.isNotNull(fieldValue) && !isOverride ? fieldValue : fillFieldValue, metaObject);
+ }
+ }
+
/**
* 获取登录用户名
*/
@@ -75,5 +90,4 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
}
return loginUser.getUsername();
}
-
}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java
index 1e3c22c35..0f29c9c4b 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java
@@ -88,14 +88,14 @@ public class UserActionListener implements SaTokenListener {
* 每次被封禁时触发
*/
@Override
- public void doDisable(String loginType, Object loginId, long disableTime) {
+ public void doDisable(String loginType, Object loginId, String service, int level, long disableTime) {
}
/**
* 每次被解封时触发
*/
@Override
- public void doUntieDisable(String loginType, Object loginId) {
+ public void doUntieDisable(String loginType, Object loginId, String service) {
}
/**
@@ -112,5 +112,10 @@ public class UserActionListener implements SaTokenListener {
public void doLogoutSession(String id) {
}
-
+ /**
+ * 每次Token续期时触发
+ */
+ @Override
+ public void doRenewTimeout(String tokenValue, Object loginId, long timeout) {
+ }
}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
index 68df5a646..83c3d5455 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
@@ -170,10 +170,9 @@ public class PlusSaTokenDao implements SaTokenDao {
* 搜索数据
*/
@Override
- public List searchData(String prefix, String keyword, int start, int size) {
+ public List searchData(String prefix, String keyword, int start, int size, boolean sortType) {
Collection keys = RedisUtils.keys(prefix + "*" + keyword + "*");
List list = new ArrayList<>(keys);
- return SaFoxUtil.searchList(list, start, size);
+ return SaFoxUtil.searchList(list, start, size, sortType);
}
-
}