|
@@ -1,5 +1,6 @@
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -7,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
|
+import com.qmth.teachcloud.common.base.BaseEntity;
|
|
import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
|
|
import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
|
|
import com.qmth.teachcloud.common.bean.dto.LoginDto;
|
|
import com.qmth.teachcloud.common.bean.dto.LoginDto;
|
|
@@ -15,6 +17,8 @@ import com.qmth.teachcloud.common.bean.dto.VerifyCodeCheckDto;
|
|
import com.qmth.teachcloud.common.bean.dto.excel.DescribeImportDto;
|
|
import com.qmth.teachcloud.common.bean.dto.excel.DescribeImportDto;
|
|
import com.qmth.teachcloud.common.bean.dto.excel.SysUserImportDto;
|
|
import com.qmth.teachcloud.common.bean.dto.excel.SysUserImportDto;
|
|
import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
|
|
import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
|
|
|
|
+import com.qmth.teachcloud.common.bean.params.PushBeforeRoleParam;
|
|
|
|
+import com.qmth.teachcloud.common.bean.params.UserPushParam;
|
|
import com.qmth.teachcloud.common.bean.params.UserSaveParams;
|
|
import com.qmth.teachcloud.common.bean.params.UserSaveParams;
|
|
import com.qmth.teachcloud.common.bean.result.LoginResult;
|
|
import com.qmth.teachcloud.common.bean.result.LoginResult;
|
|
import com.qmth.teachcloud.common.bean.result.UserBatchDisposeResult;
|
|
import com.qmth.teachcloud.common.bean.result.UserBatchDisposeResult;
|
|
@@ -23,12 +27,18 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
|
|
+import com.qmth.teachcloud.common.enums.userPush.BeforeJudgeEnum;
|
|
|
|
+import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
|
|
|
|
+import com.qmth.teachcloud.common.enums.userPush.SyncStatusEnum;
|
|
import com.qmth.teachcloud.common.mapper.SysUserMapper;
|
|
import com.qmth.teachcloud.common.mapper.SysUserMapper;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.util.Base64Util;
|
|
import com.qmth.teachcloud.common.util.Base64Util;
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
|
+import javassist.bytecode.stackmap.BasicBlock;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.redisson.api.ExpiredObjectListener;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -90,6 +100,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
@Resource
|
|
@Resource
|
|
TeachcloudCommonService teachcloudCommonService;
|
|
TeachcloudCommonService teachcloudCommonService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ SysPrivilegeService sysPrivilegeService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ CallApiOrgCenterService callApiOrgCenterService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ PushUserErrorService pushUserErrorService;
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public IPage<UserDto> list(String loginName, String roleId, Boolean enable, String realName, Integer pageNumber, Integer pageSize) {
|
|
public IPage<UserDto> list(String loginName, String roleId, Boolean enable, String realName, Integer pageNumber, Integer pageSize) {
|
|
@@ -113,12 +132,28 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
- public boolean saveUser(UserSaveParams userSaveParams) {
|
|
|
|
- return saveUserCommon(userSaveParams,null);
|
|
|
|
|
|
+ public boolean saveUser(UserSaveParams userSaveParams) throws IllegalAccessException {
|
|
|
|
+ SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
|
+ Long oldId = userSaveParams.getId();
|
|
|
|
+ Set<Long> roleIdSet = new HashSet<>();
|
|
|
|
+ if (SystemConstant.longNotNull(oldId)) {
|
|
|
|
+ // 编辑
|
|
|
|
+ roleIdSet = new HashSet<>(sysRoleService.getUserRoles(oldId));
|
|
|
|
+ }
|
|
|
|
+ boolean result = false;
|
|
|
|
+ Long upUserId = saveUserCommon(userSaveParams, null);
|
|
|
|
+ if (SystemConstant.longNotNull(upUserId)) {
|
|
|
|
+ result = true;
|
|
|
|
+ PushBeforeRoleParam pushBeforeRoleParam = new PushBeforeRoleParam(roleIdSet, BeforeJudgeEnum.FORBIDDEN_BY_BEFORE_ROLE);
|
|
|
|
+ List<UserPushParam> userPushParamList = this.analyzeUserPushSpecialPrivilege(upUserId, requestUser.getSchoolId(), userSaveParams.getCode(), userSaveParams.getRealName(), userSaveParams.getPassword(), new HashSet<>(Arrays.asList(userSaveParams.getRoleIds())), pushBeforeRoleParam, userSaveParams.getEnable());
|
|
|
|
+ this.userPushService(userPushParamList, requestUser);
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public boolean enable(SysUser user) throws NoSuchAlgorithmException {
|
|
|
|
|
|
+ public boolean enable(SysUser user) throws NoSuchAlgorithmException, IllegalAccessException {
|
|
|
|
+ SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
UpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<>();
|
|
updateWrapper.lambda().set(SysUser::getEnable, user.getEnable()).eq(SysUser::getId, user.getId());
|
|
updateWrapper.lambda().set(SysUser::getEnable, user.getEnable()).eq(SysUser::getId, user.getId());
|
|
commonCacheService.updateUserCache(user.getId());
|
|
commonCacheService.updateUserCache(user.getId());
|
|
@@ -127,6 +162,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
if (!user.getEnable()) {
|
|
if (!user.getEnable()) {
|
|
commonService.removeUserInfo(user.getId(), true);
|
|
commonService.removeUserInfo(user.getId(), true);
|
|
}
|
|
}
|
|
|
|
+ List<UserPushParam> userPushParamList = this.analyzeUserEnableSpecialPrivilege(requestUser.getSchoolId(), user.getId(), user.getEnable());
|
|
|
|
+ if (success) {
|
|
|
|
+ this.userPushService(userPushParamList, requestUser);
|
|
|
|
+ }
|
|
return success;
|
|
return success;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -162,7 +201,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
String oldPassword = user.getOldPassword();
|
|
String oldPassword = user.getOldPassword();
|
|
if (SystemConstant.strNotNull(newPwd)) {
|
|
if (SystemConstant.strNotNull(newPwd)) {
|
|
// 参数中存在密码 -》 更新密码
|
|
// 参数中存在密码 -》 更新密码
|
|
- if (SystemConstant.strNotNull(oldPassword) && oldPassword.equals(newPwd)){
|
|
|
|
|
|
+ if (SystemConstant.strNotNull(oldPassword) && oldPassword.equals(newPwd)) {
|
|
throw ExceptionResultEnum.ERROR.exception("新密码和旧密码一致请重新输入");
|
|
throw ExceptionResultEnum.ERROR.exception("新密码和旧密码一致请重新输入");
|
|
}
|
|
}
|
|
sysUser.setPwdCount(sysUser.getPwdCount() == null ? 1 : sysUser.getPwdCount() + 1);
|
|
sysUser.setPwdCount(sysUser.getPwdCount() == null ? 1 : sysUser.getPwdCount() + 1);
|
|
@@ -187,7 +226,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
sysUser.setMobileNumber(mobileNumber);
|
|
sysUser.setMobileNumber(mobileNumber);
|
|
}
|
|
}
|
|
boolean success = this.updateById(sysUser);
|
|
boolean success = this.updateById(sysUser);
|
|
- if (!success){
|
|
|
|
|
|
+ if (!success) {
|
|
throw ExceptionResultEnum.ERROR.exception("用户更新失败");
|
|
throw ExceptionResultEnum.ERROR.exception("用户更新失败");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -213,14 +252,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
BasicSchool basicSchool = null;
|
|
BasicSchool basicSchool = null;
|
|
String schoolCode = null;
|
|
String schoolCode = null;
|
|
basicSchool = basicSchoolService.getById(sysUser.getSchoolId());
|
|
basicSchool = basicSchoolService.getById(sysUser.getSchoolId());
|
|
- if (Objects.isNull(basicSchool)){
|
|
|
|
|
|
+ if (Objects.isNull(basicSchool)) {
|
|
List<Long> userRoles = sysRoleService.getUserRoles(sysUser.getId());
|
|
List<Long> userRoles = sysRoleService.getUserRoles(sysUser.getId());
|
|
- List<SysRole> sysRoleList = sysRoleService.list(new QueryWrapper<SysRole>().lambda().in(SysRole::getId,userRoles));
|
|
|
|
|
|
+ List<SysRole> sysRoleList = sysRoleService.list(new QueryWrapper<SysRole>().lambda().in(SysRole::getId, userRoles));
|
|
Set<RoleTypeEnum> roleType = sysRoleList.stream().map(SysRole::getType).collect(Collectors.toSet());
|
|
Set<RoleTypeEnum> roleType = sysRoleList.stream().map(SysRole::getType).collect(Collectors.toSet());
|
|
- if (roleType.contains(RoleTypeEnum.ADMIN) || roleType.contains(RoleTypeEnum.CUSTOMER)){
|
|
|
|
|
|
+ if (roleType.contains(RoleTypeEnum.ADMIN) || roleType.contains(RoleTypeEnum.CUSTOMER)) {
|
|
schoolCode = SystemConstant.ADMIN_CODE;
|
|
schoolCode = SystemConstant.ADMIN_CODE;
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
schoolCode = basicSchool.getCode();
|
|
schoolCode = basicSchool.getCode();
|
|
}
|
|
}
|
|
if (!schoolCode.equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
|
|
if (!schoolCode.equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
|
|
@@ -361,7 +400,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
public boolean saveCustomer(UserSaveParams userSaveParams) {
|
|
public boolean saveCustomer(UserSaveParams userSaveParams) {
|
|
- return saveUserCommon(userSaveParams,null);
|
|
|
|
|
|
+ Long upUserId = saveUserCommon(userSaveParams, null);
|
|
|
|
+ return SystemConstant.longNotNull(upUserId);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -399,17 +439,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
* 保存用户公用
|
|
* 保存用户公用
|
|
*
|
|
*
|
|
* @param userSaveParams
|
|
* @param userSaveParams
|
|
- * @return
|
|
|
|
|
|
+ * @return 新增或更新的用户id
|
|
*/
|
|
*/
|
|
- public boolean saveUserCommon(UserSaveParams userSaveParams,Long requestUserId) {
|
|
|
|
|
|
+ public Long saveUserCommon(UserSaveParams userSaveParams, Long requestUserId) {
|
|
SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
|
|
SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
|
|
boolean isSuccess = true;
|
|
boolean isSuccess = true;
|
|
|
|
+ Long resultUserId = null;
|
|
try {
|
|
try {
|
|
Long schoolId = userSaveParams.getSchoolId();
|
|
Long schoolId = userSaveParams.getSchoolId();
|
|
if (schoolId == null) {
|
|
if (schoolId == null) {
|
|
schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
|
|
schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
|
|
}
|
|
}
|
|
- if (!SystemConstant.longNotNull(requestUserId)){
|
|
|
|
|
|
+ if (!SystemConstant.longNotNull(requestUserId)) {
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
requestUserId = requestUser.getId();
|
|
requestUserId = requestUser.getId();
|
|
}
|
|
}
|
|
@@ -439,24 +480,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
if (Objects.isNull(sysUser.getId())) {//新增用户
|
|
if (Objects.isNull(sysUser.getId())) {//新增用户
|
|
sysUser.insertInfo(requestUserId);
|
|
sysUser.insertInfo(requestUserId);
|
|
sysUserService.save(sysUser);
|
|
sysUserService.save(sysUser);
|
|
|
|
+ resultUserId = sysUser.getId();
|
|
commonService.addUserRolePrivilege(sysUser, userSaveParams.getRoleIds());
|
|
commonService.addUserRolePrivilege(sysUser, userSaveParams.getRoleIds());
|
|
} else {//修改用户
|
|
} else {//修改用户
|
|
|
|
+ resultUserId = sysUser.getId();
|
|
List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(sysUser.getId());
|
|
List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(sysUser.getId());
|
|
List<Long> userRolesList = Arrays.asList(userSaveParams.getRoleIds());
|
|
List<Long> userRolesList = Arrays.asList(userSaveParams.getRoleIds());
|
|
Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
|
|
Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
|
|
int count = (int) dbUserRolesList.stream().filter(userRolesList::contains).count();
|
|
int count = (int) dbUserRolesList.stream().filter(userRolesList::contains).count();
|
|
SysUser dbUser = sysUserService.getById(sysUser.getId());
|
|
SysUser dbUser = sysUserService.getById(sysUser.getId());
|
|
sysUserService.update(new UpdateWrapper<SysUser>().lambda()
|
|
sysUserService.update(new UpdateWrapper<SysUser>().lambda()
|
|
- .eq(SysUser::getId,sysUser.getId())
|
|
|
|
- .set(SysUser::getSchoolId,userSaveParams.getSchoolId())
|
|
|
|
- .set(SysUser::getLoginName,sysUser.getLoginName())
|
|
|
|
- .set(SysUser::getRealName,sysUser.getRealName())
|
|
|
|
- .set(SysUser::getCode,sysUser.getCode())
|
|
|
|
- .set(SysUser::getMobileNumber,sysUser.getMobileNumber())
|
|
|
|
- .set(SysUser::getOrgId,sysUser.getOrgId())
|
|
|
|
- .set(SysUser::getEnable,sysUser.getEnable())
|
|
|
|
- .set(SysUser::getUpdateId,requestUserId)
|
|
|
|
- .set(SysUser::getUpdateTime,System.currentTimeMillis())
|
|
|
|
|
|
+ .eq(SysUser::getId, sysUser.getId())
|
|
|
|
+ .set(SysUser::getSchoolId, userSaveParams.getSchoolId())
|
|
|
|
+ .set(SysUser::getLoginName, sysUser.getLoginName())
|
|
|
|
+ .set(SysUser::getRealName, sysUser.getRealName())
|
|
|
|
+ .set(SysUser::getCode, sysUser.getCode())
|
|
|
|
+ .set(SysUser::getMobileNumber, sysUser.getMobileNumber())
|
|
|
|
+ .set(SysUser::getOrgId, sysUser.getOrgId())
|
|
|
|
+ .set(SysUser::getEnable, sysUser.getEnable())
|
|
|
|
+ .set(SysUser::getUpdateId, requestUserId)
|
|
|
|
+ .set(SysUser::getUpdateTime, System.currentTimeMillis())
|
|
);
|
|
);
|
|
//如果修改了角色,需要重新登录
|
|
//如果修改了角色,需要重新登录
|
|
if (count == 0 || dbUserRolesList.size() != userRolesList.size()) {
|
|
if (count == 0 || dbUserRolesList.size() != userRolesList.size()) {
|
|
@@ -478,6 +521,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
commonCacheService.updateUserAuthCache(sysUser.getId());
|
|
commonCacheService.updateUserAuthCache(sysUser.getId());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|
|
// //用户科目全量删除全量增加
|
|
// //用户科目全量删除全量增加
|
|
// QueryWrapper<BasicUserCourse> basicUserCourseQueryWrapper = new QueryWrapper<>();
|
|
// QueryWrapper<BasicUserCourse> basicUserCourseQueryWrapper = new QueryWrapper<>();
|
|
@@ -505,7 +549,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
ResultUtil.error(e.getMessage());
|
|
ResultUtil.error(e.getMessage());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return isSuccess;
|
|
|
|
|
|
+ if (!isSuccess) {
|
|
|
|
+ resultUserId = null;
|
|
|
|
+ }
|
|
|
|
+ return resultUserId;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -632,7 +679,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
public Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws NoSuchAlgorithmException {
|
|
public Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws NoSuchAlgorithmException {
|
|
SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
|
|
SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
|
|
Long schoolId = sysUser.getSchoolId();
|
|
Long schoolId = sysUser.getSchoolId();
|
|
-// List<UserSaveParams> userSaveParamsList = new ArrayList<>();
|
|
|
|
|
|
+ List<UserPushParam> userPushParamList = new ArrayList<>();
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
|
|
LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
|
|
List<Object> sysUserImportDtoList = excelMap.get(i);
|
|
List<Object> sysUserImportDtoList = excelMap.get(i);
|
|
@@ -655,8 +702,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
SysUser oldUser = this.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getCode, code).eq(SysUser::getSchoolId, schoolId));
|
|
SysUser oldUser = this.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getCode, code).eq(SysUser::getSchoolId, schoolId));
|
|
Long oldUserId = null;
|
|
Long oldUserId = null;
|
|
|
|
+ Set<Long> oldRoleSet = new HashSet<>();
|
|
if (Objects.nonNull(oldUser)) {
|
|
if (Objects.nonNull(oldUser)) {
|
|
oldUserId = oldUser.getId();
|
|
oldUserId = oldUser.getId();
|
|
|
|
+ oldRoleSet = new HashSet<>(sysRoleService.getUserRoles(oldUserId));
|
|
}
|
|
}
|
|
String loginName = code;
|
|
String loginName = code;
|
|
if (SystemConstant.longNotNull(oldUserId)) {
|
|
if (SystemConstant.longNotNull(oldUserId)) {
|
|
@@ -673,10 +722,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
}
|
|
}
|
|
userSaveParams.setCode(code);
|
|
userSaveParams.setCode(code);
|
|
userSaveParams.setSchoolId(schoolId);
|
|
userSaveParams.setSchoolId(schoolId);
|
|
- this.saveUserCommon(userSaveParams,sysUser.getId());
|
|
|
|
-// userSaveParamsList.add(userSaveParams);
|
|
|
|
|
|
+ Long upUserId = this.saveUserCommon(userSaveParams, sysUser.getId());
|
|
|
|
+ if (SystemConstant.longNotNull(upUserId)) {
|
|
|
|
+ PushBeforeRoleParam pushBeforeRoleParam = new PushBeforeRoleParam(oldRoleSet, BeforeJudgeEnum.FORBIDDEN_BY_BEFORE_ROLE);
|
|
|
|
+ List<UserPushParam> pushCellList = this.analyzeUserPushSpecialPrivilege(upUserId, schoolId, userSaveParams.getCode(), userSaveParams.getRealName(), userSaveParams.getPassword(), new HashSet<>(Arrays.asList(userSaveParams.getRoleIds())), pushBeforeRoleParam, true);
|
|
|
|
+ userPushParamList.addAll(pushCellList);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ map.put("userPushParamList", userPushParamList);
|
|
// UserBatchDisposeResult userBatchDisposeResult = this.disposeUserInfoHelp(userSaveParamsList, sysUser);
|
|
// UserBatchDisposeResult userBatchDisposeResult = this.disposeUserInfoHelp(userSaveParamsList, sysUser);
|
|
// List<SysUser> sysUserList = userBatchDisposeResult.getUserList();
|
|
// List<SysUser> sysUserList = userBatchDisposeResult.getUserList();
|
|
// List<SysUserRole> sysUserRoleList = userBatchDisposeResult.getUserRoleList();
|
|
// List<SysUserRole> sysUserRoleList = userBatchDisposeResult.getUserRoleList();
|
|
@@ -878,6 +932,189 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
return sysUserService.count(sysUserQueryWrapper);
|
|
return sysUserService.count(sysUserQueryWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public boolean userPushService(List<UserPushParam> userPushParamList, SysUser requestUser) throws IllegalAccessException {
|
|
|
|
+ boolean result = true;
|
|
|
|
+ for (UserPushParam userPushParam : userPushParamList) {
|
|
|
|
+ boolean syncResult = callApiOrgCenterService.basicSyncUser(userPushParam, requestUser.getSchoolId());
|
|
|
|
+ if (!syncResult) {
|
|
|
|
+ log.warn("-----------------------------用户同步推送失败----------------------------");
|
|
|
|
+ result = false;
|
|
|
|
+ PushUserError pushUserError = new PushUserError();
|
|
|
|
+ pushUserError.setId(SystemConstant.getDbUuid());
|
|
|
|
+ pushUserError.setSchoolId(requestUser.getSchoolId());
|
|
|
|
+ pushUserError.setUserId(userPushParam.getUserId());
|
|
|
|
+ pushUserError.setAccount(userPushParam.getAccount());
|
|
|
|
+ pushUserError.setName(userPushParam.getName());
|
|
|
|
+ pushUserError.setPassword(userPushParam.getPassword());
|
|
|
|
+ pushUserError.setEnable(userPushParam.getEnable());
|
|
|
|
+ pushUserError.setSubjectCodes(userPushParam.getSubjectCodes());
|
|
|
|
+ pushUserError.setRole(userPushParam.getRole());
|
|
|
|
+ pushUserError.setCreateId(requestUser.getId());
|
|
|
|
+ log.warn(JSON.toJSONString(pushUserError));
|
|
|
|
+ pushUserErrorService.save(pushUserError);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public void autoPushUserErrorData() throws IllegalAccessException {
|
|
|
|
+ List<PushUserError> pushUserErrorList = pushUserErrorService.list();
|
|
|
|
+ Set<Long> userIdSet = pushUserErrorList.stream().map(PushUserError::getUserId).collect(Collectors.toSet());
|
|
|
|
+ List<SysUser> sysUserList = this.listByIds(userIdSet);
|
|
|
|
+ // 清空push-user-error表
|
|
|
|
+ pushUserErrorService.remove(new QueryWrapper<PushUserError>().lambda().in(PushUserError::getUserId, userIdSet));
|
|
|
|
+ for (SysUser sysUser : sysUserList) {
|
|
|
|
+ if (!SyncStatusEnum.NEED_PUSH_AGAIN.equals(sysUser.getSyncStatus())) {
|
|
|
|
+ // 用户同步状态不为需要重新同步的错误数据再同步(防止和需要重新同步类型的数据冲突或因为权限改动导致的反复同步!)
|
|
|
|
+ Long userId = sysUser.getId();
|
|
|
|
+ Long schoolId = sysUser.getSchoolId();
|
|
|
|
+ Set<Long> roleIdSet = sysUserRoleService.listRoleByUserId(userId).stream().map(BaseEntity::getId).collect(Collectors.toSet());
|
|
|
|
+ PushBeforeRoleParam pushBeforeRoleParam = new PushBeforeRoleParam(null, BeforeJudgeEnum.FORBIDDEN_NECESSARY);
|
|
|
|
+ List<UserPushParam> userPushParamList = this.analyzeUserPushSpecialPrivilege(userId, schoolId, sysUser.getCode(), sysUser.getRealName(), sysUser.getPassword(), roleIdSet, pushBeforeRoleParam, sysUser.getEnable());
|
|
|
|
+ SysUser requestUser = new SysUser();
|
|
|
|
+ requestUser.setSchoolId(schoolId);
|
|
|
|
+ requestUser.setId(1L);
|
|
|
|
+ this.userPushService(userPushParamList, requestUser);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public SpecialPrivilegeEnum findUserSpecialPrivilegeByRoleIdSet(Set<Long> roleIdSet) {
|
|
|
|
+ SpecialPrivilegeEnum result = SpecialPrivilegeEnum.UNIDENTIFIED;
|
|
|
|
+ // 查询该学校特殊权限id
|
|
|
|
+ // 评卷员权限
|
|
|
|
+ SysPrivilege marker = sysPrivilegeService.list(new QueryWrapper<SysPrivilege>().lambda()
|
|
|
|
+ .eq(SysPrivilege::getUrl, SpecialPrivilegeEnum.MARKER.getId())).get(0);
|
|
|
|
+ Long markerId = marker.getId();
|
|
|
|
+
|
|
|
|
+ // 科组长权限
|
|
|
|
+ SysPrivilege subjectHeader = sysPrivilegeService.list(new QueryWrapper<SysPrivilege>().lambda()
|
|
|
|
+ .eq(SysPrivilege::getUrl, SpecialPrivilegeEnum.SUBJECT_HEADER.getId())).get(0);
|
|
|
|
+ Long subjectHeaderId = subjectHeader.getId();
|
|
|
|
+ if (roleIdSet.size() > 0) {
|
|
|
|
+ List<SysRolePrivilege> sysRolePrivilegeList = sysRolePrivilegeService.list(new QueryWrapper<SysRolePrivilege>().lambda().in(SysRolePrivilege::getRoleId, roleIdSet));
|
|
|
|
+ Set<Long> priIds = sysRolePrivilegeList.stream().map(SysRolePrivilege::getPrivilegeId).collect(Collectors.toSet());
|
|
|
|
+ if (priIds.size() > 0) {
|
|
|
|
+ if (priIds.contains(markerId) && !priIds.contains(subjectHeaderId)) {
|
|
|
|
+ // 评卷员权限
|
|
|
|
+ result = SpecialPrivilegeEnum.MARKER;
|
|
|
|
+ } else if (!priIds.contains(markerId) && priIds.contains(subjectHeaderId)) {
|
|
|
|
+ // 科组长权限
|
|
|
|
+ result = SpecialPrivilegeEnum.SUBJECT_HEADER;
|
|
|
|
+ } else if (priIds.contains(markerId) && priIds.contains(subjectHeaderId)) {
|
|
|
|
+ // 复合权限
|
|
|
|
+ result = SpecialPrivilegeEnum.COMPOSITE;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 解析用户推送状态
|
|
|
|
+ *
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ * @param schoolId 学校id
|
|
|
|
+ * @param userCode 用户工号
|
|
|
|
+ * @param realName 用户真实姓名
|
|
|
|
+ * @param password 用户密码
|
|
|
|
+ * @param currentRoleIdSet 当前用户角色id集合
|
|
|
|
+ * @param pushBeforeRoleParam 用户推送策略参数
|
|
|
|
+ * @param enable 用户启用禁用状态
|
|
|
|
+ * @return 组装好的用户推送参数集合
|
|
|
|
+ */
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public List<UserPushParam> analyzeUserPushSpecialPrivilege(Long userId, Long schoolId, String userCode, String realName, String password, Set<Long> currentRoleIdSet, PushBeforeRoleParam pushBeforeRoleParam, boolean enable) {
|
|
|
|
+ List<UserPushParam> userPushParamList = new ArrayList<>();
|
|
|
|
+ // 查询该学校特殊权限id
|
|
|
|
+ // 评卷员权限
|
|
|
|
+ SysPrivilege marker = sysPrivilegeService.list(new QueryWrapper<SysPrivilege>().lambda()
|
|
|
|
+ .eq(SysPrivilege::getUrl, SpecialPrivilegeEnum.MARKER.getId())).get(0);
|
|
|
|
+ Long markerId = marker.getId();
|
|
|
|
+
|
|
|
|
+ // 科组长权限
|
|
|
|
+ SysPrivilege subjectHeader = sysPrivilegeService.list(new QueryWrapper<SysPrivilege>().lambda()
|
|
|
|
+ .eq(SysPrivilege::getUrl, SpecialPrivilegeEnum.SUBJECT_HEADER.getId())).get(0);
|
|
|
|
+ Long subjectHeaderId = subjectHeader.getId();
|
|
|
|
+
|
|
|
|
+ if (currentRoleIdSet.size() > 0) {
|
|
|
|
+ List<SysRolePrivilege> sysRolePrivilegeList = sysRolePrivilegeService.list(new QueryWrapper<SysRolePrivilege>().lambda().in(SysRolePrivilege::getRoleId, currentRoleIdSet));
|
|
|
|
+ Set<Long> priIds = sysRolePrivilegeList.stream().map(SysRolePrivilege::getPrivilegeId).collect(Collectors.toSet());
|
|
|
|
+ if (priIds.size() > 0) {
|
|
|
|
+ UserPushParam markerCell = new UserPushParam();
|
|
|
|
+ markerCell.setUserId(userId);
|
|
|
|
+ markerCell.setName(realName);
|
|
|
|
+ markerCell.setPassword(password);
|
|
|
|
+ markerCell.setRole(SpecialPrivilegeEnum.MARKER);
|
|
|
|
+ markerCell.setAccount(SpecialPrivilegeEnum.MARKER.getPrefix() + userCode);
|
|
|
|
+
|
|
|
|
+ UserPushParam headerCell = new UserPushParam();
|
|
|
|
+ headerCell.setUserId(userId);
|
|
|
|
+ headerCell.setName(realName);
|
|
|
|
+ headerCell.setPassword(password);
|
|
|
|
+ headerCell.setRole(SpecialPrivilegeEnum.SUBJECT_HEADER);
|
|
|
|
+ headerCell.setAccount(SpecialPrivilegeEnum.SUBJECT_HEADER.getPrefix() + userCode);
|
|
|
|
+
|
|
|
|
+ if (priIds.contains(markerId) && !priIds.contains(subjectHeaderId)) {
|
|
|
|
+ // 评卷员权限
|
|
|
|
+ markerCell.setEnable(enable);
|
|
|
|
+ headerCell.setEnable(false);
|
|
|
|
+ } else if (!priIds.contains(markerId) && priIds.contains(subjectHeaderId)) {
|
|
|
|
+ // 科组长权限
|
|
|
|
+ headerCell.setEnable(enable);
|
|
|
|
+ markerCell.setEnable(false);
|
|
|
|
+ } else if (priIds.contains(markerId) && priIds.contains(subjectHeaderId)) {
|
|
|
|
+ // 复合权限
|
|
|
|
+ headerCell.setEnable(enable);
|
|
|
|
+ markerCell.setEnable(enable);
|
|
|
|
+ } else {
|
|
|
|
+ // 无特殊权限
|
|
|
|
+ switch (pushBeforeRoleParam.getBeforeJudgeEnum()) {
|
|
|
|
+ case FORBIDDEN_NO_NEED:
|
|
|
|
+ // 当前用户无特殊权限,且策略为不需要禁用则不推送
|
|
|
|
+ markerCell = null;
|
|
|
|
+ headerCell = null;
|
|
|
|
+ break;
|
|
|
|
+ case FORBIDDEN_BY_BEFORE_ROLE:
|
|
|
|
+ Set<Long> beforeRoleIdSet = pushBeforeRoleParam.getRoleIdSet();
|
|
|
|
+ if (beforeRoleIdSet != null && beforeRoleIdSet.size() > 0) {
|
|
|
|
+ List<SysRolePrivilege> beforeSysRolePrivilegeList = sysRolePrivilegeService.list(new QueryWrapper<SysRolePrivilege>().lambda().in(SysRolePrivilege::getRoleId, beforeRoleIdSet));
|
|
|
|
+ Set<Long> beforePris = beforeSysRolePrivilegeList.stream().map(SysRolePrivilege::getPrivilegeId).collect(Collectors.toSet());
|
|
|
|
+ if (beforePris.contains(markerId) || beforePris.contains(subjectHeaderId)) {
|
|
|
|
+ // 如果启用了判断该用户原先的角色且原先用户含有特殊角色,但新用户新角色一个都不含,要发送两个禁用
|
|
|
|
+ markerCell.setEnable(false);
|
|
|
|
+ headerCell.setEnable(false);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ // 不发送同步
|
|
|
|
+ markerCell = null;
|
|
|
|
+ headerCell = null;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case FORBIDDEN_NECESSARY:
|
|
|
|
+ markerCell.setEnable(false);
|
|
|
|
+ headerCell.setEnable(false);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (Objects.nonNull(markerCell)) {
|
|
|
|
+ userPushParamList.add(markerCell);
|
|
|
|
+ }
|
|
|
|
+ if (Objects.nonNull(headerCell)) {
|
|
|
|
+ userPushParamList.add(headerCell);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return userPushParamList;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 批量处理用户信息帮助类
|
|
* 批量处理用户信息帮助类
|
|
*
|
|
*
|
|
@@ -995,4 +1232,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
}
|
|
}
|
|
return roleIdList;
|
|
return roleIdList;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private List<UserPushParam> analyzeUserEnableSpecialPrivilege(Long schoolId, Long userId, boolean enable) {
|
|
|
|
+ SysUser dbUser = sysUserService.getById(userId);
|
|
|
|
+ if (Objects.isNull(dbUser)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到系统用户");
|
|
|
|
+ }
|
|
|
|
+ String code = dbUser.getCode();
|
|
|
|
+ Set<Long> roleIdList = new HashSet<>(sysRoleService.getUserRoles(userId));
|
|
|
|
+ PushBeforeRoleParam pushBeforeRoleParam = new PushBeforeRoleParam(null, BeforeJudgeEnum.FORBIDDEN_NECESSARY);
|
|
|
|
+ return this.analyzeUserPushSpecialPrivilege(userId, schoolId, code, null, null, roleIdList, pushBeforeRoleParam, enable);
|
|
|
|
+ }
|
|
}
|
|
}
|