Procházet zdrojové kódy

Merge branch 'Release' into 'DEV'

Release



See merge request !251

tangss před 8 roky
rodič
revize
c05bd3878e
30 změnil soubory, kde provedl 185 přidání a 65 odebrání
  1. 1 1
      mooctest-site-server/pom.xml
  2. 2 2
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/AnswerWayConstants.java
  3. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/Constants.java
  4. 19 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/OwningPartyConstants.java
  5. 0 15
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/ThirdPartConstants.java
  6. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/configure/ApplicationStartup.java
  7. 5 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/UserDao.java
  8. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/ExamGroupUser.java
  9. 6 6
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/Task.java
  10. 7 4
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/rpc/Oauth2/impl/ExamServiceImpl2.java
  11. 4 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/UserService.java
  12. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/fromDev/impl/PluginServiceImpl.java
  13. 1 3
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/fromKibug/impl/ApplicationServiceImpl.java
  14. 2 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/fromKibug/impl/ReportServiceImpl.java
  15. 6 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/AssignedTaskServiceImpl.java
  16. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/CalculateScoreServiceImpl.java
  17. 2 2
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/PaperServiceImpl.java
  18. 7 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/UserServiceImpl.java
  19. 20 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/UserController.java
  20. 14 5
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/ExamVO.java
  21. 5 3
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/CaseVOWrapper.java
  22. 32 3
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ExamVOWrapper.java
  23. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/CalculateSocreLogic.java
  24. 4 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/UserLogic.java
  25. 11 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/CalculateScoreLogicImpl.java
  26. 2 2
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/CaseLogicImpl.java
  27. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ContestLogicImpl.java
  28. 14 5
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ReportLogicImpl.java
  29. 12 5
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/UserLogicImpl.java
  30. 2 1
      mooctest-site-server/src/main/resources/application.yaml

+ 1 - 1
mooctest-site-server/pom.xml

@@ -31,7 +31,7 @@
         <dependency>
             <groupId>cn.iselab.mooctest</groupId>
             <artifactId>oauth2-dubbo-api</artifactId>
-            <version>1.0.17</version>
+            <version>1.0.19</version>
         </dependency>
 
         <!--dubbo-service-api-->

+ 2 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/AnswerWayConstants.java

@@ -24,9 +24,9 @@ public class AnswerWayConstants {
     public static final long EMBEDDED = 6;
     public static final long JMETER = 7;
 
-//    public static final long PYTHON_SUBSITE_ID = 4;
+//    public static final long PYTHON_SUBSITE_ID = 4;   -》 -2
 //    public static final int KIKBUG_SUBSITE_ID = 6;
-//    public static final long KIVUL_SUBSITE_ID = 7;
+//    public static final long KIVUL_SUBSITE_ID = 7;     -》 -1
 //    public static final long DEV_SUBSITE_ID = 10;
 //    public static final int KIJAM_SUBSITE_ID = 12;
 //    public static final long DEVELOP_SUBSITE_ID = 13;

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/Constants.java

@@ -24,6 +24,6 @@ public class Constants {
 
     public static final int DEFAULT_WORKER_LEVEL = 0;
 
-    public static final String OAUTH2APIVERSION = "1.0.17";
+    public static final String OAUTH2APIVERSION = "1.0.19";
 
 }

+ 19 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/OwningPartyConstants.java

@@ -0,0 +1,19 @@
+package cn.iselab.mooctest.site.common.constant;
+
+/**
+ * Created by ROGK on 2017/8/18.
+ */
+public class OwningPartyConstants {
+
+    public final static Integer MOOCTEST=0;
+
+    public final static Integer TEST=1;
+
+    public final static Integer ANHENG=2;
+
+    public final static Integer ZEZHONG=3;
+
+    public final static Integer KAIYUN=4;
+
+    public final static String THIRDEMAIL="anheng@mooctest.net";
+}

+ 0 - 15
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/ThirdPartConstants.java

@@ -1,15 +0,0 @@
-package cn.iselab.mooctest.site.common.constant;
-
-/**
- * Created by ROGK on 2017/8/18.
- */
-public class ThirdPartConstants {
-
-    public final static int TEST=1;
-
-    public final static int ANHENG=2;
-
-    public final static int ZEZHONG=3;
-
-    public final static String THIRDEMAIL="anheng@mooctest.net";
-}

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/configure/ApplicationStartup.java

@@ -16,7 +16,7 @@ public class ApplicationStartup implements ApplicationListener<ContextRefreshedE
         System.out.println("-----------------------------------------------------------------------------------------");
         System.out.println("listener");
         ExamController examController = event.getApplicationContext().getBean(ExamController.class);
-//        examController.updateStatusForAllTask();
+        examController.updateStatusForAllTask();
         examController.startInitExamSchedulerMap();
         System.out.println("exam scheduler map initialized");
         System.out.println("-----------------------------------------------------------------------------------------");

+ 5 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/UserDao.java

@@ -1,6 +1,8 @@
 package cn.iselab.mooctest.site.dao;
 
 import cn.iselab.mooctest.site.models.User;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
 import org.springframework.data.repository.query.Param;
@@ -21,4 +23,7 @@ public interface UserDao extends CrudRepository<User, Long> {
     User findByUsername(@Param("username") String username);
 
     User findById(Long id);
+
+    @Query("SELECT u FROM User u, User2Role u2r WHERE u.id = u2r.userId AND u2r.roleId = :roleId")
+    Page<User> findByRoleId(@Param("roleId") Long roleId, Pageable pageable);
 }

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/ExamGroupUser.java

@@ -49,7 +49,7 @@ public class ExamGroupUser{
     private Integer status;
 
     @Column(name = "is_third_party")
-    private Boolean isThirdParty;
+    private Integer owningParty ;
 
     @Column(name = "participant_id")
     private Long participantId;

+ 6 - 6
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/Task.java

@@ -53,7 +53,7 @@ public class Task {
     private Integer status;
 
     @Column(name = "is_third_party")
-    private Boolean isThirdParty;
+    private Integer owningParty;
 
     public Long getOwnerId() {
         return ownerId;
@@ -139,12 +139,12 @@ public class Task {
         this.status = status;
     }
 
-    public Boolean getIsThirdParty() {
-        return isThirdParty;
-    }
 
-    public void setIsThirdParty(Boolean thirdParty) {
-        isThirdParty = thirdParty;
+    public Integer getOwningParty() {
+        return owningParty;
     }
 
+    public void setOwningParty(Integer owningParty) {
+        this.owningParty = owningParty;
+    }
 }

+ 7 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/rpc/Oauth2/impl/ExamServiceImpl2.java

@@ -1,7 +1,7 @@
 package cn.iselab.mooctest.site.rpc.Oauth2.impl;
 
 import cn.iselab.mooctest.site.common.constant.Constants;
-import cn.iselab.mooctest.site.common.constant.ThirdPartConstants;
+import cn.iselab.mooctest.site.common.constant.OwningPartyConstants;
 import cn.iselab.mooctest.site.dao.Exam2CaseDao;
 import cn.iselab.mooctest.site.dao.OpenId2UserIdDao;
 import cn.iselab.mooctest.site.dao.Task2CaseDao;
@@ -146,13 +146,16 @@ public class ExamServiceImpl2 implements ExamService {
     }
 
     private AssignedTask saveAssignedTask(long participantId, ScoreDetails scoreDetails, Task task, HashMap<Long, String> caseNameMap) {
-        AssignedTask assignedTask = new AssignedTask();
+        AssignedTask assignedTask = assignedTaskService.getAssignedTask(task.getId(), participantId);
+        if(assignedTask == null) {
+            assignedTask = new AssignedTask();
+        }
         assignedTask.setWorkerId(participantId);
         assignedTask.setName(task.getName());
         assignedTask.setTaskId(task.getId());
         assignedTask.setManagerId(task.getManagerId());
         assignedTask.setContent("");
-        assignedTask.setScore(0.0);
+        assignedTask.setScore((scoreDetails.getScore()));
         assignedTask.setOwnerId(task.getOwnerId());
         assignedTask.setParticipantId(participantId);
 
@@ -178,7 +181,7 @@ public class ExamServiceImpl2 implements ExamService {
     private Paper savePaperAndPaper2Case(String paperName, HashMap<Long, String> caseNameMap) {
         Paper paper = new Paper();
         paper.setName(paperName+"试卷");
-        User thirdUser = userDao.findByEmail(ThirdPartConstants.THIRDEMAIL);
+        User thirdUser = userDao.findByEmail(OwningPartyConstants.THIRDEMAIL);
         if(thirdUser != null) {
             paper.setOwnerId(new Long(thirdUser.getId()));
         }else {

+ 4 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/UserService.java

@@ -1,6 +1,8 @@
 package cn.iselab.mooctest.site.service;
 
 import cn.iselab.mooctest.site.models.User;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 
 import java.util.List;
 import java.util.Map;
@@ -28,4 +30,6 @@ public interface UserService {
     void deleteUser(String email);
 
     Map<Long,User> getUserMap(List<Long> userIds);
+
+    Page<User> findByRoleId(Long roleId, Pageable pageable);
 }

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/fromDev/impl/PluginServiceImpl.java

@@ -150,7 +150,7 @@ public class PluginServiceImpl extends BaseService implements PluginService{
                 weight.setPpc(0);
                 weightDao.save(weight);
             }
-            sourceService.initMutators(taskID,caseID);
+            //sourceService.initMutators(taskID,caseID);
 
             double savingScore = (weight.getBc() * branch_coverage +
                     weight.getSc() * statement_coverage +

+ 1 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/fromKibug/impl/ApplicationServiceImpl.java

@@ -86,9 +86,7 @@ public class ApplicationServiceImpl implements ApplicationService {
 
     @Override
     public Application getAppById(long id) throws Exception {
-        Application application = applicationDao.findOne(id);
-        if (application == null) throw new IllegalOperationException();
-        return application;
+        return applicationDao.findOne(id);
     }
 
     @Override

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/fromKibug/impl/ReportServiceImpl.java

@@ -9,6 +9,7 @@ import cn.iselab.mooctest.site.models.instancePermission.ReportPermission;
 import cn.iselab.mooctest.site.service.TaskService;
 import cn.iselab.mooctest.site.service.fromKibug.ReportService;
 import cn.iselab.mooctest.site.service.instancePermission.ReportPermissionService;
+import cn.iselab.mooctest.site.web.data.WeightDirtyVO;
 import cn.iselab.mooctest.site.web.data.fromKibug.ReportScoreVO;
 import cn.iselab.mooctest.site.web.data.fromKibug.ReportVO;
 import cn.iselab.mooctest.site.web.exception.IllegalOperationException;
@@ -149,6 +150,7 @@ public class ReportServiceImpl implements ReportService {
             managerScoreDao.save(managerScore);
         }
         calculateSocreLogic.calculateScore(caseTake.getTaskId(),caseTake.getCaseId(),caseTake.getParticipantId());
+        calculateSocreLogic.calculateExamScoreAuto(caseTake.getTaskId(),caseTake.getParticipantId());
     }
 
     @Override

+ 6 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/AssignedTaskServiceImpl.java

@@ -10,7 +10,9 @@ import cn.iselab.mooctest.site.models.*;
 import cn.iselab.mooctest.site.service.AssignedTaskService;
 import cn.iselab.mooctest.site.service.BaseService;
 import cn.iselab.mooctest.site.service.TaskService;
+import cn.iselab.mooctest.site.web.data.WeightDirtyVO;
 import cn.iselab.mooctest.site.web.exception.HttpNotFoundException;
+import cn.iselab.mooctest.site.web.logic.CalculateSocreLogic;
 import com.google.common.collect.Lists;
 import org.json.JSONArray;
 import org.json.JSONObject;
@@ -45,6 +47,9 @@ public class AssignedTaskServiceImpl extends BaseService implements AssignedTask
     @Autowired
     private TaskService taskService;
 
+    @Autowired
+    private CalculateSocreLogic calculateSocreLogic;
+
     @Override
     public AssignedTask saveOrUpdateAssignedTask(AssignedTask assignedTask) {
         return assignedTaskDao.save(assignedTask);
@@ -182,6 +187,7 @@ public class AssignedTaskServiceImpl extends BaseService implements AssignedTask
         results.put("results", resultObj);
         assignedTask.setResult(results.toString());
         assignedTaskDao.save(assignedTask);
+        calculateSocreLogic.calculateExamScoreAuto(examId,participantId);
     }
 
     @Override

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/CalculateScoreServiceImpl.java

@@ -85,7 +85,7 @@ public class CalculateScoreServiceImpl implements CalculateScoreService {
     @Override
     public void calculatePersonalScript(long taskId, long caseId, long userId) {
         List<CaseTake> caseTakeList=caseTakeDao.findByTaskIdAndCaseIdAndParticipantId(taskId, caseId, userId);
-        this.manual(caseTakeList);
+        this.script(caseTakeList);
     }
 
     @Override

+ 2 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/PaperServiceImpl.java

@@ -1,6 +1,6 @@
 package cn.iselab.mooctest.site.service.impl;
 
-import cn.iselab.mooctest.site.common.constant.ThirdPartConstants;
+import cn.iselab.mooctest.site.common.constant.OwningPartyConstants;
 import cn.iselab.mooctest.site.dao.Exam2PaperDao;
 import cn.iselab.mooctest.site.dao.PaperDao;
 import cn.iselab.mooctest.site.dao.Task2CaseDao;
@@ -170,7 +170,7 @@ public class PaperServiceImpl extends BaseService implements PaperService {
     }
 
     private Specification<Paper> getWhereClause(Long ownerId, String keyword) {
-        User thirdUser = userDao.findByEmail(ThirdPartConstants.THIRDEMAIL);
+        User thirdUser = userDao.findByEmail(OwningPartyConstants.THIRDEMAIL);
         return new Specification<Paper>() {
             @Override
             public Predicate toPredicate(Root<Paper> a, CriteriaQuery<?> q, CriteriaBuilder cb) {

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

@@ -9,6 +9,8 @@ import cn.iselab.mooctest.site.models.User;
 import cn.iselab.mooctest.site.service.BaseService;
 import cn.iselab.mooctest.site.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
@@ -94,4 +96,9 @@ public class UserServiceImpl extends BaseService implements UserService {
         });
         return userMap;
     }
+
+    @Override
+    public Page<User> findByRoleId(Long roleId, Pageable pageable) {
+        return userDao.findByRoleId(roleId, pageable);
+    }
 }

+ 20 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/UserController.java

@@ -11,6 +11,7 @@ import cn.iselab.mooctest.site.web.data.UserVO;
 import cn.iselab.mooctest.site.web.data.wrapper.UserVOWrapper;
 import cn.iselab.mooctest.site.web.exception.HttpBadRequestException;
 import cn.iselab.mooctest.site.web.exception.HttpUnauthorizedException;
+import cn.iselab.mooctest.site.web.exception.IllegalOperationException;
 import cn.iselab.mooctest.site.web.logic.ManagerPropertyLogic;
 import cn.iselab.mooctest.site.web.logic.MenuLogic;
 import cn.iselab.mooctest.site.web.logic.UserLogic;
@@ -22,6 +23,9 @@ import org.apache.shiro.subject.Subject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@@ -162,10 +166,25 @@ public class UserController {
 
     @RequiresRoles("admin")
     @RequestMapping(value = UrlConstants.API + "user/verification", method = RequestMethod.PUT)
-    public void approveManager(@RequestBody UserVO userVO) {
+    public void approveManager(@RequestBody UserVO userVO)
+    {
         userLogic.authorizeManagerRole(userVO);
     }
 
+    @RequiresRoles("admin")
+    @RequestMapping(value = UrlConstants.API + "userList/{roleId}", method = RequestMethod.GET)
+    public Page<UserVO> getUserList(@PathVariable Long roleId, HttpServletRequest request){
+        String activePageStr = request.getHeader("activePage");
+        String rowsOnPageStr = request.getHeader("rowsOnPage");
+        if (activePageStr == null || activePageStr.isEmpty() || rowsOnPageStr == null || rowsOnPageStr.isEmpty())
+            throw new IllegalOperationException();
+        Integer activePage = Integer.parseInt(activePageStr);
+        Integer rowsOnPage = Integer.parseInt(rowsOnPageStr);
+        Sort sortById = new Sort(Sort.Direction.DESC, "id");
+        return userLogic.getUserListByRoleId(roleId, new PageRequest(activePage - 1, rowsOnPage, sortById));
+    }
+
+
     @RequestMapping(value = UrlConstants.API_COMMON + "forgetPassword/email", method = RequestMethod.POST)
     public UserVO forgetPasswordByEmail(@RequestBody UserVO userVO, HttpServletRequest request) {
         return userLogic.forgetPasswordByEmail(userVO, request);

+ 14 - 5
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/ExamVO.java

@@ -24,7 +24,8 @@ public class ExamVO {
     private Long paperId;
     private boolean hasEntered;
     private Integer participantCount;
-    private Boolean isThirdParty;
+    private Integer owningParty;
+    private boolean hasQualify;
 
     public Long getId() {
         return id;
@@ -148,12 +149,20 @@ public class ExamVO {
         this.participantCount = participantCount;
     }
 
-    public Boolean getIsThirdParty() {
-        return isThirdParty;
+
+    public Integer getOwningParty() {
+        return owningParty;
+    }
+
+    public void setOwningParty(Integer owningParty) {
+        this.owningParty = owningParty;
     }
 
-    public void setIsThirdParty(Boolean thirdParty) {
-        isThirdParty = thirdParty;
+    public boolean isHasQualify() {
+        return hasQualify;
     }
 
+    public void setHasQualify(boolean hasQualify) {
+        this.hasQualify = hasQualify;
+    }
 }

+ 5 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/CaseVOWrapper.java

@@ -80,7 +80,6 @@ public class CaseVOWrapper extends BaseWrapper<CaseVO, Case> {
     }
 
     public KibugCaseVO wrapKibugCase(CaseExtends caseExtends) throws Exception {
-        Application app = applicationService.getAppById(caseExtends.getTargetId());
         JSONObject resultObj = new JSONObject(caseExtends.getProperties());
         KibugCaseVO vo = new KibugCaseVO();
         vo.setId(caseExtends.getId());
@@ -89,8 +88,11 @@ public class CaseVOWrapper extends BaseWrapper<CaseVO, Case> {
         vo.setDescription(caseExtends.getDescription());
         vo.setManagerId(caseExtends.getOwnerId());
         vo.setPlatform(AppPlatform.fromShort(caseExtends.getPlatform()).getPlatform());
-        vo.setCategory(app.getCategory());
-        vo.setAppLocation(app.getAppLocation());
+        Application app = applicationService.getAppById(caseExtends.getTargetId());
+        if(app!=null){
+            vo.setCategory(app.getCategory());
+            vo.setAppLocation(app.getAppLocation());
+        }
 
         if(resultObj.has("scriptTemplate")){
             vo.setScriptTemplateUrl(resultObj.getString("scriptTemplate"));

+ 32 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ExamVOWrapper.java

@@ -1,5 +1,6 @@
 package cn.iselab.mooctest.site.web.data.wrapper;
 
+import cn.iselab.mooctest.site.dao.AssignedTaskDao;
 import cn.iselab.mooctest.site.dao.ExamGroupUserDao;
 import cn.iselab.mooctest.site.dao.SubsiteDao;
 import cn.iselab.mooctest.site.models.*;
@@ -41,6 +42,9 @@ public class ExamVOWrapper extends BaseWrapper<ExamVO, Task> {
     @Autowired
     ExamGroupUserDao examGroupUserDao;
 
+    @Autowired
+    AssignedTaskDao assignedTaskDao;
+
     @Override
     public ExamVO wrap(Task task) {
         ExamVO vo = new ExamVO();
@@ -54,13 +58,20 @@ public class ExamVOWrapper extends BaseWrapper<ExamVO, Task> {
         vo.setInfo(task.getInformation());
         vo.setType(task.getType());
         vo.setStatus(task.getStatus());
-        vo.setIsThirdParty(task.getIsThirdParty());
+        vo.setOwningParty(task.getOwningParty());
         return vo;
     }
 
-    public ExamVO wrapWithHasEntered(Task task, Long userId){
+    public ExamVO wrapWithHasEnteredAndHasQualify(Task task, Long userId){
         ExamVO vo = wrap(task);
         ExamGroupUser result = examGroupUserDao.findByIdAndParticipantId(task.getId(), userId);
+        long exerciseId = this.getExerciseIdByTaskId(task.getId());
+        List<AssignedTask> assignedTasks = assignedTaskDao.findByTaskIdAndParticipantId(exerciseId,userId);
+        if(assignedTasks.size()==0){
+            vo.setHasQualify(false);
+        }else {
+            vo.setHasQualify(true);
+        }
         if(result!=null){
             vo.setHasEntered(true);
         }else {
@@ -69,6 +80,24 @@ public class ExamVOWrapper extends BaseWrapper<ExamVO, Task> {
         return vo;
     }
 
+    private long getExerciseIdByTaskId(long taskId){
+        long exerciseId = -1;
+        if(taskId==865){
+            exerciseId = 872;
+        }else if(taskId==866){
+            exerciseId = 915;
+        }else if(taskId==869){
+            exerciseId = 930;
+        } else if (taskId == 870) {
+            exerciseId = 931;
+        } else if (taskId == 867) {
+            exerciseId = 953;
+        } else if (taskId == 868) {
+            exerciseId = 979;
+        }
+        return exerciseId;
+    }
+
     public ExamVO wrapExamFrom(Task task) {
         ExamVO vo = wrap(task);
         List<Group> groupList = groupService.getByExamId(vo.getId());
@@ -138,7 +167,7 @@ public class ExamVOWrapper extends BaseWrapper<ExamVO, Task> {
         task.setEndTime(endTime);
         task.setType(vo.getType());
         task.setStatus(vo.getStatus());
-        task.setIsThirdParty(vo.getIsThirdParty());
+        task.setOwningParty(vo.getOwningParty());
 
         return task;
     }

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

@@ -13,5 +13,5 @@ public interface CalculateSocreLogic {
 
     public List<Double> calculateExamScore(long examId, Long participantId, WeightDirtyVO weightDirtyVO,boolean calculateAll);
 
-    
+    public List<Double> calculateExamScoreAuto(long examId,long participantId);
 }

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

@@ -2,6 +2,8 @@ package cn.iselab.mooctest.site.web.logic;
 
 import cn.iselab.mooctest.site.web.data.ManagerPropertyVO;
 import cn.iselab.mooctest.site.web.data.UserVO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -48,4 +50,6 @@ public interface UserLogic {
     UserVO forgetPasswordByMobile(UserVO userVO, HttpServletRequest request);
 
     UserVO resetPassword(UserVO userVO);
+
+    Page<UserVO> getUserListByRoleId(Long roleId, Pageable pageable);
 }

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

@@ -119,6 +119,14 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
         return scores;
     }
 
+    @Override
+    public List<Double> calculateExamScoreAuto(long examId, long participantId) {
+        WeightDirtyVO weightDirtyVO = new WeightDirtyVO();
+        weightDirtyVO.setWeightDirty(true);
+        weightDirtyVO.setCaseDirty(null);
+        return this.calculateExamScore(examId,participantId,weightDirtyVO,false);
+    }
+
 
     private double calculateOneScore(AssignedTask assignedTask,long examId){
         String result=assignedTask.getResult();
@@ -128,6 +136,9 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
         while(it.hasNext()){
             String id = (String) it.next();
             JSONObject caseInfo = cases.getJSONObject(id);
+            if(!caseInfo.has("maxScore")){
+                return 0.0;
+            }
             double maxScore = caseInfo.getDouble("maxScore");
             long caseId = caseInfo.getLong("id");
             List<Exam2Case> exam2Cases = exam2CaseService.findByExamIdAndCaseId(examId,caseId);

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

@@ -2,7 +2,7 @@ package cn.iselab.mooctest.site.web.logic.impl;
 
 import cn.iselab.mooctest.site.common.constant.AnswerWayConstants;
 import cn.iselab.mooctest.site.common.constant.TargetTypeConstants;
-import cn.iselab.mooctest.site.common.constant.ThirdPartConstants;
+import cn.iselab.mooctest.site.common.constant.OwningPartyConstants;
 import cn.iselab.mooctest.site.data.CaseBlock;
 import cn.iselab.mooctest.site.models.*;
 import cn.iselab.mooctest.site.models.fromKibug.Application;
@@ -301,7 +301,7 @@ public class CaseLogicImpl implements CaseLogic {
             }
             if (caseExtendsVO.getAnswerWay() == AnswerWayConstants.THIRD_PARTY) {
                 String openId = openId2UserIdService.findOpenIdByUserId(userId);
-                caseExtendsVO.setEntrance("http://api.mooctest.net/oauth/thirdPart?openId=" + openId + "&taskId=" + examId + "&thirdPartId=" + ThirdPartConstants.ZEZHONG + "&caseId=" + caseid);
+                caseExtendsVO.setEntrance("http://api.mooctest.net/oauth/thirdPart?openId=" + openId + "&taskId=" + examId + "&thirdPartId=" + OwningPartyConstants.ZEZHONG + "&caseId=" + caseid);
                 Report report = reportService.getReport(examId, caseid, userId);
                 if (report != null)
                     caseExtendsVO.setReportId(report.getId());

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

@@ -160,7 +160,7 @@ public class ContestLogicImpl implements ContestLogic {
         Page<ExamVO> examVOPage = taskPage.map(new org.springframework.core.convert.converter.Converter<Task, ExamVO>() {
             @Override
             public ExamVO convert(Task task) {
-                return examVOWrapper.wrapWithHasEntered(task, userId);
+                return examVOWrapper.wrapWithHasEnteredAndHasQualify(task, userId);
             }
         });
         return examVOPage;

+ 14 - 5
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ReportLogicImpl.java

@@ -14,9 +14,11 @@ import cn.iselab.mooctest.site.service.CaseService;
 import cn.iselab.mooctest.site.service.TaskService;
 import cn.iselab.mooctest.site.service.fromKibug.KibugTaskService;
 import cn.iselab.mooctest.site.service.fromKibug.ReportService;
+import cn.iselab.mooctest.site.web.data.WeightDirtyVO;
 import cn.iselab.mooctest.site.web.data.fromKibug.ReportScriptResultVO;
 import cn.iselab.mooctest.site.web.data.fromKibug.ReportVO;
 import cn.iselab.mooctest.site.web.exception.IllegalOperationException;
+import cn.iselab.mooctest.site.web.logic.CalculateSocreLogic;
 import cn.iselab.mooctest.site.web.logic.ReportLogic;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -41,6 +43,8 @@ public class ReportLogicImpl implements ReportLogic {
     private ScriptAutoResultDao scriptAutoResultDao;
     @Autowired
     private CaseTakeDao caseTakeDao;
+    @Autowired
+    private CalculateSocreLogic calculateSocreLogic;
 
     @Override
     public Long createReport(ReportVO vo) throws Exception {
@@ -80,12 +84,14 @@ public class ReportLogicImpl implements ReportLogic {
     @Override
     public void recordReportScript(long reportId, ReportScriptResultVO vo) throws Exception {
         ScriptAutoResult scriptAutoResult = reportService.getScriptAutoResult(reportId);
+
+        Report report = reportService.getReport(reportId);
+        if (report == null) {
+            throw new IllegalOperationException("错误的报告Id");
+        }
+        CaseTake caseTake = caseTakeDao.findOne(report.getCaseTakeId());
+
         if (scriptAutoResult == null) {
-            Report report = reportService.getReport(reportId);
-            if (report == null) {
-                throw new IllegalOperationException("错误的报告Id");
-            }
-            CaseTake caseTake = caseTakeDao.findOne(report.getCaseTakeId());
             scriptAutoResult = new ScriptAutoResult();
             scriptAutoResult.setReportId(reportId);
             scriptAutoResult.setApplicationId(caseTake.getApplicationId());
@@ -99,5 +105,8 @@ public class ReportLogicImpl implements ReportLogic {
             scriptAutoResult.setResult(vo.getResult());
         }
         scriptAutoResultDao.save(scriptAutoResult);
+
+        calculateSocreLogic.calculateScore(caseTake.getTaskId(),caseTake.getCaseId(),caseTake.getParticipantId());
+        calculateSocreLogic.calculateExamScoreAuto(caseTake.getTaskId(),caseTake.getParticipantId());
     }
 }

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

@@ -23,6 +23,8 @@ import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.validator.routines.EmailValidator;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
@@ -237,7 +239,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     @Override
     public UserVO loginForOauth2(String userName) {
         User user = userService.findByUsername(userName);
-        if(user == null){
+        if (user == null) {
             return null;
         }
         UserVO userVO = userVOWrapper.wrap(user);
@@ -269,7 +271,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         if (managerPropertyVO.getStatus() != null) {
             managerProperty.setStatus(managerPropertyVO.getStatus());
         }
-        if (managerPropertyVO.getExpireTime() != null){
+        if (managerPropertyVO.getExpireTime() != null) {
             managerProperty.setExpireTime(new Timestamp(managerPropertyVO.getExpireTime()));
         }
 
@@ -323,7 +325,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
             throw new HttpBadRequestException("Invalid email");
         }
         User user = userService.findByEmail(userVO.getEmail());
-        if(user == null){
+        if (user == null) {
             throw new HttpBadRequestException("User doesn't exists");
         }
         emailService.sendForgetPasswordEmail(user);
@@ -340,7 +342,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
             throw new HttpBadRequestException("Invalid mobile captcha");
         }
         User user = userService.findByMobile(mobile);
-        if(user==null){
+        if (user == null) {
             throw new HttpBadRequestException("User doesn't exists");
         }
         try {
@@ -372,7 +374,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
                 throw new HttpBadRequestException("Url expired");
             }
             User user = userService.findByUserId(userId);
-            if(user==null){
+            if (user == null) {
                 throw new HttpBadRequestException("User doesn't exist!");
             }
             user.setPassword(EncryptionUtil.encryptMD5(userVO.getPassword()));
@@ -383,7 +385,12 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
             throw new HttpInternalServerError("");
         }
         return userVO;
+    }
 
+    @Override
+    public Page<UserVO> getUserListByRoleId(Long roleId, Pageable pageable) {
+        Page<User> userList = userService.findByRoleId(roleId, pageable);
+        return userVOWrapper.wrap(userList);
     }
 }
 

+ 2 - 1
mooctest-site-server/src/main/resources/application.yaml

@@ -134,10 +134,11 @@ spring:
         username: liuzicong
         password: secr3t!
     dubbo:
-        application.name: dubbo-consumer
+        application.name: dubbo-consumer-online
         registry.address: zookeeper://118.178.131.206:2181
         protocol.name: dubbo
         protocol.port: 20880
+        protocol.host: 114.55.91.83
         scan: cn.iselab.mooctest.site.rpc
 
 server: