Jelajahi Sumber

用户同步

caozixuan 3 tahun lalu
induk
melakukan
f06c40eb4a
16 mengubah file dengan 276 tambahan dan 83 penghapusan
  1. 39 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TBSyncTask.java
  2. 8 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  3. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBSyncTaskService.java
  4. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceServiceImpl.java
  5. 24 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java
  6. 13 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncUserPushService.java
  7. 32 39
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/push/AsyncPushTaskTemplate.java
  8. 18 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/PushLogicService.java
  9. 0 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/TaskLogicService.java
  10. 58 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/PushLogicServiceImpl.java
  11. 0 26
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  12. 2 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java
  13. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  14. 38 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PushTypeEnum.java
  15. 7 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  16. 6 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

+ 39 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TBSyncTask.java

@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
+import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -32,6 +35,10 @@ public class TBSyncTask extends BaseEntity implements Serializable {
     @TableField(value = "org_id", updateStrategy = FieldStrategy.IGNORED)
     private Long orgId;
 
+    @ApiModelProperty(value = "推送类型,USER_PUSH:用户推送")
+    @TableField(value = "type")
+    private PushTypeEnum type;
+
     @ApiModelProperty(value = "第三方关联id")
     @JsonSerialize(using = ToStringSerializer.class)
     @TableField("third_relate_id")
@@ -70,6 +77,22 @@ public class TBSyncTask extends BaseEntity implements Serializable {
     @TableField(value = "error_message", updateStrategy = FieldStrategy.IGNORED)
     private String errorMessage;
 
+    @ApiModelProperty(value = "报告路径")
+    @TableField(value = "report_file_path")
+    private String reportFilePath;
+
+    public TBSyncTask() {
+    }
+
+    public TBSyncTask(PushTypeEnum type, TaskStatusEnum status, Long createId, Long schoolId) {
+        setId(SystemConstant.getDbUuid());
+        this.type = type;
+        this.status = status;
+        setCreateId(createId);
+        setCreateTime(System.currentTimeMillis());
+        this.schoolId = schoolId;
+    }
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -161,4 +184,20 @@ public class TBSyncTask extends BaseEntity implements Serializable {
     public void setErrorMessage(String errorMessage) {
         this.errorMessage = errorMessage;
     }
+
+    public PushTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(PushTypeEnum type) {
+        this.type = type;
+    }
+
+    public String getReportFilePath() {
+        return reportFilePath;
+    }
+
+    public void setReportFilePath(String reportFilePath) {
+        this.reportFilePath = reportFilePath;
+    }
 }

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java

@@ -12,6 +12,7 @@ import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ClassifyEnum;
+import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import org.springframework.scheduling.annotation.Async;
@@ -200,6 +201,13 @@ public interface PrintCommonService {
      */
     public Map<String, Object> saveTask(Long printPlanId, TaskTypeEnum taskTypeEnum);
 
+    /**
+     * 保存推送
+     * @param pushTypeEnum 推送类型
+     * @return 结果
+     */
+    Map<String, Object> savePush(PushTypeEnum pushTypeEnum);
+
     /**
      * 校验课程关联考场是否提交打印
      *

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBSyncTaskService.java

@@ -3,6 +3,11 @@ package com.qmth.distributed.print.business.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.PushTypeEnum;
+import com.qmth.teachcloud.common.enums.TaskTypeEnum;
+
+import java.util.Map;
 
 /**
  * <p>
@@ -12,4 +17,6 @@ import com.qmth.distributed.print.business.entity.TBSyncTask;
 public interface TBSyncTaskService extends IService<TBSyncTask> {
 
     TBSyncTask saveTask(ExamPrintPlan examPrintPlan);
+
+    TBSyncTask savePushCommon(PushTypeEnum pushTypeEnum, Map map, SysUser sysUser);
 }

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceServiceImpl.java

@@ -98,6 +98,9 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
     @Resource
     TBTaskService tbTaskService;
 
+    @Resource
+    TBSyncTaskService tbSyncTaskService;
+
     @Resource
     ExamDetailService examDetailService;
 
@@ -901,6 +904,25 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
         return map;
     }
 
+    @Transactional
+    @Override
+    public Map<String, Object> savePush(PushTypeEnum pushTypeEnum) {
+        Map<String, Object> map = null;
+        try {
+            map = new HashMap<>();
+            TBSyncTask tbSyncTask = tbSyncTaskService.savePushCommon(pushTypeEnum, map, null);
+            tbSyncTaskService.save(tbSyncTask);
+        } catch (Exception e) {
+            log.error("请求出错", e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return map;
+    }
+
     /**
      * 校验课程关联考场是否提交打印
      *

+ 24 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java

@@ -7,9 +7,17 @@ import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.distributed.print.business.mapper.TBSyncTaskMapper;
 import com.qmth.distributed.print.business.service.TBSyncTaskService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Date: 2021/5/20.
@@ -37,4 +45,20 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
         this.save(tbSyncTask);
         return tbSyncTask;
     }
+
+    @Transactional
+    @Override
+    public TBSyncTask savePushCommon(PushTypeEnum pushTypeEnum, Map map, SysUser sysUser) {
+        SysUser requestUser = Objects.nonNull(sysUser) ? sysUser : (SysUser) ServletUtil.getRequestUser();
+
+        TBSyncTask tbSyncTask = new TBSyncTask(pushTypeEnum,
+                TaskStatusEnum.INIT,
+                requestUser.getId(),
+                requestUser.getSchoolId());
+
+        map.computeIfAbsent(SystemConstant.TB_SYNC_TASK, v -> tbSyncTask);
+        map.computeIfAbsent(SystemConstant.USER, v -> requestUser);
+        map.computeIfAbsent(SystemConstant.TB_SYNC_TASK_ID, v -> tbSyncTask.getId());
+        return tbSyncTask;
+    }
 }

+ 13 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncUserPushService.java

@@ -2,7 +2,10 @@ package com.qmth.distributed.print.business.templete.execute;
 
 import cn.hutool.core.date.DateUtil;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.entity.TBSyncTask;
+import com.qmth.distributed.print.business.service.TBSyncTaskService;
 import com.qmth.distributed.print.business.templete.push.AsyncPushTaskTemplate;
+import com.qmth.distributed.print.business.templete.service.PushLogicService;
 import com.qmth.distributed.print.business.templete.service.TaskLogicService;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -35,33 +38,33 @@ public class AsyncUserPushService extends AsyncPushTaskTemplate {
 
     @Override
     public Result pushTask(Map<String, Object> map) throws Exception {
-        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        TBSyncTask tbSyncTask = (TBSyncTask) map.get(SystemConstant.TB_SYNC_TASK);
 
 
         StringJoiner stringJoinerSummary = new StringJoiner("\n")
                 .add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
-        tbTask.setStatus(TaskStatusEnum.RUNNING);
-        TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
-        tbTaskService.updateById(tbTask);
+        tbSyncTask.setStatus(TaskStatusEnum.RUNNING);
+        TBSyncTaskService tbSyncTaskService = SpringContextHolder.getBean(TBSyncTaskService.class);
+        tbSyncTaskService.updateById(tbSyncTask);
         try {
-            TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
+            PushLogicService pushLogicService = SpringContextHolder.getBean(PushLogicService.class);
 
             // 执行需要重新同步的用户同步数据
-            Map<String, Object> result = taskLogicService.executeUserPushLogic(map);
+            Map<String, Object> result = pushLogicService.executeUserPushLogic(map);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get("count"))),SUCCESS_TITLE,Long.valueOf(String.valueOf(result.get("correct"))), FINISH_SIZE));
-            tbTask.setResult(TaskResultEnum.SUCCESS);
+            tbSyncTask.setResult(TaskResultEnum.SUCCESS);
         }catch (Exception e){
             log.error("请求出错", e);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
-            tbTask.setResult(TaskResultEnum.ERROR);
+//            tbTask.setResult(TaskResultEnum.ERROR);
             if (e instanceof ApiException) {
                 ResultUtil.error((ApiException) e, e.getMessage());
             } else {
                 ResultUtil.error(e.getMessage());
             }
         } finally {//生成txt文件
-            tbTask.setSummary(stringJoinerSummary.toString());
-            super.createTxt(tbTask);
+            tbSyncTask.setSummary(stringJoinerSummary.toString());
+            super.createTxt(tbSyncTask);
         }
         return ResultUtil.ok(map);
     }

+ 32 - 39
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/push/AsyncPushTaskTemplate.java

@@ -3,7 +3,10 @@ package com.qmth.distributed.print.business.templete.push;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.entity.TBSyncTask;
+import com.qmth.distributed.print.business.service.TBSyncTaskService;
 import com.qmth.distributed.print.business.templete.importData.AsyncImportTaskTemplete;
+import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.TBTask;
@@ -19,8 +22,10 @@ import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 
+import javax.annotation.Resource;
 import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.text.MessageFormat;
@@ -36,6 +41,11 @@ import java.util.StringJoiner;
  * @Date: 2021-10-31
  */
 public abstract class AsyncPushTaskTemplate {
+    @Resource
+    private DictionaryConfig dictionaryConfig;
+    @Resource
+    private TBSyncTaskService tbSyncTaskService;
+
     private final static Logger log = LoggerFactory.getLogger(AsyncPushTaskTemplate.class);
 
     public static final String BEGIN_TITLE = "->开始准备处理同步的";
@@ -60,45 +70,35 @@ public abstract class AsyncPushTaskTemplate {
     /**
      * 创建txt文件
      *
-     * @param tbTask
+     * @param tbSyncTask
      */
-    public void createTxt(TBTask tbTask) {
+    public void createTxt(TBSyncTask tbSyncTask) {
 //        OssUtil ossUtil = SpringContextHolder.getBean(OssUtil.class);
         TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
         ByteArrayOutputStream out = null;
         InputStream inputStream = null;
         try {
-            JSONObject jsonObject = JSONObject.parseObject(tbTask.getImportFilePath());
-            if (Objects.isNull(jsonObject)) {
-                jsonObject = new JSONObject();
-                LocalDateTime nowTime = LocalDateTime.now();
-                StringJoiner stringJoiner = new StringJoiner("");
-                stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
-                stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
-                        .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                        .add(String.format("%02d", nowTime.getDayOfMonth()))
-                        .add(File.separator).add(SystemConstant.getUuid()).add(TXT_PREFIX);
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
-            }
-            String path = (String) jsonObject.get(SystemConstant.PATH);
-            path = path.replaceAll("\\\\","/");
-            String type = (String) jsonObject.get(SystemConstant.TYPE);
-
             out = new ByteArrayOutputStream();
-            out.write(tbTask.getSummary().getBytes(StandardCharsets.UTF_8));
+            out.write(tbSyncTask.getSummary().getBytes(StandardCharsets.UTF_8));
             byte[] bookByteAry = out.toByteArray();
             inputStream = new ByteArrayInputStream(bookByteAry);
+            LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (tbTask.getType() == TaskTypeEnum.CREATE_PDF) {
-                path = path.replaceAll(UploadFileEnum.PDF.getTitle(), UploadFileEnum.FILE.getTitle());
-            }
+            stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
+            stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
+                    .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
+                    .add(String.format("%02d", nowTime.getDayOfMonth()))
+                    .add(File.separator).add(SystemConstant.getUuid()).add(TXT_PREFIX);
+            String path = stringJoiner.toString().replaceAll("\\\\","/");
+            boolean oss = dictionaryConfig.sysDomain().isOss();
 
-            if (Objects.equals(type, SystemConstant.OSS)) {//上传至oss
+            JSONObject json = new JSONObject();
+            if (oss) {//上传至oss
                 path = path.substring(0, path.lastIndexOf("/") + 1);
-                stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
+                stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX);
                 FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
                 fileStoreUtil.ossUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
+                json.put(SystemConstant.TYPE, SystemConstant.OSS);
             } else {//上传至服务器
                 File finalFile = new File(stringJoiner.toString());
                 if (!finalFile.exists()) {
@@ -106,19 +106,18 @@ public abstract class AsyncPushTaskTemplate {
                     finalFile.createNewFile();
                 }
                 FileUtils.copyInputStreamToFile(inputStream, finalFile);
+                json.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             }
-            JSONObject json = new JSONObject();
             json.put(SystemConstant.PATH, stringJoiner.toString());
-            json.put(SystemConstant.TYPE, type);
             json.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
 
-            tbTask.setReportFilePath(json.toJSONString());
+            tbSyncTask.setReportFilePath(json.toJSONString());
         } catch (Exception e) {
             log.error("请求出错", e);
-            StringJoiner stringJoinerSummary = new StringJoiner("").add(tbTask.getSummary()).add("\n");
+            StringJoiner stringJoinerSummary = new StringJoiner("").add(tbSyncTask.getSummary()).add("\n");
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_CREATE_TXT_TITLE, EXCEPTION_DATA, e.getMessage()));
-            tbTask.setSummary(stringJoinerSummary.toString());
-            tbTask.setResult(TaskResultEnum.ERROR);
+            tbSyncTask.setSummary(stringJoinerSummary.toString());
+            tbSyncTask.setResult(TaskResultEnum.ERROR);
 //            TBTask dbTask = tbTaskService.getById(tbTask.getId());
 //            if (tbTask.getVersion() == dbTask.getVersion()) {
 //                tbTask.setResetCount(new AtomicInteger(tbTask.getResetCount()).incrementAndGet());
@@ -140,14 +139,8 @@ public abstract class AsyncPushTaskTemplate {
             } catch (IOException e) {
                 e.printStackTrace();
             }
-            tbTask.setStatus(TaskStatusEnum.FINISH);
-            if (tbTask.getType() == TaskTypeEnum.CREATE_PDF) {
-                tbTask.setResultFilePath(tbTask.getImportFilePath());
-                tbTask.setImportFileName(null);
-                tbTask.setImportFilePath(null);
-                tbTask.setErrorMessage(null);
-            }
-            tbTaskService.updateById(tbTask);
+            tbSyncTask.setStatus(TaskStatusEnum.FINISH);
+            tbSyncTaskService.updateById(tbSyncTask);
         }
     }
 }

+ 18 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/PushLogicService.java

@@ -0,0 +1,18 @@
+package com.qmth.distributed.print.business.templete.service;
+
+import java.util.Map;
+
+/**
+ * @Description: 同步推送处理逻辑接口
+ * @Author: CaoZixuan
+ * @Date: 2021-11-01
+ */
+public interface PushLogicService {
+
+    /**
+     * 用户推送异步任务处理方法
+     * @param map 任务源
+     * @return 结果
+     */
+    Map<String,Object> executeUserPushLogic(Map<String, Object> map) throws IllegalAccessException;
+}

+ 0 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/TaskLogicService.java

@@ -107,11 +107,4 @@ public interface TaskLogicService {
      * @throws Exception 异常
      */
     Map<String, Object> executeImportStatisticsLogic(Map<String, Object> map) throws Exception;
-
-    /**
-     * 用户推送异步任务处理方法
-     * @param map 任务源
-     * @return 结果
-     */
-    Map<String,Object> executeUserPushLogic(Map<String, Object> map) throws IllegalAccessException;
 }

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

@@ -0,0 +1,58 @@
+package com.qmth.distributed.print.business.templete.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.distributed.print.business.templete.service.PushLogicService;
+import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.bean.params.PushBeforeRoleParam;
+import com.qmth.teachcloud.common.bean.params.UserPushParam;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.userPush.BeforeJudgeEnum;
+import com.qmth.teachcloud.common.enums.userPush.SyncStatusEnum;
+import com.qmth.teachcloud.common.service.SysUserRoleService;
+import com.qmth.teachcloud.common.service.SysUserService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 同步推送处理逻辑接口实现类
+ * @Author: CaoZixuan
+ * @Date: 2021-11-01
+ */
+@Service
+public class PushLogicServiceImpl implements PushLogicService {
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private SysUserRoleService sysUserRoleService;
+
+    @Override
+    public Map<String, Object> executeUserPushLogic(Map<String, Object> map) throws IllegalAccessException {
+        int correct = 0;
+        int count = 0;
+        SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
+        Long schoolId = sysUser.getSchoolId();
+        // 需要同步的用户
+        List<SysUser> sysUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda()
+                .eq(SysUser::getSchoolId,schoolId)
+                .eq(SysUser::getSyncStatus, SyncStatusEnum.NEED_PUSH_AGAIN));
+        count = sysUserList.size();
+        for (SysUser user : sysUserList) {
+            Set<Long> roleIdSet = sysUserRoleService.listRoleByUserId(user.getId()).stream().map(BaseEntity::getId).collect(Collectors.toSet());
+            PushBeforeRoleParam pushBeforeRoleParam = new PushBeforeRoleParam(null, BeforeJudgeEnum.FORBIDDEN_NECESSARY);
+            List<UserPushParam> userPushParamList = sysUserService.analyzeUserPushSpecialPrivilege(user.getId(),user.getSchoolId(),user.getCode(), user.getRealName(),user.getPassword(),roleIdSet,pushBeforeRoleParam,user.getEnable());
+            boolean syncResult = sysUserService.userPushService(userPushParamList,sysUser);
+            if (syncResult){
+                correct ++;
+            }
+        }
+        map.put("correct",correct);
+        map.put("count",count);
+        return map;
+    }
+}

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

@@ -1402,32 +1402,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         return map;
     }
 
-    @Transactional
-    @Override
-    public Map<String, Object> executeUserPushLogic(Map<String, Object> map) throws IllegalAccessException {
-        int correct = 0;
-        int count = 0;
-        SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
-        Long schoolId = sysUser.getSchoolId();
-        // 需要同步的用户
-        List<SysUser> sysUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda()
-                .eq(SysUser::getSchoolId,schoolId)
-                .eq(SysUser::getSyncStatus, SyncStatusEnum.NEED_PUSH_AGAIN));
-        count = sysUserList.size();
-        for (SysUser user : sysUserList) {
-            Set<Long> roleIdSet = sysUserRoleService.listRoleByUserId(user.getId()).stream().map(BaseEntity::getId).collect(Collectors.toSet());
-            PushBeforeRoleParam pushBeforeRoleParam = new PushBeforeRoleParam(null, BeforeJudgeEnum.FORBIDDEN_NECESSARY);
-            List<UserPushParam> userPushParamList = sysUserService.analyzeUserPushSpecialPrivilege(user.getId(),user.getSchoolId(),user.getCode(), user.getRealName(),user.getPassword(),roleIdSet,pushBeforeRoleParam,user.getEnable());
-            boolean syncResult = sysUserService.userPushService(userPushParamList,sysUser);
-            if (syncResult){
-                correct ++;
-            }
-        }
-        map.put("correct",correct);
-        map.put("count",count);
-        return map;
-    }
-
 
     public String createTempNumber(SerialNumberParams serialNumberParams) {
         return convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit());

+ 2 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java

@@ -11,6 +11,7 @@ import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
+import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.Result;
@@ -204,7 +205,7 @@ public class SysUserController {
     @Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
     public Result sysUserPush() throws Exception {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Map<String, Object> map = printCommonService.saveTask(TaskTypeEnum.USER_PUSH);
+        Map<String, Object> map = printCommonService.savePush(PushTypeEnum.USER_PUSH);
         map.put(SystemConstant.SYS_USER, sysUser);
 
         asyncUserPushService.pushTask(map);

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -35,6 +35,8 @@ public class SystemConstant {
     public static final String SESSION = "session:";
     public static final String TASK = "task";
     public static final String TB_TASK_ID = "tbTaskId";
+    public static final String TB_SYNC_TASK = "tbSyncTask";
+    public static final String TB_SYNC_TASK_ID = "tbSyncTaskId";
     public static final String USER = "account";
     public static final String SCHOOL_ID = "schoolId";
     public static final String SCHOOL = "school";

+ 38 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PushTypeEnum.java

@@ -0,0 +1,38 @@
+package com.qmth.teachcloud.common.enums;
+
+import java.util.Objects;
+
+/**
+ * @Description: 同步推送类型
+ * @Author: CaoZixuan
+ * @Date: 2021-11-01
+ */
+public enum PushTypeEnum {
+    USER_PUSH("用户推送")
+    ;
+
+    PushTypeEnum(String title) {
+        this.title = title;
+    }
+
+    private final String title;
+
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 状态转换 toName
+     *
+     * @param title
+     * @return
+     */
+    public static String convertToName(String title) {
+        for (PushTypeEnum e : PushTypeEnum.values()) {
+            if (Objects.equals(title, e.getTitle())) {
+                return e.name();
+            }
+        }
+        return null;
+    }
+}

+ 7 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -195,6 +195,13 @@ public interface SysUserService extends IService<SysUser> {
      */
     SpecialPrivilegeEnum findUserSpecialPrivilegeByRoleIdSet(Set<Long> roleIdSet);
 
+    /**
+     * 根据用户id查询当前用户的特殊权限
+     * @param userId 用户id
+     * @return 用户特殊权限身份
+     */
+    SpecialPrivilegeEnum findUserSpecialPrivilegeByUserId(Long userId);
+
     /**
      * 解析用户推送状态
      *

+ 6 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -1015,6 +1015,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return result;
     }
 
+    @Override
+    public SpecialPrivilegeEnum findUserSpecialPrivilegeByUserId(Long userId) {
+        Set<Long> roleIdSet = new HashSet<>(sysRoleService.getUserRoles(userId));
+        return this.findUserSpecialPrivilegeByRoleIdSet(roleIdSet);
+    }
+
     /**
      * 解析用户推送状态
      *