Browse Source

校验员获取批次

ting.yin 3 years ago
parent
commit
6d72484674

+ 14 - 2
src/main/java/cn/com/qmth/print/manage/controller/BaseController.java

@@ -19,10 +19,12 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
-import com.qmth.boot.core.exception.StatusException;
-
+import cn.com.qmth.print.manage.config.PmConstants;
+import cn.com.qmth.print.manage.service.PmSession;
 import cn.com.qmth.print.manage.utils.ObjectUtil;
 
+import com.qmth.boot.core.exception.StatusException;
+
 public class BaseController {
 
     protected HttpServletRequest currentRequest() {
@@ -127,4 +129,14 @@ public class BaseController {
         return response;
     }
 
+    /**
+     * 获取接入用户
+     *
+     * @return
+     */
+    protected Long getAccessUserId(PmSession accessEntity) {
+        String identity = accessEntity.getIdentity();
+        String userId = identity.substring(PmConstants.USER_SESSION_KEY_PREFIX.length());
+        return Long.parseLong(userId);
+    }
 }

+ 11 - 5
src/main/java/cn/com/qmth/print/manage/controller/BreakRecordController.java

@@ -3,11 +3,13 @@ package cn.com.qmth.print.manage.controller;
 import javax.annotation.Resource;
 
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import cn.com.qmth.print.manage.service.BreakRecordService;
+import cn.com.qmth.print.manage.service.PmSession;
 import cn.com.qmth.print.manage.service.query.RecordQuery;
 
 import com.qmth.boot.api.annotation.Aac;
@@ -17,7 +19,7 @@ import com.qmth.boot.api.constant.ApiConstant;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/break")
 @Aac(strict = BOOL.FALSE, auth = BOOL.TRUE)
-public class BreakRecordController {
+public class BreakRecordController extends BaseController {
 
     @Resource
     private BreakRecordService breakRecordService;
@@ -28,12 +30,16 @@ public class BreakRecordController {
     }
 
     @RequestMapping("/start")
-    public Object start(@RequestParam Long examId, @RequestParam String startNumber) {
-        return breakRecordService.list();
+    public Object start(@RequestAttribute PmSession accessEntity, @RequestParam Long examId,
+            @RequestParam String startNumber) {
+        Long userId = getAccessUserId(accessEntity);
+        return breakRecordService.start(userId, examId, startNumber);
     }
 
     @RequestMapping("/end")
-    public Object end(@RequestParam Long id, @RequestParam Long examId, @RequestParam String endNumber) {
-        return breakRecordService.list();
+    public Object end(@RequestAttribute PmSession accessEntity, @RequestParam Long id, @RequestParam Long examId,
+            @RequestParam String endNumber) {
+        Long userId = getAccessUserId(accessEntity);
+        return breakRecordService.end(id, userId, examId, endNumber);
     }
 }

+ 11 - 5
src/main/java/cn/com/qmth/print/manage/controller/CheckRecordController.java

@@ -3,11 +3,13 @@ package cn.com.qmth.print.manage.controller;
 import javax.annotation.Resource;
 
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import cn.com.qmth.print.manage.service.CheckRecordService;
+import cn.com.qmth.print.manage.service.PmSession;
 import cn.com.qmth.print.manage.service.query.RecordQuery;
 
 import com.qmth.boot.api.annotation.Aac;
@@ -17,7 +19,7 @@ import com.qmth.boot.api.constant.ApiConstant;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/check")
 @Aac(strict = BOOL.FALSE, auth = BOOL.TRUE)
-public class CheckRecordController {
+public class CheckRecordController extends BaseController {
 
     @Resource
     private CheckRecordService checkRecordService;
@@ -28,13 +30,17 @@ public class CheckRecordController {
     }
 
     @RequestMapping("/start")
-    public Object start(@RequestParam Long examId, @RequestParam String startNumber) {
-        return checkRecordService.start(examId, startNumber);
+    public Object start(@RequestAttribute PmSession accessEntity, @RequestParam Long examId,
+            @RequestParam String startNumber) {
+        Long userId = getAccessUserId(accessEntity);
+        return checkRecordService.start(userId, examId, startNumber);
     }
 
     @RequestMapping("/end")
-    public Object end(@RequestParam Long id, @RequestParam Long examId, @RequestParam String endNumber) {
-        return checkRecordService.end(id, examId, endNumber);
+    public Object end(@RequestAttribute PmSession accessEntity, @RequestParam Long id, @RequestParam Long examId,
+            @RequestParam String endNumber) {
+        Long userId = getAccessUserId(accessEntity);
+        return checkRecordService.end(id, userId, examId, endNumber);
     }
 
 }

+ 13 - 1
src/main/java/cn/com/qmth/print/manage/controller/ExamController.java

@@ -2,6 +2,7 @@ package cn.com.qmth.print.manage.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import cn.com.qmth.print.manage.entity.ExamEntity;
 import cn.com.qmth.print.manage.service.ExamService;
+import cn.com.qmth.print.manage.service.PmSession;
 import cn.com.qmth.print.manage.service.query.ExamQuery;
 
 import com.qmth.boot.api.annotation.Aac;
@@ -21,7 +23,7 @@ import com.qmth.boot.api.constant.ApiConstant;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/exam")
 @Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
-public class ExamController {
+public class ExamController extends BaseController {
 
     @Autowired
     private ExamService examService;
@@ -58,4 +60,14 @@ public class ExamController {
         return examService.saveExam(exam);
     }
 
+    /**
+     * 批次查询
+     *
+     * @return
+     */
+    @RequestMapping(value = "/listByChecker", method = RequestMethod.POST)
+    public Object listByChecker(@RequestAttribute PmSession accessEntity) {
+        Long userId = getAccessUserId(accessEntity);
+        return examService.listByUserId(userId);
+    }
 }

+ 7 - 2
src/main/java/cn/com/qmth/print/manage/controller/SysController.java

@@ -2,13 +2,17 @@ package cn.com.qmth.print.manage.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import cn.com.qmth.print.manage.service.AuthService;
+import cn.com.qmth.print.manage.service.PmSession;
 
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 
 /**
@@ -33,8 +37,9 @@ public class SysController {
         return authService.login(loginName, password);
     }
 
+    @Aac(strict = BOOL.FALSE, auth = BOOL.TRUE)
     @PostMapping("/logout")
-    public void logout() {
-        authService.logout();
+    public void logout(@RequestAttribute PmSession accessEntity) {
+        authService.logout(accessEntity);
     }
 }

+ 6 - 1
src/main/java/cn/com/qmth/print/manage/dao/ExamDao.java

@@ -1,15 +1,20 @@
 package cn.com.qmth.print.manage.dao;
 
-import cn.com.qmth.print.manage.entity.ExamEntity;
+import java.util.List;
 
+import cn.com.qmth.print.manage.entity.ExamEntity;
 import cn.com.qmth.print.manage.service.query.ExamQuery;
 import cn.com.qmth.print.manage.vo.ExamVo;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
 import org.apache.ibatis.annotations.Param;
 
 public interface ExamDao extends BaseMapper<ExamEntity> {
 
     IPage<ExamVo> pageExam(@Param("page") Page<ExamVo> page, @Param("query") ExamQuery query);
+
+    List<ExamEntity> listByUserId(@Param("userId") Long userId);
 }

+ 3 - 2
src/main/java/cn/com/qmth/print/manage/service/AuthService.java

@@ -41,8 +41,8 @@ public class AuthService implements AuthorizationService<PmSession> {
         return user;
     }
 
-    public void logout() {
-        // userMap.remove(identity);
+    public void logout(PmSession accessEntity) {
+        userMap.remove(accessEntity.getIdentity());
     }
 
     @Override
@@ -54,4 +54,5 @@ public class AuthService implements AuthorizationService<PmSession> {
     public boolean hasPermission(PmSession accessEntity, String path) {
         return true;
     }
+
 }

+ 2 - 2
src/main/java/cn/com/qmth/print/manage/service/BreakRecordService.java

@@ -11,9 +11,9 @@ import java.util.List;
 
 public interface BreakRecordService extends IService<BreakRecordEntity> {
 
-    BreakRecordVo start(Long examId, String startNumber);
+    BreakRecordVo start(Long userId, Long examId, String startNumber);
 
-    BreakRecordVo end(Long id, Long examId, String endNumber);
+    BreakRecordVo end(Long id, Long userId, Long examId, String endNumber);
 
     IPage<BreakRecordEntity> pageQuery(RecordQuery query);
 

+ 2 - 2
src/main/java/cn/com/qmth/print/manage/service/CheckRecordService.java

@@ -12,9 +12,9 @@ import java.util.List;
 
 public interface CheckRecordService extends IService<CheckRecordEntity> {
 
-    CheckRecordVo start(Long examId, String startNumber);
+    CheckRecordVo start(Long userId, Long examId, String startNumber);
 
-    CheckRecordVo end(Long id, Long examId, String endNumber);
+    CheckRecordVo end(Long id, Long userId, Long examId, String endNumber);
 
     CheckRecordEntity findByGroupTypeAndGroupName(GroupType type, String groupName);
 

+ 3 - 1
src/main/java/cn/com/qmth/print/manage/service/ExamService.java

@@ -1,9 +1,9 @@
 package cn.com.qmth.print.manage.service;
 
 import cn.com.qmth.print.manage.entity.ExamEntity;
-
 import cn.com.qmth.print.manage.service.query.ExamQuery;
 import cn.com.qmth.print.manage.vo.ExamVo;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -16,4 +16,6 @@ public interface ExamService extends IService<ExamEntity> {
     Long saveExam(ExamEntity exam);
 
     IPage<ExamVo> pageQuery(ExamQuery query);
+
+    List<ExamEntity> listByUserId(Long userId);
 }

+ 4 - 2
src/main/java/cn/com/qmth/print/manage/service/impl/BreakRecordServiceImpl.java

@@ -39,7 +39,7 @@ public class BreakRecordServiceImpl extends ServiceImpl<BreakRecordDao, BreakRec
     private ExamService examService;
 
     @Override
-    public BreakRecordVo start(Long examId, String startNumber) {
+    public BreakRecordVo start(Long userId, Long examId, String startNumber) {
         ExamEntity exam = examService.getById(examId);
         if (exam == null) {
             throw new StatusException("找不到考试");
@@ -59,6 +59,7 @@ public class BreakRecordServiceImpl extends ServiceImpl<BreakRecordDao, BreakRec
         BreakRecordEntity recordEntity = new BreakRecordEntity();
         recordEntity.setOrgId(exam.getOrgId());
         recordEntity.setExamId(examId);
+        recordEntity.setCreatorId(userId);
         recordEntity.setCreateTime(new Date());
         recordEntity.setStartNumber(startNumber);
         recordEntity.setGroupType(exam.getGroupType());
@@ -69,7 +70,7 @@ public class BreakRecordServiceImpl extends ServiceImpl<BreakRecordDao, BreakRec
     }
 
     @Override
-    public BreakRecordVo end(Long id, Long examId, String endNumber) {
+    public BreakRecordVo end(Long id, Long userId, Long examId, String endNumber) {
         ExamEntity exam = examService.getById(examId);
         if (exam == null) {
             throw new StatusException("找不到考试");
@@ -89,6 +90,7 @@ public class BreakRecordServiceImpl extends ServiceImpl<BreakRecordDao, BreakRec
         }
         recordEntity.setEndNumber(endNumber);
         recordEntity.setStatus(RecordStatus.NORMAL);
+        recordEntity.setUpdaterId(userId);
         recordEntity.setUpdateTime(new Date());
         saveOrUpdate(recordEntity);
         return new BreakRecordVo(recordEntity, student);

+ 5 - 3
src/main/java/cn/com/qmth/print/manage/service/impl/CheckRecordServiceImpl.java

@@ -40,7 +40,7 @@ public class CheckRecordServiceImpl extends ServiceImpl<CheckRecordDao, CheckRec
     private ExamService examService;
 
     @Override
-    public CheckRecordVo start(Long examId, String startNumber) {
+    public CheckRecordVo start(Long userId, Long examId, String startNumber) {
         ExamEntity exam = examService.getById(examId);
         if (exam == null) {
             throw new StatusException("找不到考试");
@@ -65,13 +65,14 @@ public class CheckRecordServiceImpl extends ServiceImpl<CheckRecordDao, CheckRec
         }
         CheckRecordEntity checkRecord = findByGroupTypeAndGroupName(exam.getGroupType(), groupName);
         checkRecord.setStartNumber(startNumber);
-        checkRecord.setUpdateTime(new Date());
+        checkRecord.setCreatorId(userId);
+        checkRecord.setCreateTime(new Date());
         saveOrUpdate(checkRecord);
         return new CheckRecordVo(checkRecord, student);
     }
 
     @Override
-    public CheckRecordVo end(Long id, Long examId, String endNumber) {
+    public CheckRecordVo end(Long id, Long userId, Long examId, String endNumber) {
         ExamEntity exam = examService.getById(examId);
         if (exam == null) {
             throw new StatusException("找不到考试");
@@ -97,6 +98,7 @@ public class CheckRecordServiceImpl extends ServiceImpl<CheckRecordDao, CheckRec
         }
         CheckRecordEntity checkRecord = checkRecordDao.selectById(id);
         checkRecord.setEndNumber(endNumber);
+        checkRecord.setUpdaterId(userId);
         checkRecord.setUpdateTime(new Date());
         saveOrUpdate(checkRecord);
         return new CheckRecordVo(checkRecord, student);

+ 18 - 5
src/main/java/cn/com/qmth/print/manage/service/impl/ExamServiceImpl.java

@@ -6,11 +6,13 @@ import cn.com.qmth.print.manage.enums.RecordStatus;
 import cn.com.qmth.print.manage.service.*;
 import cn.com.qmth.print.manage.service.query.ExamQuery;
 import cn.com.qmth.print.manage.vo.ExamVo;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.exception.StatusException;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -34,6 +36,9 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
     @Autowired
     private BreakRecordService breakRecordService;
 
+    @Autowired
+    private ExamDao examDao;
+
     @Override
     public List<ExamEntity> listByOrgId(Long orgId) {
         QueryWrapper<ExamEntity> queryWrapper = new QueryWrapper<>();
@@ -82,22 +87,30 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
             // 校验数量
             List<CheckRecordEntity> checkRecordEntities = checkRecordService.listByExamId(record.getId());
             record.setCheckCount(checkRecordEntities.size());
-            if(!CollectionUtils.isEmpty(checkRecordEntities)){
-                long checkNormalLCount = checkRecordEntities.stream().filter(m->m.getStatus().equals(RecordStatus.NORMAL)).count();
+            if (!CollectionUtils.isEmpty(checkRecordEntities)) {
+                long checkNormalLCount = checkRecordEntities.stream()
+                        .filter(m -> m.getStatus().equals(RecordStatus.NORMAL)).count();
                 record.setCheckNormalLCount(Math.toIntExact(checkNormalLCount));
 
-                long checkErrorLCount = checkRecordEntities.stream().filter(m->m.getStatus().equals(RecordStatus.ERROR)).count();
+                long checkErrorLCount = checkRecordEntities.stream()
+                        .filter(m -> m.getStatus().equals(RecordStatus.ERROR)).count();
                 record.setCheckErrorCount(Math.toIntExact(checkErrorLCount));
             }
 
             // 中断数量
             List<BreakRecordEntity> breakRecordEntities = breakRecordService.listByExamId(record.getId());
             record.setBreakCount(breakRecordEntities.size());
-            if(!CollectionUtils.isEmpty(breakRecordEntities)){
-                long breakNormalLCount = breakRecordEntities.stream().filter(m->m.getStatus().equals(RecordStatus.NORMAL)).count();
+            if (!CollectionUtils.isEmpty(breakRecordEntities)) {
+                long breakNormalLCount = breakRecordEntities.stream()
+                        .filter(m -> m.getStatus().equals(RecordStatus.NORMAL)).count();
                 record.setBreakNormalLCount(Math.toIntExact(breakNormalLCount));
             }
         }
         return iPage;
     }
+
+    @Override
+    public List<ExamEntity> listByUserId(Long userId) {
+        return examDao.listByUserId(userId);
+    }
 }

+ 7 - 7
src/main/java/cn/com/qmth/print/manage/vo/UserVo.java

@@ -22,7 +22,7 @@ public class UserVo implements Serializable {
     /**
      * 用户ID
      */
-    private Long userId;
+    private Long id;
 
     /**
      * 显示名
@@ -43,7 +43,7 @@ public class UserVo implements Serializable {
 
     public UserVo(UserEntity entity) {
         this.loginName = entity.getLoginName();
-        this.userId = entity.getId();
+        this.id = entity.getId();
         this.role = entity.getRole();
         this.enable = entity.isEnable();
     }
@@ -54,7 +54,7 @@ public class UserVo implements Serializable {
      * @return
      */
     public String buildKey() {
-        this.identity = new StringBuilder().append(PmConstants.USER_SESSION_KEY_PREFIX).append(userId).toString();
+        this.identity = new StringBuilder().append(PmConstants.USER_SESSION_KEY_PREFIX).append(id).toString();
         return this.identity;
     }
 
@@ -66,12 +66,12 @@ public class UserVo implements Serializable {
         this.identity = identity;
     }
 
-    public Long getUserId() {
-        return userId;
+    public Long getId() {
+        return id;
     }
 
-    public void setUserId(Long userId) {
-        this.userId = userId;
+    public void setId(Long id) {
+        this.id = id;
     }
 
     public String getLoginName() {

+ 17 - 0
src/main/resources/mapper/ExamDao.xml

@@ -22,4 +22,21 @@
             </if>
         </where>
     </select>
+    
+     <select id="listByUserId" resultType="cn.com.qmth.print.manage.entity.ExamEntity">
+        SELECT
+            pe
+        FROM
+            pm_exam pe
+        <where>
+            pe.id in (
+				SELECT ue.exam_id
+				FROM
+            	pm_exam_user ue
+            	<where>
+            	ue.user_id = #{userId}
+            	</where>
+            )
+        </where>
+    </select>
 </mapper>