Переглянути джерело

Mtsite-176:增加webide开关配置的后端接口,修改根据user_id查询用户角色的服务。

xuxuan 4 роки тому
батько
коміт
eace40e275

+ 1 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/User2RoleDao.java

@@ -9,6 +9,7 @@ import java.util.List;
 /**
  * @author liuzicong
  */
+
 @Transactional
 public interface User2RoleDao extends CrudRepository<User2Role, Long> {
 

+ 49 - 18
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/CaseController.java

@@ -1,8 +1,10 @@
 package cn.iselab.mooctest.site.web.ctrl;
 
 import cn.iselab.mooctest.site.common.constant.UrlConstants;
+import cn.iselab.mooctest.site.models.CaseExtends;
 import cn.iselab.mooctest.site.models.UserStarCase;
 import cn.iselab.mooctest.site.models.instancePermission.ExamPermission;
+import cn.iselab.mooctest.site.service.Exam2CaseService;
 import cn.iselab.mooctest.site.service.UserStarCaseService;
 import cn.iselab.mooctest.site.service.fromKibug.CaseTakeService;
 import cn.iselab.mooctest.site.web.data.SearchConditionVO;
@@ -34,6 +36,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.web.bind.annotation.*;
 
+import javax.persistence.criteria.CriteriaBuilder;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.constraints.NotNull;
 import java.util.Comparator;
@@ -48,6 +51,9 @@ import java.util.Map;
 public class CaseController extends BaseSearchController {
 
     @Autowired
+    private Exam2CaseService exam2CaseService;
+
+    @Autowired
     private CaseLogic caseLogic;
     @Autowired
     private ExamService examService;
@@ -69,13 +75,12 @@ public class CaseController extends BaseSearchController {
         Long userId;
         if (isPublic == null || isPublic) {
             userId = null;
-        }
-        else {
+        } else {
             userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
         }
         Sort sortById = new Sort(Sort.Direction.DESC, "id");
         Pageable pageable = PageRequest.of(Integer.parseInt(activePage) - 1, Integer.parseInt(rowsOnPage), sortById);
-        return caseLogic.searchCases(isPublic, userId, null, null,keyword, pageable);
+        return caseLogic.searchCases(isPublic, userId, null, null, keyword, pageable);
     }
 
     @Override
@@ -93,7 +98,7 @@ public class CaseController extends BaseSearchController {
         if (isPublic == null || isPublic) {
             userId = null;
         }
-        return caseLogic.searchCases(isPublic, userId,extraCondition,excludeCondition, keyword,
+        return caseLogic.searchCases(isPublic, userId, extraCondition, excludeCondition, keyword,
                 pageable);
     }
 
@@ -113,9 +118,9 @@ public class CaseController extends BaseSearchController {
         if (!SecurityUtils.getSubject().isPermitted(new CasePermission(permissionStr))) {
             throw new UnauthenticatedException("forbidden");
         }
-        CaseGraphDTO caseGraph =  caseLogic.saveGraph(caseGraphDTO);
+        CaseGraphDTO caseGraph = caseLogic.saveGraph(caseGraphDTO);
         //修改caseGraph后执行缓存失效
-        if(caseGraph != null){
+        if (caseGraph != null) {
             generalCalculateScoreLogic.expireMetaNode(caseGraph.getCaseId());
         }
         return caseGraph;
@@ -130,12 +135,12 @@ public class CaseController extends BaseSearchController {
 
     @RequestMapping(value = UrlConstants.API + "support/caseGraph", method = RequestMethod.GET)
     public CaseGraphDTO getSupportCaseGraph(@RequestParam(name = "caseId") Long caseId,
-            @RequestParam(name = "examId", required = false) Long examId, @RequestParam(name =
+                                            @RequestParam(name = "examId", required = false) Long examId, @RequestParam(name =
             "token") String token) throws Exception {
         String tmp = "123hsiawi456";
-        if(tmp.equals(token)){
+        if (tmp.equals(token)) {
             return caseLogic.getGraph(caseId, examId);
-        }else{
+        } else {
             return null;
         }
     }
@@ -148,7 +153,7 @@ public class CaseController extends BaseSearchController {
 
     @RequiresPermissions("case:update")
     @RequestMapping(value = UrlConstants.API + "case/{caseId}", method = RequestMethod.PUT)
-    public void updateCase(@RequestBody CaseExtendsVO caseExtendsVO,@PathVariable("caseId") Long caseId){
+    public void updateCase(@RequestBody CaseExtendsVO caseExtendsVO, @PathVariable("caseId") Long caseId) {
         Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
         String permissionStr = userId.toString() + ":case:update:" + caseId.toString();
         if (!SecurityUtils.getSubject().isPermitted(new CasePermission(permissionStr))) {
@@ -157,14 +162,40 @@ public class CaseController extends BaseSearchController {
         caseLogic.update(caseExtendsVO, caseId);
     }
 
+    /*
+        管理员配置webIde开关接口
+     */
+    @RequiresRoles("admin")
+    @RequestMapping(value = UrlConstants.API + "exam/paper/case", method = RequestMethod.PUT)
+    public void configureCaseToWebIde(boolean isopen, long examId, long paperId, long caseId) throws Exception {
+        CaseExtendsVO caseExtends = caseLogic.getCaseExtends(caseId);
+        //判断题目类型 如果不是开发者或者tdd就报错
+        boolean is_develop = false;
+        boolean is_tdd = false;
+        if (caseExtends.getSubjectId() != null) {
+            if (caseExtends.getSubjectId() == 60) {
+                is_develop = true;
+            }
+            if (caseExtends.getSubjectId() == 51 || caseExtends.getSubjectId() == 78) {
+                is_tdd = true;
+            }
+            if (!(is_develop && is_tdd)) {
+                throw new IllegalArgumentException("题目类型有误");
+            }
+        }
+             caseLogic.openOrCloseToWebIde(isopen, examId, paperId, caseId);
+
+    }
+
     /**
      * 管理员影藏公开的case
+     *
      * @param caseId
      */
     @RequiresRoles(value = "admin")
     @RequiresPermissions("case:update")
     @RequestMapping(value = UrlConstants.API + "case/hide/{caseId}", method = RequestMethod.PUT)
-    public CaseExtendsVO hideCase(@PathVariable("caseId") Long caseId){
+    public CaseExtendsVO hideCase(@PathVariable("caseId") Long caseId) {
         Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
         String permissionStr = userId.toString() + ":case:update:" + caseId.toString();
         if (!SecurityUtils.getSubject().isPermitted(new CasePermission(permissionStr))) {
@@ -272,19 +303,19 @@ public class CaseController extends BaseSearchController {
         return caseLogic.getPythonCommunityExerciseCases(examId);
     }
 
-    @RequestMapping(value = UrlConstants.API + "/pythonCommunity/exercise/case2exercise/{caseId}",method = RequestMethod.GET)
-    public UserStarCaseVO getLatestCaseTake(@PathVariable("caseId")long caseId) throws Exception {
-        Long userId = (Long)SecurityUtils.getSubject().getSession().getAttribute("userId");
+    @RequestMapping(value = UrlConstants.API + "/pythonCommunity/exercise/case2exercise/{caseId}", method = RequestMethod.GET)
+    public UserStarCaseVO getLatestCaseTake(@PathVariable("caseId") long caseId) throws Exception {
+        Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
         if (userId == null) {
             throw new HttpBadRequestException("no user found, login first");
         }
-        Map<Long,Long> examIdMap = userStarCaseService.getSubmitExams(userId,caseId);
+        Map<Long, Long> examIdMap = userStarCaseService.getSubmitExams(userId, caseId);
         UserStarCaseVO userStarCaseVO = new UserStarCaseVO();
-        if(examIdMap == null || examIdMap.size() == 0) {
-            UserStarCase userStarCase = userStarCaseService.getUserStarCase(userId,caseId);
+        if (examIdMap == null || examIdMap.size() == 0) {
+            UserStarCase userStarCase = userStarCaseService.getUserStarCase(userId, caseId);
             userStarCaseVO.setCaseId(caseId);
             userStarCaseVO.setExamId(userStarCase.getExamId());
-        }else{
+        } else {
             //收藏的题有提交记录,找最晚一次提交
             Long examId = examIdMap.entrySet().stream()
                     .max(Comparator.comparingLong(Map.Entry::getKey))

+ 2 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/shiro/roleController.java

@@ -26,8 +26,7 @@ public class roleController {
 
 
     @RequestMapping(value = "/api/test/roleList", method = RequestMethod.GET)
-    public List<RoleVO> getRoleListByUserId() {
-        Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
-        return roleLogic.getRolesByUserName(userId);
+    public List<Long> getRoleListByUserId(long user_id) {
+        return roleLogic.getRoleIdsByUserId(user_id);
     }
 }

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

@@ -27,6 +27,7 @@ public interface CaseLogic {
     void update(CaseExtendsVO caseExtendsVO, Long caseExtendsId);
 
     void publicityCase(Long caseId);
+    void   openOrCloseToWebIde(boolean isopen,long examId,long paperId,long caseId);
 
     CaseExtendsVO delete(Long caseExtendsId, final boolean isAdmin) throws CaseNotFoundException;
 

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

@@ -8,6 +8,7 @@ import cn.iselab.mooctest.site.common.enums.NodeType;
 import cn.iselab.mooctest.site.common.enums.TestType;
 import cn.iselab.mooctest.site.common.event.EventUtil;
 import cn.iselab.mooctest.site.common.event.PublicityTargetEvent;
+import cn.iselab.mooctest.site.dao.Exam2CaseDao;
 import cn.iselab.mooctest.site.data.CaseBlock;
 import cn.iselab.mooctest.site.data.UserDTOForMT;
 import cn.iselab.mooctest.site.models.*;
@@ -67,6 +68,8 @@ import java.util.stream.Collectors;
 public class CaseLogicImpl implements CaseLogic {
 
     @Autowired
+    private Exam2CaseDao exam2CaseDao;
+    @Autowired
     EventUtil eventUtil;
     @Autowired
     UpDownloadLogic upDownloadLogic;
@@ -371,6 +374,43 @@ public class CaseLogicImpl implements CaseLogic {
     }
 
     @Override
+    public void openOrCloseToWebIde(boolean isopen, long examId, long paperId, long caseId) {
+        Exam2Case exam2Case = exam2CaseService.findByExamIdPaperIdCaseId(examId, paperId, caseId);
+        String caseBlock = exam2Case.getCaseBlock();
+        System.out.println("caseBlock====" + caseBlock);
+
+
+        if (isopen) {
+
+            char[] cwords = caseBlock.toCharArray();
+            cwords[0] = '[';
+            cwords[1] = '1';
+            String new_caseBlock = "";
+            for (int i = 0; i < cwords.length; i++) {
+                new_caseBlock += cwords[i];
+            }
+            System.out.println(new_caseBlock);
+            exam2Case.setCaseBlock(new_caseBlock);
+            exam2CaseDao.save(exam2Case);
+            System.out.println("successful");
+        } else {
+            char[] cwords = caseBlock.toCharArray();
+            cwords[0] = '[';
+            cwords[1] = '0';
+            String new_caseBlock = "";
+            for (int i = 0; i < cwords.length; i++) {
+                System.out.println("crowds===" + cwords[i]);
+                new_caseBlock += cwords[i];
+            }
+            System.out.println(new_caseBlock);
+            exam2Case.setCaseBlock(new_caseBlock);
+            exam2CaseDao.save(exam2Case);
+            System.out.println("successful");
+        }
+
+    }
+
+    @Override
     public CaseExtendsVO delete(Long caseExtendsId, final boolean isAdmin) throws CaseNotFoundException {
         CaseExtends caseExtends = caseService.getCaseExtendsById(caseExtendsId);
         if (caseExtends == null) {
@@ -402,10 +442,10 @@ public class CaseLogicImpl implements CaseLogic {
             CaseExtendsVO re = Converter.convert(CaseExtendsVO.class, caseExtends);
 
             re.setManagerId(caseExtends.getOwnerId());
-            Target target = targetService.findById(caseExtends.getAppId());
-            re.setTargetName(target.getName());
-            re.setTargetType(target.getTargetType());
-            re.setTargetVisable(target.getVisible());
+//            Target target = targetService.findById(caseExtends.getAppId());
+//            re.setTargetName(target.getName());
+//            re.setTargetType(target.getTargetType());
+//            re.setTargetVisable(target.getVisible());
 
             //添加访问控制信息
             re = visitControlService.setVOVisitControlAttr(re, EntityTypeEnum.CASE, caseId);