SysUserController.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. package com.qmth.distributed.print.api;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.qmth.boot.api.annotation.Aac;
  4. import com.qmth.boot.api.annotation.BOOL;
  5. import com.qmth.boot.api.constant.ApiConstant;
  6. import com.qmth.boot.api.exception.ApiException;
  7. import com.qmth.distributed.print.business.bean.dto.BlurryUserDto;
  8. import com.qmth.distributed.print.business.bean.dto.UserDto;
  9. import com.qmth.distributed.print.business.bean.dto.excel.UserExportDto;
  10. import com.qmth.distributed.print.business.bean.params.ArraysParams;
  11. import com.qmth.distributed.print.business.bean.result.EditResult;
  12. import com.qmth.distributed.print.business.entity.BasicAttachment;
  13. import com.qmth.distributed.print.business.entity.SysUser;
  14. import com.qmth.distributed.print.business.entity.TBTask;
  15. import com.qmth.distributed.print.business.enums.TaskTypeEnum;
  16. import com.qmth.distributed.print.business.enums.UploadFileEnum;
  17. import com.qmth.distributed.print.business.service.BasicAttachmentService;
  18. import com.qmth.distributed.print.business.service.SysUserService;
  19. import com.qmth.distributed.print.business.service.TBTaskService;
  20. import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
  21. import com.qmth.distributed.print.business.templete.execute.AsyncUserImportTempleteService;
  22. import com.qmth.distributed.print.business.templete.execute.UserImportTempleteService;
  23. import com.qmth.distributed.print.business.util.ExcelUtil;
  24. import com.qmth.distributed.print.business.util.ServletUtil;
  25. import com.qmth.distributed.print.common.contant.SystemConstant;
  26. import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
  27. import com.qmth.distributed.print.common.util.Result;
  28. import com.qmth.distributed.print.common.util.ResultUtil;
  29. import io.swagger.annotations.*;
  30. import org.slf4j.Logger;
  31. import org.slf4j.LoggerFactory;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.transaction.annotation.Transactional;
  34. import org.springframework.validation.BindingResult;
  35. import org.springframework.web.bind.annotation.*;
  36. import org.springframework.web.multipart.MultipartFile;
  37. import javax.annotation.Resource;
  38. import javax.validation.Valid;
  39. import java.io.IOException;
  40. import java.util.Collections;
  41. import java.util.List;
  42. import java.util.Map;
  43. import java.util.Objects;
  44. /**
  45. * <p>
  46. * 用户表 前端控制器
  47. * </p>
  48. *
  49. * @author xf
  50. * @since 2021-03-23
  51. */
  52. @Api(tags = "用户Controller")
  53. @RestController
  54. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.sys}/user")
  55. @Aac(auth = BOOL.FALSE)
  56. public class SysUserController {
  57. private final static Logger log = LoggerFactory.getLogger(SysUserController.class);
  58. @Autowired
  59. private SysUserService sysUserService;
  60. @Resource
  61. BasicAttachmentService basicAttachmentService;
  62. @Resource
  63. UserImportTempleteService userImportTempleteService;
  64. @Resource
  65. AsyncUserImportTempleteService asyncUserImportTempleteService;
  66. @Resource
  67. TBTaskService tbTaskService;
  68. /**
  69. * 查询
  70. *
  71. * @param realName
  72. * @param roleId
  73. * @param enable
  74. * @return
  75. */
  76. @ApiOperation(value = "查询")
  77. @RequestMapping(value = "/list", method = RequestMethod.POST)
  78. public Result list(@RequestParam(value = "realName", required = false) String realName,
  79. @RequestParam(value = "roleId", required = false) String roleId,
  80. @RequestParam(value = "enable", required = false) Boolean enable,
  81. @RequestParam(value = "pageNumber", required = true) Integer pageNumber,
  82. @RequestParam(value = "pageSize", required = true) Integer pageSize) {
  83. IPage<UserDto> userDtos = sysUserService.list(realName, roleId, enable, pageNumber, pageSize);
  84. return ResultUtil.ok(userDtos);
  85. }
  86. /**
  87. * 根据科目查询命题老师
  88. *
  89. * @param courseCode
  90. * @param param
  91. * @return
  92. */
  93. @ApiOperation(value = "根据科目查询命题老师")
  94. @RequestMapping(value = "/user_list", method = RequestMethod.POST)
  95. public Result userQuery(@RequestParam(value = "courseCode", required = false) String courseCode,
  96. @RequestParam(value = "param", required = false) String param) {
  97. List<BlurryUserDto> list = sysUserService.listUser(courseCode, param);
  98. return ResultUtil.ok(list);
  99. }
  100. /**
  101. * 新增/修改
  102. *
  103. * @param user
  104. * @return
  105. */
  106. @ApiOperation(value = "新增/修改")
  107. @RequestMapping(value = "/save", method = RequestMethod.POST)
  108. public Result save(@RequestBody SysUser user) {
  109. boolean isSuccess = sysUserService.saveUser(user);
  110. return ResultUtil.ok(isSuccess);
  111. }
  112. /**
  113. * 启用/禁用
  114. *
  115. * @param user
  116. * @return
  117. */
  118. @ApiOperation(value = "启用/禁用")
  119. @RequestMapping(value = "/enable", method = RequestMethod.POST)
  120. public Result enable(@RequestBody SysUser user) {
  121. boolean isSuccess = sysUserService.enable(user);
  122. return ResultUtil.ok(isSuccess);
  123. }
  124. /**
  125. * 重置密码
  126. *
  127. * @param user
  128. * @return
  129. */
  130. @ApiOperation(value = "重置密码")
  131. @RequestMapping(value = "/reset_password", method = RequestMethod.POST)
  132. public Result resetPassword(@RequestBody SysUser user) {
  133. boolean isSuccess = sysUserService.resetPassword(user.getId());
  134. return ResultUtil.ok(isSuccess);
  135. }
  136. /**
  137. * 修改密码
  138. *
  139. * @return
  140. */
  141. @ApiOperation(value = "修改密码")
  142. @RequestMapping(value = "/update_password", method = RequestMethod.POST)
  143. public Result updatePassword(@RequestParam(value = "id") Long id,
  144. @RequestParam(value = "oldPassword") String oldPassword,
  145. @RequestParam(value = "password") String password) {
  146. boolean isSuccess = sysUserService.updatePassword(id, oldPassword, password);
  147. return ResultUtil.ok(isSuccess);
  148. }
  149. /**
  150. * 绑定角色
  151. *
  152. * @param sysUser
  153. * @return
  154. */
  155. @ApiOperation(value = "绑定角色")
  156. @RequestMapping(value = "/bind_roles", method = RequestMethod.POST)
  157. public Result bindRoles(@RequestBody SysUser sysUser) {
  158. boolean isSuccess = sysUserService.bindRoles(sysUser);
  159. return ResultUtil.ok(isSuccess);
  160. }
  161. @ApiOperation(value = "用户批量导入接口")
  162. @RequestMapping(value = "/import", method = RequestMethod.POST)
  163. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  164. @Transactional
  165. public Result userImport(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) {
  166. BasicAttachment basicAttachment = null;
  167. try {
  168. basicAttachment = basicAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), UploadFileEnum.FILE);
  169. if (Objects.isNull(basicAttachment)) {
  170. throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
  171. } else {
  172. userImportTempleteService.importTask(Collections.singletonMap(SystemConstant.FILE, file));
  173. }
  174. } catch (Exception e) {
  175. log.error("请求出错", e);
  176. if (Objects.nonNull(basicAttachment)) {
  177. basicAttachmentService.deleteAttachment(basicAttachment);
  178. }
  179. if (e instanceof ApiException) {
  180. ResultUtil.error((ApiException) e, e.getMessage());
  181. } else {
  182. ResultUtil.error(e.getMessage());
  183. }
  184. }
  185. return ResultUtil.ok();
  186. }
  187. @ApiOperation(value = "异步用户批量导入接口")
  188. @RequestMapping(value = "/async/import", method = RequestMethod.POST)
  189. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  190. public Result userImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws IOException {
  191. Map<String, Object> map = tbTaskService.saveTask(file, TaskTypeEnum.USER_IMPORT);
  192. asyncUserImportTempleteService.importTask(map);
  193. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  194. return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
  195. }
  196. @ApiOperation(value = "用户批量导出接口")
  197. @RequestMapping(value = "/export", method = RequestMethod.POST)
  198. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  199. public Result export(@ApiParam(value = "数组id", required = true) @Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws Exception {
  200. if (bindingResult.hasErrors()) {
  201. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  202. }
  203. List<UserExportDto> userExportDtoList = sysUserService.queryByExport(arraysParams);
  204. ExcelUtil.excelExport("用户列表", UserExportDto.class, userExportDtoList, ServletUtil.getResponse());
  205. return ResultUtil.ok();
  206. }
  207. @Resource
  208. AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
  209. @ApiOperation(value = "异步创建pdf接口")
  210. @RequestMapping(value = "/async/create_pdf", method = RequestMethod.POST)
  211. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  212. public Result createPdfAysnc(@ApiParam(value = "印刷计划id", required = true) @RequestParam String printPlanId) throws IOException {
  213. Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, SystemConstant.convertIdToLong(printPlanId));
  214. asyncCreatePdfTempleteService.createPdf(map);
  215. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  216. return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
  217. }
  218. }