Ver código fonte

大赛教师我的学生

yyy2015 6 anos atrás
pai
commit
bb1c0221af

+ 18 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/AddOns2QualificationDao.java

@@ -1,6 +1,9 @@
 package cn.iselab.mooctest.site.dao;
 
 import cn.iselab.mooctest.site.models.AddOns2Qualification;
+import cn.iselab.mooctest.site.models.Qualification;
+import cn.iselab.mooctest.site.models.User;
+import java.math.BigInteger;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
 import org.springframework.data.repository.query.Param;
@@ -26,4 +29,19 @@ public interface AddOns2QualificationDao  extends CrudRepository<AddOns2Qualific
 
     @Query("select q.competitionId from AddOns2Qualification aq,Qualification q where aq.email=:userEmail and aq.qualificationId=q.id")
     List<Long> findSupervisedCompetitionId(@Param("userEmail")String userEmail);
+
+    @Query(nativeQuery = true, value = "select u.* from add_ons_2_qualification a2q "
+            + "JOIN qualification q on a2q.qualification_id = q.id "
+            + "JOIN `user` u on u.id = q.user_id "
+            + "where q.competition_id=:competitionId and a2q.add_ons_type=0 and a2q.email= "
+            + ":teacherEmail")
+    List<Object[]> findTeacherCompetitionStudents(@Param("competitionId") long competitionId, @Param
+            ("teacherEmail")String teacherEmail);
+
+    @Query(nativeQuery = true, value = "select q.id from add_ons_2_qualification a2q "
+            + "left JOIN qualification q on a2q.qualification_id = q.id "
+            + "where q.competition_id=:competitionId and a2q.add_ons_type=0 and a2q"
+            + ".email=:teacherEmail")
+    List<BigInteger> findTeachderTeamLeaderQid(@Param("competitionId") long competitionId, @Param
+            ("teacherEmail")String teacherEmail);
 }

+ 5 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/CompetitionService.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.site.service;
 import cn.iselab.mooctest.site.models.*;
 import cn.iselab.mooctest.site.web.data.AddonsVO;
 
+import cn.iselab.mooctest.site.web.data.UserVO;
 import java.util.List;
 import java.util.Map;
 
@@ -95,4 +96,8 @@ public interface CompetitionService {
     Map<String, Object> checkAddons(List<AddonsVO> addonsList, Long qualificationId, Integer type);
 
     Map<String, Object> checkEnterCompetition(Long competitionId, Long userId);
+
+    List<UserVO> getSingleCompetitionStudents(long competitionId, long teacherId);
+
+    List<List<UserVO>> getTeamCompetitionStudents(long competitionId, long teacherId);
 }

+ 61 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/CompetitionServiceImpl.java

@@ -6,6 +6,9 @@ import cn.iselab.mooctest.site.dao.*;
 import cn.iselab.mooctest.site.models.*;
 import cn.iselab.mooctest.site.service.CompetitionService;
 import cn.iselab.mooctest.site.web.data.AddonsVO;
+import cn.iselab.mooctest.site.web.data.UserVO;
+import java.math.BigInteger;
+import javax.jws.soap.SOAPBinding.Use;
 import org.apache.commons.collections.IteratorUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -283,4 +286,62 @@ public class CompetitionServiceImpl implements CompetitionService {
         res.put("message", "加入成功");
         return res;
     }
+
+    @Override
+    public List<UserVO> getSingleCompetitionStudents(long competitionId, long teacherId) {
+        User teacher = userDao.findById(teacherId);
+        if(teacher == null){
+            throw new IllegalArgumentException("教师不存在!teacherId:"+teacherId);
+        }
+        List<Object[]> students = addOns2QualificationDao.findTeacherCompetitionStudents
+                (competitionId, teacher.getEmail());
+        return students.stream().map(s->{
+            UserVO uv = new UserVO();
+            uv.setName((String)s[1]);
+            uv.setEmail((String)s[2]);
+            return uv;
+        }).collect(Collectors.toList());
+    }
+
+    @Override
+    public List<List<UserVO>> getTeamCompetitionStudents(long competitionId, long teacherId) {
+        User teacher = userDao.findById(teacherId);
+        if(teacher == null){
+            throw new IllegalArgumentException("教师不存在!teacherId:"+teacherId);
+        }
+        List<BigInteger> leaderQid = addOns2QualificationDao.findTeachderTeamLeaderQid(competitionId,
+                teacher.getEmail());
+
+        List<List<UserVO>> teamList = new ArrayList<>();
+        leaderQid.forEach(bgid -> {
+            //bigInteger转Long
+            Long qid = Long.parseLong(String.valueOf(bgid));
+            //团队赛队员
+            List<AddOns2Qualification> a2qs = addOns2QualificationDao
+                    .findByQualificationIdAndAddonsType(qid, AddOns2Qualification
+                            .ADDONS_TYPE_MEMBER);
+            List<UserVO> userVOList = a2qs.stream().map(a2q -> {
+                UserVO userVO = new UserVO();
+                userVO.setName(a2q.getName());
+                userVO.setEmail(a2q.getEmail());
+                return userVO;
+            }).collect(Collectors.toList());
+
+            //团队赛队长
+            Qualification leaderQua = qualificationDao.findOne(qid);
+            User leader = userDao.findById(leaderQua.getUserId());
+            if(leader == null){
+                throw new IllegalArgumentException("队长不存在!队长id:"+leaderQua.getUserId());
+            }
+            UserVO leaderVO = new UserVO();
+            leaderVO.setName(leader.getName());
+            leaderVO.setEmail(leader.getEmail());
+            userVOList.add(leaderVO);
+
+            teamList.add(userVOList);
+
+        });
+
+        return teamList;
+    }
 }

+ 29 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/CompetitionController.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.site.web.ctrl;
 import cn.iselab.mooctest.site.common.constant.UrlConstants;
 import cn.iselab.mooctest.site.web.data.AddonsVO;
 import cn.iselab.mooctest.site.web.data.CompetitionVO;
+import cn.iselab.mooctest.site.web.data.UserVO;
 import cn.iselab.mooctest.site.web.logic.CompetitionLogic;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authz.annotation.RequiresRoles;
@@ -91,4 +92,32 @@ public class CompetitionController {
         return map;
     }
 
+    /**
+     * 单人赛学生名单
+     * @param competitionId
+     * @param teacherId
+     * @return userVO 单个学生名单
+     */
+    @RequiresRoles("manager")
+    @RequestMapping(value = UrlConstants.API +
+            "competition/singleCompetitionStudents/{competitionId}/{teacherId}")
+    public List<UserVO> getSingleCompetitionStudents(@PathVariable("competitionId") long competitionId,
+            @PathVariable("teacherId") long teacherId){
+        return competitionLogic.getSingleCompetitionStudents(competitionId, teacherId);
+    }
+
+    /**
+     * 团队赛学生名单
+     * @param competitionId
+     * @param teacherId
+     * @return List<UserVO> 一个团队的学生名单
+     */
+    @RequiresRoles("manager")
+    @RequestMapping(value = UrlConstants.API +
+            "competition/teamCompetitionStudents/{competitionId}/{teacherId}")
+    public List<List<UserVO>> getTeamCompetitionStudents(@PathVariable("competitionId") long
+            competitionId, @PathVariable("teacherId") long teacherId){
+        return competitionLogic.getTeamCompetitionStudents(competitionId, teacherId);
+    }
+
 }

+ 4 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/CompetitionLogic.java

@@ -59,4 +59,8 @@ public interface CompetitionLogic {
     String updateAnnouncement(String announcement);
 
     Map<String, Object> checkAddons(List<AddonsVO> addonsVOList, Long qualificationId, Integer type);
+
+    List<UserVO> getSingleCompetitionStudents(long competitionId, long teacherId);
+
+    List<List<UserVO>> getTeamCompetitionStudents(long competitionId, long teacherId);
 }

+ 10 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/CompetitionLogicImpl.java

@@ -303,4 +303,14 @@ public class CompetitionLogicImpl implements CompetitionLogic {
         return competitionService.checkAddons(addonsVOList,qualificationId,type);
     }
 
+    @Override
+    public List<UserVO> getSingleCompetitionStudents(long competitionId, long teacherId) {
+        return competitionService.getSingleCompetitionStudents(competitionId, teacherId);
+    }
+
+    @Override
+    public List<List<UserVO>> getTeamCompetitionStudents(long competitionId, long teacherId) {
+        return competitionService.getTeamCompetitionStudents(competitionId, teacherId);
+    }
+
 }