提交 200471e8 authored 作者: 黄承天's avatar 黄承天

fix(user):新增静态方法findNowUserId()获取当前登录用户id(只要id而不用整个信息对象) 静态方法无需依赖注入 避免循环依赖

上级 c99571aa
...@@ -3,7 +3,6 @@ package org.matrix.config; ...@@ -3,7 +3,6 @@ package org.matrix.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;
import org.matrix.local.service.impl.UserService; import org.matrix.local.service.impl.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
...@@ -30,8 +29,7 @@ public class MetaFieldHandler implements MetaObjectHandler { ...@@ -30,8 +29,7 @@ public class MetaFieldHandler implements MetaObjectHandler {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
//插入创建用户 与 更新用户id //插入创建用户 与 更新用户id
String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId(); Long loginUserId = UserService.findNowUserId();
Long loginUserId = UserService.getSessionMap().getOrDefault(sessionId, 0L);
this.strictInsertFill(metaObject, "createUserId", Long.class, loginUserId); this.strictInsertFill(metaObject, "createUserId", Long.class, loginUserId);
this.strictInsertFill(metaObject, "updateUserId", Long.class, loginUserId); this.strictInsertFill(metaObject, "updateUserId", Long.class, loginUserId);
} }
...@@ -45,9 +43,7 @@ public class MetaFieldHandler implements MetaObjectHandler { ...@@ -45,9 +43,7 @@ public class MetaFieldHandler implements MetaObjectHandler {
// 修改 更新时间 // 修改 更新时间
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
// 修改 更新用户 // 修改 更新用户
String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId(); Long loginUserId = UserService.findNowUserId();
Long loginUserId = UserService.getSessionMap().getOrDefault(sessionId, 0L);
this.strictUpdateFill(metaObject, "updateUserId", Long.class, loginUserId); this.strictUpdateFill(metaObject, "updateUserId", Long.class, loginUserId);
} }
} }
...@@ -59,8 +59,9 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS ...@@ -59,8 +59,9 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS
* @param user 用户信息对象 * @param user 用户信息对象
*/ */
public void create(User user) { public void create(User user) {
if (nonNull(user)) {
//检查是否附带了id //检查是否附带了id
Optional.ofNullable(user).map(User::getId) Optional.of(user).map(User::getId)
.ifPresent(id -> { .ifPresent(id -> {
throw new RuntimeException("新增数据不可附带id"); throw new RuntimeException("新增数据不可附带id");
}); });
...@@ -73,6 +74,7 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS ...@@ -73,6 +74,7 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS
userMapper.insert(user); userMapper.insert(user);
log.info("[用户] 新增用户 : {}", user.getAccount()); log.info("[用户] 新增用户 : {}", user.getAccount());
} }
}
/** /**
* 修改用户 * 修改用户
...@@ -167,7 +169,6 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS ...@@ -167,7 +169,6 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS
@Getter @Getter
private static Map<String, Long> sessionMap = new HashMap<>(); private static Map<String, Long> sessionMap = new HashMap<>();
/** /**
* 用户登录 * 用户登录
* 用户登录成功后 缓存其对应的sessionId到Map中 * 用户登录成功后 缓存其对应的sessionId到Map中
...@@ -238,6 +239,24 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS ...@@ -238,6 +239,24 @@ public class UserService extends ServiceImpl<UserMapper, User> implements IUserS
return findNow(sessionId); return findNow(sessionId);
} }
/**
* 查询当前登录的用户id
* 根据sessionId查出其当前登录的user的id
* sessionId从上下文中取 无需输入
* 如果没有session信息则返回0
* 该方法为静态方法 无需依赖注入
*
* @return 当前登录的user的信息
*/
public static Long findNowUserId() {
try {
String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId();
return sessionMap.getOrDefault(sessionId, 0L);
} catch (Exception e) {
return 0L;
}
}
/** /**
* 登出用户 * 登出用户
* 输入sessionId 清除其在Map中的信息 * 输入sessionId 清除其在Map中的信息
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论