数据库链接测试

Change-Id: If3262e1fe7b9202521a1a26444501628f8f5b3b0
diff --git a/pom.xml b/pom.xml
index 0f0ba0d..ea2bf36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,7 +34,15 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jdbc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <scope>runtime</scope>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
@@ -46,6 +54,14 @@
             <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/src/main/java/com/intelligentclass/backend/BackendApplication.java b/src/main/java/com/pt/BackendApplication.java
similarity index 88%
rename from src/main/java/com/intelligentclass/backend/BackendApplication.java
rename to src/main/java/com/pt/BackendApplication.java
index 259125e..28bc5cb 100644
--- a/src/main/java/com/intelligentclass/backend/BackendApplication.java
+++ b/src/main/java/com/pt/BackendApplication.java
@@ -1,4 +1,4 @@
-package com.intelligentclass.backend;
+package com.pt;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/src/main/java/com/pt/controller/UserController.java b/src/main/java/com/pt/controller/UserController.java
new file mode 100644
index 0000000..4ced292
--- /dev/null
+++ b/src/main/java/com/pt/controller/UserController.java
@@ -0,0 +1,86 @@
+package com.pt.controller;
+
+import com.pt.entity.User;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import com.pt.service.UserService;
+
+@RestController
+@RequestMapping("/api/user")
+@CrossOrigin(origins = "*")
+public class UserController {
+
+    @Autowired
+    private UserService userService;
+
+    @PostMapping("/register")
+    public ResponseEntity<?> registerUser(@RequestParam("username") String username,
+                                          @RequestParam("password") String password,
+                                          @RequestParam("email") String email) {
+        User user = userService.findByUsername(username);
+        if (user != null) {
+            return ResponseEntity.badRequest().body("User already exists");
+        } else {
+            User newUser = new User();
+
+            String uid = String.valueOf(System.currentTimeMillis());
+            newUser.setUid(uid);
+            newUser.setUsername(username);
+            newUser.setPassword(password);
+            newUser.setEmail(email);
+            userService.save(newUser);
+            return ResponseEntity.ok("User registered successfully");
+        }
+    }
+
+    @PostMapping("/login")
+    public ResponseEntity<?> loginUser(@RequestParam("username") String username,
+                                       @RequestParam("password") String password) {
+        User user = userService.findByUsernameAndPassword(username, password);
+        if (user != null) {
+            return ResponseEntity.ok("Login successful");
+        } else {
+            return ResponseEntity.badRequest().body("Invalid username or password");
+        }
+    }
+
+    @PostMapping("/update/username")
+    public ResponseEntity<?> updateUsername(@RequestParam("username") String oldUsername,
+                                            @RequestParam("newUsername") String newUsername) {
+        User user = userService.findByUsername(oldUsername);
+        if (user != null) {
+            user.setUsername(newUsername);
+            userService.save(user);
+            return ResponseEntity.ok("Username updated successfully");
+        } else {
+            return ResponseEntity.badRequest().body("User not found");
+        }
+    }
+
+    @PostMapping("/update/password")
+    public ResponseEntity<?> updatePassword(@RequestParam("username") String username,
+                                            @RequestParam("newPassword") String newPassword) {
+        User user = userService.findByUsername(username);
+        if (user != null) {
+            user.setPassword(newPassword);
+            userService.save(user);
+            return ResponseEntity.ok("Password updated successfully");
+        } else {
+            return ResponseEntity.badRequest().body("Invalid username or password");
+        }
+    }
+
+    @PostMapping("/update/email")
+    public ResponseEntity<?> updateEmail(@RequestParam("username") String username,
+                                         @RequestParam("newEmail") String newEmail) {
+        User user = userService.findByUsername(username);
+        if (user != null) {
+            user.setEmail(newEmail);
+            userService.save(user);
+            return ResponseEntity.ok("Email updated successfully");
+        } else {
+            return ResponseEntity.badRequest().body("User not found");
+        }
+    }
+}
diff --git a/src/main/java/com/pt/entity/User.java b/src/main/java/com/pt/entity/User.java
new file mode 100644
index 0000000..a2f462d
--- /dev/null
+++ b/src/main/java/com/pt/entity/User.java
@@ -0,0 +1,63 @@
+package com.pt.entity;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+public class User {
+
+    @Id
+    private String uid;
+
+    private String username;
+    private String password;
+    private String email;
+    private int level;
+    private int points;
+
+    public User() {
+    }
+    public User(String uid, String username, String password, String email, int level) {
+        this.uid = uid;
+        this.username = username;
+        this.password = password;
+        this.email = email;
+        this.level = level;
+    }
+    public String getUid() {
+        return uid;
+    }
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+    public String getUsername() {
+        return username;
+    }
+    public void setUsername(String username) {
+        this.username = username;
+    }
+    public String getPassword() {
+        return password;
+    }
+    public void setPassword(String password) {
+        this.password = password;
+    }
+    public String getEmail() {
+        return email;
+    }
+    public void setEmail(String email) {
+        this.email = email;
+    }
+    public int getLevel() {
+        return level;
+    }
+    public void setLevel(int level) {
+        this.level = level;
+    }
+    public int getPoints() {
+        return points;
+    }
+    public void setPoints(int points) {
+        this.points = points;
+    }
+}
diff --git a/src/main/java/com/pt/repository/UserRepository.java b/src/main/java/com/pt/repository/UserRepository.java
new file mode 100644
index 0000000..480d070
--- /dev/null
+++ b/src/main/java/com/pt/repository/UserRepository.java
@@ -0,0 +1,14 @@
+package com.pt.repository;
+
+import com.pt.entity.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserRepository extends JpaRepository<User, String> {
+
+    User findByUsername(String username);
+
+    User findByEmail(String email);
+    User findByUsernameAndPassword(String username, String password);
+    User findByEmailAndPassword(String email, String password);
+
+}
diff --git a/src/main/java/com/pt/service/UserService.java b/src/main/java/com/pt/service/UserService.java
new file mode 100644
index 0000000..7025e5a
--- /dev/null
+++ b/src/main/java/com/pt/service/UserService.java
@@ -0,0 +1,45 @@
+package com.pt.service;
+
+import com.pt.entity.User;
+import com.pt.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserService {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    public UserService(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    public User findByUsername(String username) {
+        return userRepository.findByUsername(username);
+    }
+
+    public User findByEmail(String email) {
+        return userRepository.findByEmail(email);
+    }
+
+    public User findByUsernameAndPassword(String username, String password) {
+        return userRepository.findByUsernameAndPassword(username, password);
+    }
+
+    public User findByEmailAndPassword(String email, String password) {
+        return userRepository.findByEmailAndPassword(email, password);
+    }
+
+    public User save(User user) {
+        return userRepository.save(user);
+    }
+
+    public User findById(String uid) {
+        return userRepository.findById(uid).orElse(null);
+    }
+
+    public void deleteById(String uid) {
+        userRepository.deleteById(uid);
+    }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 76f44c8..97c5ef8 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,7 @@
 spring.application.name=Backend
+
+spring.datasource.url=jdbc:mysql://202.205.102.121:3306/g12develop
+spring.datasource.username=team12
+spring.datasource.password=123456abc
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.jackson.time-zone = Asia/Shanghai
\ No newline at end of file
diff --git a/src/test/java/com/intelligentclass/backend/BackendApplicationTests.java b/src/test/java/com/intelligentclass/backend/BackendApplicationTests.java
deleted file mode 100644
index 90cb00e..0000000
--- a/src/test/java/com/intelligentclass/backend/BackendApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.intelligentclass.backend;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class BackendApplicationTests {
-
-    @Test
-    void contextLoads() {
-    }
-
-}
diff --git a/src/test/java/com/pt/BackendApplicationTests.java b/src/test/java/com/pt/BackendApplicationTests.java
new file mode 100644
index 0000000..d95e6e3
--- /dev/null
+++ b/src/test/java/com/pt/BackendApplicationTests.java
@@ -0,0 +1,16 @@
+package com.pt;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ContextConfiguration;
+
+@SpringBootTest
+@ContextConfiguration(classes = BackendApplication.class)
+class BackendApplicationTests {
+
+    @Test
+    void contextLoads() {
+
+    }
+
+}
diff --git a/src/test/java/com/pt/controller/UserController.java b/src/test/java/com/pt/controller/UserController.java
new file mode 100644
index 0000000..452a241
--- /dev/null
+++ b/src/test/java/com/pt/controller/UserController.java
@@ -0,0 +1,86 @@
+package com.pt.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import com.pt.entity.User;
+import com.pt.service.UserService;
+
+@RestController
+@RequestMapping("/api/user")
+@CrossOrigin(origins = "*")
+public class UserController {
+
+    @Autowired
+    private UserService userService;
+
+    @PostMapping("/register")
+    public ResponseEntity<?> registerUser(@RequestParam("username") String username,
+                                          @RequestParam("password") String password,
+                                          @RequestParam("email") String email) {
+        User user = userService.findByUsername(username);
+        if (user != null) {
+            return ResponseEntity.badRequest().body("User already exists");
+        } else {
+            User newUser = new User();
+
+            String uid = String.valueOf(System.currentTimeMillis());
+            newUser.setUid(uid);
+            newUser.setUsername(username);
+            newUser.setPassword(password);
+            newUser.setEmail(email);
+            userService.save(newUser);
+            return ResponseEntity.ok("User registered successfully");
+        }
+    }
+
+    @PostMapping("/login")
+    public ResponseEntity<?> loginUser(@RequestParam("username") String username,
+                                       @RequestParam("password") String password) {
+        User user = userService.findByUsernameAndPassword(username, password);
+        if (user != null) {
+            return ResponseEntity.ok("Login successful");
+        } else {
+            return ResponseEntity.badRequest().body("Invalid username or password");
+        }
+    }
+
+    @PostMapping("/update/username")
+    public ResponseEntity<?> updateUsername(@RequestParam("username") String oldUsername,
+                                            @RequestParam("newUsername") String newUsername) {
+        User user = userService.findByUsername(oldUsername);
+        if (user != null) {
+            user.setUsername(newUsername);
+            userService.save(user);
+            return ResponseEntity.ok("Username updated successfully");
+        } else {
+            return ResponseEntity.badRequest().body("User not found");
+        }
+    }
+
+    @PostMapping("/update/password")
+    public ResponseEntity<?> updatePassword(@RequestParam("username") String username,
+                                            @RequestParam("newPassword") String newPassword) {
+        User user = userService.findByUsername(username);
+        if (user != null) {
+            user.setPassword(newPassword);
+            userService.save(user);
+            return ResponseEntity.ok("Password updated successfully");
+        } else {
+            return ResponseEntity.badRequest().body("Invalid username or password");
+        }
+    }
+
+    @PostMapping("/update/email")
+    public ResponseEntity<?> updateEmail(@RequestParam("username") String username,
+                                         @RequestParam("newEmail") String newEmail) {
+        User user = userService.findByUsername(username);
+        if (user != null) {
+            user.setEmail(newEmail);
+            userService.save(user);
+            return ResponseEntity.ok("Email updated successfully");
+        } else {
+            return ResponseEntity.badRequest().body("User not found");
+        }
+    }
+}
diff --git a/src/test/java/com/pt/entity/User.java b/src/test/java/com/pt/entity/User.java
new file mode 100644
index 0000000..a2f462d
--- /dev/null
+++ b/src/test/java/com/pt/entity/User.java
@@ -0,0 +1,63 @@
+package com.pt.entity;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+public class User {
+
+    @Id
+    private String uid;
+
+    private String username;
+    private String password;
+    private String email;
+    private int level;
+    private int points;
+
+    public User() {
+    }
+    public User(String uid, String username, String password, String email, int level) {
+        this.uid = uid;
+        this.username = username;
+        this.password = password;
+        this.email = email;
+        this.level = level;
+    }
+    public String getUid() {
+        return uid;
+    }
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+    public String getUsername() {
+        return username;
+    }
+    public void setUsername(String username) {
+        this.username = username;
+    }
+    public String getPassword() {
+        return password;
+    }
+    public void setPassword(String password) {
+        this.password = password;
+    }
+    public String getEmail() {
+        return email;
+    }
+    public void setEmail(String email) {
+        this.email = email;
+    }
+    public int getLevel() {
+        return level;
+    }
+    public void setLevel(int level) {
+        this.level = level;
+    }
+    public int getPoints() {
+        return points;
+    }
+    public void setPoints(int points) {
+        this.points = points;
+    }
+}
diff --git a/src/test/java/com/pt/repository/UserRepository.java b/src/test/java/com/pt/repository/UserRepository.java
new file mode 100644
index 0000000..e73e38c
--- /dev/null
+++ b/src/test/java/com/pt/repository/UserRepository.java
@@ -0,0 +1,14 @@
+package com.pt.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import com.pt.entity.User;
+
+public interface UserRepository extends JpaRepository<User, String> {
+
+    User findByUsername(String username);
+
+    User findByEmail(String email);
+    User findByUsernameAndPassword(String username, String password);
+    User findByEmailAndPassword(String email, String password);
+
+}
diff --git a/src/test/java/com/pt/service/UserService.java b/src/test/java/com/pt/service/UserService.java
new file mode 100644
index 0000000..9a6762b
--- /dev/null
+++ b/src/test/java/com/pt/service/UserService.java
@@ -0,0 +1,45 @@
+package com.pt.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.pt.entity.User;
+import com.pt.repository.UserRepository;
+
+@Service
+public class UserService {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    public UserService(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    public User findByUsername(String username) {
+        return userRepository.findByUsername(username);
+    }
+
+    public User findByEmail(String email) {
+        return userRepository.findByEmail(email);
+    }
+
+    public User findByUsernameAndPassword(String username, String password) {
+        return userRepository.findByUsernameAndPassword(username, password);
+    }
+
+    public User findByEmailAndPassword(String email, String password) {
+        return userRepository.findByEmailAndPassword(email, password);
+    }
+
+    public User save(User user) {
+        return userRepository.save(user);
+    }
+
+    public User findById(String uid) {
+        return userRepository.findById(uid).orElse(null);
+    }
+
+    public void deleteById(String uid) {
+        userRepository.deleteById(uid);
+    }
+}