|
@@ -53,186 +53,186 @@ import cn.com.qmth.examcloud.core.basic.service.bean.LoginInfo;
|
|
|
import cn.com.qmth.examcloud.core.basic.service.bean.UserInfo;
|
|
|
|
|
|
/**
|
|
|
- * 用户服务类
|
|
|
- * Created by songyue on 17/1/13.
|
|
|
+ * 用户服务类 Created by songyue on 17/1/13.
|
|
|
*/
|
|
|
@Service
|
|
|
-public class UserServiceImpl implements UserService{
|
|
|
+public class UserServiceImpl implements UserService {
|
|
|
|
|
|
- @Autowired
|
|
|
- UserRepo userRepo;
|
|
|
+ @Autowired
|
|
|
+ UserRepo userRepo;
|
|
|
|
|
|
- @Autowired
|
|
|
- StudentRepo studentRepo;
|
|
|
+ @Autowired
|
|
|
+ StudentRepo studentRepo;
|
|
|
|
|
|
- @Autowired
|
|
|
- OrgRepo orgRepo;
|
|
|
+ @Autowired
|
|
|
+ OrgRepo orgRepo;
|
|
|
|
|
|
- @Autowired
|
|
|
- OrgService orgService;
|
|
|
+ @Autowired
|
|
|
+ OrgService orgService;
|
|
|
|
|
|
- @Autowired
|
|
|
- UserRoleRepo userRoleRepo;
|
|
|
+ @Autowired
|
|
|
+ UserRoleRepo userRoleRepo;
|
|
|
|
|
|
- @Autowired
|
|
|
- UserLoginRepo userLoginRepo;
|
|
|
+ @Autowired
|
|
|
+ UserLoginRepo userLoginRepo;
|
|
|
|
|
|
- @Autowired
|
|
|
- UserOpsLogRepo userOpsLogRepo;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- ThirdPartyAccessRepo thirdPartyAccessDao;
|
|
|
+ @Autowired
|
|
|
+ UserOpsLogRepo userOpsLogRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ThirdPartyAccessRepo thirdPartyAccessDao;
|
|
|
+
|
|
|
+ RedisTemplate redisTemplate;
|
|
|
|
|
|
- RedisTemplate redisTemplate;
|
|
|
-
|
|
|
@Autowired
|
|
|
AuthService authService;
|
|
|
|
|
|
- AccessUserOps accessUserOps;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- public UserServiceImpl(RedisTemplate redisTemplate){
|
|
|
- this.redisTemplate = redisTemplate;
|
|
|
- this.accessUserOps = new AccessUserOpsForRedis(redisTemplate);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询所有用户
|
|
|
- * @param userCriteria
|
|
|
- * @param pageable
|
|
|
- * @return
|
|
|
- */
|
|
|
- public Page<UserEntity> findAll(UserEntity userCriteria, Pageable pageable){
|
|
|
- Specification<UserEntity> userSpecification = (root, query, cb) -> {
|
|
|
- List<Predicate> predicates = new ArrayList<>();
|
|
|
- if(userCriteria.getType() != null){
|
|
|
- predicates.add(cb.equal(root.get("type"),userCriteria.getType()));
|
|
|
- }
|
|
|
- predicates.add(cb.equal(root.get("rootOrgId"),userCriteria.getRootOrgId()));
|
|
|
- if(StringUtils.isNotEmpty(userCriteria.getLoginName())){
|
|
|
- predicates.add(cb.like(root.get("loginName"),"%"+userCriteria.getLoginName()+"%"));
|
|
|
- }
|
|
|
- if(StringUtils.isNotEmpty(userCriteria.getName())){
|
|
|
- predicates.add(cb.like(root.get("name"),"%"+userCriteria.getName()+"%"));
|
|
|
- }
|
|
|
- if(userCriteria.getOrgId() != null){
|
|
|
- predicates.add(cb.equal(root.get("orgId"),userCriteria.getOrgId()));
|
|
|
- }
|
|
|
- if(userCriteria.getEnable() != null){
|
|
|
- predicates.add(cb.equal(root.get("enable"),userCriteria.getEnable()));
|
|
|
- }
|
|
|
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
- };
|
|
|
- List<UserEntity> users = userRepo.findAll(userSpecification);
|
|
|
- int pageNumber = pageable.getPageNumber();
|
|
|
- int pageSize = pageable.getPageSize();
|
|
|
- users = users.stream()
|
|
|
- .filter(user -> filterNonMarkerUser(user))
|
|
|
- .collect(Collectors.toList());
|
|
|
- long total = users.size();
|
|
|
- users = users.stream()
|
|
|
- .skip(pageNumber * pageSize)
|
|
|
- .limit(pageSize)
|
|
|
- .collect(Collectors.toList());
|
|
|
- Page<UserEntity> userPage = new PageImpl<UserEntity>(users,pageable,total);
|
|
|
- return userPage;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 过滤非评卷员
|
|
|
- * @param user
|
|
|
- * @return
|
|
|
- */
|
|
|
- private boolean filterNonMarkerUser(UserEntity user){
|
|
|
- List<UserRole> userRoles = user.getUserRoles();
|
|
|
- if(userRoles != null){
|
|
|
- if(userRoles.size() == 1 && userRoles.get(0).getRoleCode().equals(RoleMeta.MARKER.name())){
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- }else{
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 过滤管理角色
|
|
|
- * @param user
|
|
|
- * @return
|
|
|
- */
|
|
|
- private boolean filterAdminUser(UserEntity user){
|
|
|
- List<UserRole> userRoles = user.getUserRoles();
|
|
|
- if(userRoles != null){
|
|
|
- for(UserRole userRole:userRoles){
|
|
|
- if(userRole.getRoleCode().equals(RoleMeta.MARKER.name())
|
|
|
- || userRole.getRoleCode().equals(RoleMeta.STUDENT.name())
|
|
|
- || userRole.getRoleCode().equals(RoleMeta.LC_USER.name())){
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- }else{
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询所有机构用户
|
|
|
- * @param userCriteria
|
|
|
- * @param pageable
|
|
|
- * @return
|
|
|
- */
|
|
|
- public Page<UserEntity> findOrgUser(UserEntity userCriteria,Pageable pageable){
|
|
|
- Specification<UserEntity> userSpecification = (root, query, cb) -> {
|
|
|
- List<Predicate> predicates = new ArrayList<>();
|
|
|
- predicates.add(cb.equal(root.get("rootOrgId"),root.get("orgId")));
|
|
|
- if(userCriteria.getType() != null){
|
|
|
- predicates.add(cb.equal(root.get("type"),userCriteria.getType()));
|
|
|
- }
|
|
|
- if(userCriteria.getOrgId() != null){
|
|
|
- predicates.add(cb.equal(root.get("rootOrgId"),userCriteria.getOrgId()));
|
|
|
- }
|
|
|
- if(StringUtils.isNotEmpty(userCriteria.getLoginName())){
|
|
|
- predicates.add(cb.like(root.get("loginName"),"%"+userCriteria.getLoginName()+"%"));
|
|
|
- }
|
|
|
- if(StringUtils.isNotEmpty(userCriteria.getName())){
|
|
|
- predicates.add(cb.like(root.get("name"),"%"+userCriteria.getName()+"%"));
|
|
|
- }
|
|
|
- if(userCriteria.getEnable() != null){
|
|
|
- predicates.add(cb.equal(root.get("enable"),userCriteria.getEnable()));
|
|
|
- }
|
|
|
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
- };
|
|
|
- List<UserEntity> users = userRepo.findAll(userSpecification);
|
|
|
- int pageNumber = pageable.getPageNumber();
|
|
|
- int pageSize = pageable.getPageSize();
|
|
|
- users = users.stream()
|
|
|
- .filter(user -> filterAdminUser(user))
|
|
|
- .collect(Collectors.toList());
|
|
|
- long total = users.size();
|
|
|
- users = users.stream()
|
|
|
- .skip(pageNumber * pageSize)
|
|
|
- .limit(pageSize)
|
|
|
- .collect(Collectors.toList());
|
|
|
- Page<UserEntity> userPage = new PageImpl<UserEntity>(users,pageable,total);
|
|
|
- return userPage;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 初始化密码
|
|
|
- * @param userId
|
|
|
- */
|
|
|
- public void initPassword(long userId){
|
|
|
- UserEntity user = userRepo.findOne(userId);
|
|
|
- //根据用户类型采用不同的初始化策略
|
|
|
- if(user.getType() == UserType.COMMON){
|
|
|
- //初始化为默认密码
|
|
|
- user.setPassword(Consts.DEFAULT_PASSWORD);
|
|
|
-
|
|
|
- }else if(user.getType() == UserType.STUDENT){
|
|
|
- //截取身份证后6位为学生登录密码
|
|
|
- Student student = studentRepo.findByUserId(userId);
|
|
|
- String identityNumber = student.getIdentityNumber();
|
|
|
+ AccessUserOps accessUserOps;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public UserServiceImpl(RedisTemplate redisTemplate) {
|
|
|
+ this.redisTemplate = redisTemplate;
|
|
|
+ this.accessUserOps = new AccessUserOpsForRedis(redisTemplate);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询所有用户
|
|
|
+ *
|
|
|
+ * @param userCriteria
|
|
|
+ * @param pageable
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Page<UserEntity> findAll(UserEntity userCriteria, Pageable pageable) {
|
|
|
+ Specification<UserEntity> userSpecification = (root, query, cb) -> {
|
|
|
+ List<Predicate> predicates = new ArrayList<>();
|
|
|
+ if (userCriteria.getType() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("type"), userCriteria.getType()));
|
|
|
+ }
|
|
|
+ predicates.add(cb.equal(root.get("rootOrgId"), userCriteria.getRootOrgId()));
|
|
|
+ if (StringUtils.isNotEmpty(userCriteria.getLoginName())) {
|
|
|
+ predicates.add(
|
|
|
+ cb.like(root.get("loginName"), "%" + userCriteria.getLoginName() + "%"));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(userCriteria.getName())) {
|
|
|
+ predicates.add(cb.like(root.get("name"), "%" + userCriteria.getName() + "%"));
|
|
|
+ }
|
|
|
+ if (userCriteria.getOrgId() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("orgId"), userCriteria.getOrgId()));
|
|
|
+ }
|
|
|
+ if (userCriteria.getEnable() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("enable"), userCriteria.getEnable()));
|
|
|
+ }
|
|
|
+ return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
+ };
|
|
|
+ List<UserEntity> users = userRepo.findAll(userSpecification);
|
|
|
+ int pageNumber = pageable.getPageNumber();
|
|
|
+ int pageSize = pageable.getPageSize();
|
|
|
+ users = users.stream().filter(user -> filterNonMarkerUser(user))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ long total = users.size();
|
|
|
+ users = users.stream().skip(pageNumber * pageSize).limit(pageSize)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Page<UserEntity> userPage = new PageImpl<UserEntity>(users, pageable, total);
|
|
|
+ return userPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 过滤非评卷员
|
|
|
+ *
|
|
|
+ * @param user
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private boolean filterNonMarkerUser(UserEntity user) {
|
|
|
+ List<UserRole> userRoles = user.getUserRoles();
|
|
|
+ if (userRoles != null) {
|
|
|
+ if (userRoles.size() == 1
|
|
|
+ && userRoles.get(0).getRoleCode().equals(RoleMeta.MARKER.name())) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 过滤管理角色
|
|
|
+ *
|
|
|
+ * @param user
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private boolean filterAdminUser(UserEntity user) {
|
|
|
+ List<UserRole> userRoles = user.getUserRoles();
|
|
|
+ if (userRoles != null) {
|
|
|
+ for (UserRole userRole : userRoles) {
|
|
|
+ if (userRole.getRoleCode().equals(RoleMeta.MARKER.name())
|
|
|
+ || userRole.getRoleCode().equals(RoleMeta.STUDENT.name())
|
|
|
+ || userRole.getRoleCode().equals(RoleMeta.LC_USER.name())) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询所有机构用户
|
|
|
+ *
|
|
|
+ * @param userCriteria
|
|
|
+ * @param pageable
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Page<UserEntity> findOrgUser(UserEntity userCriteria, Pageable pageable) {
|
|
|
+ Specification<UserEntity> userSpecification = (root, query, cb) -> {
|
|
|
+ List<Predicate> predicates = new ArrayList<>();
|
|
|
+ predicates.add(cb.equal(root.get("rootOrgId"), root.get("orgId")));
|
|
|
+ if (userCriteria.getType() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("type"), userCriteria.getType()));
|
|
|
+ }
|
|
|
+ if (userCriteria.getOrgId() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("rootOrgId"), userCriteria.getOrgId()));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(userCriteria.getLoginName())) {
|
|
|
+ predicates.add(
|
|
|
+ cb.like(root.get("loginName"), "%" + userCriteria.getLoginName() + "%"));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(userCriteria.getName())) {
|
|
|
+ predicates.add(cb.like(root.get("name"), "%" + userCriteria.getName() + "%"));
|
|
|
+ }
|
|
|
+ if (userCriteria.getEnable() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("enable"), userCriteria.getEnable()));
|
|
|
+ }
|
|
|
+ return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
+ };
|
|
|
+ List<UserEntity> users = userRepo.findAll(userSpecification);
|
|
|
+ int pageNumber = pageable.getPageNumber();
|
|
|
+ int pageSize = pageable.getPageSize();
|
|
|
+ users = users.stream().filter(user -> filterAdminUser(user)).collect(Collectors.toList());
|
|
|
+ long total = users.size();
|
|
|
+ users = users.stream().skip(pageNumber * pageSize).limit(pageSize)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Page<UserEntity> userPage = new PageImpl<UserEntity>(users, pageable, total);
|
|
|
+ return userPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化密码
|
|
|
+ *
|
|
|
+ * @param userId
|
|
|
+ */
|
|
|
+ public void initPassword(long userId) {
|
|
|
+ UserEntity user = userRepo.findOne(userId);
|
|
|
+ // 根据用户类型采用不同的初始化策略
|
|
|
+ if (user.getType() == UserType.COMMON) {
|
|
|
+ // 初始化为默认密码
|
|
|
+ user.setPassword(Consts.DEFAULT_PASSWORD);
|
|
|
+
|
|
|
+ } else if (user.getType() == UserType.STUDENT) {
|
|
|
+ // 截取身份证后6位为学生登录密码
|
|
|
+ Student student = studentRepo.findByUserId(userId);
|
|
|
+ String identityNumber = student.getIdentityNumber();
|
|
|
if (StringUtils.isNotEmpty(identityNumber)
|
|
|
&& identityNumber.matches("[0-9a-zA-Z]{6,}")) {
|
|
|
user.setPassword(
|
|
@@ -240,20 +240,19 @@ public class UserServiceImpl implements UserService{
|
|
|
} else {
|
|
|
user.setPassword(Consts.DEFAULT_PASSWORD);
|
|
|
}
|
|
|
- }
|
|
|
- user.setUpdateTime(new Date());
|
|
|
- userRepo.save(user);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 一般登录
|
|
|
- * @param loginName
|
|
|
- * @param password
|
|
|
- * @return
|
|
|
- */
|
|
|
- public UserInfo login(String loginName,
|
|
|
- String password)throws Exception{
|
|
|
+ }
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ userRepo.save(user);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 一般登录
|
|
|
+ *
|
|
|
+ * @param loginName
|
|
|
+ * @param password
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public UserInfo login(String loginName, String password) throws Exception {
|
|
|
UserEntity user = userRepo.findByLoginName(loginName);
|
|
|
if (user == null) {
|
|
|
throw new RuntimeException("该用户不存在");
|
|
@@ -262,46 +261,46 @@ public class UserServiceImpl implements UserService{
|
|
|
}
|
|
|
return loginProcess(user);
|
|
|
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 二级登录
|
|
|
- * @param orgId
|
|
|
- * @param loginName
|
|
|
- * @param password
|
|
|
- * @return
|
|
|
- */
|
|
|
- public UserInfo login(long orgId,
|
|
|
- String loginName,
|
|
|
- String password)throws Exception{
|
|
|
- UserEntity user = userRepo.findByRootOrgIdAndLoginName(orgId,loginName);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 二级登录
|
|
|
+ *
|
|
|
+ * @param orgId
|
|
|
+ * @param loginName
|
|
|
+ * @param password
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public UserInfo login(long orgId, String loginName, String password) throws Exception {
|
|
|
+ UserEntity user = userRepo.findByRootOrgIdAndLoginName(orgId, loginName);
|
|
|
if (user == null) {
|
|
|
throw new RuntimeException("该用户不存在");
|
|
|
} else if (!user.getEnable()) {
|
|
|
throw new RuntimeException("该用户被禁用");
|
|
|
}
|
|
|
return loginProcess(user);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 登录处理
|
|
|
- * 重新定义 by wangwei
|
|
|
- * @param user
|
|
|
- * @return
|
|
|
- */
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登录处理 重新定义 by wangwei
|
|
|
+ *
|
|
|
+ * @param user
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public UserInfo loginProcess(UserEntity user) throws Exception {
|
|
|
- LoginInfo loginInfo=new LoginInfo();
|
|
|
+ LoginInfo loginInfo = new LoginInfo();
|
|
|
loginInfo.setAccountType(AccountType.COMMON_LOGIN_NAME.getCode());
|
|
|
loginInfo.setAccountValue(user.getLoginName());
|
|
|
loginInfo.setPassword(user.getPassword());
|
|
|
loginInfo.setRootOrgId(String.valueOf(user.getRootOrgId()));
|
|
|
- cn.com.qmth.examcloud.commons.web.security.bean.User loginUser = authService.login(loginInfo);
|
|
|
+ cn.com.qmth.examcloud.commons.web.security.bean.User loginUser = authService
|
|
|
+ .login(loginInfo);
|
|
|
String userToken = loginUser.getUserToken();
|
|
|
return getUserInfo(user, userToken);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
- *第三方接入
|
|
|
+ * 第三方接入
|
|
|
*
|
|
|
* @author WANGWEI
|
|
|
* @param orgId
|
|
@@ -310,25 +309,27 @@ public class UserServiceImpl implements UserService{
|
|
|
* @param timestamp
|
|
|
* @param token
|
|
|
* @return
|
|
|
- * @throws Exception
|
|
|
+ * @throws Exception
|
|
|
*/
|
|
|
@Deprecated
|
|
|
- public UserInfo thirdPartyAccess(long orgId, String userid, String appid, String timestamp, String token)
|
|
|
- throws Exception {
|
|
|
- ThirdPartyAccessEntity thirdPartyAccess = thirdPartyAccessDao.findOne(new ThirdPartyAccessPK(orgId, appid));
|
|
|
+ public UserInfo thirdPartyAccess(long orgId, String userid, String appid, String timestamp,
|
|
|
+ String token) throws Exception {
|
|
|
+ ThirdPartyAccessEntity thirdPartyAccess = thirdPartyAccessDao
|
|
|
+ .findOne(new ThirdPartyAccessPK(orgId, appid));
|
|
|
|
|
|
if (null == thirdPartyAccess) {
|
|
|
throw new RuntimeException("第三方系统接入信息未配置!");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
long timestampLong = 0L;
|
|
|
try {
|
|
|
timestampLong = Long.parseLong(timestamp);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("timestamp错误");
|
|
|
}
|
|
|
-
|
|
|
- if (Math.abs(System.currentTimeMillis() - timestampLong) > thirdPartyAccess.getTimeRange()) {
|
|
|
+
|
|
|
+ if (Math.abs(System.currentTimeMillis() - timestampLong) > thirdPartyAccess
|
|
|
+ .getTimeRange()) {
|
|
|
throw new RuntimeException("第三方系统接入鉴权失败: timestamp超出时间差范围!");
|
|
|
}
|
|
|
|
|
@@ -345,166 +346,173 @@ public class UserServiceImpl implements UserService{
|
|
|
if (user == null) {
|
|
|
throw new RuntimeException("该用户不存在!");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return loginProcess(user);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 初始化用户登录
|
|
|
- * @param user
|
|
|
- */
|
|
|
+ /**
|
|
|
+ * 初始化用户登录
|
|
|
+ *
|
|
|
+ * @param user
|
|
|
+ */
|
|
|
+ @Deprecated
|
|
|
+ public void initUserLogin(UserEntity user) {
|
|
|
+ // 判断是否已登录,若已登录则强制已登录用户退出
|
|
|
+ UserLogin userLogin = userLoginRepo.findFirstByUserId(user.getId());
|
|
|
+ if (userLogin != null) {
|
|
|
+ accessUserOps.delete(userLogin.getToken());
|
|
|
+ userLoginRepo.deleteByUserId(userLogin.getUserId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建用户操作日志
|
|
|
+ *
|
|
|
+ * @param user
|
|
|
+ * @param action
|
|
|
+ */
|
|
|
+ public void createUserOpsLog(UserEntity user, String action) {
|
|
|
+ UserOpsLog userOpsLog = new UserOpsLog(action, user.getId(), user.getName(), new Date());
|
|
|
+ userOpsLogRepo.save(userOpsLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建用户登录记录
|
|
|
+ *
|
|
|
+ * @param token
|
|
|
+ * @param user
|
|
|
+ */
|
|
|
@Deprecated
|
|
|
- public void initUserLogin(UserEntity user){
|
|
|
- //判断是否已登录,若已登录则强制已登录用户退出
|
|
|
- UserLogin userLogin= userLoginRepo.findFirstByUserId(user.getId());
|
|
|
- if(userLogin != null){
|
|
|
- accessUserOps.delete(userLogin.getToken());
|
|
|
- userLoginRepo.deleteByUserId(userLogin.getUserId());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 创建用户操作日志
|
|
|
- * @param user
|
|
|
- * @param action
|
|
|
- */
|
|
|
- public void createUserOpsLog(UserEntity user,String action){
|
|
|
- UserOpsLog userOpsLog = new UserOpsLog(action,user.getId(),user.getName(),new Date());
|
|
|
- userOpsLogRepo.save(userOpsLog);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 创建用户登录记录
|
|
|
- * @param token
|
|
|
- * @param user
|
|
|
- */
|
|
|
- @Deprecated
|
|
|
- public void createUserLogin(String token,UserEntity user){
|
|
|
- UserLogin userLogin = new UserLogin();
|
|
|
- userLogin.setLoginTime(new Date());
|
|
|
- userLogin.setUserId(user.getId());
|
|
|
- userLogin.setToken(token);
|
|
|
- userLoginRepo.save(userLogin);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 创建访问用户并加入K/V缓存
|
|
|
- * @param token
|
|
|
- * @param user
|
|
|
- */
|
|
|
- @Deprecated
|
|
|
- public void createAccessUser(String token,UserEntity user,Long studentId)throws Exception{
|
|
|
- AccessUser accessUser = new AccessUser();
|
|
|
- Set<UserRole> userRoleSet = new HashSet<UserRole>(user.getUserRoles());
|
|
|
- Org org = orgService.findOne(user.getRootOrgId());
|
|
|
-// Map<String,Set<String>> rolesMap = userRoleSet.stream()
|
|
|
-// .collect(Collectors.groupingBy(UserRole::getAppCode,
|
|
|
-// Collectors.mapping(UserRole::getRoleCode,Collectors.toSet())));
|
|
|
- accessUser.setLoginName(user.getLoginName());
|
|
|
- accessUser.setName(user.getName());
|
|
|
- accessUser.setOrgId(user.getOrgId());
|
|
|
- accessUser.setRootOrgId(user.getRootOrgId());
|
|
|
- if(org != null){
|
|
|
- accessUser.setRootOrgName(org.getName());
|
|
|
- }
|
|
|
- accessUser.setUserId(user.getId());
|
|
|
-// accessUser.setRoles(rolesMap);
|
|
|
- accessUser.setToken(token);
|
|
|
- accessUser.setStudentId(studentId);
|
|
|
- accessUserOps.set(token,accessUser);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取用户信息DTO
|
|
|
- * @param user
|
|
|
- * @param token
|
|
|
- * @return
|
|
|
- */
|
|
|
- public UserInfo getUserInfo(UserEntity user,String token)throws Exception{
|
|
|
- UserInfo userInfo = new UserInfo();
|
|
|
- Org org = orgService.findOne(user.getOrgId());
|
|
|
- Org rootOrg = orgService.findOne(user.getRootOrgId());
|
|
|
- userInfo.setUserId(user.getId());
|
|
|
- userInfo.setOrgId(user.getOrgId());
|
|
|
- userInfo.setRootOrgId(user.getRootOrgId());
|
|
|
- userInfo.setName(user.getName());
|
|
|
- userInfo.setAvatar(user.getAvatar());
|
|
|
- userInfo.setLoginName(user.getLoginName());
|
|
|
- if(org != null){
|
|
|
- userInfo.setOrgName(org.getName());
|
|
|
- }
|
|
|
- if(rootOrg != null){
|
|
|
- userInfo.setRootOrgLogo(rootOrg.getLogo());
|
|
|
- userInfo.setRootOrgName(rootOrg.getName());
|
|
|
- }
|
|
|
- userInfo.setToken(token);
|
|
|
- userInfo.setType(user.getType().toString());
|
|
|
- userInfo.setUserRoles(user.getUserRoles());
|
|
|
- userInfo.setRoleNames(getRoleNames(user.getUserRoles()));
|
|
|
- return userInfo;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取角色名称
|
|
|
- * @param userRoles
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<String> getRoleNames(List<UserRole> userRoles){
|
|
|
-
|
|
|
- List<String> roleNameList = userRoles.stream()
|
|
|
- .map(userRole -> RoleMeta.valueOf(userRole.getRoleCode()).getName())
|
|
|
- .collect(Collectors.toList());
|
|
|
- return roleNameList;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 登出
|
|
|
- * @param accessUser
|
|
|
- */
|
|
|
+ public void createUserLogin(String token, UserEntity user) {
|
|
|
+ UserLogin userLogin = new UserLogin();
|
|
|
+ userLogin.setLoginTime(new Date());
|
|
|
+ userLogin.setUserId(user.getId());
|
|
|
+ userLogin.setToken(token);
|
|
|
+ userLoginRepo.save(userLogin);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建访问用户并加入K/V缓存
|
|
|
+ *
|
|
|
+ * @param token
|
|
|
+ * @param user
|
|
|
+ */
|
|
|
+ @Deprecated
|
|
|
+ public void createAccessUser(String token, UserEntity user, Long studentId) throws Exception {
|
|
|
+ AccessUser accessUser = new AccessUser();
|
|
|
+ Set<UserRole> userRoleSet = new HashSet<UserRole>(user.getUserRoles());
|
|
|
+ Org org = orgService.findOne(user.getRootOrgId());
|
|
|
+ // Map<String,Set<String>> rolesMap = userRoleSet.stream()
|
|
|
+ // .collect(Collectors.groupingBy(UserRole::getAppCode,
|
|
|
+ // Collectors.mapping(UserRole::getRoleCode,Collectors.toSet())));
|
|
|
+ accessUser.setLoginName(user.getLoginName());
|
|
|
+ accessUser.setName(user.getName());
|
|
|
+ accessUser.setOrgId(user.getOrgId());
|
|
|
+ accessUser.setRootOrgId(user.getRootOrgId());
|
|
|
+ if (org != null) {
|
|
|
+ accessUser.setRootOrgName(org.getName());
|
|
|
+ }
|
|
|
+ accessUser.setUserId(user.getId());
|
|
|
+ // accessUser.setRoles(rolesMap);
|
|
|
+ accessUser.setToken(token);
|
|
|
+ accessUser.setStudentId(studentId);
|
|
|
+ accessUserOps.set(token, accessUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取用户信息DTO
|
|
|
+ *
|
|
|
+ * @param user
|
|
|
+ * @param token
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public UserInfo getUserInfo(UserEntity user, String token) throws Exception {
|
|
|
+ UserInfo userInfo = new UserInfo();
|
|
|
+ Org org = orgService.findOne(user.getOrgId());
|
|
|
+ Org rootOrg = orgService.findOne(user.getRootOrgId());
|
|
|
+ userInfo.setUserId(user.getId());
|
|
|
+ userInfo.setOrgId(user.getOrgId());
|
|
|
+ userInfo.setRootOrgId(user.getRootOrgId());
|
|
|
+ userInfo.setName(user.getName());
|
|
|
+ userInfo.setAvatar(user.getAvatar());
|
|
|
+ userInfo.setLoginName(user.getLoginName());
|
|
|
+ if (org != null) {
|
|
|
+ userInfo.setOrgName(org.getName());
|
|
|
+ }
|
|
|
+ if (rootOrg != null) {
|
|
|
+ userInfo.setRootOrgLogo(rootOrg.getLogo());
|
|
|
+ userInfo.setRootOrgName(rootOrg.getName());
|
|
|
+ }
|
|
|
+ userInfo.setToken(token);
|
|
|
+ userInfo.setType(user.getType().toString());
|
|
|
+ userInfo.setUserRoles(user.getUserRoles());
|
|
|
+ userInfo.setRoleNames(getRoleNames(user.getUserRoles()));
|
|
|
+ return userInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取角色名称
|
|
|
+ *
|
|
|
+ * @param userRoles
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<String> getRoleNames(List<UserRole> userRoles) {
|
|
|
+
|
|
|
+ List<String> roleNameList = userRoles.stream()
|
|
|
+ .map(userRole -> RoleMeta.valueOf(userRole.getRoleCode()).getName())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return roleNameList;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登出
|
|
|
+ *
|
|
|
+ * @param accessUser
|
|
|
+ */
|
|
|
public void logout(AccessUser accessUser) {
|
|
|
- accessUserOps.delete(accessUser.getToken());
|
|
|
- userLoginRepo.deleteByUserId(accessUser.getUserId());
|
|
|
+ accessUserOps.delete(accessUser.getToken());
|
|
|
+ userLoginRepo.deleteByUserId(accessUser.getUserId());
|
|
|
}
|
|
|
|
|
|
public List<UserEntity> getMarker(Long rootOrgId) {
|
|
|
return userRepo.findMarkerByRootOrgId(rootOrgId);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 查询评卷员带分页
|
|
|
+ *
|
|
|
* @param user
|
|
|
* @param pageable
|
|
|
* @return
|
|
|
*/
|
|
|
- public Page<UserEntity> getAllMaker(UserEntity user,Pageable pageable){
|
|
|
+ public Page<UserEntity> getAllMaker(UserEntity user, Pageable pageable) {
|
|
|
Specification<UserEntity> specification = getSpecification(user);
|
|
|
- return userRepo.findAll(specification,pageable);
|
|
|
+ return userRepo.findAll(specification, pageable);
|
|
|
}
|
|
|
|
|
|
- public Specification<UserEntity> getSpecification(UserEntity user){
|
|
|
+ public Specification<UserEntity> getSpecification(UserEntity user) {
|
|
|
Specification<UserEntity> specification = (root, query, cb) -> {
|
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
|
- predicates.add(cb.equal(root.get("type"),UserType.COMMON));
|
|
|
- predicates.add(cb.equal(root.get("rootOrgId"),user.getRootOrgId()));
|
|
|
- Join join = root.join("userRoles");
|
|
|
- predicates.add(cb.equal(join.get("roleCode"), RoleMeta.MARKER.name()));
|
|
|
- if(StringUtils.isNotEmpty(user.getLoginName())){
|
|
|
- predicates.add(cb.like(root.get("loginName"),"%"+user.getLoginName()+"%"));
|
|
|
- }
|
|
|
- if(StringUtils.isNotEmpty(user.getName())){
|
|
|
- predicates.add(cb.like(root.get("name"),"%"+user.getName()+"%"));
|
|
|
- }
|
|
|
- if(user.getEnable() != null){
|
|
|
- predicates.add(cb.equal(root.get("enable"),user.getEnable()));
|
|
|
- }
|
|
|
+ predicates.add(cb.equal(root.get("type"), UserType.COMMON));
|
|
|
+ predicates.add(cb.equal(root.get("rootOrgId"), user.getRootOrgId()));
|
|
|
+ Join join = root.join("userRoles");
|
|
|
+ predicates.add(cb.equal(join.get("roleCode"), RoleMeta.MARKER.name()));
|
|
|
+ if (StringUtils.isNotEmpty(user.getLoginName())) {
|
|
|
+ predicates.add(cb.like(root.get("loginName"), "%" + user.getLoginName() + "%"));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(user.getName())) {
|
|
|
+ predicates.add(cb.like(root.get("name"), "%" + user.getName() + "%"));
|
|
|
+ }
|
|
|
+ if (user.getEnable() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("enable"), user.getEnable()));
|
|
|
+ }
|
|
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
};
|
|
|
return specification;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public UserEntity save(UserEntity user) {
|
|
|
- user.setCreateTime(new Date());
|
|
|
UserEntity one = userRepo.findByRootOrgIdAndLoginName(user.getRootOrgId(),
|
|
|
user.getLoginName());
|
|
|
if (one != null && (!one.getId().equals(user.getId()))) {
|
|
@@ -513,9 +521,9 @@ public class UserServiceImpl implements UserService{
|
|
|
return userRepo.save(user);
|
|
|
}
|
|
|
|
|
|
- public UserEntity saveMarker(Long rootOrgId, String loginName,String name) {
|
|
|
- UserEntity old = userRepo.findByRootOrgIdAndLoginName(rootOrgId,loginName);
|
|
|
- if(old!=null){
|
|
|
+ public UserEntity saveMarker(Long rootOrgId, String loginName, String name) {
|
|
|
+ UserEntity old = userRepo.findByRootOrgIdAndLoginName(rootOrgId, loginName);
|
|
|
+ if (old != null) {
|
|
|
return old;
|
|
|
}
|
|
|
UserEntity user = new UserEntity();
|
|
@@ -531,14 +539,13 @@ public class UserServiceImpl implements UserService{
|
|
|
user.setUserRoles(userRoles);
|
|
|
user.setScope(UserScope.ORG);
|
|
|
user.setType(UserType.COMMON);
|
|
|
- user.setCreateTime(new Date());
|
|
|
return userRepo.save(user);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public UserEntity getUser(Long rootOrgId, String loginName) {
|
|
|
- UserEntity user = userRepo.findByRootOrgIdAndLoginName(rootOrgId,loginName);
|
|
|
- return user;
|
|
|
+ UserEntity user = userRepo.findByRootOrgIdAndLoginName(rootOrgId, loginName);
|
|
|
+ return user;
|
|
|
}
|
|
|
|
|
|
}
|