Jelajahi Sumber

add:添加了团队报名出错时的提示

sunjh 6 tahun lalu
induk
melakukan
014dee51fd

+ 2 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/CompetitionService.java

@@ -4,6 +4,7 @@ import cn.iselab.mooctest.site.models.*;
 import cn.iselab.mooctest.site.web.data.AddonsVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  *
@@ -89,5 +90,5 @@ public interface CompetitionService {
 
     Competition2Exam updateCompetition2TaskNextStatus(Long competitionId, Integer Index, Integer nextIndex);
 
-    boolean checkAddons(List<AddonsVO> addonsList, Long qualificationId, Integer type);
+    Map<String, Object> checkAddons(List<AddonsVO> addonsList, Long qualificationId, Integer type);
 }

+ 39 - 17
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/CompetitionServiceImpl.java

@@ -11,11 +11,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
- *
  * @author tangshanshan
  * @date 2017/11/3
  */
@@ -61,7 +62,7 @@ public class CompetitionServiceImpl implements CompetitionService {
 
     @Override
     public Qualification getQualification(Long competitionId, Long userId) {
-        return qualificationDao.findLatestQulificationByCompetitionIdAndUserId(competitionId,userId);
+        return qualificationDao.findLatestQulificationByCompetitionIdAndUserId(competitionId, userId);
     }
 
     //    @Override
@@ -78,7 +79,7 @@ public class CompetitionServiceImpl implements CompetitionService {
         Qualification qualification1 = qualificationDao.findByCompetitionIdAndUserIdAndStatus(qualification.getCompetitionId(),
                 qualification.getUserId(), qualification.getStatus());
         //System.out.println(qualification1.toString());
-        if(qualification1 == null) {
+        if (qualification1 == null) {
             //修改原有数据
 
             //插入新数据
@@ -91,6 +92,7 @@ public class CompetitionServiceImpl implements CompetitionService {
         }
         return qualification1;
     }
+
     @Override
     public List<Qualification> getQualificationByCompetitionIdAndIndex(Long competitionId, Integer status) {
         return qualificationDao.findByCompetitionIdAndStatus(competitionId, status);
@@ -123,7 +125,7 @@ public class CompetitionServiceImpl implements CompetitionService {
         competition2Exam.setCompetitionId(competitionId);
         int index = 1;
         ArrayList<Competition2Exam> competition2Exams = competition2ExamDao.findByCompetitionIdOrderByIndexDesc(competitionId);
-        if (competition2Exams.size()>0) {
+        if (competition2Exams.size() > 0) {
             index = competition2Exams.get(0).getIndex() + 1;
         }
         competition2Exam.setIndex(index);
@@ -139,15 +141,15 @@ public class CompetitionServiceImpl implements CompetitionService {
 
     @Override
     public List<AddOns2Qualification> updateAddons(List<AddOns2Qualification> addonsList, Long qualificationId, Integer type) {
-        List<AddOns2Qualification> deletedAddons = addOns2QualificationDao.findByQualificationIdAndAddonsType(qualificationId,type);
+        List<AddOns2Qualification> deletedAddons = addOns2QualificationDao.findByQualificationIdAndAddonsType(qualificationId, type);
         addOns2QualificationDao.delete(deletedAddons);
 
         List<AddOns2Qualification> savedAddons = IteratorUtils.toList(addOns2QualificationDao.save(addonsList).iterator());
 
         List<String> changedAddons = deletedAddons.stream().map(AddOns2Qualification::getEmail).collect(Collectors.toList());
         changedAddons.addAll(savedAddons.stream().map(AddOns2Qualification::getEmail).collect(Collectors.toList()));
-        if(type == AddOns2Qualification.ADDONS_TYPE_TEACHER){
-            eventUtil.post(new UpdateContestMentorEvent(qualificationId,changedAddons));
+        if (type == AddOns2Qualification.ADDONS_TYPE_TEACHER) {
+            eventUtil.post(new UpdateContestMentorEvent(qualificationId, changedAddons));
         }
         return savedAddons;
     }
@@ -164,6 +166,7 @@ public class CompetitionServiceImpl implements CompetitionService {
         competition2ExamDao.save(result);
         return result;
     }
+
     @Override
     public Competition2Exam getCompetition2TaskbyCompetitionIdAndIndex(Long competitionId, Integer index) {
         return competition2ExamDao.findByCompetitionIdAndIndex(competitionId, index);
@@ -172,7 +175,7 @@ public class CompetitionServiceImpl implements CompetitionService {
     @Override
     public Competition2Exam updateCompetition2TaskbyCompetitionIdAndIndex(Long competitionId, Integer index, boolean activeStatusAfterUpdating) {
         Competition2Exam result = competition2ExamDao.findByCompetitionIdAndIndex(competitionId, index);
-        if(result.isActive() ==  activeStatusAfterUpdating) {
+        if (result.isActive() == activeStatusAfterUpdating) {
             return result;
         }
         result.setActive(activeStatusAfterUpdating);
@@ -180,12 +183,24 @@ public class CompetitionServiceImpl implements CompetitionService {
         return result;
 
     }
+
     @Override
-    public boolean checkAddons(List<AddonsVO> addonsList, Long qualificationId, Integer type) {
-        if (type == null)
-            return false;
-        if (type == 0)
-            return true;
+    public Map<String, Object> checkAddons(List<AddonsVO> addonsList, Long qualificationId, Integer type) {
+        Map<String, Object> res = new HashMap<>();
+//        if (type == null)
+//            return false;
+//        if (type == 0)
+//            return true;
+        if (type == null) {
+            res.put("code", 1);
+            res.put("message", "类型出错");
+            return res;
+        }
+        if (type == 0) {
+            res.put("code", 0);
+            res.put("message", "修改成功");
+            return res;
+        }
         //获取当前队伍比赛信息
         Qualification qualification = qualificationDao.findOne(qualificationId);
         //获取所有参加当前比赛的队伍
@@ -199,7 +214,10 @@ public class CompetitionServiceImpl implements CompetitionService {
                     for (AddonsVO currAddons : addonsList) {
                         //如果信息已存在则返回错误
                         if (currAddons.getEmail().equals(addons.getEmail())) {
-                            return false;
+                            res.put("code", 2);
+                            res.put("message", "修改失败,队员'"+addons.getEmail()+"'已加入其它队伍!");
+                            return res;
+                            //return false;
                         }
                     }
                 }
@@ -211,13 +229,17 @@ public class CompetitionServiceImpl implements CompetitionService {
             if (null != user) {
                 for (Qualification temp : qualifications) {
                     if (temp.getUserId().equals(user.getId())) {
-                        return false;
+                        //return false;
+                        res.put("code", 3);
+                        res.put("message", "修改失败,队员'"+user.getEmail()+"'已是其他队伍的队长");
+                        return res;
                     }
                 }
             }
         }
-        //默认返回
-        return true;
+        res.put("code", 0);
+        res.put("message", "修改成功");
+        return res;
     }
 
 }

+ 35 - 10
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/CompetitionController.java

@@ -2,7 +2,6 @@ package cn.iselab.mooctest.site.web.ctrl;
 
 import cn.iselab.mooctest.site.common.constant.UrlConstants;
 import cn.iselab.mooctest.site.models.Qualification;
-import cn.iselab.mooctest.site.models.User;
 import cn.iselab.mooctest.site.web.data.AddonsVO;
 import cn.iselab.mooctest.site.web.data.CompetitionVO;
 import cn.iselab.mooctest.site.web.logic.CompetitionLogic;
@@ -11,7 +10,9 @@ import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by tangshanshan on 2017/11/3.
@@ -44,21 +45,45 @@ public class CompetitionController {
         return competitionLogic.enterCompetition(competitionId, userId);
     }
 
+    //    @RequestMapping(value = UrlConstants.API + "competition/addons/{qualificationId}/{type}", method = RequestMethod.POST)
+//    public List<AddonsVO> updateAddons(@PathVariable("qualificationId") Long qualificationId,
+//                                       @PathVariable("type") Integer type,
+//                                       @RequestBody List<AddonsVO> addonsVOList) {
+//        //TODO 校验addonsVOList的大小是否超过上限
+//        for(int i=0;i<addonsVOList.size();i++){
+//            if(!addonsVOList.get(i).getAddonsType().equals(type)
+//                    || !addonsVOList.get(i).getQualificationId().equals(qualificationId)){
+//                throw new IllegalArgumentException("different type or qualificationId");
+//            }
+//        }
+//        if(!competitionLogic.checkAddons(addonsVOList,qualificationId,type)){
+//            return null;
+//        }
+//        return competitionLogic.updateAddons(addonsVOList, qualificationId, type);
+//    }
     @RequestMapping(value = UrlConstants.API + "competition/addons/{qualificationId}/{type}", method = RequestMethod.POST)
-    public List<AddonsVO> updateAddons(@PathVariable("qualificationId") Long qualificationId,
-                                       @PathVariable("type") Integer type,
-                                       @RequestBody List<AddonsVO> addonsVOList) {
+    public Map<String, Object> updateAddons(@PathVariable("qualificationId") Long qualificationId,
+                                            @PathVariable("type") Integer type,
+                                            @RequestBody List<AddonsVO> addonsVOList) {
         //TODO 校验addonsVOList的大小是否超过上限
-        for(int i=0;i<addonsVOList.size();i++){
-            if(!addonsVOList.get(i).getAddonsType().equals(type)
-                    || !addonsVOList.get(i).getQualificationId().equals(qualificationId)){
+        Map<String, Object> map = new HashMap<>();
+        for (int i = 0; i < addonsVOList.size(); i++) {
+            if (!addonsVOList.get(i).getAddonsType().equals(type)
+                    || !addonsVOList.get(i).getQualificationId().equals(qualificationId)) {
                 throw new IllegalArgumentException("different type or qualificationId");
             }
         }
-        if(!competitionLogic.checkAddons(addonsVOList,qualificationId,type)){
-            return null;
+        Map<String, Object> addOnCheck = competitionLogic.checkAddons(addonsVOList, qualificationId, type);
+        if (!addOnCheck.get("code").equals(0)) {
+            map.put("code", 1);
+            map.put("message", addOnCheck.get("message"));
+            return map;
         }
-        return competitionLogic.updateAddons(addonsVOList, qualificationId, type);
+        List<AddonsVO> addonsVOS = competitionLogic.updateAddons(addonsVOList, qualificationId, type);
+        map.put("code", 0);
+        map.put("data", addonsVOS);
+        map.put("message", "修改成功");
+        return map;
     }
 
 }

+ 2 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/CompetitionLogic.java

@@ -6,6 +6,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  *
@@ -55,5 +56,5 @@ public interface CompetitionLogic {
 
     String updateAnnouncement(String announcement);
 
-    boolean checkAddons(List<AddonsVO> addonsVOList, Long qualificationId, Integer type);
+    Map<String, Object> checkAddons(List<AddonsVO> addonsVOList, Long qualificationId, Integer type);
 }

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

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -272,7 +273,7 @@ public class CompetitionLogicImpl implements CompetitionLogic {
     }
 
     @Override
-    public boolean checkAddons(List<AddonsVO> addonsVOList, Long qualificationId, Integer type) {
+    public Map<String, Object> checkAddons(List<AddonsVO> addonsVOList, Long qualificationId, Integer type) {
         return competitionService.checkAddons(addonsVOList,qualificationId,type);
     }