yangfeng 1 anno fa
parent
commit
de608cd811

+ 50 - 0
web/src/main/java/com/ynfy/app/api/v1/controller/ApiPracticeController.java

@@ -0,0 +1,50 @@
+package com.ynfy.app.api.v1.controller;
+
+import com.ynfy.app.api.v1.entity.dto.PracticeDTO;
+import com.ynfy.app.api.v1.util.TokenUtil;
+import com.ynfy.buss.exam.question.service.IQuestionService;
+import com.ynfy.buss.practice.userpractice.entity.dto.UserPracticeDTO;
+import com.ynfy.buss.practice.userpractice.service.IUserPracticeService;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RestController
+@RequestMapping("/api/v1/practice")
+public class ApiPracticeController extends ApiBaseController {
+
+    @Autowired
+    public IUserPracticeService userPracticeService;
+
+    @Autowired
+    private IQuestionService questionService;
+
+
+    /**
+     * 按练习模式获取指定题库题目
+     *
+     * @return
+     */
+    @ApiOperation(value = "按练习模式获取指定题库题目", notes = "按练习模式获取指定题库题目")
+    @PostMapping(value = "/listQuestionByMode")
+    public Result<?> listQuestionByPracticeMode(@RequestBody PracticeDTO dto) {
+        return Result.OK(questionService.listQuestionByPracticeMode(dto.getPageNo(), dto.getPageSize(),
+                dto.getRepositoryId(), dto.getQuestionType(), dto.getMode()));
+    }
+
+    /**
+     * 提交练习
+     *
+     * @return
+     */
+    @ApiOperation(value = "提交练习")
+    @PostMapping(value = "/submitPractice")
+    public Result<?> submitPractice(@RequestBody UserPracticeDTO dto) {
+        dto.setUserId(TokenUtil.getUserId(TokenUtil.getToken(request)));
+        return Result.OK("提交练习成功!", userPracticeService.submitPractice(dto));
+    }
+
+}

+ 85 - 0
web/src/main/java/com/ynfy/app/api/v1/controller/ApiRepositoryController.java

@@ -0,0 +1,85 @@
+package com.ynfy.app.api.v1.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ynfy.app.api.v1.entity.dto.RepositoryDTO;
+import com.ynfy.buss.exam.question.dto.QuestionDTO;
+import com.ynfy.buss.exam.question.enums.QuestionType;
+import com.ynfy.buss.exam.question.service.IQuestionService;
+import com.ynfy.buss.exam.repository.entity.Repository;
+import com.ynfy.buss.exam.repository.service.IRepositoryService;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@RestController
+@RequestMapping("/api/v1/repository")
+public class ApiRepositoryController extends ApiBaseController {
+
+    @Autowired
+    public IRepositoryService repositoryService;
+
+    @Autowired
+    private IQuestionService questionService;
+
+
+    /**
+     * 获取列表
+     *
+     * @return
+     */
+    @PostMapping("/list")
+    public Result<IPage<Repository>> list(@RequestBody RepositoryDTO repositoryDTO) {
+        Page<Repository> page = new Page<>(repositoryDTO.getPageNo(), repositoryDTO.getPageSize());
+        LambdaQueryWrapper<Repository> query = new LambdaQueryWrapper<>();
+        query.like(Repository::getTitle, repositoryDTO.getRepositoryTitle());
+        IPage<Repository> pageList = repositoryService.page(page, query);
+        List<Repository> list = pageList.getRecords();
+        if (!CollectionUtils.isEmpty(list)) {
+            List<String> idList = list.stream().map(Repository::getId).collect(Collectors.toList());
+            List<QuestionDTO> questionDTOList = questionService.countQuestionType(idList);
+            Map<String, List<QuestionDTO>> map = questionDTOList.stream().collect(Collectors
+                    .groupingBy(QuestionDTO::getRepositoryId, Collectors.toList()));
+            list.forEach(l -> {
+                List<QuestionDTO> dtoList = map.get(l.getId());
+                if (!CollectionUtils.isEmpty(dtoList)) {
+                    l.setNum(dtoList.stream().mapToInt(QuestionDTO::getNum).sum());
+                    StringBuilder str = new StringBuilder();
+                    int index = 0;
+                    for (QuestionDTO dto : dtoList) {
+                        str.append(QuestionType.getByCode(dto.getType()).getValue()).append(dto.getNum()).append("题");
+                        if (index < dtoList.size() - 1) {
+                            str.append(",");
+                        }
+                        index++;
+                    }
+                    l.setQuestionRemark(str.toString());
+                }
+            });
+        }
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 计算指定题库的题目题型数量
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "计算指定题库的题目题型数量", notes = "计算指定题库的题目题型数量")
+    @GetMapping(value = "/getById")
+    public Result<Repository> getById(@RequestParam String id) {
+        Repository repository = repositoryService.getById(id);
+        repository.setQuestionDTOList(questionService.countQuestionNumByType(id));
+        return Result.OK(repository);
+    }
+}

+ 20 - 0
web/src/main/java/com/ynfy/app/api/v1/entity/dto/PracticeDTO.java

@@ -0,0 +1,20 @@
+package com.ynfy.app.api.v1.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class PracticeDTO {
+
+    private String repositoryId;
+
+    /**
+     * 练习模式
+     */
+    private Integer mode;
+
+    private Integer questionType;
+
+    private Integer pageNo;
+
+    private Integer pageSize;
+}

+ 13 - 0
web/src/main/java/com/ynfy/app/api/v1/entity/dto/RepositoryDTO.java

@@ -0,0 +1,13 @@
+package com.ynfy.app.api.v1.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class RepositoryDTO {
+
+    private String repositoryTitle;
+
+    private Integer pageNo;
+
+    private Integer pageSize;
+}

+ 2 - 0
web/src/main/java/com/ynfy/buss/practice/userpractice/controller/UserPracticeController.java

@@ -179,6 +179,8 @@ public class UserPracticeController extends JeecgController<UserPractice, IUserP
     @ApiOperation(value = "提交练习")
     @PostMapping(value = "/submitPractice")
     public Result<?> submitPractice(@RequestBody UserPracticeDTO dto) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        dto.setUserId(user.getId());
         return Result.OK("提交练习成功!", userPracticeService.submitPractice(dto));
     }
 

+ 2 - 0
web/src/main/java/com/ynfy/buss/practice/userpractice/entity/dto/UserPracticeDTO.java

@@ -12,6 +12,8 @@ import java.util.List;
 @Data
 public class UserPracticeDTO {
 
+    private String userId;
+
     /**
      * 题库id
      */

+ 2 - 3
web/src/main/java/com/ynfy/buss/practice/userpractice/service/impl/UserPracticeServiceImpl.java

@@ -70,8 +70,7 @@ public class UserPracticeServiceImpl extends ServiceImpl<UserPracticeMapper, Use
             throw new JeecgBootException("练习题目为空");
         }
         UserPractice userPractice = new UserPractice();
-        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        userPractice.setUserId(user.getId());
+        userPractice.setUserId(dto.getUserId());
         userPractice.setType(1);
         userPractice.setRepositoryId(dto.getRepositoryId());
         userPractice.setMode(dto.getMode());
@@ -155,7 +154,7 @@ public class UserPracticeServiceImpl extends ServiceImpl<UserPracticeMapper, Use
     }
 
     @Override
-    public IPage<UserPractice> selectPageList(IPage<UserPractice> page, UserPractice userPractice){
+    public IPage<UserPractice> selectPageList(IPage<UserPractice> page, UserPractice userPractice) {
         return userPracticeMapper.selectPageList(page, userPractice);
     }
 }