|
@@ -9,6 +9,10 @@ import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import cn.com.qmth.examcloud.common.uac.AccessUserOps;
|
|
|
+import cn.com.qmth.examcloud.common.uac.AccessUserOpsForRedis;
|
|
|
+import cn.com.qmth.examcloud.service.core.entity.*;
|
|
|
+import cn.com.qmth.examcloud.service.core.repo.*;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Example;
|
|
@@ -22,19 +26,9 @@ import cn.com.qmth.examcloud.common.uac.AccessCtrlUtil;
|
|
|
import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
|
|
|
import cn.com.qmth.examcloud.common.uac.enums.RoleMeta;
|
|
|
import cn.com.qmth.examcloud.service.core.dto.UserInfo;
|
|
|
-import cn.com.qmth.examcloud.service.core.entity.Org;
|
|
|
-import cn.com.qmth.examcloud.service.core.entity.Student;
|
|
|
-import cn.com.qmth.examcloud.service.core.entity.User;
|
|
|
-import cn.com.qmth.examcloud.service.core.entity.UserLogin;
|
|
|
-import cn.com.qmth.examcloud.service.core.entity.UserRole;
|
|
|
import cn.com.qmth.examcloud.service.core.enums.UserScope;
|
|
|
import cn.com.qmth.examcloud.service.core.enums.UserType;
|
|
|
import cn.com.qmth.examcloud.service.core.params.UserParam;
|
|
|
-import cn.com.qmth.examcloud.service.core.repo.OrgRepo;
|
|
|
-import cn.com.qmth.examcloud.service.core.repo.StudentRepo;
|
|
|
-import cn.com.qmth.examcloud.service.core.repo.UserLoginRepo;
|
|
|
-import cn.com.qmth.examcloud.service.core.repo.UserRepo;
|
|
|
-import cn.com.qmth.examcloud.service.core.repo.UserRoleRepo;
|
|
|
|
|
|
/**
|
|
|
* 用户服务类
|
|
@@ -59,8 +53,18 @@ public class UserService {
|
|
|
UserLoginRepo userLoginRepo;
|
|
|
|
|
|
@Autowired
|
|
|
+ UserOpsLogRepo userOpsLogRepo;
|
|
|
+
|
|
|
RedisTemplate redisTemplate;
|
|
|
|
|
|
+ AccessUserOps accessUserOps;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public UserService(RedisTemplate redisTemplate){
|
|
|
+ this.redisTemplate = redisTemplate;
|
|
|
+ this.accessUserOps = new AccessUserOpsForRedis(redisTemplate);
|
|
|
+ }
|
|
|
+
|
|
|
public Page<User> findAll(User userCriteria, Pageable pageable){
|
|
|
ExampleMatcher exampleMatcher = ExampleMatcher.matching()
|
|
|
.withMatcher("name", contains())
|
|
@@ -136,8 +140,9 @@ public class UserService {
|
|
|
}else if(!user.getEnable()){
|
|
|
throw new RuntimeException("该用户被禁用");
|
|
|
}else{
|
|
|
- initUserLogin(user);
|
|
|
String token = AccessCtrlUtil.buildToken();
|
|
|
+ initUserLogin(user);
|
|
|
+ createUserOpsLog(user,"登录");
|
|
|
createAccessUser(token,user,null);
|
|
|
createUserLogin(token,user);
|
|
|
return getUserInfo(user,token);
|
|
@@ -152,11 +157,21 @@ public class UserService {
|
|
|
//判断是否已登录,若已登录则强制已登录用户退出
|
|
|
UserLogin userLogin= userLoginRepo.findFirstByUserId(user.getId());
|
|
|
if(userLogin != null){
|
|
|
- redisTemplate.delete(userLogin.getToken());
|
|
|
+ accessUserOps.delete(userLogin.getToken());
|
|
|
userLoginRepo.deleteByUserId(userLogin.getUserId());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 创建用户操作日志
|
|
|
+ * @param user
|
|
|
+ * @param action
|
|
|
+ */
|
|
|
+ public void createUserOpsLog(User user,String action){
|
|
|
+ UserOpsLog userOpsLog = new UserOpsLog(action,user.getId(),user.getName(),new Date());
|
|
|
+ userOpsLogRepo.save(userOpsLog);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 创建用户登录记录
|
|
|
* @param token
|
|
@@ -189,7 +204,7 @@ public class UserService {
|
|
|
accessUser.setRoles(rolesMap);
|
|
|
accessUser.setToken(token);
|
|
|
accessUser.setStudentId(studentId);
|
|
|
- redisTemplate.opsForValue().set(token,accessUser);
|
|
|
+ accessUserOps.set(token,accessUser);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -241,8 +256,12 @@ public class UserService {
|
|
|
* @param accessUser
|
|
|
*/
|
|
|
public void logout(AccessUser accessUser) {
|
|
|
- redisTemplate.delete(accessUser.getToken());
|
|
|
+ accessUserOps.delete(accessUser.getToken());
|
|
|
userLoginRepo.deleteByUserId(accessUser.getUserId());
|
|
|
+ User user = new User();
|
|
|
+ user.setId(accessUser.getUserId());
|
|
|
+ user.setName(accessUser.getName());
|
|
|
+ createUserOpsLog(user,"退出");
|
|
|
}
|
|
|
|
|
|
public List<User> getMarker(Long rootOrgId) {
|