AppUserController.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package com.aijiuyi.admin.controller;
  2. import com.aijiuyi.admin.common.annotation.Log;
  3. import com.aijiuyi.admin.common.entity.Result;
  4. import com.aijiuyi.admin.common.enums.OperationType;
  5. import com.aijiuyi.admin.controller.dto.AppUserQueryDTO;
  6. import com.aijiuyi.admin.entity.AppUser;
  7. import com.aijiuyi.admin.service.AppUserService;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.baomidou.mybatisplus.core.metadata.IPage;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.*;
  12. import java.util.List;
  13. /**
  14. * 应用用户管理 Controller(管理员后台)
  15. * 提供应用用户的增删改查和状态管理接口
  16. */
  17. @RestController
  18. @RequestMapping("/user/app")
  19. public class AppUserController {
  20. @Autowired
  21. private AppUserService appUserService;
  22. /**
  23. * 获取应用用户选项列表(用于方案创作人选择框)
  24. * 返回所有启用状态的用户,前端根据 userType 区分角色
  25. *
  26. * @param userType 可选过滤:1=普通用户,2=专家,3=管理员;null=全部
  27. * @return 用户列表(id + nickname + username + userType)
  28. */
  29. @GetMapping("/list")
  30. @Log(value = "获取用户选项列表", module = "用户管理", operationType = OperationType.QUERY)
  31. public Result<List<AppUser>> list(@RequestParam(required = false) Integer userType) {
  32. LambdaQueryWrapper<AppUser> wrapper = new LambdaQueryWrapper<AppUser>()
  33. .eq(AppUser::getStatus, 1)
  34. .eq(userType != null, AppUser::getUserType, userType)
  35. .select(AppUser::getId, AppUser::getNickname, AppUser::getUsername, AppUser::getUserType)
  36. .orderByAsc(AppUser::getUserType)
  37. .orderByAsc(AppUser::getId);
  38. return Result.success(appUserService.list(wrapper));
  39. }
  40. /**
  41. * 分页查询应用用户列表
  42. *
  43. * @param queryDTO 查询条件
  44. * @return 分页结果
  45. */
  46. @GetMapping("/page")
  47. @Log(value = "查询应用用户列表", module = "用户管理", operationType = OperationType.QUERY)
  48. public Result<IPage<AppUser>> page(AppUserQueryDTO queryDTO) {
  49. return Result.success(appUserService.pageList(queryDTO));
  50. }
  51. /**
  52. * 查询应用用户详情
  53. *
  54. * @param id 用户ID
  55. * @return 用户详情
  56. */
  57. @GetMapping("/{id}")
  58. @Log(value = "查询应用用户详情", module = "用户管理", operationType = OperationType.QUERY)
  59. public Result<AppUser> getById(@PathVariable Long id) {
  60. return Result.success(appUserService.getById(id));
  61. }
  62. /**
  63. * 新增应用用户
  64. *
  65. * @param appUser 用户信息
  66. * @return 操作结果
  67. */
  68. @PostMapping
  69. @Log(value = "新增应用用户", module = "用户管理", operationType = OperationType.INSERT)
  70. public Result<Void> add(@RequestBody AppUser appUser) {
  71. appUserService.addUser(appUser);
  72. return Result.success();
  73. }
  74. /**
  75. * 修改应用用户
  76. *
  77. * @param appUser 用户信息
  78. * @return 操作结果
  79. */
  80. @PutMapping
  81. @Log(value = "修改应用用户", module = "用户管理", operationType = OperationType.UPDATE)
  82. public Result<Void> update(@RequestBody AppUser appUser) {
  83. appUserService.updateUser(appUser);
  84. return Result.success();
  85. }
  86. /**
  87. * 删除应用用户(逻辑删除)
  88. *
  89. * @param id 用户ID
  90. * @return 操作结果
  91. */
  92. @DeleteMapping("/{id}")
  93. @Log(value = "删除应用用户", module = "用户管理", operationType = OperationType.DELETE)
  94. public Result<Void> delete(@PathVariable Long id) {
  95. appUserService.deleteUser(id);
  96. return Result.success();
  97. }
  98. /**
  99. * 修改应用用户状态(禁用/启用)
  100. *
  101. * @param id 用户ID
  102. * @param status 目标状态:1=启用,0=禁用
  103. * @return 操作结果
  104. */
  105. @PutMapping("/{id}/status")
  106. @Log(value = "修改应用用户状态", module = "用户管理", operationType = OperationType.UPDATE)
  107. public Result<Void> updateStatus(@PathVariable Long id, @RequestParam Integer status) {
  108. appUserService.updateStatus(id, status);
  109. return Result.success();
  110. }
  111. }