UserController.java
5.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.aigeo.company.controller;
import com.aigeo.common.enums.UserRole;
import com.aigeo.company.entity.User;
import com.aigeo.company.service.UserService;
import com.aigeo.common.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 用户控制器
*/
@Slf4j
@RestController
@RequestMapping("/api/users")
@Tag(name = "用户管理", description = "用户相关接口")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
@Operation(summary = "创建用户", description = "创建新的用户")
public Result<User> createUser(@RequestBody User user) {
try {
User savedUser = userService.save(user);
return Result.success("用户创建成功", savedUser);
} catch (Exception e) {
log.error("创建用户失败", e);
return Result.error("用户创建失败");
}
}
@GetMapping("/{id}")
@Operation(summary = "获取用户详情", description = "根据ID获取用户详情")
public Result<User> getUserById(@PathVariable Integer id) {
try {
return userService.findById(id)
.map(user -> Result.success("查询成功", user))
.orElse(Result.error("用户不存在"));
} catch (Exception e) {
log.error("获取用户详情失败, id: {}", id, e);
return Result.error("查询失败");
}
}
@GetMapping
@Operation(summary = "获取用户列表", description = "获取所有用户列表")
public Result<List<User>> getAllUsers() {
try {
List<User> users = userService.findAll();
return Result.success("查询成功", users);
} catch (Exception e) {
log.error("获取用户列表失败", e);
return Result.error("查询失败");
}
}
@GetMapping("/company/{companyId}")
@Operation(summary = "根据公司ID获取用户列表", description = "根据公司ID获取用户列表")
public Result<List<User>> getUsersByCompanyId(@PathVariable Integer companyId) {
try {
List<User> users = userService.findByCompanyId(companyId);
return Result.success("查询成功", users);
} catch (Exception e) {
log.error("根据公司ID获取用户列表失败, companyId: {}", companyId, e);
return Result.error("查询失败");
}
}
@GetMapping("/role/{role}")
@Operation(summary = "根据角色获取用户列表", description = "根据角色获取用户列表")
public Result<List<User>> getUsersByRole(@PathVariable String role) {
try {
UserRole userRole = UserRole.fromCode(role);
List<User> users = userService.findByRole(userRole);
return Result.success("查询成功", users);
} catch (Exception e) {
log.error("根据角色获取用户列表失败, role: {}", role, e);
return Result.error("查询失败");
}
}
@GetMapping("/company/{companyId}/active")
@Operation(summary = "根据公司ID获取启用的用户列表", description = "根据公司ID获取启用的用户列表")
public Result<List<User>> getActiveUsersByCompanyId(@PathVariable Integer companyId) {
try {
List<User> users = userService.findActiveByCompanyId(companyId);
return Result.success("查询成功", users);
} catch (Exception e) {
log.error("根据公司ID获取启用的用户列表失败, companyId: {}", companyId, e);
return Result.error("查询失败");
}
}
@PutMapping("/{id}")
@Operation(summary = "更新用户", description = "更新用户信息")
public Result<User> updateUser(@PathVariable Integer id, @RequestBody User user) {
try {
if (!userService.findById(id).isPresent()) {
return Result.error("用户不存在");
}
user.setId(id);
User updatedUser = userService.save(user);
return Result.success("用户更新成功", updatedUser);
} catch (Exception e) {
log.error("更新用户失败, id: {}", id, e);
return Result.error("用户更新失败");
}
}
@DeleteMapping("/{id}")
@Operation(summary = "删除用户", description = "删除指定ID的用户")
public Result<String> deleteUser(@PathVariable Integer id) {
try {
if (!userService.findById(id).isPresent()) {
return Result.error("用户不存在");
}
userService.deleteById(id);
return Result.success("用户删除成功");
} catch (Exception e) {
log.error("删除用户失败, id: {}", id, e);
return Result.error("用户删除失败");
}
}
}