diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/User.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/User.java index 340184f88eafafecbec47650f2a45598f2f119fb..9f5bd332dbac8aecd02c0cdd0629dea4d5a58c05 100644 --- a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/User.java +++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/User.java @@ -3,9 +3,11 @@ package uk.ac.cf.spring.demo.sports.Userdetail; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Data @AllArgsConstructor +@NoArgsConstructor // 自动生成无参构造函数 public class User { private Long id; private String email; diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserController.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserController.java index b908c5565cc3ad3d4cec565f5c03f97949672920..483e3b5a5c1486d4ed0f1cc7808b76df825b80b6 100644 --- a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserController.java +++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserController.java @@ -1,63 +1,50 @@ package uk.ac.cf.spring.demo.sports.Userdetail; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import java.util.List; - +@RestController @Controller public class UserController { - // 依赖注入 UserService private final UserService userService; + // 使用 @Autowired 进行依赖注入(构造函数注入) + @Autowired public UserController(UserService userService) { this.userService = userService; } - // 显示所有用户列表 - @GetMapping("/users") - public ModelAndView getUsers() { - ModelAndView modelAndView = new ModelAndView("user/allUserList"); - List<User> users = userService.getAllUsers(); - modelAndView.addObject("users", users); - return modelAndView; + // 获取所有用户列表 + @GetMapping + public List<User> getAllUsers() { + return userService.getAllUsers(); } - // 通过用户 ID 查看用户详情 - @GetMapping("/users/{id}") - public ModelAndView getUserById(@PathVariable Long id) { - ModelAndView modelAndView = new ModelAndView("user/userDetails"); - User user = userService.getUserById(id); - modelAndView.addObject("user", user); - return modelAndView; + // 通过用户 ID 获取用户详情 + @GetMapping("/api/users/{id}") + public User getUserById(@PathVariable Long id) { + return userService.getUserById(id); } - // 显示添加用户的表单 - @GetMapping("/users/add") - public ModelAndView addUser() { - ModelAndView modelAndView = new ModelAndView("user/userForm"); - Userform emptyUserform = new Userform(); - modelAndView.addObject("user", emptyUserform); - return modelAndView; + // 添加用户 + @PostMapping + public void addUser(@RequestBody User user) { + userService.addUser(user); } - // 显示编辑用户信息的表单 - @GetMapping("/users/edit/{id}") - public ModelAndView editUser(@PathVariable("id") Long id) { - ModelAndView modelAndView = new ModelAndView("user/userForm"); - // 获取需要编辑的用户 - User userToEdit = userService.getUserById(id); - - // 创建表单对象 - Userform userform = new Userform( - userToEdit.getId(), - userToEdit.getEmail(), - userToEdit.getUsername() - ); - - modelAndView.addObject("user", userform); - return modelAndView; + // 更新用户信息 +// @PutMapping("/{id}") +// public void updateUser(@PathVariable Long id, @RequestBody User user) { +// user.setId(id); // 确保更新的对象有正确的 ID +// userService.updateUser(user); +// } + + // 删除用户 + @DeleteMapping("/{id}") + public void deleteUser(@PathVariable Long id) { + userService.deleteUser(id); } } \ No newline at end of file diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserService.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserService.java index 640518b30d217eb4fbc329e25af55424e4655cdd..7c3f4f454e7dbf0a21355658ecddff310d4e2c52 100644 --- a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserService.java +++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserService.java @@ -18,4 +18,6 @@ public interface UserService { // 添加用户 void addUser(User user); + + void deleteUser(Long id); } \ No newline at end of file diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserServiceImpl.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserServiceImpl.java index bfdae7761de7d41de3bc97ff6aec73ef5cc30a6e..b180ab3d2454e8c7f0b86fcc3873e5d04205f286 100644 --- a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserServiceImpl.java +++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserServiceImpl.java @@ -6,9 +6,13 @@ import java.util.List; @Service public class UserServiceImpl implements UserService{ + private final userDao userDao; // 声明依赖 + public UserServiceImpl(userDao userDao) { + this.userDao = userDao; + } @Override public List<User> getAllUsers() { - return null; + return userDao.getAllUsers(); } @Override @@ -30,4 +34,9 @@ public class UserServiceImpl implements UserService{ public void addUser(User user) { } + + @Override + public void deleteUser(Long id) { + + } } diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/userDao.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/userDao.java new file mode 100644 index 0000000000000000000000000000000000000000..fa67c47b92eab70cca483012261b532e21b0e9ce --- /dev/null +++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/userDao.java @@ -0,0 +1,70 @@ +package uk.ac.cf.spring.demo.sports.Userdetail; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository // 标注为 Spring 管理的 Bean +public class userDao { + + private final JdbcTemplate jdbcTemplate; + + // 构造函数注入 JdbcTemplate + public userDao(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + // get all users + public List<User> getAllUsers() { + // 查询所有用户的 SQL 语句 + String sql = "SELECT id, email, username FROM information"; + + // 执行查询并将结果映射到 User 对象 + return jdbcTemplate.query(sql, (rs, rowNum) -> new User( + rs.getLong("id"), // 获取 id + rs.getString("email"), // 获取 email + rs.getString("username") // 获取 username + )); + } + + // 根据 ID 获取单个用户 + public User getUserById(Long id) { + // 查询单个用户的 SQL 语句 + String sql = "SELECT id, email, username FROM information WHERE id = ?"; + + // 执行查询并返回唯一的 User 对象 + return jdbcTemplate.queryForObject(sql, new Object[]{id}, (rs, rowNum) -> new User( + rs.getLong("id"), // 获取 id + rs.getString("email"), // 获取 email + rs.getString("username") // 获取 username + )); + } + + // 添加一个新用户 + public int addUser(User user) { + // 插入用户的 SQL 语句 + String sql = "INSERT INTO information (email, username) VALUES (?, ?)"; + + // 执行插入操作并返回受影响的行数 + return jdbcTemplate.update(sql, user.getEmail(), user.getUsername()); + } + + // update user message + public int updateUser(User user) { + // 更新用户的 SQL 语句 + String sql = "UPDATE information SET email = ?, username = ? WHERE id = ?"; + + // 执行更新操作并返回受影响的行数 + return jdbcTemplate.update(sql, user.getEmail(), user.getUsername(), user.getId()); + } + + // delete user + public int deleteUser(Long id) { + // 删除用户的 SQL 语句 + String sql = "DELETE FROM information WHERE id = ?"; + + // 执行删除操作并返回受影响的行数 + return jdbcTemplate.update(sql, id); + } +} diff --git a/src/main/resources/static/css/UserCenter.css b/src/main/resources/static/css/UserCenter.css new file mode 100644 index 0000000000000000000000000000000000000000..effebd9fb9fd169470b2b6209c4aa50bfabf8228 --- /dev/null +++ b/src/main/resources/static/css/UserCenter.css @@ -0,0 +1,10 @@ +/* 顶部区域 */ +.header { + background-color: gray; /* 背景颜色为灰色 */ + color: white; /* 字体颜色为白色 */ + text-align: center; /* 文字居中对齐 */ + padding: 20px 0; /* 上下内边距,增大高度 */ + margin: 0; /* 去掉默认的外边距 */ + font-size: 24px; /* 字体大小 */ + font-weight: bold; /* 字体加粗 */ +} \ No newline at end of file diff --git a/src/main/resources/static/html/UserCenter.html b/src/main/resources/static/html/UserCenter.html new file mode 100644 index 0000000000000000000000000000000000000000..5a8e9f513d26ef1d8ef470608611f04627ab8b69 --- /dev/null +++ b/src/main/resources/static/html/UserCenter.html @@ -0,0 +1,46 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>UserCenter</title> + <link rel="stylesheet" type="text/css" href="/css/navBar.css"> + <link rel="stylesheet" href="/css/footer.css"> + <link rel="stylesheet" href="/css/matchSchedule.css"> +</head> +<body> +<div id="navbar-container"></div> +<div class="title-h1"> + <h1><p>UserCenter</p></h1> +</div> +<table> + <thead> + <tr> + <th>ID</th> + <th>Username</th> + <th>Email</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + <!-- 动态生成用户数据 --> + <tr th:each="user : ${users}"> + <td th:text="${user.id}"></td> + <td th:text="${user.username}"></td> + <td th:text="${user.email}"></td> + <td> + <a th:href="@{/users/edit/{id}(id=${user.id})}">Edit</a> + <a th:href="@{/users/delete/{id}(id=${user.id})}">Delete</a> + </td> + </tr> + </tbody> +</table> +<div id="footer-container"></div> +<script src="/js/UserCenter.js"></script> +<script src="/js/navBar.js"></script> +<script src="/js/footer.js"></script> +<script> + loadNavbar('navbar-container'); + loadFooter('footer-container'); +</script> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/static/js/UserCenter.js b/src/main/resources/static/js/UserCenter.js new file mode 100644 index 0000000000000000000000000000000000000000..5a1bef3a6200a405aa4b62f210ef7da6afedb037 --- /dev/null +++ b/src/main/resources/static/js/UserCenter.js @@ -0,0 +1,38 @@ +// userTable.js + +// 动态加载用户数据 +async function loadUsers(id) { + try { + const response = await fetch('/api/users/${id}'); // 确保后端提供了此 API + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + + const users = await response.json(); + + // 获取表格的 tbody 元素 + const tbody = document.querySelector('tbody'); + tbody.innerHTML = ''; // 清空旧的数据 + + // 遍历用户数据并生成表格行 + users.forEach(user => { + const row = document.createElement('tr'); + row.innerHTML = ` + <td>${user.id}</td> + <td>${user.username}</td> + <td>${user.email}</td> + <td> + <a href="/users/edit/${user.id}">Edit</a> + <a href="/users/delete/${user.id}">Delete</a> + </td> + `; + tbody.appendChild(row); + }); + } + catch (error) { + console.error('Error loading users:', error); + } +} + +// 等页面加载完成后执行加载操作 +document.addEventListener('DOMContentLoaded', loadUsers); diff --git a/src/main/resources/templates/Usercenter/Usercenter.html b/src/main/resources/templates/Usercenter/Usercenter.html index 4f1c57ee84ce5cc4ed12c58ffdb3bb8a24636538..170d68f4ff4ddf962309b5160e6605e7cad0e770 100644 --- a/src/main/resources/templates/Usercenter/Usercenter.html +++ b/src/main/resources/templates/Usercenter/Usercenter.html @@ -3,8 +3,10 @@ <head> <meta charset="UTF-8"> <title>Title</title> + <link rel="stylesheet" href="../css/UserCenter.css"> </head> <body> + <table> <thead> <tr>