xiaof 4 gadi atpakaļ
vecāks
revīzija
692cf1527d
23 mainītis faili ar 272 papildinājumiem un 127 dzēšanām
  1. 43 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ClientLoginParam.java
  2. 6 30
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/LoginParam.java
  3. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ExaminationDetailResult.java
  4. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/SysUser.java
  5. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java
  6. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TBTaskMapper.java
  7. 15 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CommonService.java
  8. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  9. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBTaskService.java
  10. 65 20
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CommonServiceImpl.java
  11. 6 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  12. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  13. 13 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  14. 3 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBTaskServiceImpl.java
  15. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncExaminationImportTemplateService.java
  16. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  17. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/ExcelUtil.java
  18. 7 2
      distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml
  19. 3 0
      distributed-print-business/src/main/resources/mapper/TBTaskMapper.xml
  20. 58 13
      distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java
  21. 4 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamDetailController.java
  22. 1 35
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  23. 3 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/TBTaskController.java

+ 43 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ClientLoginParam.java

@@ -0,0 +1,43 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description: 客户端登录
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/23
+ */
+public class ClientLoginParam {
+
+    @ApiModelProperty(value = "登录名")
+    @NotBlank(message = "请输入登录名")
+    @Length(message = "登录名不能超过{max}个字符", max = 50)
+    private String loginName;
+
+    @ApiModelProperty(value = "密码")
+    @NotBlank(message = "请输入密码")
+    @Length(message = "密码不能少于{min}位", min = 6)
+    @Length(message = "密码不能超过{max}位", max = 30)
+    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;
+    }
+}

+ 6 - 30
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/LoginParam.java

@@ -1,25 +1,17 @@
 package com.qmth.distributed.print.business.bean.params;
 package com.qmth.distributed.print.business.bean.params;
 
 
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
-import org.hibernate.validator.constraints.Length;
 
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotBlank;
 
 
 /**
 /**
- * @Date: 2021/3/30.
+ * @Description: 用户登录
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/23
  */
  */
-public class LoginParam {
-
-    @ApiModelProperty(value = "登录名")
-    @NotBlank(message = "请输入登录名")
-    @Length(message = "登录名不能超过{max}个字符", max = 25)
-    private String loginName;
-
-    @ApiModelProperty(value = "密码")
-    @NotBlank(message = "请输入密码")
-    @Length(message = "密码不能少于{min}位", min = 6)
-    @Length(message = "密码不能超过{max}位", max = 30)
-    private String password;
+public class LoginParam extends ClientLoginParam {
 
 
     @ApiModelProperty(value = "验证码")
     @ApiModelProperty(value = "验证码")
     @NotBlank(message = "请输入验证码")
     @NotBlank(message = "请输入验证码")
@@ -37,22 +29,6 @@ public class LoginParam {
         this.schoolCode = schoolCode;
         this.schoolCode = schoolCode;
     }
     }
 
 
-    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 String getCode() {
     public String getCode() {
         return code;
         return code;
     }
     }

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ExaminationDetailResult.java

@@ -46,6 +46,12 @@ public class ExaminationDetailResult {
     @ApiModelProperty(value = "座位号")
     @ApiModelProperty(value = "座位号")
     private String siteNumber;
     private String siteNumber;
 
 
+    @ApiModelProperty(value = "考试开始时间")
+    private Long examStartTime;
+
+    @ApiModelProperty(value = "考试结束时间")
+    private Long examEndTime;
+
     @JsonSerialize(using = ToStringSerializer.class)
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "创建人主键")
     @ApiModelProperty(value = "创建人主键")
     private Long createId;
     private Long createId;
@@ -141,6 +147,22 @@ public class ExaminationDetailResult {
         this.siteNumber = siteNumber;
         this.siteNumber = siteNumber;
     }
     }
 
 
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
     public Long getCreateId() {
     public Long getCreateId() {
         return createId;
         return createId;
     }
     }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/SysUser.java

@@ -41,14 +41,14 @@ public class SysUser extends BaseEntity implements Serializable {
      */
      */
     @TableField("login_name")
     @TableField("login_name")
     @NotBlank(message = "请输入登录名")
     @NotBlank(message = "请输入登录名")
-    @Length(message = "登录名不能超过{max}个字符", max = 25)
+    @Length(message = "登录名不能超过{max}个字符", max = 50)
     private String loginName;
     private String loginName;
     /**
     /**
      * 姓名
      * 姓名
      */
      */
     @TableField("real_name")
     @TableField("real_name")
     @NotBlank(message = "请输入姓名")
     @NotBlank(message = "请输入姓名")
-    @Length(message = "姓名不能超过{max}个字符", max = 25)
+    @Length(message = "姓名不能超过{max}个字符", max = 50)
     private String realName;
     private String realName;
     /**
     /**
      * 密码
      * 密码

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java

@@ -35,12 +35,13 @@ public interface ExamDetailMapper extends BaseMapper<ExamDetail> {
                                            @Param("packageCode") String packageCode);
                                            @Param("packageCode") String packageCode);
 
 
     IPage<ExaminationDetailResult> findDetailPage(@Param("page") Page<ExaminationDetailResult> page,
     IPage<ExaminationDetailResult> findDetailPage(@Param("page") Page<ExaminationDetailResult> page,
+                                                  @Param("schoolId") Long schoolId,
                                                   @Param("printPlanId") Long printPlanId,
                                                   @Param("printPlanId") Long printPlanId,
                                                   @Param("courseCode") String courseCode,
                                                   @Param("courseCode") String courseCode,
                                                   @Param("paperNumber") String paperNumber,
                                                   @Param("paperNumber") String paperNumber,
                                                   @Param("examPlace") String examPlace,
                                                   @Param("examPlace") String examPlace,
                                                   @Param("examRoom") String examRoom,
                                                   @Param("examRoom") String examRoom,
-                                                  @Param("studentParam") String studentParam);
+                                                  @Param("studentParams") String studentParams);
 
 
     IPage<ExaminationDetailResult> findDetailPageById(@Param("page") Page<ExaminationDetailResult> page,
     IPage<ExaminationDetailResult> findDetailPageById(@Param("page") Page<ExaminationDetailResult> page,
                                                   @Param("examDetailId") Long examDetailId);
                                                   @Param("examDetailId") Long examDetailId);

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TBTaskMapper.java

@@ -19,6 +19,7 @@ import java.util.Map;
 public interface TBTaskMapper extends BaseMapper<TBTask> {
 public interface TBTaskMapper extends BaseMapper<TBTask> {
 
 
     public IPage<TaskListResult> query(IPage<Map> iPage,
     public IPage<TaskListResult> query(IPage<Map> iPage,
+                                       @Param("schoolId") Long schoolId,
                                        @Param("printPlanId") Long printPlanId,
                                        @Param("printPlanId") Long printPlanId,
                                        @Param("status") String status,
                                        @Param("status") String status,
                                        @Param("type") String type,
                                        @Param("type") String type,

+ 15 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CommonService.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service;
 
 
 import com.qmth.distributed.print.business.bean.auth.AuthBean;
 import com.qmth.distributed.print.business.bean.auth.AuthBean;
 import com.qmth.distributed.print.business.bean.dto.PrivilegeCacheDto;
 import com.qmth.distributed.print.business.bean.dto.PrivilegeCacheDto;
+import com.qmth.distributed.print.business.bean.result.LoginResult;
 import com.qmth.distributed.print.business.bean.result.RolePrivilegeResult;
 import com.qmth.distributed.print.business.bean.result.RolePrivilegeResult;
 import com.qmth.distributed.print.business.entity.BasicAttachment;
 import com.qmth.distributed.print.business.entity.BasicAttachment;
 import com.qmth.distributed.print.business.entity.SysRolePrivilege;
 import com.qmth.distributed.print.business.entity.SysRolePrivilege;
@@ -100,6 +101,7 @@ public interface CommonService {
 
 
     /**
     /**
      * 文件预览
      * 文件预览
+     *
      * @param attachmentId
      * @param attachmentId
      * @return
      * @return
      */
      */
@@ -161,21 +163,32 @@ public interface CommonService {
      * 下载文件到本地并压缩返回
      * 下载文件到本地并压缩返回
      *
      *
      * @param filePath 文件根目录
      * @param filePath 文件根目录
-     * @param time    zip文件名(时间戳)
+     * @param time     zip文件名(时间戳)
      */
      */
     public void downloadFileAndZip(HttpServletResponse response, String filePath, long time);
     public void downloadFileAndZip(HttpServletResponse response, String filePath, long time);
 
 
     /**
     /**
      * 校验是否可以提交
      * 校验是否可以提交
+     *
      * @param schoolId
      * @param schoolId
      * @param courseCode
      * @param courseCode
      * @param paperNumber
      * @param paperNumber
      */
      */
-    public void checkData(Long schoolId, String courseCode, String paperNumber,SysUser user) throws IOException;
+    public void checkData(Long schoolId, String courseCode, String paperNumber, SysUser user) throws IOException;
 
 
     /**
     /**
      * 根据orgId查询所有子机构ID集合
      * 根据orgId查询所有子机构ID集合
+     *
      * @return
      * @return
      */
      */
     public Set<Long> listSubOrgIds(Long orgId);
     public Set<Long> listSubOrgIds(Long orgId);
+
+    /**
+     * 登录公用
+     *
+     * @param password
+     * @param sysUser
+     * @return
+     */
+    public LoginResult login(String password, SysUser sysUser) throws NoSuchAlgorithmException;
 }
 }

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -97,13 +97,13 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @param paperNumber 试卷编号
      * @param paperNumber 试卷编号
      * @param examPlace 考点
      * @param examPlace 考点
      * @param examRoom 考场
      * @param examRoom 考场
-     * @param studentParam 学生查询参数
+     * @param studentParams 学生查询参数
      * @param pageNumber 分页页码
      * @param pageNumber 分页页码
      * @param pageSize 分页数量
      * @param pageSize 分页数量
      * @return 查询结果
      * @return 查询结果
      */
      */
-    IPage<ExaminationDetailResult> findExaminationDetail(Long printPlanId,String courseCode,String paperNumber,String examPlace,
-                                                         String examRoom,String studentParam,int pageNumber,int pageSize);
+    IPage<ExaminationDetailResult> findExaminationDetail(Long schoolId, Long printPlanId,String courseCode,String paperNumber,String examPlace,
+                                                         String examRoom,String studentParams,int pageNumber,int pageSize);
 
 
     IPage<ExaminationDetailResult> findExaminationDetail(Long convertIdToLong, int pageNumber, int pageSize);
     IPage<ExaminationDetailResult> findExaminationDetail(Long convertIdToLong, int pageNumber, int pageSize);
 
 

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBTaskService.java

@@ -114,6 +114,7 @@ public interface TBTaskService extends IService<TBTask> {
      * 查询任务列表
      * 查询任务列表
      *
      *
      * @param iPage
      * @param iPage
+     * @param schoolId
      * @param printPlanId
      * @param printPlanId
      * @param status
      * @param status
      * @param type
      * @param type
@@ -121,6 +122,7 @@ public interface TBTaskService extends IService<TBTask> {
      * @return
      * @return
      */
      */
     public IPage<TaskListResult> query(IPage<Map> iPage,
     public IPage<TaskListResult> query(IPage<Map> iPage,
+                                       Long schoolId,
                                        Long printPlanId,
                                        Long printPlanId,
                                        TaskStatusEnum status,
                                        TaskStatusEnum status,
                                        TaskTypeEnum type,
                                        TaskTypeEnum type,

+ 65 - 20
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CommonServiceImpl.java

@@ -6,19 +6,23 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.boot.core.enums.Platform;
 import com.qmth.boot.core.enums.Platform;
+import com.qmth.boot.tools.signature.SignatureType;
 import com.qmth.distributed.print.business.bean.auth.AuthBean;
 import com.qmth.distributed.print.business.bean.auth.AuthBean;
+import com.qmth.distributed.print.business.bean.auth.ExpireTimeBean;
 import com.qmth.distributed.print.business.bean.dto.OrgDto;
 import com.qmth.distributed.print.business.bean.dto.OrgDto;
 import com.qmth.distributed.print.business.bean.dto.PrivilegeCacheDto;
 import com.qmth.distributed.print.business.bean.dto.PrivilegeCacheDto;
+import com.qmth.distributed.print.business.bean.result.LoginResult;
 import com.qmth.distributed.print.business.bean.result.PrivilegeResult;
 import com.qmth.distributed.print.business.bean.result.PrivilegeResult;
 import com.qmth.distributed.print.business.bean.result.RolePrivilegeResult;
 import com.qmth.distributed.print.business.bean.result.RolePrivilegeResult;
 import com.qmth.distributed.print.business.config.DictionaryConfig;
 import com.qmth.distributed.print.business.config.DictionaryConfig;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
-import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
+import com.qmth.distributed.print.business.util.AuthUtil;
 import com.qmth.distributed.print.business.util.OssUtil;
 import com.qmth.distributed.print.business.util.OssUtil;
 import com.qmth.distributed.print.business.util.RedisUtil;
 import com.qmth.distributed.print.business.util.RedisUtil;
 import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.business.util.ServletUtil;
+import com.qmth.distributed.print.common.SignatureEntityTest;
 import com.qmth.distributed.print.common.contant.SpringContextHolder;
 import com.qmth.distributed.print.common.contant.SpringContextHolder;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
@@ -82,21 +86,15 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     @Autowired
     private ExamDetailService examDetailService;
     private ExamDetailService examDetailService;
 
 
-    @Autowired
-    private ExamDetailCourseService examDetailCourseService;
-
-    @Resource
-    TBTaskService tbTaskService;
-
-    @Resource
-    AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
-
     @Autowired
     @Autowired
     private SysOrgService sysOrgService;
     private SysOrgService sysOrgService;
 
 
     @Autowired
     @Autowired
     private BasicAttachmentService basicAttachmentService;
     private BasicAttachmentService basicAttachmentService;
 
 
+    @Resource
+    CommonService commonService;
+
     /**
     /**
      * 新增用户权限
      * 新增用户权限
      *
      *
@@ -364,36 +362,36 @@ public class CommonServiceImpl implements CommonService {
         String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
         String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
         String filePath = (String) jsonObject.get(SystemConstant.PATH);
         String filePath = (String) jsonObject.get(SystemConstant.PATH);
         // 有htmlPath
         // 有htmlPath
-        if(jsonObject.containsKey(SystemConstant.HTML_PATH)){
+        if (jsonObject.containsKey(SystemConstant.HTML_PATH)) {
             htmlPath = (String) jsonObject.get(SystemConstant.HTML_PATH);
             htmlPath = (String) jsonObject.get(SystemConstant.HTML_PATH);
         }
         }
         // 有pdfPath
         // 有pdfPath
-        if(jsonObject.containsKey(SystemConstant.PDF_PATH)){
+        if (jsonObject.containsKey(SystemConstant.PDF_PATH)) {
             pdfPath = (String) jsonObject.get(SystemConstant.PDF_PATH);
             pdfPath = (String) jsonObject.get(SystemConstant.PDF_PATH);
         }
         }
         if (Objects.equals(attachmentType, SystemConstant.LOCAL)) {
         if (Objects.equals(attachmentType, SystemConstant.LOCAL)) {
             pathUrl = SystemConstant.HTTP + dictionaryConfig.sysDomain().getFileHost() + File.separator + filePath;
             pathUrl = SystemConstant.HTTP + dictionaryConfig.sysDomain().getFileHost() + File.separator + filePath;
-            if(StringUtils.isNotBlank(htmlPath)){
+            if (StringUtils.isNotBlank(htmlPath)) {
                 htmlUrl = SystemConstant.HTTP + dictionaryConfig.sysDomain().getFileHost() + File.separator + htmlPath;
                 htmlUrl = SystemConstant.HTTP + dictionaryConfig.sysDomain().getFileHost() + File.separator + htmlPath;
             }
             }
-            if(StringUtils.isNotBlank(pdfPath)){
+            if (StringUtils.isNotBlank(pdfPath)) {
                 pdfUrl = SystemConstant.HTTP + dictionaryConfig.sysDomain().getFileHost() + File.separator + pdfPath;
                 pdfUrl = SystemConstant.HTTP + dictionaryConfig.sysDomain().getFileHost() + File.separator + pdfPath;
             }
             }
         } else {
         } else {
             if (isExpire) {
             if (isExpire) {
                 pathUrl = ossUtil.getPrivateUrl(filePath);
                 pathUrl = ossUtil.getPrivateUrl(filePath);
-                if(StringUtils.isNotBlank(htmlPath)){
+                if (StringUtils.isNotBlank(htmlPath)) {
                     htmlUrl = ossUtil.getPrivateUrl(htmlPath);
                     htmlUrl = ossUtil.getPrivateUrl(htmlPath);
                 }
                 }
-                if(StringUtils.isNotBlank(pdfPath)){
+                if (StringUtils.isNotBlank(pdfPath)) {
                     pdfUrl = ossUtil.getPrivateUrl(pdfPath);
                     pdfUrl = ossUtil.getPrivateUrl(pdfPath);
                 }
                 }
             } else {
             } else {
-                    pathUrl = dictionaryConfig.aliYunOssDomain().getUrl() + File.separator + filePath;
-                if(StringUtils.isNotBlank(htmlPath)){
+                pathUrl = dictionaryConfig.aliYunOssDomain().getUrl() + File.separator + filePath;
+                if (StringUtils.isNotBlank(htmlPath)) {
                     htmlUrl = dictionaryConfig.aliYunOssDomain().getUrl() + File.separator + htmlPath;
                     htmlUrl = dictionaryConfig.aliYunOssDomain().getUrl() + File.separator + htmlPath;
                 }
                 }
-                if(StringUtils.isNotBlank(pdfPath)){
+                if (StringUtils.isNotBlank(pdfPath)) {
                     pdfUrl = dictionaryConfig.aliYunOssDomain().getUrl() + File.separator + pdfPath;
                     pdfUrl = dictionaryConfig.aliYunOssDomain().getUrl() + File.separator + pdfPath;
                 }
                 }
             }
             }
@@ -411,7 +409,7 @@ public class CommonServiceImpl implements CommonService {
         JSONObject object = JSONObject.parseObject(path);
         JSONObject object = JSONObject.parseObject(path);
         String filePath = object.getString(SystemConstant.PATH);
         String filePath = object.getString(SystemConstant.PATH);
         String type = object.getString(SystemConstant.TYPE);
         String type = object.getString(SystemConstant.TYPE);
-        if (filePath.endsWith(SystemConstant.HTML_PREFIX) || filePath.endsWith(SystemConstant.FTL_PREFIX) ) {
+        if (filePath.endsWith(SystemConstant.HTML_PREFIX) || filePath.endsWith(SystemConstant.FTL_PREFIX)) {
             StringBuffer sb = new StringBuffer();
             StringBuffer sb = new StringBuffer();
             try {
             try {
                 InputStream fis;
                 InputStream fis;
@@ -638,6 +636,53 @@ public class CommonServiceImpl implements CommonService {
         return stringSet;
         return stringSet;
     }
     }
 
 
+    /**
+     * 登录公用
+     *
+     * @param password
+     * @param sysUser
+     * @return
+     * @throws NoSuchAlgorithmException
+     */
+    @Override
+    public LoginResult login(String password, SysUser sysUser) throws NoSuchAlgorithmException {
+        //密码不正确
+        if (!Objects.equals(password, sysUser.getPassword())) {
+            throw ExceptionResultEnum.PASSWORD_ERROR.exception();
+        }
+        //停用
+        if (!sysUser.getEnable()) {
+            throw ExceptionResultEnum.USER_ENABLE.exception();
+        }
+
+        Platform platform = ServletUtil.getRequestPlatform();
+        String deviceId = ServletUtil.getRequestDeviceId();
+        AuthBean authBean = commonService.getUserAuth(sysUser.getId());
+        //添加用户鉴权缓存
+        if (Objects.isNull(authBean)) {
+            throw ExceptionResultEnum.ROLE_ENABLE_AUTHORIZATION.exception();
+        }
+        //生成token
+        String token = SystemConstant.getUuid();
+        cacheService.userCache(sysUser.getId());
+        //添加用户会话缓存
+        Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
+        String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleType.toString().hashCode()), platform.name());
+        //TODO 测试用
+        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
+        ExpireTimeBean expireTime = AuthUtil.getExpireTime(platform);
+        TBSession tbSession = new TBSession(sessionId, String.valueOf(sysUser.getId()), roleType.toString(),
+                platform.name(), platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token,
+                expireTime.getDate().getTime());
+        tbSessionService.saveOrUpdate(tbSession);
+        redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
+
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, roleType);
+        loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
+        loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
+        return loginResult;
+    }
+
     private Set<Long> getOrgIds(Set<Long> stringSet, List<OrgDto> orgDtos, Long parentId) {
     private Set<Long> getOrgIds(Set<Long> stringSet, List<OrgDto> orgDtos, Long parentId) {
         for (OrgDto orgDto : orgDtos) {
         for (OrgDto orgDto : orgDtos) {
             Long tempParentId = orgDto.getParentId();
             Long tempParentId = orgDto.getParentId();

+ 6 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -284,8 +284,8 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
-    public IPage<ExaminationDetailResult> findExaminationDetail(Long printPlanId, String courseCode, String paperNumber, String examPlace, String examRoom, String studentParam, int pageNumber, int pageSize) {
-        return examDetailMapper.findDetailPage(new Page<>(pageNumber, pageSize), printPlanId, courseCode, paperNumber, examPlace, examRoom, studentParam);
+    public IPage<ExaminationDetailResult> findExaminationDetail(Long schoolId, Long printPlanId, String courseCode, String paperNumber, String examPlace, String examRoom, String studentParams, int pageNumber, int pageSize) {
+        return examDetailMapper.findDetailPage(new Page<>(pageNumber, pageSize),schoolId, printPlanId, courseCode, paperNumber, examPlace, examRoom, studentParams);
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
@@ -297,14 +297,16 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public List<String> findExamPlaceDatasource() {
     public List<String> findExamPlaceDatasource() {
-        List<ExamDetail> examDetail = this.list();
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        List<ExamDetail> examDetail = this.list(new QueryWrapper<ExamDetail>().lambda().eq(ExamDetail::getSchoolId,schoolId));
         return examDetail.stream().map(ExamDetail::getExamPlace).distinct().collect(Collectors.toList());
         return examDetail.stream().map(ExamDetail::getExamPlace).distinct().collect(Collectors.toList());
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public List<String> findExamRoomDatasource() {
     public List<String> findExamRoomDatasource() {
-        List<ExamDetail> examDetail = this.list();
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        List<ExamDetail> examDetail = this.list(new QueryWrapper<ExamDetail>().lambda().eq(ExamDetail::getSchoolId,schoolId));
         return examDetail.stream().map(ExamDetail::getExamRoom).distinct().collect(Collectors.toList());
         return examDetail.stream().map(ExamDetail::getExamRoom).distinct().collect(Collectors.toList());
     }
     }
 
 

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -246,9 +246,13 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         if (examPrintPlan == null){
         if (examPrintPlan == null){
             throw ExceptionResultEnum.ERROR.exception("要删除的项目计划不存在 id = " + id);
             throw ExceptionResultEnum.ERROR.exception("要删除的项目计划不存在 id = " + id);
         }
         }
+        // TODO: 2021/4/23 只有新建能删除  && !PrintPlanStatusEnum.READY.equals(examPrintPlan.getStatus())
         if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus())){
         if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus())){
             throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除 status = " + examPrintPlan.getStatus());
             throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除 status = " + examPrintPlan.getStatus());
         }
         }
+//        if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus()) && !PrintPlanStatusEnum.READY.equals(examPrintPlan.getStatus())){
+//            throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除 status = " + examPrintPlan.getStatus());
+//        }
         examDetailService.deleteExaminationData(id);
         examDetailService.deleteExaminationData(id);
         return this.removeById(id);
         return this.removeById(id);
     }
     }

+ 13 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -118,10 +118,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         // 查询命题任务中的试卷编号
         // 查询命题任务中的试卷编号
         QueryWrapper<ExamTask> queryWrapperExamTask = new QueryWrapper<>();
         QueryWrapper<ExamTask> queryWrapperExamTask = new QueryWrapper<>();
+        queryWrapperExamTask.lambda().eq(ExamTask::getSchoolId, schoolId);
         List<String> list = new ArrayList<>();
         List<String> list = new ArrayList<>();
         if (StringUtils.isNotBlank(param)) {
         if (StringUtils.isNotBlank(param)) {
-            queryWrapperExamTask.lambda().eq(ExamTask::getSchoolId, schoolId)
-                    .and(i -> i.like(ExamTask::getCourseCode, param).or().like(ExamTask::getCourseName, param));
+            queryWrapperExamTask.lambda().and(i -> i.like(ExamTask::getCourseCode, param).or().like(ExamTask::getCourseName, param));
         }
         }
         List<ExamTask> examTasks = this.list(queryWrapperExamTask);
         List<ExamTask> examTasks = this.list(queryWrapperExamTask);
         if (examTasks != null && examTasks.size() > 0) {
         if (examTasks != null && examTasks.size() > 0) {
@@ -130,10 +130,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
 
         // 查询考务-科目中的试卷编号
         // 查询考务-科目中的试卷编号
         QueryWrapper<ExamDetailCourse> queryWrapperExamDetailCourse = new QueryWrapper<>();
         QueryWrapper<ExamDetailCourse> queryWrapperExamDetailCourse = new QueryWrapper<>();
+        queryWrapperExamDetailCourse.lambda().eq(ExamDetailCourse::getSchoolId, schoolId);
         List<String> list2 = new ArrayList<>();
         List<String> list2 = new ArrayList<>();
         if (StringUtils.isNotBlank(param)) {
         if (StringUtils.isNotBlank(param)) {
-            queryWrapperExamDetailCourse.lambda().eq(ExamDetailCourse::getSchoolId, schoolId)
-                    .and(i -> i.like(ExamDetailCourse::getCourseCode, param).or().like(ExamDetailCourse::getCourseName, param));
+            queryWrapperExamDetailCourse.lambda().and(i -> i.like(ExamDetailCourse::getCourseCode, param).or().like(ExamDetailCourse::getCourseName, param));
         }
         }
         List<ExamDetailCourse> ExamDetailCourses = examDetailCourseService.list(queryWrapperExamDetailCourse);
         List<ExamDetailCourse> ExamDetailCourses = examDetailCourseService.list(queryWrapperExamDetailCourse);
         if (ExamDetailCourses != null && ExamDetailCourses.size() > 0) {
         if (ExamDetailCourses != null && ExamDetailCourses.size() > 0) {
@@ -363,14 +363,18 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examTaskDto.setCourseName(examTaskTemp.getCourseName());
                 examTaskDto.setCourseName(examTaskTemp.getCourseName());
                 examTaskDto.setPaperNumber(examTaskTemp.getPaperNumber());
                 examTaskDto.setPaperNumber(examTaskTemp.getPaperNumber());
                 examTaskDto.setSpecialty(examTaskTemp.getSpecialty());
                 examTaskDto.setSpecialty(examTaskTemp.getSpecialty());
-                List<BlurryUserDto> blurryUserDtoList = new ArrayList<>();
-                if (Objects.nonNull(examTaskTemp.getUserAccount()) && Objects.nonNull(examTaskTemp.getCourseCode())){
-                    QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
-                    queryWrapper.lambda().eq(SysUser::getLoginName, examTaskTemp.getUserAccount());
-                    SysUser sysUser1 = sysUserService.getOne(queryWrapper);
+                List<BlurryUserDto> blurryUserDtoList;
+
+                QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(SysUser::getLoginName, examTaskTemp.getUserAccount());
+                SysUser sysUser1 = sysUserService.getOne(queryWrapper);
+                if (sysUser1 != null){
                     blurryUserDtoList = listUsers(examTaskTemp.getCourseCode(), String.valueOf(sysUser1.getId()));
                     blurryUserDtoList = listUsers(examTaskTemp.getCourseCode(), String.valueOf(sysUser1.getId()));
+                }else {
+                    blurryUserDtoList = listUsers(examTaskTemp.getCourseCode(), null);
                 }
                 }
                 examTaskDto.setUsers(blurryUserDtoList);
                 examTaskDto.setUsers(blurryUserDtoList);
+
 //                // 校验命题老师
 //                // 校验命题老师
 //                if (StringUtils.isBlank(examTaskTemp.getUserAccount())) {
 //                if (StringUtils.isBlank(examTaskTemp.getUserAccount())) {
 //                    examTaskDto.setUsers(listUsers(examTaskTemp.getCourseCode(), null));
 //                    examTaskDto.setUsers(listUsers(examTaskTemp.getCourseCode(), null));

+ 3 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBTaskServiceImpl.java

@@ -251,6 +251,7 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
      * 查询任务列表
      * 查询任务列表
      *
      *
      * @param iPage
      * @param iPage
+     * @param schoolId
      * @param printPlanId
      * @param printPlanId
      * @param status
      * @param status
      * @param type
      * @param type
@@ -258,8 +259,8 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public IPage<TaskListResult> query(IPage<Map> iPage, Long printPlanId, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
-        return tbTaskMapper.query(iPage, printPlanId, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null);
+    public IPage<TaskListResult> query(IPage<Map> iPage, Long schoolId, Long printPlanId, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
+        return tbTaskMapper.query(iPage, schoolId,printPlanId, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null);
     }
     }
 
 
     /**
     /**

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncExaminationImportTemplateService.java

@@ -52,6 +52,8 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
 
 
         try {
         try {
             TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
             TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
+
+            // 执行导入考务数据
             Map<String,Object> result = taskLogicService.executeImportExaminationLogic(map);
             Map<String,Object> result = taskLogicService.executeImportExaminationLogic(map);
 
 
             // 检测是否去生成pdf
             // 检测是否去生成pdf

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -551,6 +551,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             // 组装exam_student数据
             // 组装exam_student数据
             examDetailService.disposeExamStudentByExaminationExcel(dataList, userId);
             examDetailService.disposeExamStudentByExaminationExcel(dataList, userId);
 
 
+            // 更改印刷计划状态
+            examPrintPlan.setStatus(PrintPlanStatusEnum.READY);
+            examPrintPlanService.updateById(examPrintPlan);
+
             map.put("examDetailIdList", examDetailIdList);
             map.put("examDetailIdList", examDetailIdList);
             map.put("dataCount", dataList.size());
             map.put("dataCount", dataList.size());
         } catch (Exception e) {
         } catch (Exception e) {

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/ExcelUtil.java

@@ -119,6 +119,9 @@ public class ExcelUtil {
                         int lastcell = row.getLastCellNum();
                         int lastcell = row.getLastCellNum();
                         o = clazz.get(y).newInstance();
                         o = clazz.get(y).newInstance();
                         Field[] fields = o.getClass().getDeclaredFields();
                         Field[] fields = o.getClass().getDeclaredFields();
+                        if (lastcell > fields.length) {
+                            throw ExceptionResultEnum.ERROR.exception("导入文件和模版不一致");
+                        }
                         boolean extend = fields[fields.length - 1].getName().contains(SystemConstant.EXTEND_COLUMN);
                         boolean extend = fields[fields.length - 1].getName().contains(SystemConstant.EXTEND_COLUMN);
                         for (int j = firstcell; j < lastcell; j++) {
                         for (int j = firstcell; j < lastcell; j++) {
                             //获取第j列
                             //获取第j列

+ 7 - 2
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -162,6 +162,8 @@
             cou.paper_number AS paperNumber,
             cou.paper_number AS paperNumber,
             det.print_plan_id AS printPlanId,
             det.print_plan_id AS printPlanId,
             det.print_plan_name AS printPlanName,
             det.print_plan_name AS printPlanName,
+            det.exam_start_time AS examStartTime,
+            det.exam_end_time AS examEndTime,
             det.exam_place AS examPlace,
             det.exam_place AS examPlace,
             det.exam_room AS examRoom
             det.exam_room AS examRoom
         FROM
         FROM
@@ -173,6 +175,9 @@
             exam_detail det ON cou.exam_detail_id = det.id
             exam_detail det ON cou.exam_detail_id = det.id
                 AND stu.school_id = det.school_id
                 AND stu.school_id = det.school_id
         <where>
         <where>
+            <if test="schoolId != null and schoolId > 0">
+                AND det.school_id = #{schoolId}
+            </if>
             <if test="printPlanId != null and printPlanId > 0">
             <if test="printPlanId != null and printPlanId > 0">
                 AND det.print_plan_id = #{printPlanId}
                 AND det.print_plan_id = #{printPlanId}
             </if>
             </if>
@@ -188,8 +193,8 @@
             <if test="examRoom != null and examRoom.length > 0">
             <if test="examRoom != null and examRoom.length > 0">
                 AND det.exam_room = #{examRoom}
                 AND det.exam_room = #{examRoom}
             </if>
             </if>
-            <if test="studentParam != null and studentParam.length > 0">
-                AND (stu.ticket_number LIKE CONCAT('%',#{studentParam},'%') OR stu.student_code LIKE CONCAT('%',#{studentParam},'%') OR stu.student_name LIKE CONCAT('%',#{studentParam},'%'))
+            <if test="studentParams != null and studentParams.length > 0">
+                AND (stu.ticket_number LIKE CONCAT('%',#{studentParams},'%') OR stu.student_code LIKE CONCAT('%',#{studentParams},'%') OR stu.student_name LIKE CONCAT('%',#{studentParams},'%'))
             </if>
             </if>
         </where>
         </where>
     </select>
     </select>

+ 3 - 0
distributed-print-business/src/main/resources/mapper/TBTaskMapper.xml

@@ -26,6 +26,9 @@
             left join exam_print_plan epp on
             left join exam_print_plan epp on
             epp.id = tbt.print_plan_id
             epp.id = tbt.print_plan_id
             <where>
             <where>
+                <if test="schoolId != null and schoolId != ''">
+                    and tbt.school_id = #{schoolId}
+                </if>
                 <if test="printPlanId != null and printPlanId != ''">
                 <if test="printPlanId != null and printPlanId != ''">
                     and tbt.print_plan_id = #{printPlanId}
                     and tbt.print_plan_id = #{printPlanId}
                 </if>
                 </if>

+ 58 - 13
distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java

@@ -1,23 +1,45 @@
 package com.qmth.distributed.print.api;
 package com.qmth.distributed.print.api;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.core.enums.Platform;
+import com.qmth.boot.tools.signature.SignatureType;
+import com.qmth.distributed.print.business.bean.auth.AuthBean;
+import com.qmth.distributed.print.business.bean.auth.ExpireTimeBean;
 import com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskDto;
+import com.qmth.distributed.print.business.bean.params.ClientLoginParam;
+import com.qmth.distributed.print.business.bean.result.LoginResult;
 import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.entity.SysUser;
+import com.qmth.distributed.print.business.entity.TBSession;
+import com.qmth.distributed.print.business.enums.RoleTypeEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.util.AuthUtil;
+import com.qmth.distributed.print.business.util.RedisUtil;
+import com.qmth.distributed.print.business.util.ServletUtil;
+import com.qmth.distributed.print.common.SignatureEntityTest;
+import com.qmth.distributed.print.common.contant.SystemConstant;
+import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.ResultUtil;
 import com.qmth.distributed.print.common.util.ResultUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.qmth.distributed.print.common.util.SessionUtil;
+import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * @Date: 2021/4/19.
  * @Date: 2021/4/19.
@@ -25,23 +47,47 @@ import java.util.Map;
 @Api(tags = "客户端Controller")
 @Api(tags = "客户端Controller")
 @RestController
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.client}")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.client}")
-@Aac(auth = BOOL.FALSE)
+@Aac(strict = BOOL.TRUE)
 public class ClientController {
 public class ClientController {
 
 
     @Autowired
     @Autowired
     private ClientService clientService;
     private ClientService clientService;
 
 
+    @Resource
+    SysUserService sysUserService;
+
+    @Resource
+    CommonService commonService;
+
     /**
     /**
      * 登录
      * 登录
      *
      *
-     * @param sysUser
+     * @param login
      * @return
      * @return
      */
      */
     @ApiOperation(value = "登录")
     @ApiOperation(value = "登录")
     @RequestMapping(value = "/user/login", method = RequestMethod.POST)
     @RequestMapping(value = "/user/login", method = RequestMethod.POST)
-    public Result login(@RequestBody SysUser sysUser) {
-
-        return null;
+    @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = LoginResult.class)})
+    @Aac(auth = BOOL.FALSE)
+    public Result login(@ApiParam(value = "用户信息", required = true) @Valid @RequestBody ClientLoginParam login, BindingResult bindingResult) throws NoSuchAlgorithmException {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(SysUser::getLoginName, login.getLoginName());
+        SysUser sysUser = sysUserService.getOne(wrapper);
+        //用户不存在
+        if (Objects.isNull(sysUser)) {
+            throw ExceptionResultEnum.USER_NO_DATA.exception();
+        }
+        AuthBean authBean = commonService.getUserAuth(sysUser.getId());
+        if (Objects.nonNull(authBean) && Objects.nonNull(authBean.getRoleList()) && authBean.getRoleList().size() > 0) {
+            Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
+            if (!roleType.contains(RoleTypeEnum.PRINTER)) {
+                throw ExceptionResultEnum.ERROR.exception("客户端只允许" + RoleTypeEnum.PRINTER.getDesc() + "登录");
+            }
+        }
+        return ResultUtil.ok(commonService.login(login.getPassword(), sysUser));
     }
     }
 
 
     /**
     /**
@@ -109,7 +155,7 @@ public class ClientController {
                                   @RequestParam("machineCode") String machineCode,
                                   @RequestParam("machineCode") String machineCode,
                                   @RequestParam("isPass") Boolean isPass,
                                   @RequestParam("isPass") Boolean isPass,
                                   @RequestParam("userId") Long userId) {
                                   @RequestParam("userId") Long userId) {
-        Boolean isSuccess = clientService.tagPass(schoolId, courseCode,courseName, paperNumber, machineCode, isPass, userId);
+        Boolean isSuccess = clientService.tagPass(schoolId, courseCode, courseName, paperNumber, machineCode, isPass, userId);
         return ResultUtil.ok(isSuccess);
         return ResultUtil.ok(isSuccess);
     }
     }
 
 
@@ -204,7 +250,7 @@ public class ClientController {
     public Result printPreview(@RequestParam("schoolId") Long schoolId,
     public Result printPreview(@RequestParam("schoolId") Long schoolId,
                                @RequestParam("examDetailId") Long examDetailId) {
                                @RequestParam("examDetailId") Long examDetailId) {
         String url = clientService.getUrlByExamDetailId(schoolId, examDetailId);
         String url = clientService.getUrlByExamDetailId(schoolId, examDetailId);
-        return ResultUtil.ok(url,"");
+        return ResultUtil.ok(url, "");
     }
     }
 
 
     /**
     /**
@@ -254,7 +300,6 @@ public class ClientController {
     }
     }
 
 
     /**
     /**
-     *
      * @param schoolId
      * @param schoolId
      * @param examDetailId
      * @param examDetailId
      * @param machineCode
      * @param machineCode
@@ -264,9 +309,9 @@ public class ClientController {
     @ApiOperation(value = "印刷管理-缓存后更新状态")
     @ApiOperation(value = "印刷管理-缓存后更新状态")
     @RequestMapping(value = "/print/update_download", method = RequestMethod.POST)
     @RequestMapping(value = "/print/update_download", method = RequestMethod.POST)
     public Result updateDownload(@RequestParam("schoolId") Long schoolId,
     public Result updateDownload(@RequestParam("schoolId") Long schoolId,
-                                    @RequestParam("examDetailId") Long examDetailId,
-                                    @RequestParam("machineCode") String machineCode,
-                                    @RequestParam("isDownload") Boolean isDownload) {
+                                 @RequestParam("examDetailId") Long examDetailId,
+                                 @RequestParam("machineCode") String machineCode,
+                                 @RequestParam("isDownload") Boolean isDownload) {
         Boolean isSuccess = clientService.updateDownload(schoolId, examDetailId, machineCode, isDownload);
         Boolean isSuccess = clientService.updateDownload(schoolId, examDetailId, machineCode, isDownload);
         return ResultUtil.ok(isSuccess);
         return ResultUtil.ok(isSuccess);
     }
     }

+ 4 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamDetailController.java

@@ -100,12 +100,13 @@ public class ExamDetailController {
                                         @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
                                         @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
                                         @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
                                         @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
                                         @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
                                         @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
-                                        @ApiParam(value = "学生查询参数") @RequestParam(required = false) String studentParam,
+                                        @ApiParam(value = "学生查询参数") @RequestParam(required = false) String studentParams,
                                         @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
                                         @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
                                         @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
                                         @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
 
 
-        return ResultUtil.ok(examDetailService.findExaminationDetail(SystemConstant.convertIdToLong(printPlanId),
-                courseCode, paperNumber, examPlace, examRoom, studentParam, pageNumber, pageSize));
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        return ResultUtil.ok(examDetailService.findExaminationDetail(schoolId,SystemConstant.convertIdToLong(printPlanId),
+                courseCode, paperNumber, examPlace, examRoom, studentParams, pageNumber, pageSize));
     }
     }
 
 
     @ApiOperation(value = "考务数据导入-查看明细弹窗")
     @ApiOperation(value = "考务数据导入-查看明细弹窗")

+ 1 - 35
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -140,14 +140,6 @@ public class SysController {
         if (Objects.nonNull(sysUser.getSchoolId()) && sysUser.getSchoolId().longValue() != basicSchool.getId().longValue()) {
         if (Objects.nonNull(sysUser.getSchoolId()) && sysUser.getSchoolId().longValue() != basicSchool.getId().longValue()) {
             throw ExceptionResultEnum.ERROR.exception("用户学校不匹配");
             throw ExceptionResultEnum.ERROR.exception("用户学校不匹配");
         }
         }
-        //密码不正确
-        if (!Objects.equals(login.getPassword(), sysUser.getPassword())) {
-            throw ExceptionResultEnum.PASSWORD_ERROR.exception();
-        }
-        //停用
-        if (!sysUser.getEnable()) {
-            throw ExceptionResultEnum.USER_ENABLE.exception();
-        }
 //        校验验证码
 //        校验验证码
         SysConfig value = sysConfigService.getByKey("sys.code.enable");
         SysConfig value = sysConfigService.getByKey("sys.code.enable");
         if (Objects.nonNull(value) && value.getConfigValue().equals("true")) {
         if (Objects.nonNull(value) && value.getConfigValue().equals("true")) {
@@ -168,33 +160,7 @@ public class SysController {
                 }
                 }
             }
             }
         }
         }
-
-        Platform platform = ServletUtil.getRequestPlatform();
-        String deviceId = ServletUtil.getRequestDeviceId();
-        //添加用户鉴权缓存
-        AuthBean authBean = cacheService.userAuthCache(sysUser.getId());
-        if (Objects.isNull(authBean)) {
-            throw ExceptionResultEnum.ROLE_ENABLE_AUTHORIZATION.exception();
-        }
-        //生成token
-        String token = SystemConstant.getUuid();
-        cacheService.userCache(sysUser.getId());
-        //添加用户会话缓存
-        Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
-        String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleType.toString().hashCode()), platform.name());
-        //TODO 测试用
-        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
-        ExpireTimeBean expireTime = AuthUtil.getExpireTime(platform);
-        TBSession tbSession = new TBSession(sessionId, String.valueOf(sysUser.getId()), roleType.toString(),
-                platform.name(), platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token,
-                expireTime.getDate().getTime());
-        tbSessionService.saveOrUpdate(tbSession);
-        redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
-
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, roleType);
-        loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
-        loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
-        return ResultUtil.ok(loginResult);
+        return ResultUtil.ok(commonService.login(login.getPassword(), sysUser));
     }
     }
 
 
     /**
     /**

+ 3 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TBTaskController.java

@@ -10,6 +10,7 @@ import com.qmth.distributed.print.business.enums.TaskResultEnum;
 import com.qmth.distributed.print.business.enums.TaskStatusEnum;
 import com.qmth.distributed.print.business.enums.TaskStatusEnum;
 import com.qmth.distributed.print.business.enums.TaskTypeEnum;
 import com.qmth.distributed.print.business.enums.TaskTypeEnum;
 import com.qmth.distributed.print.business.service.TBTaskService;
 import com.qmth.distributed.print.business.service.TBTaskService;
+import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.ResultUtil;
 import com.qmth.distributed.print.common.util.ResultUtil;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.Objects;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -47,7 +49,7 @@ public class TBTaskController {
                             @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
                             @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
                             @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
                             @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
                             @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
                             @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
-        return ResultUtil.ok(tbTaskService.query(new Page<>(pageNumber, pageSize), SystemConstant.convertIdToLong(printPlanId), status, type, result));
+        return ResultUtil.ok(tbTaskService.query(new Page<>(pageNumber, pageSize), Objects.nonNull(ServletUtil.getRequestHeaderSchoolId()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString()) : null, SystemConstant.convertIdToLong(printPlanId), status, type, result));
     }
     }
 
 
 //    @ApiOperation(value = "任务管理_批量删除&清空接口")
 //    @ApiOperation(value = "任务管理_批量删除&清空接口")