Pārlūkot izejas kodu

美术阅卷10月新增需求-BUG修复

wangliang 5 gadi atpakaļ
vecāks
revīzija
85ae28f1e9

+ 16 - 3
sql/更新脚本.sql

@@ -13,11 +13,24 @@ ADD COLUMN `logout_time` DATETIME NULL COMMENT '登出时间(采集专用)'
 
 
 ALTER TABLE `paper`
-ADD COLUMN `is_test` BIT(1) NOT NULL DEFAULT false COMMENT '是否试评' AFTER `exam_room`,
-ADD COLUMN `is_active` BIT(1) NOT NULL DEFAULT false COMMENT '是否激活' AFTER `is_test`,
-ADD COLUMN `batch_no` bigint(45) COMMENT '批次号' AFTER `is_active`;
+ALTER TABLE paper ADD COLUMN `is_test` TINYINT NOT NULL DEFAULT 0 COMMENT '是否试评,1:数据已导入,2:试评中';
+ALTER TABLE paper ADD COLUMN `is_active` BIT(1) NOT NULL DEFAULT false COMMENT '是否激活' AFTER `is_test`;
+ALTER TABLE paper ADD COLUMN `batch_no` bigint(45) COMMENT '批次号' AFTER `is_active`;
 
 -- 2019.11.05 by xf
 ALTER TABLE `mark_task`
 ADD COLUMN `is_active` BIT(1) NULL DEFAULT false COMMENT '是否激活' AFTER `random_seq_new`;
 
+-- 2019.11.05 by wl
+ALTER TABLE mark_subject ADD ADD `is_test` TINYINT NOT NULL DEFAULT 0 COMMENT '是否试评,1:数据已导入,2:试评中,3:正评中';
+
+ALTER TABLE student ADD COLUMN `is_test` varchar(50) NOT NULL DEFAULT 0 COMMENT '是否试评,1:数据已导入,2:试评中';
+
+ALTER TABLE mark_task ADD COLUMN `is_test` TINYINT NOT NULL DEFAULT 0 COMMENT '是否试评,1:数据已导入,2:试评中';
+
+ALTER TABLE exam_question ADD COLUMN `is_test` TINYINT NOT NULL DEFAULT 0 COMMENT '是否试评,1:数据已导入,2:试评中';
+
+alter table student drop KEY `exam_number`;
+
+alter table student ADD UNIQUE index(`exam_number`,`work_id`,`is_test`);
+

+ 11 - 2
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/LoginInterceptor.java

@@ -2,6 +2,8 @@ package cn.com.qmth.stmms.ms.accesscontrol;
 
 import cn.com.qmth.stmms.ms.accesscontrol.config.LoginConfig;
 import cn.com.qmth.stmms.ms.core.domain.user.AbstractUser;
+import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
+import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -9,6 +11,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Objects;
 
 public class LoginInterceptor extends HandlerInterceptorAdapter {
 
@@ -27,11 +30,16 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
             if (loginConfig.adminLoginConfig().getLoginName().equals(loginName)
                     || loginConfig.inspectionLoginConfig().getLoginName().equals(loginName)) {
                 return true;
-            } else if (loginConfig.clientLoginConfig().getLoginName().equals(loginName)) {
+            }
+//            else if (loginConfig.clientLoginConfig().getLoginName().equals(loginName)) {
+//                response.sendError(HttpStatus.UNAUTHORIZED.value(), "该账户只能在采集端登录");
+//                return false;
+//            }
+            AbstractUser user = markUserRepo.findByLoginName(loginName);
+            if (Objects.equals(Role.COLLECTOR, ((MarkUser) user).getRole())) {
                 response.sendError(HttpStatus.UNAUTHORIZED.value(), "该账户只能在采集端登录");
                 return false;
             }
-            AbstractUser user = markUserRepo.findByLoginName(loginName);
             String sessionId = request.getSession().getId();
             if (user.getSessionId().equalsIgnoreCase(sessionId)) {
                 return true;
@@ -46,6 +54,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
 
     }
 
+    @Override
     public void afterCompletion(HttpServletRequest request,
                                 HttpServletResponse response, Object handler, Exception ex)
             throws Exception {

+ 6 - 4
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/api/AuthApi.java

@@ -52,9 +52,11 @@ public class AuthApi {
             if (domain == null) {
                 if ((loginConfig.adminLoginConfig().getLoginName().equals(user.getLoginName()) && !loginConfig.adminLoginConfig().getPassword().equals(user.getPassword())) || (loginConfig.inspectionLoginConfig().getLoginName().equals(user.getLoginName()) && !loginConfig.inspectionLoginConfig().getPassword().equals(user.getPassword()))) {
                     throw new RuntimeException("用户或密码错误");
-                } else if (loginConfig.clientLoginConfig().getLoginName().equals(user.getLoginName())) {
-                    throw new RuntimeException("该账户只能在采集端登录");
-                } else {
+                }
+//                else if (loginConfig.clientLoginConfig().getLoginName().equals(user.getLoginName())) {
+//                    throw new RuntimeException("该账户只能在采集端登录");
+//                }
+                else {
                     throw new RuntimeException("用户不存在");
                 }
             }
@@ -83,7 +85,7 @@ public class AuthApi {
             session.setAttribute("token", null);
         }
         session.setAttribute("token", System.currentTimeMillis() + "#" + domain.getLoginName());
-        if (!Objects.equals(loginConfig.clientLoginConfig().getLoginName(), user.getLoginName()) && !Objects.equals(loginConfig.inspectionLoginConfig().getLoginName(), user.getLoginName())) {
+        if (!Objects.equals(Role.COLLECTOR, domain.getRole()) && !Objects.equals(loginConfig.inspectionLoginConfig().getLoginName(), user.getLoginName())) {
             session.setAttribute("markUser", domain);
         }
         return domain;

+ 22 - 22
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/config/ClientLoginConfig.java

@@ -7,25 +7,25 @@ package cn.com.qmth.stmms.ms.accesscontrol.config;
  * @Author: wangliang
  * @Date: 2019/10/18
  */
-public class ClientLoginConfig {
-
-    private String loginName;
-
-    private String password;
-
-    public String getLoginName() {
-        return loginName;
-    }
-
-    public void setLoginName(String loginName) {
-        this.loginName = loginName;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-}
+//public class ClientLoginConfig {
+//
+//    private String loginName;
+//
+//    private String password;
+//
+//    public String getLoginName() {
+//        return loginName;
+//    }
+//
+//    public void setLoginName(String loginName) {
+//        this.loginName = loginName;
+//    }
+//
+//    public String getPassword() {
+//        return password;
+//    }
+//
+//    public void setPassword(String password) {
+//        this.password = password;
+//    }
+//}

+ 10 - 10
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/config/LoginConfig.java

@@ -25,16 +25,16 @@ public class LoginConfig {
         return new AdminLoginConfig();
     }
 
-    /**
-     * 采集端admin配置
-     *
-     * @return
-     */
-    @Bean
-    @ConfigurationProperties(prefix = "app.client", ignoreUnknownFields = false)
-    public ClientLoginConfig clientLoginConfig() {
-        return new ClientLoginConfig();
-    }
+//    /**
+//     * 采集端admin配置
+//     *
+//     * @return
+//     */
+//    @Bean
+//    @ConfigurationProperties(prefix = "app.client", ignoreUnknownFields = false)
+//    public ClientLoginConfig clientLoginConfig() {
+//        return new ClientLoginConfig();
+//    }
 
     /**
      * 纪检admin配置

+ 12 - 12
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -114,18 +114,18 @@ public class CollectApi {
         return loginDTO;
     }
 
-    /**
-     * 获取客户端账户名和密码
-     *
-     * @return
-     */
-    @RequestMapping(value = "user/getClientUser", method = RequestMethod.GET)
-    public Map getClientUser() {
-        Map map = new HashMap();
-        map.put("clientUserName", loginConfig.clientLoginConfig().getLoginName());
-        map.put("clientUserPwd", loginConfig.clientLoginConfig().getPassword());
-        return map;
-    }
+//    /**
+//     * 获取客户端账户名和密码
+//     *
+//     * @return
+//     */
+//    @RequestMapping(value = "user/getClientUser", method = RequestMethod.GET)
+//    public Map getClientUser() {
+//        Map map = new HashMap();
+//        map.put("clientUserName", loginConfig.clientLoginConfig().getLoginName());
+//        map.put("clientUserPwd", loginConfig.clientLoginConfig().getPassword());
+//        return map;
+//    }
 
     @RequestMapping(value = "exam/students", method = RequestMethod.GET)
     public List<CollectStuDTO> getStudents() {

+ 11 - 2
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/specification/StudentSpecification.java

@@ -7,6 +7,7 @@ import org.springframework.data.jpa.domain.Specification;
 import javax.persistence.criteria.Predicate;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 public class StudentSpecification extends PagingAndSortingSpecification {
 
@@ -139,9 +140,17 @@ public class StudentSpecification extends PagingAndSortingSpecification {
                 predicates.add(cb.equal(root.get("examNumber"), endNumber));
             }
             if (getUpload() != null && !getUpload()) {
-                predicates.add(cb.equal(root.get("uploadStatus"), "SX:0,SC:0,SM:0"));
+                if (Objects.nonNull(getSubject())) {
+                    predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":0" + "%"));
+                } else {
+                    predicates.add(cb.equal(root.get("uploadStatus"), "SX:0,SC:0,SM:0"));
+                }
             } else if (getUpload() != null && getUpload()) {
-                predicates.add(cb.equal(root.get("uploadStatus"), "SX:1,SC:1,SM:1"));
+                if (Objects.nonNull(getSubject())) {
+                    predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":1" + "%"));
+                } else {
+                    predicates.add(cb.equal(root.get("uploadStatus"), "SX:1,SC:1,SM:1"));
+                }
             }
             return cb.and(predicates.toArray(new Predicate[predicates.size()]));
         };

+ 2 - 2
stmms-ms-main/src/main/resources/application-dev.properties

@@ -35,9 +35,9 @@ app.admin.loginName=admin-cy
 #超级管理员密码
 app.admin.password=123456
 #采集端-超级管理员账号
-app.client.loginName=client-cy
+#app.client.loginName=client-cy
 #采集端-超级管理员密码
-app.client.password=123456
+#app.client.password=123456
 #纪检角色账号
 app.inspection.loginName=inspection-cy
 #纪检角色密码