SysUserController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. package com.qmth.distributed.print.api;
  2. import com.qmth.boot.api.annotation.Aac;
  3. import com.qmth.boot.api.constant.ApiConstant;
  4. import com.qmth.distributed.print.business.bean.result.EditResult;
  5. import com.qmth.distributed.print.business.service.PrintCommonService;
  6. import com.qmth.distributed.print.business.templete.execute.AsyncSysUserDataImportService;
  7. import com.qmth.teachcloud.common.annotation.OperationLogDetail;
  8. import com.qmth.teachcloud.common.bean.params.UserSaveParams;
  9. import com.qmth.teachcloud.common.contant.SystemConstant;
  10. import com.qmth.teachcloud.common.entity.SysUser;
  11. import com.qmth.teachcloud.common.entity.TBTask;
  12. import com.qmth.teachcloud.common.enums.TaskTypeEnum;
  13. import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
  14. import com.qmth.teachcloud.common.service.SysUserService;
  15. import com.qmth.teachcloud.common.util.Result;
  16. import com.qmth.teachcloud.common.util.ResultUtil;
  17. import com.qmth.teachcloud.common.util.ServletUtil;
  18. import io.swagger.annotations.*;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.validation.BindingResult;
  23. import org.springframework.validation.annotation.Validated;
  24. import org.springframework.web.bind.annotation.*;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import javax.annotation.Resource;
  27. import javax.servlet.http.HttpServletResponse;
  28. import javax.validation.Valid;
  29. import javax.validation.constraints.Max;
  30. import javax.validation.constraints.Min;
  31. import java.security.NoSuchAlgorithmException;
  32. import java.util.List;
  33. import java.util.Map;
  34. import java.util.Objects;
  35. /**
  36. * <p>
  37. * 用户表 前端控制器
  38. * </p>
  39. *
  40. * @author xf
  41. * @since 2021-03-23
  42. */
  43. @Api(tags = "用户Controller")
  44. @RestController
  45. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_SYS + "/user")
  46. @Validated
  47. public class SysUserController {
  48. private final static Logger log = LoggerFactory.getLogger(SysUserController.class);
  49. @Autowired
  50. private SysUserService sysUserService;
  51. @Resource
  52. private PrintCommonService printCommonService;
  53. @Resource
  54. private AsyncSysUserDataImportService asyncSysUserDataImportService;
  55. /**
  56. * 用户列表查询
  57. *
  58. * @param userInfo 用户信息(账号/姓名/手机号)
  59. * @param roleId
  60. * @param orgId
  61. * @param enable
  62. * @param pageNumber
  63. * @param pageSize
  64. * @return
  65. */
  66. @ApiOperation(value = "查询")
  67. @RequestMapping(value = "/list", method = RequestMethod.POST)
  68. public Result list(@RequestParam(value = "userInfo", required = false) String userInfo,
  69. @RequestParam(value = "orgId", required = false) String orgId,
  70. @RequestParam(value = "roleId", required = false) String roleId,
  71. @RequestParam(value = "enable", required = false) Boolean enable,
  72. @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  73. @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  74. return ResultUtil.ok(sysUserService.listForPrintSystem(userInfo, SystemConstant.convertIdToLong(orgId), roleId, enable, pageNumber, pageSize));
  75. }
  76. /**
  77. * 查询
  78. *
  79. * @param realName
  80. * @param enable
  81. * @return
  82. */
  83. @ApiOperation(value = "查询")
  84. @RequestMapping(value = "/list_customer", method = RequestMethod.POST)
  85. public Result listCustomer(@RequestParam(value = "realName", required = false) String realName,
  86. @RequestParam(value = "enable", required = false) Boolean enable,
  87. @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  88. @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  89. return ResultUtil.ok(sysUserService.listCustomer(realName, enable, pageNumber, pageSize));
  90. }
  91. /**
  92. * 根据科目查询命题老师
  93. *
  94. * @param courseCode
  95. * @param param
  96. * @return
  97. */
  98. @ApiOperation(value = "根据科目查询命题老师")
  99. @RequestMapping(value = "/user_list", method = RequestMethod.POST)
  100. public Result userQuery(@RequestParam(value = "courseCode", required = false) String courseCode,
  101. @RequestParam(value = "param", required = false) String param) {
  102. return ResultUtil.ok(sysUserService.listUser(courseCode, param));
  103. }
  104. /**
  105. * 新增/修改
  106. *
  107. * @param userSaveParams
  108. * @return
  109. */
  110. @ApiOperation(value = "新增/修改")
  111. @RequestMapping(value = "/save", method = RequestMethod.POST)
  112. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
  113. public Result save(@ApiParam(value = "用户信息", required = true) @Valid @RequestBody UserSaveParams userSaveParams, BindingResult bindingResult) throws IllegalAccessException {
  114. if (bindingResult.hasErrors()) {
  115. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  116. }
  117. sysUserService.saveUser(userSaveParams);
  118. return ResultUtil.ok(true);
  119. }
  120. /**
  121. * 新增客服
  122. *
  123. * @param userSaveParams
  124. * @return
  125. */
  126. @ApiOperation(value = "新增客服")
  127. @RequestMapping(value = "/save_customer", method = RequestMethod.POST)
  128. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
  129. public Result saveCustomer(@ApiParam(value = "用户信息", required = true) @Valid @RequestBody UserSaveParams userSaveParams, BindingResult bindingResult) {
  130. if (bindingResult.hasErrors()) {
  131. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  132. }
  133. return ResultUtil.ok(sysUserService.saveCustomer(userSaveParams));
  134. }
  135. /**
  136. * 启用/禁用
  137. *
  138. * @param user
  139. * @return
  140. */
  141. @ApiOperation(value = "启用/禁用")
  142. @RequestMapping(value = "/enable", method = RequestMethod.POST)
  143. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  144. public Result enable(@RequestBody SysUser user) throws NoSuchAlgorithmException, IllegalAccessException {
  145. sysUserService.enable(user);
  146. return ResultUtil.ok();
  147. }
  148. @ApiOperation(value = "课程管理-批量删除")
  149. @RequestMapping(value = "/delete_batch", method = RequestMethod.POST)
  150. @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})
  151. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
  152. public Result deleteBatch(@ApiParam(value = "删除对象ID集合", required = true) @RequestParam List<Long> idList) {
  153. return ResultUtil.ok(sysUserService.removeBasicCourseBatch(idList));
  154. }
  155. /**
  156. * 删除
  157. *
  158. * @param id 用户ID
  159. * @return
  160. */
  161. @ApiOperation(value = "删除")
  162. @RequestMapping(value = "/remove", method = RequestMethod.POST)
  163. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
  164. public Result remove(@RequestParam(value = "id", required = true) Long id) throws NoSuchAlgorithmException {
  165. return ResultUtil.ok(sysUserService.remove(id));
  166. }
  167. /**
  168. * 重置密码
  169. *
  170. * @param user
  171. * @return
  172. */
  173. @ApiOperation(value = "重置密码")
  174. @RequestMapping(value = "/reset_password", method = RequestMethod.POST)
  175. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  176. public Result resetPassword(@RequestBody SysUser user) throws NoSuchAlgorithmException {
  177. return ResultUtil.ok(sysUserService.resetPassword(user.getId()));
  178. }
  179. /**
  180. * 修改密码
  181. *
  182. * @return
  183. */
  184. @ApiOperation(value = "修改密码")
  185. @RequestMapping(value = "/update_password", method = RequestMethod.POST)
  186. @Aac(strict = false, auth = false)
  187. @OperationLogDetail(detail = "修改密码", customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  188. public Result updatePassword(@RequestBody SysUser user) throws NoSuchAlgorithmException {
  189. return ResultUtil.ok(sysUserService.updatePassword(user));
  190. }
  191. /**
  192. * 绑定角色
  193. *
  194. * @param sysUser
  195. * @return
  196. */
  197. @ApiOperation(value = "绑定角色")
  198. @RequestMapping(value = "/bind_roles", method = RequestMethod.POST)
  199. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  200. public Result bindRoles(@RequestBody SysUser sysUser) {
  201. return ResultUtil.ok(sysUserService.bindRoles(sysUser));
  202. }
  203. @ApiOperation(value = "用户管理-批量导入(异步)")
  204. @RequestMapping(value = "/import", method = RequestMethod.POST)
  205. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  206. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
  207. public Result sysUserImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
  208. SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
  209. Map<String, Object> map = printCommonService.saveTask(file, TaskTypeEnum.USER_IMPORT);
  210. map.put(SystemConstant.SYS_USER, sysUser);
  211. asyncSysUserDataImportService.importTask(map);
  212. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  213. return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
  214. }
  215. @ApiOperation(value = "用户管理-导出")
  216. @RequestMapping(value = "/export", method = RequestMethod.POST)
  217. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  218. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EXPORT)
  219. public void export(@RequestParam(value = "userInfo", required = false) String userInfo,
  220. @RequestParam(value = "orgId", required = false) String orgId,
  221. @RequestParam(value = "roleId", required = false) String roleId,
  222. @RequestParam(value = "enable", required = false) Boolean enable,
  223. HttpServletResponse response) throws Exception {
  224. sysUserService.exportData(response, userInfo, SystemConstant.convertIdToLong(orgId), roleId, enable);
  225. }
  226. }