|
|
package com.gym.controller;
|
|
|
|
|
|
import com.gym.model.User;
|
|
|
import com.gym.service.UserService;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.servlet.http.HttpSession;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Optional;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/api/users")
|
|
|
public class UserController {
|
|
|
|
|
|
@Autowired
|
|
|
private UserService userService;
|
|
|
|
|
|
// 用户注册
|
|
|
@PostMapping("/register")
|
|
|
public Map<String, Object> register(@RequestBody User user) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
try {
|
|
|
User registeredUser = userService.register(user);
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "注册成功");
|
|
|
response.put("data", registeredUser);
|
|
|
} catch (Exception e) {
|
|
|
response.put("code", 400);
|
|
|
response.put("message", e.getMessage());
|
|
|
}
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 用户登录
|
|
|
|
|
|
@PostMapping("/login")
|
|
|
public Map<String, Object> login(@RequestBody Map<String, String> loginData) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
try {
|
|
|
String username = loginData.get("username");
|
|
|
String password = loginData.get("password");
|
|
|
|
|
|
// 验证参数
|
|
|
if (username == null || password == null) {
|
|
|
response.put("code", 400);
|
|
|
response.put("message", "用户名和密码不能为空");
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 调用服务层登录
|
|
|
Optional<User> userOpt = userService.login(username, password);
|
|
|
|
|
|
if (userOpt.isPresent()) {
|
|
|
User user = userOpt.get();
|
|
|
|
|
|
// 创建返回数据(不包含敏感信息)
|
|
|
Map<String, Object> userData = new HashMap<>();
|
|
|
userData.put("id", user.getId());
|
|
|
userData.put("username", user.getUsername());
|
|
|
userData.put("email", user.getEmail());
|
|
|
userData.put("role", user.getRole());
|
|
|
userData.put("realName", user.getRealName());
|
|
|
userData.put("points", user.getPoints());
|
|
|
userData.put("lastLogin", user.getLastLogin());
|
|
|
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "登录成功");
|
|
|
response.put("data", userData);
|
|
|
} else {
|
|
|
response.put("code", 401);
|
|
|
response.put("message", "用户名或密码错误");
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
response.put("code", 500);
|
|
|
response.put("message", "登录失败: " + e.getMessage());
|
|
|
}
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 获取所有用户
|
|
|
@GetMapping
|
|
|
public Map<String, Object> getAllUsers() {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
List<User> users = userService.getAllUsers();
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "获取成功");
|
|
|
response.put("data", users);
|
|
|
response.put("count", users.size());
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 根据角色获取用户
|
|
|
@GetMapping("/role/{role}")
|
|
|
public Map<String, Object> getUsersByRole(@PathVariable String role) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
List<User> users = userService.getUsersByRole(role);
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "获取成功");
|
|
|
response.put("data", users);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 获取单个用户
|
|
|
@GetMapping("/{id}")
|
|
|
public Map<String, Object> getUserById(@PathVariable Long id) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
return userService.getUserById(id)
|
|
|
.map(user -> {
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "获取成功");
|
|
|
response.put("data", user);
|
|
|
return response;
|
|
|
})
|
|
|
.orElseGet(() -> {
|
|
|
response.put("code", 404);
|
|
|
response.put("message", "用户不存在");
|
|
|
return response;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 更新用户信息
|
|
|
@PutMapping("/{id}")
|
|
|
public Map<String, Object> updateUser(@PathVariable Long id, @RequestBody User user) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
try {
|
|
|
User updatedUser = userService.updateUser(id, user);
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "更新成功");
|
|
|
response.put("data", updatedUser);
|
|
|
} catch (Exception e) {
|
|
|
response.put("code", 400);
|
|
|
response.put("message", e.getMessage());
|
|
|
}
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 检查用户名是否可用
|
|
|
@GetMapping("/check-username")
|
|
|
public Map<String, Object> checkUsername(@RequestParam String username) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
boolean available = userService.isUsernameAvailable(username);
|
|
|
response.put("code", 200);
|
|
|
response.put("message", available ? "用户名可用" : "用户名已存在");
|
|
|
response.put("available", available);
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 添加积分
|
|
|
@PostMapping("/{id}/add-points")
|
|
|
public Map<String, Object> addPoints(@PathVariable Long id, @RequestBody Map<String, Integer> data) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
try {
|
|
|
Integer points = data.get("points");
|
|
|
User user = userService.addPoints(id, points);
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "积分添加成功");
|
|
|
response.put("data", user);
|
|
|
} catch (Exception e) {
|
|
|
response.put("code", 400);
|
|
|
response.put("message", e.getMessage());
|
|
|
}
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
// 用户登出
|
|
|
@PostMapping("/logout")
|
|
|
public Map<String, Object> logout(HttpServletRequest request) {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
try {
|
|
|
// 清除会话(如果使用session)
|
|
|
HttpSession session = request.getSession(false);
|
|
|
if (session != null) {
|
|
|
session.invalidate();
|
|
|
}
|
|
|
|
|
|
response.put("code", 200);
|
|
|
response.put("message", "登出成功");
|
|
|
} catch (Exception e) {
|
|
|
response.put("code", 500);
|
|
|
response.put("message", "登出失败");
|
|
|
}
|
|
|
return response;
|
|
|
}
|
|
|
} |