Quellcode durchsuchen

Merge branch 'class-size-01' into 'Release'

Class size 01



See merge request !1295

guochao vor 5 Jahren
Ursprung
Commit
2abf12521a

+ 0 - 0
git


+ 0 - 6
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/GroupDao.java

@@ -82,10 +82,4 @@ public interface GroupDao extends PagingAndSortingRepository<Group, Long>, Updat
            "set group_entity.class_size=manager_2_property.class_size\n" +
            "where group_entity.owner_id=manager_2_property.user_id AND group_entity.id=?",nativeQuery = true)
     int updateGroupSize(@Param("groupId") long groupId);
-
-
-    @Modifying
-    @Query(value="\n" +
-            "UPDATE group_entity SET is_active='0' WHERE id=?",nativeQuery = true)
-    int updateActive(@Param("id") long id);
     }

+ 0 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/GroupService.java

@@ -63,9 +63,6 @@ public interface GroupService {
 
     Map<Long, Long> getOwnerAndWorkersCountDTO(List<Long> ownerIds);
 
-    User batchAddUserIntoGroup(long userId);
-
     int  updateGroupSize(long groupId);
 
-    int updateActive(long id);
 }

+ 0 - 22
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/GroupServiceImpl.java

@@ -286,30 +286,8 @@ public class GroupServiceImpl implements GroupService {
     }
 
     @Override
-    public User batchAddUserIntoGroup(long userId) {
-        this.privateAddUserIntoGroup(userId);
-        return null;
-    }
-
-    @Override
     public int updateGroupSize(long groupId) {
         return  groupDao.updateGroupSize(groupId);
     }
 
-    @Override
-    public int updateActive(long id) {
-        return groupDao.updateActive(id);
-    }
-
-    private void privateAddUserIntoGroup(long userId) {
-        Group2Worker group2Worker = new Group2Worker();
-        group2Worker.setParticipantId(userId);
-        group2Worker.setRecordCreateTime(new Timestamp(System.currentTimeMillis()));
-        group2WorkerDao.save(group2Worker);
-        //GroupPermission groupPermission = groupPermissionService.joinGroup(userId);
-       // if (groupPermission == null) {
-            //throw new IllegalOperationException("Can not create Group Permission!");
-       // }
-
-    }
 }

+ 23 - 17
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/UserRPCServiceImpl.java

@@ -223,23 +223,29 @@ public class UserRPCServiceImpl implements UserService {
     public Page<UserDTOForMT> getUserPageByGroupId(Long groupId, String keyword, Pageable pageable) {
         List<Group2Worker> group2Workers = group2WorkerDao.findByGroupId(groupId);
         List<Long> userIds = group2Workers.stream().map(group2Worker -> group2Worker.getParticipantId()).collect(Collectors.toList());
-        List<UserDTOForMT> userDTOForMTs = new ArrayList<>();
-        List<UserDTO> userDTOS = userService.findAll(userIds);
-        for(UserDTO userDTO : userDTOS){
-            if (keyword.isEmpty() || keyword.equals("")) {
-                userDTOForMTs.add(Converter.convert(UserDTOForMT.class, userDTO));
-            } else {
-                if ((userDTO.getEmail() != null && userDTO.getEmail().contains(keyword)) ||
-                        userDTO.getName().contains(keyword) ||
-                        (userDTO.getSchool() != null && userDTO.getSchool().contains(keyword)) ||
-                        (userDTO.getMobile() != null && userDTO.getMobile().contains(keyword))) {
+        if(userIds.size()!=0){
+            List<UserDTOForMT> userDTOForMTs = new ArrayList<>();
+            List<UserDTO> userDTOS = userService.findAll(userIds);
+            for(UserDTO userDTO : userDTOS){
+                if (keyword.isEmpty() || keyword.equals("")) {
                     userDTOForMTs.add(Converter.convert(UserDTOForMT.class, userDTO));
+                } else {
+                    if ((userDTO.getEmail() != null && userDTO.getEmail().contains(keyword)) ||
+                            userDTO.getName().contains(keyword) ||
+                            (userDTO.getSchool() != null && userDTO.getSchool().contains(keyword)) ||
+                            (userDTO.getMobile() != null && userDTO.getMobile().contains(keyword))) {
+                        userDTOForMTs.add(Converter.convert(UserDTOForMT.class, userDTO));
+                    }
                 }
             }
+            List<UserDTOForMT> userDTOForMTList = getSubList(pageable, userDTOForMTs);
+            Page<UserDTOForMT> userDTOForMTPage = new PageImpl<UserDTOForMT>(userDTOForMTList, pageable, userDTOForMTs.size());
+            return userDTOForMTPage;
+        }else{
+            List<UserDTOForMT> userDTOForMTs = new ArrayList<>();
+            Page<UserDTOForMT> userDTOForMTPage = new PageImpl<UserDTOForMT>(userDTOForMTs, pageable, userDTOForMTs.size());
+            return userDTOForMTPage;
         }
-        List<UserDTOForMT> userDTOForMTList = getSubList(pageable, userDTOForMTs);
-        Page<UserDTOForMT> userDTOForMTPage = new PageImpl<UserDTOForMT>(userDTOForMTList, pageable, userDTOForMTs.size());
-        return userDTOForMTPage;
     }
 
     private List<UserDTOForMT> getSubList(Pageable pageable, List<UserDTOForMT> userDTOForMTs) {
@@ -264,13 +270,13 @@ public class UserRPCServiceImpl implements UserService {
         if (activePage < pagecount - 1) {
             return userDTOForMTs.subList(pageSize * activePage, (activePage + 1) * pageSize);
         }
-        if (activePage == pagecount - 1) {
+        //if (activePage == pagecount - 1) {
             if (pageSize * activePage + 1 == totalcount) {
                 return Arrays.asList(userDTOForMTs.get(totalcount - 1));
             }
             return userDTOForMTs.subList(pageSize * activePage, totalcount);
-        } else {
-            throw new HttpBadRequestException("wrong page format");
-        }
+       // } else {
+           // throw new HttpBadRequestException("wrong page format");
+        //}
     }
 }

+ 3 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/UserServiceImpl.java

@@ -141,7 +141,7 @@ public class UserServiceImpl extends BaseService implements UserService {
     @Override
     public Page<UserDTOForMT> findByRoleId(Long roleId, Pageable pageable) {
         Page<User> users = userDao.findByRoleId(roleId, pageable);
-        return users.map(user ->  Converter.convert(UserDTOForMT.class, user));
+        return users.map(user -> Converter.convert(UserDTOForMT.class, user));
     }
 
 
@@ -149,7 +149,7 @@ public class UserServiceImpl extends BaseService implements UserService {
     public Page<UserDTOForMT> getUserOfFuzzySearch(Map<String, String> condition, Pageable pageable) {
         Specification<User> where = Specifications.where(getUserWhereClause(condition));
         Page<User> users = userDao.findAll(where, pageable);
-        return users.map( user ->  Converter.convert(UserDTOForMT.class, user));
+        return users.map(user -> Converter.convert(UserDTOForMT.class, user));
     }
 
     private Specification<User> getUserWhereClause(Map<String, String> condition) {
@@ -186,6 +186,6 @@ public class UserServiceImpl extends BaseService implements UserService {
     @Override
     public Page<UserDTOForMT> getUserPageByGroupId(Long groupId, String keyword, Pageable pageable) {
         Page<User> users = groupDao.findByIdAndKeyWord(groupId, keyword, pageable);
-        return users.map( user ->  Converter.convert(UserDTOForMT.class, user));
+        return users.map(user -> Converter.convert(UserDTOForMT.class, user));
     }
 }

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/GroupVOWrapper.java

@@ -19,6 +19,7 @@ public class GroupVOWrapper extends BaseWrapper<GroupVO, Group> {
         vo.setName(group.getName());
         vo.setInformation(vo.getInformation());
         vo.setAllowJoin(group.getAllowJoin());
+        vo.setClassSize(group.getClassSize());
 
         return vo;
 
@@ -32,6 +33,7 @@ public class GroupVOWrapper extends BaseWrapper<GroupVO, Group> {
         group.setId(vo.getId());
         group.setName(vo.getName());
         group.setAllowJoin(vo.getAllowJoin());
+        group.setClassSize(vo.getClassSize());
 
         return group;
     }

+ 8 - 9
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/GroupLogicImpl.java

@@ -72,12 +72,12 @@ public class GroupLogicImpl extends BaseLogic implements GroupLogic {
         List<Integer> workerCounts = groupService.getWorkerCounts(groupVOs.stream()
                 .map(GroupVO::getId).collect(Collectors.toList()));
         ManagerProperty managerProperty = managerPropertyService.getManagerPropertyByUserId(ownerId);
-        for (int i = 0; i < groupVOs.size(); i++) {
-            if (workerCounts.get(i).intValue() > managerProperty.getClassSize().intValue()) {
-                groupService.updateActive(groupVOs.get(i).getId());
+        for(int i=0;i < groupVOs.size(); i++){
+            if(groupVOs.get(i).getId()!=0&&groupVOs.get(i).getClassSize().intValue()>managerProperty.getClassSize().intValue()&&groupService.ifExamsAssignedtoGroup(groupVOs.get(i).getId())){
                 groupVOs.remove(i);
                 workerCounts.remove(i);
-            } else {
+                i--;
+            }else {
                 groupVOs.get(i).setWorkerCount(workerCounts.get(i));
             }
         }
@@ -109,7 +109,6 @@ public class GroupLogicImpl extends BaseLogic implements GroupLogic {
 
     @Override
     public GroupVO getGroupDetail(long groupId) {
-        groupService.updateGroupSize(groupId);
         Group group = groupService.getGroup(groupId);
         if (group == null) {
             throw new HttpNotFoundException(String.format("Group[id=%s] doesn't exist", groupId));
@@ -143,7 +142,6 @@ public class GroupLogicImpl extends BaseLogic implements GroupLogic {
     public Page<UserVO> getManagerWorkersInGroupPageable(long groupId, String keyword, Pageable pageable) {
         Page<UserDTOForMT> users = userService.getUserPageByGroupId(groupId, keyword, pageable);
         Page<UserVO> userVOS = users.map(user -> Converter.convert(UserVO.class, user));
-        ;
         return userVOS;
     }
 
@@ -165,6 +163,7 @@ public class GroupLogicImpl extends BaseLogic implements GroupLogic {
             Group g = Converter.convert(Group.class, groupVO);
             g.setIsActive(true);
             Group group = groupService.save(g);
+            groupService.updateGroupSize(group.getId());
             groupPermissionService.createGroup(userId, group.getId());
             return Converter.convert(GroupVO.class, group);
         }
@@ -213,10 +212,10 @@ public class GroupLogicImpl extends BaseLogic implements GroupLogic {
 
     public UserVO addUserIntoGroup(UserDTOForMT userDto, long groupId) {
         Group group = groupService.getGroup(groupId);
-        if (group.getOwnerId() == userDto.getId()) {
+        if(group.getOwnerId() == userDto.getId()) {
             throw new IllegalOperationException("Cannot join Group YOU OWN!");
         }
-        if (groupService.getWorkerCount(groupId) >= group.getClassSize()) {
+        if(groupService.getWorkerCount(groupId) >= group.getClassSize()) {
             throw new HttpBadRequestException("班级人数已达上限,请联系管理员");
         }
         UserVO uv = Converter.convert(UserVO.class, groupService.addUserIntoGroup(userDto.getId(), groupId));
@@ -354,7 +353,7 @@ public class GroupLogicImpl extends BaseLogic implements GroupLogic {
         List<User> result = ExcelImportUtil.importExcel(file.getInputStream(),
                 User.class, params);
         Group group = groupService.getGroup(groupId);
-        if (result.size() > (group.getClassSize() - groupService.getWorkerCount(groupId))) {
+        if(result.size()>(group.getClassSize() - groupService.getWorkerCount(groupId))) {
             throw new HttpBadRequestException("批量添加人数超出班级上限");
         }
         List<UserVO> batchAddList = new ArrayList<>();

+ 15 - 15
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/UserLogicImpl.java

@@ -128,7 +128,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         Object username = userVO.getEmail();
         Date date = new Date();
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        LOG.error("用户{}注册失败,失败时间:{},失败原因:{}",new Object[]{username,df.format(date), reason});
+        LOG.error("用户{}注册失败,失败时间:{},失败原因:{}", new Object[]{username, df.format(date), reason});
     }
 
 
@@ -463,7 +463,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         if (managerPropertyVO.getExpireTime() != null) {
             managerProperty.setExpireTime(new Timestamp(managerPropertyVO.getExpireTime()));
         }
-        if(managerPropertyVO.getClassSize()!=null){
+        if (managerPropertyVO.getClassSize() != null) {
             managerProperty.setClassSize(managerPropertyVO.getClassSize());
         }
         managerPropertyService.save(managerProperty);
@@ -601,7 +601,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
             throw new HttpBadRequestException("this role does not exist");
         }
         Page<UserDTOForMT> userList = userService.findByRoleId(roleId, pageable);
-        Page<UserVO> userVOs = userList.map( userDTOForMT ->  Converter.convert(UserVO.class, userDTOForMT));
+        Page<UserVO> userVOs = userList.map(userDTOForMT -> Converter.convert(UserVO.class, userDTOForMT));
         if (roleId == 2L) {
             for (UserVO UserVO : userVOs) {
                 ManagerProperty managerProperty = managerPropertyService.getManagerPropertyByUserId(UserVO.getId());
@@ -616,13 +616,13 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     @Override
     public Page<UserVO> getByUserPackage(Long serviceId, Long packageId, Pageable pageable) {
         Page<UserDTOForMT> userList = userService.getByUserPackage(serviceId, packageId, pageable);
-        return userList.map( userDTOForMT ->  Converter.convert(UserVO.class, userDTOForMT));
+        return userList.map(userDTOForMT -> Converter.convert(UserVO.class, userDTOForMT));
     }
 
     @Override
     public Page<UserVO> getUserListOfFuzzySearch(Map<String, String> condition, Pageable pageable) {
         Page<UserDTOForMT> userDTOForMTs = userService.getUserOfFuzzySearch(condition, pageable);
-        Page<UserVO> userVOs = userDTOForMTs.map( userDTOForMT ->  Converter.convert(UserVO.class, userDTOForMT));
+        Page<UserVO> userVOs = userDTOForMTs.map(userDTOForMT -> Converter.convert(UserVO.class, userDTOForMT));
         for (UserVO UserVO : userVOs) {
             if (roleService.getRolesOfUser(UserVO.getId()).contains(roleService.getRoleByRoleName("manager"))) {
                 ManagerProperty managerProperty = managerPropertyService.getManagerPropertyByUserId(UserVO.getId());
@@ -706,7 +706,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         List<UserDTOForMT> checkedTeachers = new ArrayList<>();
         for (Long id : teacherIds) {
             UserDTOForMT user = userService.findByUserId(id);
-            if (user != null && user.getManualCheckValid()!=null && user.getManualCheckValid().equals(Boolean.TRUE)) {
+            if (user != null && user.getManualCheckValid() != null && user.getManualCheckValid().equals(Boolean.TRUE)) {
                 checkedTeachers.add(user);
             }
         }
@@ -746,9 +746,9 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         userVO.setMenuMap(menuMap);
         userVO.setOpenId(openId2UserIdService.findOpenIdByUserId(userVO.getId()));
         userVO.setPassword("");
-        if(clientFeatureConfiguration.isMedal()) {
-            UserIntegralDTO integralDTO=integralService.getUserIntegral(userVO.getId());
-            if (integralDTO!=null) {
+        if (clientFeatureConfiguration.isMedal()) {
+            UserIntegralDTO integralDTO = integralService.getUserIntegral(userVO.getId());
+            if (integralDTO != null) {
                 userVO.setIntegral(integralDTO.getTotal());
             }
         }
@@ -765,16 +765,16 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         Map<Long, ManagerProperty> managerProperties = managerPropertyService
                 .getAllManagerProperty()
                 .stream()
-                .collect(Collectors.toMap(ManagerProperty::getUserId,managerProperty -> managerProperty));
+                .collect(Collectors.toMap(ManagerProperty::getUserId, managerProperty -> managerProperty));
 
-        Map<Long,ExamForUserSituation> examForUserSituations = examService.getExamForUserSituation();
+        Map<Long, ExamForUserSituation> examForUserSituations = examService.getExamForUserSituation();
 
         List<Long> userIds = new ArrayList<>(managerProperties.keySet());
         //获取用户信息并进行过滤
-        Map<Long,UserDTOForMT> userDTOForMTMap = Maps.newHashMap();
-        if(keyword == null || "".equals(keyword))  {
+        Map<Long, UserDTOForMT> userDTOForMTMap = Maps.newHashMap();
+        if (keyword == null || "".equals(keyword)) {
             userDTOForMTMap = userService.getUserMap(userIds);
-        }else {
+        } else {
             userDTOForMTMap = userService.getUserMap(userIds).values()
                     .stream()
                     .filter(user -> keyword.equals(String.valueOf(user.getId())) ||
@@ -798,7 +798,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
                             managerProperties.get(userId),
                             examForUserSituations.getOrDefault(userId, new ExamForUserSituation(userId)),
                             user,
-                            ownerAndWorkersCountDTOS.getOrDefault(userId,0L));
+                            ownerAndWorkersCountDTOS.getOrDefault(userId, 0L));
                 }).collect(Collectors.toList());
     }
 }

+ 1 - 0
mooctest-site-server/src/test/java/cn/iselab/mooctest/site/web/logic/impl/GroupLogicImplTest.java

@@ -116,6 +116,7 @@ public class GroupLogicImplTest extends AbstractShiroTest{
         count.add(3);
         when(groupService.getGroupsByOwnerId(123L)).thenReturn(groups);
         when(groupVOWrapper.wrap(groups)).thenReturn(groupVOS);
+        groupVOS.get(0).setClassSize(60);
         when(groupService.getWorkerCounts(anyList())).thenReturn(count);
         //action
         List<GroupVO> result = groupLogic.getOwnerGroups(123L);