|
@@ -17,7 +17,6 @@ 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.SysUserImportDto;
|
|
|
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.result.LoginResult;
|
|
@@ -27,7 +26,6 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
|
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;
|
|
@@ -37,7 +35,6 @@ import com.qmth.teachcloud.common.util.Base64Util;
|
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -59,25 +56,25 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysRoleService sysRoleService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private BasicCourseService basicCourseService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysConfigService sysConfigService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysUserRoleService sysUserRoleService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysRolePrivilegeService sysRolePrivilegeService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
CommonCacheService commonCacheService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private TeachcloudCommonService commonService;
|
|
|
|
|
|
@Resource
|
|
@@ -102,10 +99,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
SysPrivilegeService sysPrivilegeService;
|
|
|
|
|
|
@Resource
|
|
|
- CallApiOrgCenterService callApiOrgCenterService;
|
|
|
+ PushUserErrorService pushUserErrorService;
|
|
|
|
|
|
@Resource
|
|
|
- PushUserErrorService pushUserErrorService;
|
|
|
+ PushUserTrackService pushUserTrackService;
|
|
|
|
|
|
@Resource
|
|
|
StmmsUtils stmmsUtils;
|
|
@@ -133,25 +130,29 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
@Transactional
|
|
|
@Override
|
|
|
- public boolean saveUser(UserSaveParams userSaveParams) throws IllegalAccessException {
|
|
|
+ public boolean saveUser(UserSaveParams userSaveParams) {
|
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
Long oldId = userSaveParams.getId();
|
|
|
- Set<Long> roleIdSet = new HashSet<>();
|
|
|
+ Set<Long> dbRoleIdSet = new HashSet<>();
|
|
|
+ Set<Long> currentRoleIdSet = new HashSet<>(Arrays.asList(userSaveParams.getRoleIds()));
|
|
|
if (SystemConstant.longNotNull(oldId)) {
|
|
|
// 编辑
|
|
|
- roleIdSet = new HashSet<>(sysRoleService.getUserRoles(oldId));
|
|
|
+ dbRoleIdSet = 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);
|
|
|
+ List<PushUserTrack> pushUserTrackList = pushUserTrackService.createPushTrackUser(dbRoleIdSet,currentRoleIdSet,upUserId,true,requestUser.getId());
|
|
|
+ List<UserPushParam> userPushParamList = pushUserTrackService.analyzeUserPushSpecialPrivilege(pushUserTrackList);
|
|
|
+ if (userPushParamList != null && userPushParamList.size() > 0){
|
|
|
+ this.userPushService(userPushParamList, requestUser.getId());
|
|
|
+ }
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
public boolean enable(SysUser user) throws NoSuchAlgorithmException, IllegalAccessException {
|
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
@@ -163,9 +164,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
if (!user.getEnable()) {
|
|
|
commonService.removeUserInfo(user.getId(), true);
|
|
|
}
|
|
|
- List<UserPushParam> userPushParamList = this.analyzeUserEnableSpecialPrivilege(requestUser.getSchoolId(), user.getId(), user.getEnable());
|
|
|
if (success) {
|
|
|
- this.userPushService(userPushParamList, requestUser);
|
|
|
+ this.analyzeUserEnableSpecialPrivilege(user.getId(), user.getEnable(),requestUser.getId());
|
|
|
}
|
|
|
return success;
|
|
|
}
|
|
@@ -439,9 +439,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
/**
|
|
|
* 保存用户公用
|
|
|
*
|
|
|
- * @param userSaveParams
|
|
|
+ * @param userSaveParams userSaveParams
|
|
|
* @return 新增或更新的用户id
|
|
|
*/
|
|
|
+ @Transactional
|
|
|
public Long saveUserCommon(UserSaveParams userSaveParams, Long requestUserId) {
|
|
|
SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
|
|
|
boolean isSuccess = true;
|
|
@@ -542,7 +543,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
isSuccess = false;
|
|
|
if (e instanceof DuplicateKeyException) {
|
|
|
String errorColumn = e.getCause().toString();
|
|
|
- String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
|
|
|
+ String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3).replaceAll("'", "");
|
|
|
throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
|
|
|
} else if (e instanceof ApiException) {
|
|
|
ResultUtil.error((ApiException) e, e.getMessage());
|
|
@@ -550,9 +551,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
ResultUtil.error(e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- if (!isSuccess) {
|
|
|
- resultUserId = null;
|
|
|
- }
|
|
|
return resultUserId;
|
|
|
}
|
|
|
|
|
@@ -603,12 +601,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(sysUser.getId());
|
|
|
List<Long> userRolesList = Arrays.asList(userSaveParams.getRoleIds());
|
|
|
Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
|
|
|
- int count = (int) dbUserRolesList.stream().filter(s -> userRolesList.contains(s)).count();
|
|
|
+ int count = (int) dbUserRolesList.stream().filter(userRolesList::contains).count();
|
|
|
SysUser dbUser = sysUserService.getById(sysUser.getId());
|
|
|
sysUser.updateInfo(requestUser.getId());
|
|
|
sysUserService.updateById(sysUser);
|
|
|
List<SysRole> list = sysUserRoleService.listRoleByUserId(sysUser.getId());
|
|
|
- boolean containsQuestionTeacher = list.stream().filter(m -> RoleTypeEnum.SCHOOL_ADMIN.equals(m.getType())).count() > 0;
|
|
|
+ boolean containsQuestionTeacher = list.stream().anyMatch(m -> RoleTypeEnum.SCHOOL_ADMIN.equals(m.getType()));
|
|
|
if (containsQuestionTeacher || count == 0 || dbUserRolesList.size() != userRolesList.size()) {
|
|
|
QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
|
|
|
sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, sysUser.getId());
|
|
@@ -664,22 +662,23 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
/**
|
|
|
* 过滤拥有审核权限的人
|
|
|
*
|
|
|
- * @param schoolId
|
|
|
- * @param orgIds
|
|
|
- * @param filter
|
|
|
- * @param approveName
|
|
|
- * @param realName
|
|
|
- * @return
|
|
|
+ * @param schoolId schoolId
|
|
|
+ * @param orgIds orgIds
|
|
|
+ * @param filter filter
|
|
|
+ * @param approveName approveName
|
|
|
+ * @param realName realName
|
|
|
+ * @return return
|
|
|
*/
|
|
|
@Override
|
|
|
public List<ApproveUserResult> filterFlowPrivilege(Long schoolId, Set<Long> orgIds, Boolean filter, FlowApproveNameEnum approveName, String realName) {
|
|
|
return sysUserMapper.filterFlowPrivilege(schoolId, orgIds, filter, Objects.nonNull(approveName) ? approveName.getId() : null, realName);
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
- public Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws NoSuchAlgorithmException {
|
|
|
- SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
|
|
|
- Long schoolId = sysUser.getSchoolId();
|
|
|
+ public Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
|
|
|
+ SysUser requestUser = (SysUser) map.get(SystemConstant.SYS_USER);
|
|
|
+ Long schoolId = requestUser.getSchoolId();
|
|
|
List<UserPushParam> userPushParamList = new ArrayList<>();
|
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
|
LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
|
|
@@ -703,10 +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));
|
|
|
Long oldUserId = null;
|
|
|
- Set<Long> oldRoleSet = new HashSet<>();
|
|
|
+ Set<Long> oldRoleIdSet = new HashSet<>();
|
|
|
if (Objects.nonNull(oldUser)) {
|
|
|
oldUserId = oldUser.getId();
|
|
|
- oldRoleSet = new HashSet<>(sysRoleService.getUserRoles(oldUserId));
|
|
|
+ oldRoleIdSet = new HashSet<>(sysRoleService.getUserRoles(oldUserId));
|
|
|
}
|
|
|
String loginName = code;
|
|
|
if (SystemConstant.longNotNull(oldUserId)) {
|
|
@@ -723,11 +722,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
}
|
|
|
userSaveParams.setCode(code);
|
|
|
userSaveParams.setSchoolId(schoolId);
|
|
|
- Long upUserId = this.saveUserCommon(userSaveParams, sysUser.getId());
|
|
|
+ Long upUserId = this.saveUserCommon(userSaveParams, requestUser.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);
|
|
|
+
|
|
|
+ Set<Long> currentRoleIdSet = new HashSet<>(Arrays.asList(userSaveParams.getRoleIds()));
|
|
|
+ List<PushUserTrack> pushUserTrackList = pushUserTrackService.createPushTrackUser(oldRoleIdSet,currentRoleIdSet,upUserId,true,requestUser.getId());
|
|
|
+ List<UserPushParam> userPushParamCell = pushUserTrackService.analyzeUserPushSpecialPrivilege(pushUserTrackList);
|
|
|
+ if (userPushParamCell != null && userPushParamCell.size() > 0){
|
|
|
+ userPushParamList.addAll(userPushParamCell);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -763,9 +766,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
/**
|
|
|
* 获取命题审批人
|
|
|
*
|
|
|
- * @param courseCode
|
|
|
- * @param realName
|
|
|
- * @return
|
|
|
+ * @param courseCode courseCode
|
|
|
+ * @param realName realName
|
|
|
+ * @return return
|
|
|
*/
|
|
|
@Override
|
|
|
public List<ApproveUserResult> findByAssignApprove(String courseCode, String realName) {
|
|
@@ -786,9 +789,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
/**
|
|
|
* 获取教研室主任审批人
|
|
|
*
|
|
|
- * @param courseCode
|
|
|
- * @param realName
|
|
|
- * @return
|
|
|
+ * @param courseCode courseCode
|
|
|
+ * @param realName realName
|
|
|
+ * @return return
|
|
|
*/
|
|
|
@Override
|
|
|
public List<ApproveUserResult> findByDirectorApprove(String courseCode, String realName) {
|
|
@@ -816,9 +819,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
/**
|
|
|
* 获取院长审批人
|
|
|
*
|
|
|
- * @param orgIds
|
|
|
- * @param realName
|
|
|
- * @return
|
|
|
+ * @param orgIds orgIds
|
|
|
+ * @param realName realName
|
|
|
+ * @return return
|
|
|
*/
|
|
|
@Override
|
|
|
public List<ApproveUserResult> findByPresidentApprove(List<Long> orgIds, String realName) {
|
|
@@ -842,11 +845,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
/**
|
|
|
* 获取同级别下一级审批人
|
|
|
*
|
|
|
- * @param courseCode
|
|
|
- * @param orgIds
|
|
|
- * @param realName
|
|
|
- * @param flowApproveNameEnum
|
|
|
- * @return
|
|
|
+ * @param courseCode courseCode
|
|
|
+ * @param orgIds orgIds
|
|
|
+ * @param realName realName
|
|
|
+ * @param flowApproveNameEnum flowApproveNameEnum
|
|
|
+ * @return return
|
|
|
*/
|
|
|
@Override
|
|
|
public List<ApproveUserResult> findByRootApprove(String courseCode, List<Long> orgIds, String realName, FlowApproveNameEnum flowApproveNameEnum) {
|
|
@@ -865,7 +868,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
throw ExceptionResultEnum.ERROR.exception("课程机构为空");
|
|
|
}
|
|
|
List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(basicCourse.getTeachingRoomId(), true, true);
|
|
|
- orgIdsSet.addAll(sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet()));
|
|
|
+ orgIdsSet.addAll(sysOrgList.stream().map(BaseEntity::getId).collect(Collectors.toSet()));
|
|
|
} else {
|
|
|
orgIdsSet.addAll(orgIds);
|
|
|
}
|
|
@@ -935,7 +938,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
@Transactional
|
|
|
@Override
|
|
|
- public boolean userPushService(List<UserPushParam> userPushParamList, SysUser requestUser) {
|
|
|
+ public boolean userPushService(List<UserPushParam> userPushParamList, Long requestUserId) {
|
|
|
+ SysUser requestUser = this.getById(requestUserId);
|
|
|
+ if (Objects.isNull(requestUser)){
|
|
|
+ log.error("未找到请求用户信息 requestUserId = " + requestUserId);
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到请求用户信息");
|
|
|
+ }
|
|
|
boolean result = true;
|
|
|
for (UserPushParam userPushParam : userPushParamList) {
|
|
|
boolean syncResult = stmmsUtils.syncUser(userPushParam, requestUser.getSchoolId());
|
|
@@ -962,7 +970,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
@Transactional
|
|
|
@Override
|
|
|
- public void autoPushUserErrorData() throws IllegalAccessException {
|
|
|
+ public void autoPushUserErrorData() {
|
|
|
List<PushUserError> pushUserErrorList = pushUserErrorService.list();
|
|
|
Set<Long> userIdSet = pushUserErrorList.stream().map(PushUserError::getUserId).collect(Collectors.toSet());
|
|
|
List<SysUser> sysUserList = this.listByIds(userIdSet);
|
|
@@ -974,12 +982,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
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);
|
|
|
+
|
|
|
+ // TODO: 2021/11/4 系统管理员的id判断
|
|
|
+ Long requestUserId = 1L; // 系统管理员
|
|
|
+ List<PushUserTrack> pushUserTrackList = pushUserTrackService.createPushTrackUser(null,roleIdSet,userId,sysUser.getEnable(),requestUserId);
|
|
|
+ List<UserPushParam> userPushParamList = pushUserTrackService.analyzeUserPushSpecialPrivilege(pushUserTrackList);
|
|
|
+ this.userPushService(userPushParamList, requestUserId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1022,106 +1030,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
return this.findUserSpecialPrivilegeByRoleIdSet(roleIdSet);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 解析用户推送状态
|
|
|
- *
|
|
|
- * @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;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 批量处理用户信息帮助类
|
|
|
*
|
|
@@ -1240,16 +1148,22 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
return roleIdList;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- private List<UserPushParam> analyzeUserEnableSpecialPrivilege(Long schoolId, Long userId, boolean enable) {
|
|
|
+ /**
|
|
|
+ * 用户禁用启用特殊权限判断及处理
|
|
|
+ * @param userId 用户id
|
|
|
+ * @param enable 启用/禁用
|
|
|
+ * @param requestUserId 请求人id
|
|
|
+ */
|
|
|
+ private void analyzeUserEnableSpecialPrivilege(Long userId, boolean enable,Long requestUserId) {
|
|
|
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, dbUser.getRealName(), dbUser.getPassword(), roleIdList, pushBeforeRoleParam, enable);
|
|
|
+ Set<Long> currentRoleIdSet = new HashSet<>(sysRoleService.getUserRoles(userId));
|
|
|
+ List<PushUserTrack> pushUserTrackList = pushUserTrackService.createPushTrackUser(null,currentRoleIdSet,userId,enable,requestUserId);
|
|
|
+ List<UserPushParam> userPushParamList = pushUserTrackService.analyzeUserPushSpecialPrivilege(pushUserTrackList);
|
|
|
+ if (userPushParamList != null && userPushParamList.size() > 0){
|
|
|
+ this.userPushService(userPushParamList,requestUserId);
|
|
|
+ }
|
|
|
}
|
|
|
}
|