|
|
@@ -4,6 +4,7 @@ import cn.dev33.satoken.secure.BCrypt;
|
|
|
import cn.dev33.satoken.session.SaSession;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
@@ -17,6 +18,7 @@ import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.common.enums.EnabledMark;
|
|
|
import com.xjrsoft.common.enums.GenderDictionaryEnum;
|
|
|
import com.xjrsoft.common.enums.RoleEnum;
|
|
|
+import com.xjrsoft.common.enums.WorkflowIsRecycleType;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.model.result.R;
|
|
|
import com.xjrsoft.common.model.result.RT;
|
|
|
@@ -39,6 +41,7 @@ import com.xjrsoft.module.organization.dto.ResetPasswordDto;
|
|
|
import com.xjrsoft.module.organization.dto.UpdateInfoDto;
|
|
|
import com.xjrsoft.module.organization.dto.UpdatePasswordDto;
|
|
|
import com.xjrsoft.module.organization.dto.UpdateUserDto;
|
|
|
+import com.xjrsoft.module.organization.dto.UploadSignDto;
|
|
|
import com.xjrsoft.module.organization.dto.UserPageDto;
|
|
|
import com.xjrsoft.module.organization.dto.UserStudentAddDto;
|
|
|
import com.xjrsoft.module.organization.dto.UserStudentBindDto;
|
|
|
@@ -59,7 +62,6 @@ import com.xjrsoft.module.organization.service.IUserRoleRelationService;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
import com.xjrsoft.module.organization.service.IUserStudentService;
|
|
|
import com.xjrsoft.module.organization.utils.OrganizationUtil;
|
|
|
-import com.xjrsoft.module.organization.vo.DepartmentTreeVo;
|
|
|
import com.xjrsoft.module.organization.vo.PendingCountDto;
|
|
|
import com.xjrsoft.module.organization.vo.ResetUserPageVo;
|
|
|
import com.xjrsoft.module.organization.vo.ResetUserRoleVo;
|
|
|
@@ -73,11 +75,18 @@ import com.xjrsoft.module.organization.vo.UserStudentVo;
|
|
|
import com.xjrsoft.module.organization.vo.UserVo;
|
|
|
import com.xjrsoft.module.oss.factory.OssFactory;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
-import com.xjrsoft.module.student.vo.BaseStudentTreeVo;
|
|
|
+import com.xjrsoft.module.system.entity.File;
|
|
|
+import com.xjrsoft.module.system.service.IFileService;
|
|
|
+import com.xjrsoft.module.workflow.constant.WorkflowConstant;
|
|
|
+import com.xjrsoft.module.workflow.entity.WorkflowExtra;
|
|
|
+import com.xjrsoft.module.workflow.mapper.WorkflowExtraMapper;
|
|
|
import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.camunda.bpm.engine.HistoryService;
|
|
|
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
|
|
|
+import org.camunda.bpm.engine.history.HistoricProcessInstanceQuery;
|
|
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
@@ -125,14 +134,20 @@ public class UserController {
|
|
|
|
|
|
private final CommonPropertiesConfig propertiesConfig;
|
|
|
|
|
|
+ private final WorkflowExtraMapper workflowExtraMapper;
|
|
|
+
|
|
|
private final RedisUtil redisUtil;
|
|
|
|
|
|
+ private final IFileService fileService;
|
|
|
+
|
|
|
private final SmsCtcc smsCtcc;
|
|
|
private final IBaseGradeService baseGradeService;
|
|
|
private final IUserStudentService userStudentService;
|
|
|
private final IBaseClassService baseClassService;
|
|
|
private final IWorkflowExecuteService workflowExecuteService;
|
|
|
|
|
|
+ private final HistoryService historyService;
|
|
|
+
|
|
|
|
|
|
@GetMapping(value = "/list")
|
|
|
@ApiOperation(value = "用户列表(不分页)")
|
|
|
@@ -331,6 +346,10 @@ public class UserController {
|
|
|
vo.setClassName(userStudentVo.getClassName());
|
|
|
}
|
|
|
|
|
|
+ List<File> fileList = fileService.list(Wrappers.lambdaQuery(File.class).eq(File::getFolderId, user.getSignFolderId()));
|
|
|
+ if(!fileList.isEmpty()){
|
|
|
+ vo.setSignUrl(fileList.get(0).getFileUrl());
|
|
|
+ }
|
|
|
return R.ok(vo);
|
|
|
}
|
|
|
|
|
|
@@ -340,6 +359,21 @@ public class UserController {
|
|
|
PendingCountDto pendingCountDto = new PendingCountDto();
|
|
|
pendingCountDto.setWfPendingCount(workflowExecuteService.pendingCount());
|
|
|
|
|
|
+ HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
|
|
|
+ .variableValueEquals(WorkflowConstant.PROCESS_START_USER_ID_KEY, StpUtil.getLoginIdAsLong())
|
|
|
+ .variableValueEquals(WorkflowConstant.PROCESS_ISRECYCLE_FLAG_KEY, WorkflowIsRecycleType.NO.getCode());
|
|
|
+ List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.orderByProcessInstanceStartTime().desc().list();
|
|
|
+
|
|
|
+ //获取到所有流程id
|
|
|
+ List<String> processIds = historicProcessInstances.stream().map(HistoricProcessInstance::getId).collect(Collectors.toList());
|
|
|
+ int myApplicationCount = 0;
|
|
|
+ for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) {
|
|
|
+ if (ObjectUtil.isNotNull(historicProcessInstance.getEndTime())) {
|
|
|
+ myApplicationCount ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pendingCountDto.setMyApplicationCount(myApplicationCount);
|
|
|
+
|
|
|
return RT.ok(pendingCountDto);
|
|
|
}
|
|
|
|
|
|
@@ -633,4 +667,41 @@ public class UserController {
|
|
|
public R unBindStudent(@Valid @RequestParam Long id) {
|
|
|
return R.ok(baseClassService.getStudents(id));
|
|
|
}
|
|
|
+
|
|
|
+ @PostMapping("/upload-sign")
|
|
|
+ @ApiOperation(value = "上传签名")
|
|
|
+ public RT<Boolean> uploadSign(@Valid @RequestBody UploadSignDto dto) {
|
|
|
+ long loginIdAsLong = StpUtil.getLoginIdAsLong();
|
|
|
+ User user = userService.getById(loginIdAsLong);
|
|
|
+ user.setSignFolderId(dto.getFolderId());
|
|
|
+ user.setSignPassword(BCrypt.hashpw(dto.getPassword(), BCrypt.gensalt()));
|
|
|
+
|
|
|
+ return RT.ok(userService.updateById(user));
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/getSign")
|
|
|
+ @ApiOperation(value = "获取登录者的签名url")
|
|
|
+ public RT<String> getSign() {
|
|
|
+ long loginIdAsLong = StpUtil.getLoginIdAsLong();
|
|
|
+ User user = userService.getById(loginIdAsLong);
|
|
|
+ if(user.getSignFolderId() == null){
|
|
|
+ return RT.error("未上传签名");
|
|
|
+ }
|
|
|
+ List<File> list = fileService.list(Wrappers.lambdaQuery(File.class).eq(File::getFolderId, user.getSignFolderId()));
|
|
|
+ if(list.isEmpty()){
|
|
|
+ return RT.error("签名文件丢失");
|
|
|
+ }
|
|
|
+ return RT.ok(list.get(0).getFileUrl());
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/check-password")
|
|
|
+ @ApiOperation(value = "验证登录者的密码")
|
|
|
+ public RT<Boolean> checkSignpassword(@RequestParam String password) {
|
|
|
+ long loginIdAsLong = StpUtil.getLoginIdAsLong();
|
|
|
+ User user = userService.getById(loginIdAsLong);
|
|
|
+ if (!BCrypt.checkpw(password, user.getPassword())) {
|
|
|
+ return RT.error("密码填写错误!");
|
|
|
+ }
|
|
|
+ return RT.ok(true);
|
|
|
+ }
|
|
|
}
|