Merge "添加邀请码注册机制"
diff --git a/src/main/java/com/pt/constant/Constants.java b/src/main/java/com/pt/constant/Constants.java
index d277ea2..e8cecd3 100644
--- a/src/main/java/com/pt/constant/Constants.java
+++ b/src/main/java/com/pt/constant/Constants.java
@@ -23,4 +23,20 @@
return value;
}
}
+
+ public enum UserLevel {
+ NEWBIE(0),
+ FRESH(1),
+ SENIOR(2),
+ MASTER(3);
+
+ private final int value;
+ UserLevel(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+ }
}
diff --git a/src/main/java/com/pt/controller/UserController.java b/src/main/java/com/pt/controller/UserController.java
index 7603f9d..577b2a3 100644
--- a/src/main/java/com/pt/controller/UserController.java
+++ b/src/main/java/com/pt/controller/UserController.java
@@ -2,6 +2,7 @@
import com.pt.constant.Constants;
import com.pt.entity.User;
+import com.pt.service.InvitedCodeService;
import com.pt.utils.JWTUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@@ -18,6 +19,7 @@
@Autowired
private UserService userService;
+ private InvitedCodeService invitedCodeService;
@PostMapping("/register")
public ResponseEntity<?> registerUser(@RequestBody Map<String, String> request) {
@@ -35,6 +37,17 @@
} else {
User newUser = new User();
+ if(request.get("invitedCode") != null) {
+ String invitedCode = request.get("invitedCode");
+ if (!invitedCodeService.isCodeValid(invitedCode)) {
+ return ResponseEntity.badRequest().body("Invalid invited code");
+ }
+ else {
+ newUser.setLevel(Constants.UserLevel.FRESH.getValue());
+ newUser.setPoints(300);
+ }
+ }
+
String uid = String.valueOf(System.currentTimeMillis());
newUser.setUid(uid);
newUser.setUsername(username);
diff --git a/src/main/java/com/pt/entity/InvitedCode.java b/src/main/java/com/pt/entity/InvitedCode.java
new file mode 100644
index 0000000..33a1cf8
--- /dev/null
+++ b/src/main/java/com/pt/entity/InvitedCode.java
@@ -0,0 +1,35 @@
+package com.pt.entity;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+public class InvitedCode {
+
+ @Id
+ private String code;
+
+ private String owner;
+
+ public InvitedCode() {
+ }
+
+ public InvitedCode(String code, String owner) {
+ this.code = code;
+ this.owner = owner;
+ }
+
+ public String getCode() {
+ return code;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getOwner() {
+ return owner;
+ }
+ public void setOwner(String owner) {
+ this.owner = owner;
+ }
+
+}
diff --git a/src/main/java/com/pt/repository/InvitedCoedRepository.java b/src/main/java/com/pt/repository/InvitedCoedRepository.java
new file mode 100644
index 0000000..5d7a366
--- /dev/null
+++ b/src/main/java/com/pt/repository/InvitedCoedRepository.java
@@ -0,0 +1,15 @@
+package com.pt.repository;
+
+import com.pt.entity.InvitedCode;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface InvitedCoedRepository extends JpaRepository<InvitedCode, String> {
+
+ // Method to find an InvitedCode by its code
+ InvitedCode findByCode(String code);
+
+ // Method to find all InvitedCodes by owner
+ List<InvitedCode> findByOwner(String owner);
+}
diff --git a/src/main/java/com/pt/service/InvitedCodeService.java b/src/main/java/com/pt/service/InvitedCodeService.java
new file mode 100644
index 0000000..cd73452
--- /dev/null
+++ b/src/main/java/com/pt/service/InvitedCodeService.java
@@ -0,0 +1,16 @@
+package com.pt.service;
+
+import com.pt.repository.InvitedCoedRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class InvitedCodeService {
+
+ @Autowired
+ private InvitedCoedRepository invitedCodeRepository;
+
+ public boolean isCodeValid(String code) {
+ return invitedCodeRepository.findByCode(code) != null;
+ }
+}