Browse Source

Merge branch 'dev_v2.2.1' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v2.2.1

xiaof 3 năm trước cách đây
mục cha
commit
8501173c74

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/PushUserTrackServiceImpl.java

@@ -141,7 +141,7 @@ public class PushUserTrackServiceImpl extends ServiceImpl<PushUserTrackMapper, P
                 }
                 if (Objects.nonNull(headerTrack)) {
                     headerTrack.insertInfo(requestUserId);
-                    pushUserTrackList.add(markerTrack);
+                    pushUserTrackList.add(headerTrack);
                     this.save(headerTrack);
                 }
             }

+ 52 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java

@@ -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);
             }
         }
     }

+ 3 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -143,7 +143,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         Long upUserId = saveUserCommon(userSaveParams, null);
         if (SystemConstant.longNotNull(upUserId)) {
             result = true;
-            List<PushUserTrack> pushUserTrackList = pushUserTrackService.createPushTrackUser(dbRoleIdSet,currentRoleIdSet,upUserId,true,requestUser.getId());
+            List<PushUserTrack> pushUserTrackList = pushUserTrackService.createPushTrackUser(dbRoleIdSet,currentRoleIdSet,upUserId,this.getById(upUserId).getEnable(),requestUser.getId());
             List<UserPushParam> userPushParamList = pushUserTrackService.analyzeUserPushSpecialPrivilege(pushUserTrackList);
             if (userPushParamList != null && userPushParamList.size() > 0){
                 this.userPushService(userPushParamList, requestUser.getId());
@@ -481,6 +481,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             SysUser sysUser = gson.fromJson(gson.toJson(userSaveParams), SysUser.class);
             if (Objects.isNull(sysUser.getId())) {//新增用户
                 sysUser.insertInfo(requestUserId);
+                sysUser.setEnable(true);
                 sysUserService.save(sysUser);
                 resultUserId = sysUser.getId();
                 commonService.addUserRolePrivilege(sysUser, userSaveParams.getRoleIds());
@@ -499,7 +500,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                         .set(SysUser::getCode, sysUser.getCode())
                         .set(SysUser::getMobileNumber, sysUser.getMobileNumber())
                         .set(SysUser::getOrgId, sysUser.getOrgId())
-                        .set(SysUser::getEnable, sysUser.getEnable())
+                        .set(SysUser::getEnable, dbUser.getEnable())
                         .set(SysUser::getUpdateId, requestUserId)
                         .set(SysUser::getUpdateTime, System.currentTimeMillis())
                 );

+ 9 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/StmmsUtils.java

@@ -109,14 +109,15 @@ public class StmmsUtils {
 
         {
             // 模拟云阅卷返回结果 3/5的成功率
-            int x = (int) (Math.random() * 10);
-            if (x > 0) {
-                // 失败
-                log.warn("x = " + x + ",云阅卷用户同步失败 \n");
-                return false;
-            } else {
-                return true;
-            }
+//            int x = (int) (Math.random() * 10);
+//            if (x > 0) {
+//                // 失败
+//                log.warn("x = " + x + ",云阅卷用户同步失败 \n");
+//                return false;
+//            } else {
+//                return true;
+//            }
+            return false;
         }
     }
 

+ 1 - 0
teachcloud-common/src/main/resources/mapper/SysRoleMapper.xml

@@ -44,6 +44,7 @@
                 and enable = #{enable}
             </if>
         </where>
+        ORDER BY create_time DESC
     </select>
 
 </mapper>