package com.qqflow.engine.domain.system.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.qqflow.engine.common.PageResult; import com.qqflow.engine.common.Result; import com.qqflow.engine.domain.system.assembler.UserAssembler; import com.qqflow.engine.domain.system.dto.BindWeComDTO; import com.qqflow.engine.domain.system.dto.UserDTO; import com.qqflow.engine.domain.system.entity.SysUser; import com.qqflow.engine.domain.system.service.SysUserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Tag(name = "用户管理") @RestController @RequestMapping("/system/user") @PreAuthorize("hasAnyRole('super_admin','flow_manager')") public class SysUserController { @Resource private SysUserService sysUserService; @Operation(summary = "分页查询用户") @GetMapping("/list") public Result> list( @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(required = false) Long deptId, @RequestParam(required = false) String username, @RequestParam(required = false) Integer status) { Page page = sysUserService.pageUsers(new Page<>(pageNum, pageSize), deptId, username, status); return Result.ok(PageResult.of(page.getTotal(), page.getRecords())); } @Operation(summary = "根据ID查询用户") @GetMapping("/{id}") public Result getById(@PathVariable Long id) { SysUser user = sysUserService.getUserById(id); return Result.ok(UserAssembler.toDTO(user)); } @Operation(summary = "根据用户名查询") @GetMapping("/username/{username}") public Result getByUsername(@PathVariable String username) { SysUser user = sysUserService.getByUsername(username); return Result.ok(UserAssembler.toDTO(user)); } @Operation(summary = "新增用户") @PostMapping @PreAuthorize("hasRole('super_admin')") public Result add(@RequestBody SysUser user) { sysUserService.addUser(user); return Result.ok(); } @Operation(summary = "修改用户") @PutMapping @PreAuthorize("hasRole('super_admin')") public Result update(@RequestBody SysUser user) { sysUserService.updateUser(user); return Result.ok(); } @Operation(summary = "删除用户") @DeleteMapping("/{id}") @PreAuthorize("hasRole('super_admin')") public Result delete(@PathVariable Long id) { sysUserService.removeUser(id); return Result.ok(); } /** * 绑定/解绑员工企业微信账号 *

* TODO: 实际企微消息推送由外部对接系统完成,本接口仅保存用户与企微账号的映射关系。 *

*/ @Operation(summary = "绑定/解绑企业微信账号") @PutMapping("/{id}/wecom") @PreAuthorize("hasRole('super_admin')") public Result bindWeCom(@PathVariable Long id, @RequestBody BindWeComDTO dto) { sysUserService.bindWeCom(id, dto.getWecomUserId(), dto.getWecomRemindEnabled()); return Result.ok(); } }