|
@@ -13,6 +13,7 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
|
|
|
import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
|
|
|
import com.qmth.teachcloud.common.enums.userPush.SyncStatusEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.userPush.UserPushTrackEnum;
|
|
|
import com.qmth.teachcloud.common.mapper.SysRoleMapper;
|
|
|
import com.qmth.teachcloud.common.service.*;
|
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
@@ -59,6 +60,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
|
@Resource
|
|
|
SysUserService sysUserService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ PushUserTrackService pushUserTrackService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
@@ -289,9 +293,56 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
|
if (userIdSet.size() > 0) {
|
|
|
List<SysUser> sysUserList = sysUserService.listByIds(userIdSet);
|
|
|
for (SysUser sysUser : sysUserList) {
|
|
|
+ boolean enable = sysUser.getEnable();
|
|
|
sysUser.setSyncStatus(SyncStatusEnum.NEED_PUSH_AGAIN);
|
|
|
+ sysUserService.updateById(sysUser);
|
|
|
+ Set<Long> roleIdSet = sysUserRoleService.listRoleByUserId(sysUser.getId()).stream().map(BaseEntity::getId).collect(Collectors.toSet());
|
|
|
+ roleIdSet.remove(roleId);
|
|
|
+
|
|
|
+ // 该用户除掉正要更改的角色所属的权限外其他角色所属权限的特殊权限枚举
|
|
|
+ SpecialPrivilegeEnum otherRoleSpecialPrivilegeEnum = sysUserService.findUserSpecialPrivilegeByRoleIdSet(roleIdSet);
|
|
|
+
|
|
|
+ // 更新轨迹数据
|
|
|
+ PushUserTrack track = new PushUserTrack();
|
|
|
+ track.setUserId(sysUser.getId());
|
|
|
+ track.setSchoolId(sysUser.getSchoolId());
|
|
|
+
|
|
|
+
|
|
|
+ if (dbPrivilege.contains(markerId) && !upPrivilege.contains(markerId)) {
|
|
|
+ // 该角色更新没收了评卷员权限
|
|
|
+ if (!SpecialPrivilegeEnum.MARKER.equals(otherRoleSpecialPrivilegeEnum) && !SpecialPrivilegeEnum.COMPOSITE.equals(otherRoleSpecialPrivilegeEnum)){
|
|
|
+ // 该用户其他的角色也不包含评卷员权限 -> 评卷员角色解绑
|
|
|
+ track.setIdentify(SpecialPrivilegeEnum.MARKER);
|
|
|
+ track.setOperate(UserPushTrackEnum.UNBIND);
|
|
|
+ pushUserTrackService.save(track);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (dbPrivilege.contains(subjectHeaderId) && !upPrivilege.contains(subjectHeaderId)) {
|
|
|
+ // 该角色更新没收了科组长权限
|
|
|
+ if (!SpecialPrivilegeEnum.SUBJECT_HEADER.equals(otherRoleSpecialPrivilegeEnum) && !SpecialPrivilegeEnum.COMPOSITE.equals(otherRoleSpecialPrivilegeEnum)) {
|
|
|
+ // 该用户其他的角色也不包含科组长权限 -> 科组长角色解绑
|
|
|
+ track.setIdentify(SpecialPrivilegeEnum.SUBJECT_HEADER);
|
|
|
+ track.setOperate(UserPushTrackEnum.UNBIND);
|
|
|
+ pushUserTrackService.save(track);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!dbPrivilege.contains(markerId) && upPrivilege.contains(markerId)) {
|
|
|
+ // 更新新增了评卷员权限
|
|
|
+ if (enable) {
|
|
|
+ track.setIdentify(SpecialPrivilegeEnum.MARKER);
|
|
|
+ track.setOperate(UserPushTrackEnum.BIND);
|
|
|
+ pushUserTrackService.save(track);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!dbPrivilege.contains(subjectHeaderId) && upPrivilege.contains(subjectHeaderId)) {
|
|
|
+ // 更新新增了科组长权限
|
|
|
+ if (enable) {
|
|
|
+ track.setIdentify(SpecialPrivilegeEnum.SUBJECT_HEADER);
|
|
|
+ track.setOperate(UserPushTrackEnum.BIND);
|
|
|
+ pushUserTrackService.save(track);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- sysUserService.updateBatchById(sysUserList);
|
|
|
}
|
|
|
}
|
|
|
}
|