package com.qmth.distributed.print.api; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qmth.boot.api.annotation.Aac; import com.qmth.boot.api.annotation.BOOL; import com.qmth.boot.api.constant.ApiConstant; import com.qmth.boot.api.exception.ApiException; import com.qmth.distributed.print.business.bean.dto.BlurryUserDto; import com.qmth.distributed.print.business.bean.dto.UserDto; import com.qmth.distributed.print.business.bean.dto.excel.UserExportDto; import com.qmth.distributed.print.business.bean.params.ArraysParams; import com.qmth.distributed.print.business.bean.result.EditResult; import com.qmth.distributed.print.business.entity.BasicAttachment; import com.qmth.distributed.print.business.entity.SysUser; import com.qmth.distributed.print.business.entity.TBTask; import com.qmth.distributed.print.business.enums.TaskTypeEnum; import com.qmth.distributed.print.business.enums.UploadFileEnum; import com.qmth.distributed.print.business.service.BasicAttachmentService; import com.qmth.distributed.print.business.service.SysUserService; import com.qmth.distributed.print.business.service.TBTaskService; import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService; import com.qmth.distributed.print.business.templete.execute.AsyncUserImportTempleteService; import com.qmth.distributed.print.business.templete.execute.UserImportTempleteService; import com.qmth.distributed.print.business.util.ExcelUtil; import com.qmth.distributed.print.business.util.ServletUtil; 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.ResultUtil; import io.swagger.annotations.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.validation.Valid; import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; /** *

* 用户表 前端控制器 *

* * @author xf * @since 2021-03-23 */ @Api(tags = "用户Controller") @RestController @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.sys}/user") @Aac(auth = BOOL.FALSE) public class SysUserController { private final static Logger log = LoggerFactory.getLogger(SysUserController.class); @Autowired private SysUserService sysUserService; @Resource BasicAttachmentService basicAttachmentService; @Resource UserImportTempleteService userImportTempleteService; @Resource AsyncUserImportTempleteService asyncUserImportTempleteService; @Resource TBTaskService tbTaskService; /** * 查询 * * @param realName * @param roleId * @param enable * @return */ @ApiOperation(value = "查询") @RequestMapping(value = "/list", method = RequestMethod.POST) public Result list(@RequestParam(value = "realName", required = false) String realName, @RequestParam(value = "roleId", required = false) String roleId, @RequestParam(value = "enable", required = false) Boolean enable, @RequestParam(value = "pageNumber", required = true) Integer pageNumber, @RequestParam(value = "pageSize", required = true) Integer pageSize) { IPage userDtos = sysUserService.list(realName, roleId, enable, pageNumber, pageSize); return ResultUtil.ok(userDtos); } /** * 根据科目查询命题老师 * * @param courseCode * @param param * @return */ @ApiOperation(value = "根据科目查询命题老师") @RequestMapping(value = "/user_list", method = RequestMethod.POST) public Result userQuery(@RequestParam(value = "courseCode", required = false) String courseCode, @RequestParam(value = "param", required = false) String param) { List list = sysUserService.listUser(courseCode, param); return ResultUtil.ok(list); } /** * 新增/修改 * * @param user * @return */ @ApiOperation(value = "新增/修改") @RequestMapping(value = "/save", method = RequestMethod.POST) public Result save(@RequestBody SysUser user) { boolean isSuccess = sysUserService.saveUser(user); return ResultUtil.ok(isSuccess); } /** * 启用/禁用 * * @param user * @return */ @ApiOperation(value = "启用/禁用") @RequestMapping(value = "/enable", method = RequestMethod.POST) public Result enable(@RequestBody SysUser user) { boolean isSuccess = sysUserService.enable(user); return ResultUtil.ok(isSuccess); } /** * 重置密码 * * @param user * @return */ @ApiOperation(value = "重置密码") @RequestMapping(value = "/reset_password", method = RequestMethod.POST) public Result resetPassword(@RequestBody SysUser user) { boolean isSuccess = sysUserService.resetPassword(user.getId()); return ResultUtil.ok(isSuccess); } /** * 修改密码 * * @return */ @ApiOperation(value = "修改密码") @RequestMapping(value = "/update_password", method = RequestMethod.POST) public Result updatePassword(@RequestParam(value = "id") Long id, @RequestParam(value = "oldPassword") String oldPassword, @RequestParam(value = "password") String password) { boolean isSuccess = sysUserService.updatePassword(id, oldPassword, password); return ResultUtil.ok(isSuccess); } /** * 绑定角色 * * @param sysUser * @return */ @ApiOperation(value = "绑定角色") @RequestMapping(value = "/bind_roles", method = RequestMethod.POST) public Result bindRoles(@RequestBody SysUser sysUser) { boolean isSuccess = sysUserService.bindRoles(sysUser); return ResultUtil.ok(isSuccess); } @ApiOperation(value = "用户批量导入接口") @RequestMapping(value = "/import", method = RequestMethod.POST) @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)}) @Transactional public Result userImport(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) { BasicAttachment basicAttachment = null; try { basicAttachment = basicAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), UploadFileEnum.FILE); if (Objects.isNull(basicAttachment)) { throw ExceptionResultEnum.ATTACHMENT_ERROR.exception(); } else { userImportTempleteService.importTask(Collections.singletonMap(SystemConstant.FILE, file)); } } catch (Exception e) { log.error("请求出错", e); if (Objects.nonNull(basicAttachment)) { basicAttachmentService.deleteAttachment(basicAttachment); } if (e instanceof ApiException) { ResultUtil.error((ApiException) e, e.getMessage()); } else { ResultUtil.error(e.getMessage()); } } return ResultUtil.ok(); } @ApiOperation(value = "异步用户批量导入接口") @RequestMapping(value = "/async/import", method = RequestMethod.POST) @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)}) public Result userImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws IOException { Map map = tbTaskService.saveTask(file, TaskTypeEnum.USER_IMPORT); asyncUserImportTempleteService.importTask(map); TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null; return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败"); } @ApiOperation(value = "用户批量导出接口") @RequestMapping(value = "/export", method = RequestMethod.POST) @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)}) public Result export(@ApiParam(value = "数组id", required = true) @Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage()); } List userExportDtoList = sysUserService.queryByExport(arraysParams); ExcelUtil.excelExport("用户列表", UserExportDto.class, userExportDtoList, ServletUtil.getResponse()); return ResultUtil.ok(); } @Resource AsyncCreatePdfTempleteService asyncCreatePdfTempleteService; @ApiOperation(value = "异步创建pdf接口") @RequestMapping(value = "/async/create_pdf", method = RequestMethod.POST) @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)}) public Result createPdfAysnc(@ApiParam(value = "印刷计划id", required = true) @RequestParam String printPlanId) throws IOException { Map map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, SystemConstant.convertIdToLong(printPlanId)); asyncCreatePdfTempleteService.createPdf(map); TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null; return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败"); } }