yyy2015 преди 7 години
родител
ревизия
23766c126b

+ 3 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/UserStarCase.java

@@ -27,4 +27,7 @@ public class UserStarCase {
 
     @Column(name = "user_id")
     private long userId;
+
+    @Column(name = "exam_id")
+    private long examId;
 }

+ 3 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/UserStarCaseService.java

@@ -11,9 +11,11 @@ public interface UserStarCaseService {
 
     boolean isStar(long userId, long caseId);
 
-    boolean star(long userId, long caseId);
+    boolean star(long userId, long caseId, long examId);
 
     boolean unStar(long userId, long caseId);
 
     Page<UserStarCase> getStarList(long userId, Pageable pageable);
+
+    UserStarCase getUserStarCase(long userId, long caseId);
 }

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

@@ -27,13 +27,14 @@ public class UserStarCaseServiceImpl implements UserStarCaseService{
     }
 
     @Override
-    public boolean star(long userId, long caseId) {
+    public boolean star(long userId, long caseId, long examId) {
         if(userStarPythonCaseDao.findByUserIdAndCaseId(userId, caseId) != null){
             return false;
         }
         UserStarCase userStarCase = new UserStarCase();
         userStarCase.setUserId(userId);
         userStarCase.setCaseId(caseId);
+        userStarCase.setExamId(examId);
         userStarPythonCaseDao.save(userStarCase);
         return true;
     }
@@ -56,4 +57,9 @@ public class UserStarCaseServiceImpl implements UserStarCaseService{
         );
         return userStarPythonCaseDao.findAll(specifications,pageable);
     }
+
+    @Override
+    public UserStarCase getUserStarCase(long userId, long caseId) {
+        return userStarPythonCaseDao.findByUserIdAndCaseId(userId,caseId);
+    }
 }

+ 4 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ExamController.java

@@ -378,11 +378,12 @@ public class ExamController extends BaseSearchController {
     }
 
     @RequiresPermissions("task:view")
-    @RequestMapping(value = UrlConstants.API + "pythonCommunity/exercise/star/{caseId}",
+    @RequestMapping(value = UrlConstants.API + "pythonCommunity/exercise/star",
             method=RequestMethod.POST)
-    public boolean starCase(@PathVariable("caseId") long caseId){
+    public boolean starCase(@RequestParam("caseId") long caseId, @RequestParam("examId") long
+            examId){
         Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
-        return starCaseLogic.star(userId,caseId);
+        return starCaseLogic.star(userId,caseId,examId);
     }
 
     @RequiresPermissions("task:view")

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

@@ -8,7 +8,7 @@ import org.springframework.data.domain.Page;
  */
 public interface StarCaseLogic {
 
-    boolean star(long userId, long caseId);
+    boolean star(long userId, long caseId, long examId);
 
     boolean unStar(long userId, long caseId);
 

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

@@ -31,11 +31,11 @@ public class StarCaseLogicImpl implements StarCaseLogic {
     Exam2CaseService exam2CaseService;
 
     @Override
-    public boolean star(long userId, long caseId) {
-        if(caseService.getCaseById(caseId) != null){
-            return userStarCaseService.star(userId,caseId);
+    public boolean star(long userId, long caseId, long examId) {
+        if(exam2CaseService.getCaseIdsByExamId(examId).contains(caseId)){
+            return userStarCaseService.star(userId,caseId,examId);
         }
-        throw new HttpBadRequestException("case "+caseId+" not exist");
+        throw new HttpBadRequestException("exam "+examId+" has no case "+caseId);
     }
 
     @Override