浏览代码

Merge branch 'DEV' of http://git.mooctest.net/mooctest-server/main-site into DEV
ADD: api worker getTaskDetail

zhangxin 8 年之前
父节点
当前提交
c44ed75331

+ 22 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/fromKibug/MobileClientDao.java

@@ -0,0 +1,22 @@
+package cn.iselab.mooctest.site.dao.fromKibug;
+
+import cn.iselab.mooctest.site.models.Case;
+import cn.iselab.mooctest.site.models.fromKibug.IncrementId;
+import cn.iselab.mooctest.site.models.fromKibug.MobileClient;
+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;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * Created by NJUta on 2017/6/1.
+ */
+@Transactional
+public interface MobileClientDao  extends CrudRepository<MobileClient, Long> {
+    @Query("SELECT m FROM MobileClient m WHERE m.platform = :platform order by version desc")
+    Page<MobileClient> getLastestMobileClient(@Param("platform") short platform, Pageable page);
+}

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

@@ -42,4 +42,6 @@ public interface GroupService {
     int getManagerGroupCount(long managerId);
     int getManagerGroupCount(long managerId);
 
 
     Group save(Group group);
     Group save(Group group);
+
+    List<Long> getGroupIdsByTaskId(long taskId);
 }
 }

+ 0 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/application/impl/ApiServiceImpl.java

@@ -244,7 +244,6 @@ public class ApiServiceImpl implements ApiService {
         return result.toString();
         return result.toString();
     }
     }
 
 
-
     /**
     /**
      * POST methods
      * POST methods
      */
      */

+ 16 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/fromKibug/MobileClientService.java

@@ -0,0 +1,16 @@
+package cn.iselab.mooctest.site.service.fromKibug;
+
+import cn.iselab.mooctest.site.common.enums.AppPlatform;
+import cn.iselab.mooctest.site.models.fromKibug.MobileClient;
+import cn.iselab.mooctest.site.web.data.fromKibug.CreateMobileClientVO;
+
+import java.util.List;
+
+/**
+ * Created by NJUta on 2017/6/1.
+ */
+public interface MobileClientService {
+    List<MobileClient> getLastestMobileClients(AppPlatform platform) throws Exception;
+
+    int create(CreateMobileClientVO mobileClient) throws Exception;
+}

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

@@ -0,0 +1,67 @@
+package cn.iselab.mooctest.site.service.fromKibug.impl;
+
+import cn.iselab.mooctest.site.common.enums.AppPlatform;
+import cn.iselab.mooctest.site.dao.fromKibug.MobileClientDao;
+import cn.iselab.mooctest.site.models.fromKibug.MobileClient;
+import cn.iselab.mooctest.site.service.fromKibug.MobileClientService;
+import cn.iselab.mooctest.site.web.data.fromKibug.CreateMobileClientVO;
+import cn.iselab.mooctest.site.web.exception.IllegalOperationException;
+import cn.iselab.mooctest.site.web.util.Converter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by NJUta on 2017/6/1.
+ */
+@Service
+public class MobileClientServiceImpl implements MobileClientService {
+    @Autowired
+    private MobileClientDao mobileClientDao;
+
+    @Override
+    public List<MobileClient> getLastestMobileClients(AppPlatform platform) throws Exception {
+        List<MobileClient> mobileClients = new ArrayList<>();
+        MobileClient temp;
+        if (platform != null) {
+            temp = getLastestMobileClient(platform);
+            if (temp != null) mobileClients.add(temp);
+        } else {
+            temp = getLastestMobileClient(AppPlatform.ANDROID);
+            if (temp != null) mobileClients.add(temp);
+            temp = getLastestMobileClient(AppPlatform.IOS);
+            if (temp != null) mobileClients.add(temp);
+        }
+        return mobileClients;
+    }
+
+    @Override
+    public int create(CreateMobileClientVO mobileClient) throws Exception {
+        List<MobileClient> lastestMobileList = getLastestMobileClients(mobileClient.getParsedPlatform());
+        MobileClient lastestMobile = null;
+        if (lastestMobileList != null && lastestMobileList.size() > 0) {
+            lastestMobile = lastestMobileList.get(0);
+        }
+        if (lastestMobile != null && mobileClient.getVersion() <= lastestMobile.getVersion()) {
+            throw new IllegalOperationException();
+        }
+        MobileClient client = Converter.convert(MobileClient.class, mobileClient);
+        client.setPlatform(mobileClient.getParsedPlatform().getPlatformId());
+        mobileClientDao.save(client);
+        return 0;
+    }
+
+    private MobileClient getLastestMobileClient(AppPlatform platform) throws Exception {
+        Pageable pageable=new PageRequest(0,1);
+        List<MobileClient> mobileClients = mobileClientDao.getLastestMobileClient(platform.getPlatformId(),pageable).getContent();
+        if (mobileClients.size() > 0) {
+            return mobileClients.get(0);
+        } else {
+            return null;
+        }
+    }
+}

+ 13 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/GroupServiceImpl.java

@@ -188,4 +188,17 @@ public class GroupServiceImpl implements GroupService {
     public Group save(Group group) {
     public Group save(Group group) {
         return groupDao.save(group);
         return groupDao.save(group);
     }
     }
+
+    @Override
+    public List<Long> getGroupIdsByTaskId(long taskId) {
+        List<Task2Group> task2Groups = task2GroupDao.findByTaskId(taskId);
+        List<Long> groupIds = new ArrayList<>();
+
+        for (Task2Group task2Group : task2Groups
+                ) {
+            groupIds.add(task2Group.getGroupId());
+        }
+
+        return groupIds;
+    }
 }
 }

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

@@ -85,6 +85,11 @@ public class TaskController extends BaseController {
         return taskLogic.getTaskDetailByAdmin(taskId);
         return taskLogic.getTaskDetailByAdmin(taskId);
     }
     }
 
 
+    @RequestMapping(value = UrlConstants.API_WORKER + "task/{id:\\d+}", method = RequestMethod.GET)
+    public TaskVO getWorkerTaskDetail(HttpServletRequest request, @PathVariable("id") long taskId) {
+        long workerId = RequestUtils.getWorkerId(request);
+        return taskLogic.getTaskDetailByWorker(workerId, taskId);
+    }
 
 
     @RequestMapping(value = UrlConstants.API_MANAGER + "task/{id:\\d+}/assistantManager", method = RequestMethod.GET)
     @RequestMapping(value = UrlConstants.API_MANAGER + "task/{id:\\d+}/assistantManager", method = RequestMethod.GET)
     public List<ManagerVO> getAssistantManagersByTaskId(@PathVariable("id") long id, HttpServletRequest request) {
     public List<ManagerVO> getAssistantManagersByTaskId(@PathVariable("id") long id, HttpServletRequest request) {

+ 47 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/fromKibug/MobileClientController.java

@@ -5,15 +5,62 @@ import cn.iselab.mooctest.site.common.enums.AppPlatform;
 import cn.iselab.mooctest.site.common.web.ResponseMessage;
 import cn.iselab.mooctest.site.common.web.ResponseMessage;
 import cn.iselab.mooctest.site.common.web.SuccessResult;
 import cn.iselab.mooctest.site.common.web.SuccessResult;
 import cn.iselab.mooctest.site.models.fromKibug.MobileClient;
 import cn.iselab.mooctest.site.models.fromKibug.MobileClient;
+import cn.iselab.mooctest.site.service.fromKibug.MobileClientService;
+import cn.iselab.mooctest.site.web.data.fromKibug.CreateMobileClientVO;
 import cn.iselab.mooctest.site.web.data.fromKibug.MobileClientVO;
 import cn.iselab.mooctest.site.web.data.fromKibug.MobileClientVO;
 import cn.iselab.mooctest.site.web.util.Converter;
 import cn.iselab.mooctest.site.web.util.Converter;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 @RestController
 @RestController
 public class MobileClientController {
 public class MobileClientController {
 
 
+    @Autowired
+    private MobileClientService mobileClientService;
+    /**
+     * 获取最新客户端链接
+     *
+     * @throws Exception
+     */
+    @RequestMapping(value= UrlConstants.API_KIBUG+"client", method = RequestMethod.GET)
+    @ResponseBody
+    public Map<String, Object> get(@RequestParam(name = "platform", required = false) String platform) throws Exception {
+        AppPlatform appPlatform = null;
+        if (platform != null)
+            appPlatform = AppPlatform.parse(platform);
+        List<MobileClient> mobileClients = mobileClientService.getLastestMobileClients(appPlatform);
+        List<MobileClientVO> mobileClientVoList = Lists.transform(mobileClients, item -> {
+            MobileClientVO clientVo = Converter.convert(MobileClientVO.class, item);
+            clientVo.setPlatform(AppPlatform.fromShort(item.getPlatform()).getPlatform());
+            return clientVo;
+        });
+        SuccessResult successResult = new SuccessResult();
+        if (platform != null) {
+            successResult.put(ResponseMessage.ITEM_RESULT, mobileClientVoList.size() > 0 ? mobileClientVoList.get(0) : null);
+        } else {
+            successResult.put(ResponseMessage.List_RESULT, mobileClientVoList);
+        }
+        return successResult;
+    }
+
+    /**
+     * 创建最新客户端连接
+     *
+     * @param vo
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value= UrlConstants.API_KIBUG+"client", method = RequestMethod.POST)
+    public Map<String, Object> create(@RequestBody @NotNull CreateMobileClientVO vo) throws Exception {
+        vo.validate();
+        SuccessResult successResult = new SuccessResult();
+        int id = mobileClientService.create(vo);
+        successResult.put(ResponseMessage.ID_RESULT, id);
+        return successResult;
+    }
 }
 }

+ 9 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/TaskVO.java

@@ -23,8 +23,17 @@ public class TaskVO extends BaseVO {
     private List<CaseBlockVO> caseBlocks;
     private List<CaseBlockVO> caseBlocks;
     private Integer workerCount;
     private Integer workerCount;
     private List<ManagerVO> assistantManagers;
     private List<ManagerVO> assistantManagers;
+    private List<String> groupName;
     private Integer status;
     private Integer status;
 
 
+    public List<String> getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(List<String> groupName) {
+        this.groupName = groupName;
+    }
+
     public Long getId() {
     public Long getId() {
         return id;
         return id;
     }
     }

+ 31 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/fromKibug/CreateMobileClientVO.java

@@ -0,0 +1,31 @@
+package cn.iselab.mooctest.site.web.data.fromKibug;
+
+import cn.iselab.mooctest.site.common.enums.AppPlatform;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Created by NJUta on 2017/6/1.
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CreateMobileClientVO extends ValidateVO {
+    private String platform;
+    private String url;
+    private AppPlatform parsedPlatform;
+    private Float version;
+    private String description;
+
+    public AppPlatform getParsedPlatform() {
+        return parsedPlatform == null ? AppPlatform.parse(platform) : parsedPlatform;
+    }
+
+    @Override
+    public void validate() throws IllegalArgumentException {
+        notNull("platform", platform);
+        parsedPlatform = AppPlatform.parse(platform);
+        notNull("category", url);
+        notNull("version", version);
+        inLength("description", description, 0, 125);
+    }
+}

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

@@ -37,4 +37,6 @@ public interface TaskLogic {
     List<ManagerVO> getAssistantManagerByTaskId(long taskId, long managerId);
     List<ManagerVO> getAssistantManagerByTaskId(long taskId, long managerId);
 
 
     ManagerVO editAssistantManager(long managerId, long id, ManagerVO assisManagerVO);
     ManagerVO editAssistantManager(long managerId, long id, ManagerVO assisManagerVO);
+
+    TaskVO getTaskDetailByWorker(long workerId, long taskId);
 }
 }

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

@@ -546,4 +546,29 @@ public class TaskLogicImpl extends BaseLogic implements TaskLogic {
         return assisManagerVO;
         return assisManagerVO;
 
 
     }
     }
+
+    @Override
+    public TaskVO getTaskDetailByWorker(long workerId, long taskId) {
+        Task task = taskService.getTask(taskId);
+
+        if (task == null) {
+            throw new HttpNotFoundException("task not exits");
+        }
+        if (assignedTaskService.getAssignedTask(taskId, workerId) == null) {
+            throw new HttpForbiddenException("worker not task the task");
+        }
+
+        TaskVO taskVO = taskVOWrapper.wrap(task);
+        List<Long> groupIds = groupService.getGroupIdsByTaskId(taskId);
+
+        List<String> groupNames = new ArrayList<>();
+
+        for (Long groupId : groupIds) {
+            if (groupService.getWorkersByGroupId(groupId).contains(workerService.getWorkerById(workerId))) {
+                groupNames.add(groupService.getGroup(groupId).getName());
+            }
+        }
+        taskVO.setGroupName(groupNames);
+        return taskVO;
+    }
 }
 }

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

@@ -46,9 +46,9 @@ oss:
 spring:
 spring:
     profiles: dev
     profiles: dev
     datasource:
     datasource:
-        url: jdbc:mysql://localhost:3306/mooctest_main?useUnicode=yes&characterEncoding=UTF-8
+        url: jdbc:mysql://localhost:3306/mooctest_site?useUnicode=yes&characterEncoding=UTF-8
         username: root
         username: root
-        password:
+        password: zhangxin
 
 
 rpcServer:
 rpcServer:
     port: 9100
     port: 9100
@@ -76,7 +76,7 @@ spring:
     profiles: pre 
     profiles: pre 
     datasource:
     datasource:
         url: jdbc:mysql://localhost:3306/mooctest_main?useUnicode=yes&characterEncoding=UTF-8
         url: jdbc:mysql://localhost:3306/mooctest_main?useUnicode=yes&characterEncoding=UTF-8
-        username: root
+        username: mooctest
         password: secr3t!
         password: secr3t!
 
 
 server:
 server: