ソースを参照

MOD:update admin apis

zhangxin 8 年 前
コミット
cbd7215bff
17 ファイル変更284 行追加12 行削除
  1. 18 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/ManagerSubsiteFeatureDao.java
  2. 1 1
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/ManagerSubsiteFeature.java
  3. 2 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/AppService.java
  4. 18 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/ManagerSubsiteFeatureService.java
  5. 10 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/AppServiceImpl.java
  6. 36 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/ManagerSubsiteFeatureServiceImpl.java
  7. 7 4
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/AppController.java
  8. 5 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/TaskController.java
  9. 57 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/ManagerSubsiteFeatureVO.java
  10. 11 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/ManagerVO.java
  11. 42 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ManagerSubsiteFeatureVOWrapper.java
  12. 4 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ManagerVOWrapper.java
  13. 3 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/AppLogic.java
  14. 2 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/TaskLogic.java
  15. 11 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/AppLogicImpl.java
  16. 42 7
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ManagerLogicImpl.java
  17. 15 0
      mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/TaskLogicImpl.java

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

@@ -0,0 +1,18 @@
+package cn.iselab.mooctest.site.dao;
+
+import cn.iselab.mooctest.site.models.ManagerSubsiteFeature;
+import cn.iselab.mooctest.site.models.MobileVerification;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * @author guoyc
+ * @date 2017-03-27 4:15 PM.
+ */
+@Transactional
+public interface ManagerSubsiteFeatureDao extends CrudRepository<ManagerSubsiteFeature, Long> {
+
+    List<ManagerSubsiteFeature> findByManagerId(long managerId);
+}

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

@@ -13,7 +13,7 @@ public class ManagerSubsiteFeature {
     @GeneratedValue
     private long id;
 
-    @Column(name = "exprie_time")
+    @Column(name = "expire_time")
     private Timestamp expireTime;
 
     @Column(name = "feature_id")

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/AppService.java

@@ -19,5 +19,7 @@ public interface AppService {
 
     App getAppById(long appId);
 
+    void verifyApp(App app);
 
+    App findById(long id);
 }

+ 18 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/ManagerSubsiteFeatureService.java

@@ -0,0 +1,18 @@
+package cn.iselab.mooctest.site.service;
+
+import cn.iselab.mooctest.site.models.ManagerSubsiteFeature;
+
+import java.util.List;
+
+/**
+ * @author guoyc
+ * @date 2017-03-27 4:13 PM.
+ */
+public interface ManagerSubsiteFeatureService {
+
+    void save(ManagerSubsiteFeature managerSubsiteFeature);
+
+    List<ManagerSubsiteFeature> getManagerSubsiteFeatureByManagerId(long managerId);
+
+    void deleteManagerSubsiteFeature(long managerId);
+}

+ 10 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/AppServiceImpl.java

@@ -42,6 +42,16 @@ public class AppServiceImpl implements AppService {
     }
 
     @Override
+    public App findById(long id) {
+        return appDao.findOne(id);
+    }
+
+    @Override
+    public void verifyApp(App app) {
+        appDao.save(app);
+    }
+
+    @Override
     public App getAppById(long appId) {
         return appDao.findOne(appId);
     }

+ 36 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/ManagerSubsiteFeatureServiceImpl.java

@@ -0,0 +1,36 @@
+package cn.iselab.mooctest.site.service.impl;
+
+import cn.iselab.mooctest.site.dao.ManagerSubsiteFeatureDao;
+import cn.iselab.mooctest.site.models.ManagerSubsiteFeature;
+import cn.iselab.mooctest.site.service.ManagerSubsiteFeatureService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author guoyc
+ * @date 2017-03-27 4:16 PM.
+ */
+@Service
+public class ManagerSubsiteFeatureServiceImpl implements ManagerSubsiteFeatureService {
+
+    @Autowired
+    private ManagerSubsiteFeatureDao managerSubsiteFeatureDao;
+
+    @Override
+    public void save(ManagerSubsiteFeature managerSubsiteFeature) {
+        managerSubsiteFeatureDao.save(managerSubsiteFeature);
+    }
+
+    @Override
+    public List<ManagerSubsiteFeature> getManagerSubsiteFeatureByManagerId(long managerId) {
+        return managerSubsiteFeatureDao.findByManagerId(managerId);
+    }
+
+    @Override
+    public void deleteManagerSubsiteFeature(long managerId) {
+        List<ManagerSubsiteFeature> managerSubsiteFeatures = managerSubsiteFeatureDao.findByManagerId(managerId);
+        managerSubsiteFeatureDao.delete(managerSubsiteFeatures);
+    }
+}

+ 7 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/AppController.java

@@ -1,14 +1,13 @@
 package cn.iselab.mooctest.site.web.ctrl;
 
 import cn.iselab.mooctest.site.common.constant.UrlConstants;
+import cn.iselab.mooctest.site.models.App;
 import cn.iselab.mooctest.site.util.http.RequestUtils;
 import cn.iselab.mooctest.site.web.data.AppVO;
 import cn.iselab.mooctest.site.web.logic.AppLogic;
+import com.sun.org.apache.regexp.internal.RE;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
@@ -40,4 +39,8 @@ public class AppController extends BaseController {
         return appLogic.getAllApps();
     }
 
+    @RequestMapping(value = UrlConstants.API_ADMIN + "app/{id:\\d+}", method = RequestMethod.PUT)
+    public void verifyApp(@PathVariable("id") long id , @RequestBody AppVO appVO){
+        appLogic.verifyApp(id, appVO);
+    }
 }

+ 5 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/TaskController.java

@@ -65,4 +65,9 @@ public class TaskController extends BaseController {
     public List<TaskVO> getTasks() {
         return taskLogic.getAllTasks();
     }
+
+    @RequestMapping(value = UrlConstants.API_ADMIN + "task/{id:\\d+}", method = RequestMethod.GET)
+    public TaskVO getTaskDetail(@PathVariable("id") long taskId) {
+        return taskLogic.getTaskDetailByAdmin(taskId);
+    }
 }

+ 57 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/ManagerSubsiteFeatureVO.java

@@ -0,0 +1,57 @@
+package cn.iselab.mooctest.site.web.data;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author guoyc
+ * @date 2017-03-27 3:47 PM.
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ManagerSubsiteFeatureVO {
+
+    private long id;
+    private long expireTime;
+    private long featureId;
+    private long managerId;
+    private long subsiteId;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public long getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(long expireTime) {
+        this.expireTime = expireTime;
+    }
+
+    public long getFeatureId() {
+        return featureId;
+    }
+
+    public void setFeatureId(long featureId) {
+        this.featureId = featureId;
+    }
+
+    public long getManagerId() {
+        return managerId;
+    }
+
+    public void setManagerId(long managerId) {
+        this.managerId = managerId;
+    }
+
+    public long getSubsiteId() {
+        return subsiteId;
+    }
+
+    public void setSubsiteId(long subsiteId) {
+        this.subsiteId = subsiteId;
+    }
+}

+ 11 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/ManagerVO.java

@@ -3,6 +3,8 @@ package cn.iselab.mooctest.site.web.data;
 import cn.iselab.mooctest.site.common.constant.AccountConstants;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
+import java.util.List;
+
 /**
  * @author sean
  * @date 2017-03-05.
@@ -23,6 +25,15 @@ public class ManagerVO extends CaptchaBaseVO {
     private int groupNum = AccountConstants.DEFAULT_GROUP_NUM;
     private int groupSize = AccountConstants.DEFAULT_GROUP_SIZE;
     private int taskNum = AccountConstants.DEFAULT_TASK_NUM;
+    private List<ManagerSubsiteFeatureVO> managerSubsiteFeatures;
+
+    public List<ManagerSubsiteFeatureVO> getManagerSubsiteFeatures() {
+        return managerSubsiteFeatures;
+    }
+
+    public void setManagerSubsiteFeatures(List<ManagerSubsiteFeatureVO> managerSubsiteFeatures) {
+        this.managerSubsiteFeatures = managerSubsiteFeatures;
+    }
 
     public int getGroupNum() {
         return groupNum;

+ 42 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ManagerSubsiteFeatureVOWrapper.java

@@ -0,0 +1,42 @@
+package cn.iselab.mooctest.site.web.data.wrapper;
+
+import cn.iselab.mooctest.site.models.ManagerSubsiteFeature;
+import cn.iselab.mooctest.site.web.data.ManagerSubsiteFeatureVO;
+import com.fasterxml.jackson.databind.deser.Deserializers;
+import org.springframework.stereotype.Service;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guoyc
+ * @date 2017-03-27 4:01 PM.
+ */
+@Service
+public class ManagerSubsiteFeatureVOWrapper extends BaseWrapper<ManagerSubsiteFeatureVO, ManagerSubsiteFeature> {
+
+    @Override
+    public ManagerSubsiteFeatureVO wrap(ManagerSubsiteFeature managerSubsiteFeature) {
+        ManagerSubsiteFeatureVO managerSubsiteFeatureVO = new ManagerSubsiteFeatureVO();
+
+        managerSubsiteFeatureVO.setId(managerSubsiteFeatureVO.getId());
+        managerSubsiteFeatureVO.setExpireTime(managerSubsiteFeature.getExpireTime().getTime());
+        managerSubsiteFeatureVO.setFeatureId(managerSubsiteFeature.getFeatureId());
+        managerSubsiteFeatureVO.setManagerId(managerSubsiteFeature.getManagerId());
+        managerSubsiteFeatureVO.setSubsiteId(managerSubsiteFeature.getSubsiteId());
+
+        return managerSubsiteFeatureVO;
+    }
+
+    @Override
+    public ManagerSubsiteFeature unwrap(ManagerSubsiteFeatureVO data) {
+        ManagerSubsiteFeature managerSubsiteFeature = new ManagerSubsiteFeature();
+
+        managerSubsiteFeature.setSubsiteId(data.getSubsiteId());
+        managerSubsiteFeature.setManagerId(data.getManagerId());
+        managerSubsiteFeature.setFeatureId(data.getFeatureId());
+        managerSubsiteFeature.setExpireTime(new Timestamp(data.getExpireTime()));
+        managerSubsiteFeature.setId(data.getId());
+
+        return managerSubsiteFeature;
+    }
+}

+ 4 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ManagerVOWrapper.java

@@ -1,10 +1,13 @@
 package cn.iselab.mooctest.site.web.data.wrapper;
 
 import cn.iselab.mooctest.site.models.Manager;
+import cn.iselab.mooctest.site.models.ManagerSubsiteFeature;
+import cn.iselab.mooctest.site.web.data.ManagerSubsiteFeatureVO;
 import cn.iselab.mooctest.site.web.data.ManagerVO;
 import org.springframework.stereotype.Service;
 
 import java.sql.Timestamp;
+import java.util.List;
 
 /**
  * @author sean
@@ -33,6 +36,7 @@ public class ManagerVOWrapper extends BaseWrapper<ManagerVO, Manager> {
         vo.setOpenid(manager.getOpenid());
         vo.setStatus(manager.getStatus());
         vo.setTaskNum(manager.getTaskNum());
+
         return vo;
 
     }

+ 3 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/AppLogic.java

@@ -1,5 +1,6 @@
 package cn.iselab.mooctest.site.web.logic;
 
+import cn.iselab.mooctest.site.models.App;
 import cn.iselab.mooctest.site.web.data.AppVO;
 
 import java.util.List;
@@ -15,4 +16,6 @@ public interface AppLogic {
     List<AppVO> getAllApps();
 
     AppVO uploadApp(AppVO appVO, long managerId);
+
+    void verifyApp(long id, AppVO appVO);
 }

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/TaskLogic.java

@@ -25,4 +25,6 @@ public interface TaskLogic {
 
     List<AssignedTaskVO> getAssignedTasks(long managerId, long taskId);
 
+    TaskVO getTaskDetailByAdmin(long taskId);
+
 }

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

@@ -8,6 +8,7 @@ import cn.iselab.mooctest.site.service.ManagerService;
 import cn.iselab.mooctest.site.service.common.SubsiteService;
 import cn.iselab.mooctest.site.web.data.AppVO;
 import cn.iselab.mooctest.site.web.data.wrapper.AppVOWrapper;
+import cn.iselab.mooctest.site.web.exception.HttpNotFoundException;
 import cn.iselab.mooctest.site.web.logic.AppLogic;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -72,4 +73,14 @@ public class AppLogicImpl implements AppLogic {
         app = appService.uploadCase(app);
         return appVOWrapper.wrap(app);
     }
+
+    @Override
+    public void verifyApp(long id, AppVO appVO) {
+        App app = appService.findById(id);
+        if (app == null){
+            throw new HttpNotFoundException("app not exist");
+        }
+        app.setStatus(appVO.getStatus());
+        appService.verifyApp(app);
+    }
 }

+ 42 - 7
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ManagerLogicImpl.java

@@ -1,15 +1,17 @@
 package cn.iselab.mooctest.site.web.logic.impl;
 
 import cn.iselab.mooctest.site.models.Manager;
+import cn.iselab.mooctest.site.models.ManagerSubsiteFeature;
 import cn.iselab.mooctest.site.models.MobileVerification;
 import cn.iselab.mooctest.site.service.ManagerService;
+import cn.iselab.mooctest.site.service.ManagerSubsiteFeatureService;
 import cn.iselab.mooctest.site.service.MobileVerificationService;
 import cn.iselab.mooctest.site.util.data.EncryptionUtil;
-import cn.iselab.mooctest.site.web.data.AccountVO;
+import cn.iselab.mooctest.site.web.data.ManagerSubsiteFeatureVO;
 import cn.iselab.mooctest.site.web.data.ManagerVO;
+import cn.iselab.mooctest.site.web.data.wrapper.ManagerSubsiteFeatureVOWrapper;
 import cn.iselab.mooctest.site.web.data.wrapper.ManagerVOWrapper;
 import cn.iselab.mooctest.site.web.exception.HttpBadRequestException;
-import cn.iselab.mooctest.site.web.exception.HttpNotFoundException;
 import cn.iselab.mooctest.site.web.logic.ManagerLogic;
 import cn.iselab.mooctest.site.web.util.CaptchaUtils;
 import org.apache.commons.validator.routines.EmailValidator;
@@ -17,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
+import java.sql.Timestamp;
 import java.util.List;
 
 /**
@@ -35,6 +38,12 @@ public class ManagerLogicImpl implements ManagerLogic {
     @Autowired
     private ManagerVOWrapper managerVOWrapper;
 
+    @Autowired
+    private ManagerSubsiteFeatureVOWrapper managerSubsiteFeatureVOWrapper;
+
+    @Autowired
+    private ManagerSubsiteFeatureService managerSubsiteFeatureService;
+
     @Override
     public ManagerVO getManagerDetail(long managerId) {
         Manager manager = managerService.getManagerById(managerId);
@@ -60,9 +69,35 @@ public class ManagerLogicImpl implements ManagerLogic {
         manager.setGroupSize(managerVO.getGroupSize());
         manager.setGroupNum(managerVO.getGroupNum());
         manager.setTaskNum(managerVO.getTaskNum());
-        return managerVOWrapper.wrap(managerService.updateManager(manager));
+
+        List<ManagerSubsiteFeatureVO> managerSubsiteFeatureVOS = managerVO.getManagerSubsiteFeatures();
+        if (managerSubsiteFeatureVOS == null) {
+            return managerVOWrapper.wrap(managerService.updateManager(manager));
+        } else {
+            managerSubsiteFeatureService.deleteManagerSubsiteFeature(id);
+
+            List<ManagerSubsiteFeature> managerSubsiteFeatures = managerSubsiteFeatureVOWrapper.unwrap(managerSubsiteFeatureVOS);
+
+            for (int i = 0; i < managerSubsiteFeatures.size(); i++) {
+                ManagerSubsiteFeature managerSubsiteFeature = new ManagerSubsiteFeature();
+                ManagerSubsiteFeature managerSubsiteFeatureinList = managerSubsiteFeatures.get(i);
+
+                managerSubsiteFeature.setId(managerSubsiteFeatureinList.getId());
+                managerSubsiteFeature.setExpireTime(managerSubsiteFeatureinList.getExpireTime());
+                managerSubsiteFeature.setFeatureId(managerSubsiteFeatureinList.getFeatureId());
+                managerSubsiteFeature.setManagerId(id);
+                managerSubsiteFeature.setSubsiteId(managerSubsiteFeatureinList.getSubsiteId());
+
+                managerSubsiteFeatureService.save(managerSubsiteFeature);
+            }
+        }
+        ManagerVO newManagerVO = managerVOWrapper.wrap(managerService.updateManager(manager));
+        newManagerVO.setManagerSubsiteFeatures(managerSubsiteFeatureVOS);
+        return newManagerVO;
     }
 
+
+
     @Override
     public ManagerVO editManagerEmail(long managerId, ManagerVO managerVO) {
         Manager manager = managerService.getManagerById(managerId);
@@ -72,7 +107,7 @@ public class ManagerLogicImpl implements ManagerLogic {
         if (!EmailValidator.getInstance().isValid(managerVO.getEmail())) {
             throw new HttpBadRequestException("Invalid email");
         }
-        if(managerService.getManagerByAccount(managerVO.getEmail()) != null){
+        if (managerService.getManagerByAccount(managerVO.getEmail()) != null) {
             throw new HttpBadRequestException("Email already exist");
         }
         manager.setEmail(managerVO.getEmail());
@@ -87,7 +122,7 @@ public class ManagerLogicImpl implements ManagerLogic {
             throw new HttpBadRequestException("manager not exist");
         }
         MobileVerification mobileVerification = mobileVerificationService.getVerification(newMobile);
-        if(!mobileVerificationService.validateMobileVerification(newMobile, mobileVerification.getCode())){
+        if (!mobileVerificationService.validateMobileVerification(newMobile, mobileVerification.getCode())) {
             throw new HttpBadRequestException("Verification error");
         }
         manager.setMobile(newMobile);
@@ -101,7 +136,7 @@ public class ManagerLogicImpl implements ManagerLogic {
             throw new HttpBadRequestException("manager not exist");
         }
         String encryptedPwd = EncryptionUtil.encryptMD5(managerVO.getPassword());
-        if(!CaptchaUtils.verifyPictureCaptcha(request, managerVO.getCaptcha())){
+        if (!CaptchaUtils.verifyPictureCaptcha(request, managerVO.getCaptcha())) {
             throw new HttpBadRequestException("Captcha error");
         }
         manager.setPassword(encryptedPwd);
@@ -110,7 +145,7 @@ public class ManagerLogicImpl implements ManagerLogic {
 
     @Override
     public boolean checkManagerExist(String username) {
-        if(managerService.getManagerByUsername(username) == null){
+        if (managerService.getManagerByUsername(username) == null) {
             return false;
         }
         return true;

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

@@ -265,6 +265,21 @@ public class TaskLogicImpl extends BaseLogic implements TaskLogic {
 
 
         return assignedTaskVOs;
+    }
+
+    @Override
+    public TaskVO getTaskDetailByAdmin(long taskId) {
+        Task task = taskService.getTask(taskId);
+
+        if (task == null ) {
+            return null;
+        }
 
+        TaskVO vo = taskVOWrapper.wrap(task);
+
+        List<CaseBlock> caseBlocks = taskService.getCaseBlocks(taskId);
+        vo.setCaseBlocks(caseBlockVOWrapper.wrap(caseBlocks));
+
+        return vo;
     }
 }