SysUserController.java 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.qqflow.engine.domain.system.controller;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.qqflow.engine.common.PageResult;
  4. import com.qqflow.engine.common.Result;
  5. import com.qqflow.engine.domain.system.assembler.UserAssembler;
  6. import com.qqflow.engine.domain.system.dto.BindWeComDTO;
  7. import com.qqflow.engine.domain.system.dto.UserDTO;
  8. import com.qqflow.engine.domain.system.entity.SysUser;
  9. import com.qqflow.engine.domain.system.service.SysUserService;
  10. import io.swagger.v3.oas.annotations.Operation;
  11. import io.swagger.v3.oas.annotations.tags.Tag;
  12. import jakarta.annotation.Resource;
  13. import org.springframework.security.access.prepost.PreAuthorize;
  14. import org.springframework.web.bind.annotation.DeleteMapping;
  15. import org.springframework.web.bind.annotation.GetMapping;
  16. import org.springframework.web.bind.annotation.PathVariable;
  17. import org.springframework.web.bind.annotation.PostMapping;
  18. import org.springframework.web.bind.annotation.PutMapping;
  19. import org.springframework.web.bind.annotation.RequestBody;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RequestParam;
  22. import org.springframework.web.bind.annotation.RestController;
  23. @Tag(name = "用户管理")
  24. @RestController
  25. @RequestMapping("/system/user")
  26. @PreAuthorize("hasAnyRole('super_admin','flow_manager')")
  27. public class SysUserController {
  28. @Resource
  29. private SysUserService sysUserService;
  30. @Operation(summary = "分页查询用户")
  31. @GetMapping("/list")
  32. public Result<PageResult<UserDTO>> list(
  33. @RequestParam(defaultValue = "1") Integer pageNum,
  34. @RequestParam(defaultValue = "10") Integer pageSize,
  35. @RequestParam(required = false) Long deptId,
  36. @RequestParam(required = false) String username,
  37. @RequestParam(required = false) Integer status) {
  38. Page<UserDTO> page = sysUserService.pageUsers(new Page<>(pageNum, pageSize), deptId, username, status);
  39. return Result.ok(PageResult.of(page.getTotal(), page.getRecords()));
  40. }
  41. @Operation(summary = "根据ID查询用户")
  42. @GetMapping("/{id}")
  43. public Result<UserDTO> getById(@PathVariable Long id) {
  44. SysUser user = sysUserService.getUserById(id);
  45. return Result.ok(UserAssembler.toDTO(user));
  46. }
  47. @Operation(summary = "根据用户名查询")
  48. @GetMapping("/username/{username}")
  49. public Result<UserDTO> getByUsername(@PathVariable String username) {
  50. SysUser user = sysUserService.getByUsername(username);
  51. return Result.ok(UserAssembler.toDTO(user));
  52. }
  53. @Operation(summary = "新增用户")
  54. @PostMapping
  55. @PreAuthorize("hasRole('super_admin')")
  56. public Result<Void> add(@RequestBody SysUser user) {
  57. sysUserService.addUser(user);
  58. return Result.ok();
  59. }
  60. @Operation(summary = "修改用户")
  61. @PutMapping
  62. @PreAuthorize("hasRole('super_admin')")
  63. public Result<Void> update(@RequestBody SysUser user) {
  64. sysUserService.updateUser(user);
  65. return Result.ok();
  66. }
  67. @Operation(summary = "删除用户")
  68. @DeleteMapping("/{id}")
  69. @PreAuthorize("hasRole('super_admin')")
  70. public Result<Void> delete(@PathVariable Long id) {
  71. sysUserService.removeUser(id);
  72. return Result.ok();
  73. }
  74. /**
  75. * 绑定/解绑员工企业微信账号
  76. * <p>
  77. * TODO: 实际企微消息推送由外部对接系统完成,本接口仅保存用户与企微账号的映射关系。
  78. * </p>
  79. */
  80. @Operation(summary = "绑定/解绑企业微信账号")
  81. @PutMapping("/{id}/wecom")
  82. @PreAuthorize("hasRole('super_admin')")
  83. public Result<Void> bindWeCom(@PathVariable Long id, @RequestBody BindWeComDTO dto) {
  84. sysUserService.bindWeCom(id, dto.getWecomUserId(), dto.getWecomRemindEnabled());
  85. return Result.ok();
  86. }
  87. }