|
|
@@ -1,16 +1,21 @@
|
|
|
package cn.iselab.mooctest.site.service.impl;
|
|
|
|
|
|
-import cn.iselab.mooctest.site.dao.*;
|
|
|
-import cn.iselab.mooctest.site.models.Role;
|
|
|
-import cn.iselab.mooctest.site.models.User2Role;
|
|
|
+import cn.iselab.mooctest.site.dao.AddOns2QualificationDao;
|
|
|
+import cn.iselab.mooctest.site.dao.ExamDao;
|
|
|
+import cn.iselab.mooctest.site.dao.QualificationDao;
|
|
|
+import cn.iselab.mooctest.site.dao.UserDao;
|
|
|
+import cn.iselab.mooctest.site.models.AddOns2Qualification;
|
|
|
+import cn.iselab.mooctest.site.models.Competition2Task;
|
|
|
+import cn.iselab.mooctest.site.models.Qualification;
|
|
|
+import cn.iselab.mooctest.site.models.User;
|
|
|
+import cn.iselab.mooctest.site.service.CompetitionService;
|
|
|
import cn.iselab.mooctest.site.service.ContestMentorService;
|
|
|
import cn.iselab.mooctest.site.service.instancePermission.TaskPermissionService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.sql.Timestamp;
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* Created by shanshan on 2017/9/15.
|
|
|
@@ -19,53 +24,41 @@ import java.util.List;
|
|
|
public class ContestMentorServiceImpl implements ContestMentorService {
|
|
|
|
|
|
@Autowired
|
|
|
- private User2RoleDao user2RoleDao;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private RoleDao roleDao;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ContestMentorDao contestMentorDao;
|
|
|
+ private AddOns2QualificationDao addOns2QualificationDao;
|
|
|
|
|
|
@Autowired
|
|
|
private UserDao userDao;
|
|
|
|
|
|
@Autowired
|
|
|
- private ExamDao examDao;
|
|
|
+ private QualificationDao qualificationDao;
|
|
|
|
|
|
@Autowired
|
|
|
private TaskPermissionService taskPermissionService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private CompetitionService competitionService;
|
|
|
+
|
|
|
@Override
|
|
|
- public void checkAndAddContestMentorPermission(List<Long> userIds) {
|
|
|
- Role role = roleDao.findByName("contestMentor");
|
|
|
- List<User2Role> addUser2Roles = new ArrayList<>();
|
|
|
- List<User2Role> deleteUser2Roles = new ArrayList<>();
|
|
|
- userIds.stream().forEach(userid->{
|
|
|
- if(contestMentorDao.countByTeacherId(userid)>0){
|
|
|
- List<User2Role> user2Roles = user2RoleDao.findByUserIdAndRoleId(userid, role.getId());
|
|
|
- if(user2Roles.size()==0){
|
|
|
- User2Role user2Role = new User2Role();
|
|
|
- user2Role.setRoleId(role.getId());
|
|
|
- user2Role.setUserId(userid);
|
|
|
- user2Role.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- addUser2Roles.add(user2Role);
|
|
|
- taskPermissionService.grantViewContestPermission(userid);
|
|
|
- }
|
|
|
- }else {
|
|
|
- deleteUser2Roles.addAll(user2RoleDao.findByUserIdAndRoleId(userid,role.getId()));
|
|
|
- taskPermissionService.revokeViewContestPermission(userid);
|
|
|
- }
|
|
|
- });
|
|
|
- user2RoleDao.save(addUser2Roles);
|
|
|
- user2RoleDao.delete(deleteUser2Roles);
|
|
|
+ public void updateContestMentorPermission(Long qualificationId, List<String> teacherEmails) {
|
|
|
+ List<Long> teacherIds = userDao.findIdByEmail(teacherEmails);
|
|
|
+ Qualification qualification = qualificationDao.findOne(qualificationId);
|
|
|
+ teacherIds.stream().forEach(teacherId->updateTaskViewPermission(teacherId, qualification.getCompetitionId()));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
- public void updateContestMentorPermisson(List<String> teacherEmails) {
|
|
|
- List<Long> teacherIds = userDao.findIdByEmail(teacherEmails);
|
|
|
- checkAndAddContestMentorPermission(teacherIds);
|
|
|
+ public void checkAndAddContestMentorPermission(User user) {
|
|
|
+ List<Long> competitionIds = addOns2QualificationDao.findSupervisedCompetitionId(user.getEmail());
|
|
|
+ competitionIds.stream().forEach(competitionId->updateTaskViewPermission(user.getId(), competitionId));
|
|
|
}
|
|
|
|
|
|
+ private void updateTaskViewPermission(Long userId, Long competitionId) {
|
|
|
+ List<Competition2Task> competition2Tasks = competitionService.getAllTasksOfCompetition(competitionId);
|
|
|
+ List<Long> examIds = competition2Tasks.stream().map(Competition2Task::getTaskId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if(addOns2QualificationDao.countByUserIdAndCompetitionIdAndType(userId,competitionId, AddOns2Qualification.ADDONS_TYPE_TEACHER)>0){
|
|
|
+ taskPermissionService.grantViewPermission(userId, examIds);
|
|
|
+ }else {
|
|
|
+ taskPermissionService.revokeViewPermission(userId, examIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|