添加邀请码注册机制
Change-Id: I1a104074a36564ffb332e928e131af182eb30240
diff --git a/Dockerfile b/Dockerfile
index b646295..abbe549 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,6 +7,8 @@
# 复制 JAR 文件到容器
COPY target/*.jar team12.jar
+COPY nginx.conf /etc/nginx/conf.d/g12b.conf
+
# 暴露端口(与 application.yml/server.port 一致)
EXPOSE 8080
diff --git a/nginx.conf b/nginx.conf
index 7057dbd..d1ccc05 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -1,20 +1,15 @@
-server {
+server{
listen 80;
- server_name team12.10813352.xyz; # 替换为你的域名
-
- location /api/ {
- proxy_pass http://localhost:8080;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
- # 长连接支持
- proxy_http_version 1.1;
- proxy_set_header Connection "";
-
- # 超时设置
- proxy_connect_timeout 60s;
- proxy_send_timeout 60s;
- proxy_read_timeout 60s;
+ server_name team12.10813352.xyz;
+
+ # 解决 React Router 单页应用路由问题
+ location / {
+ return 200 "Hello, World!"
}
+
+ # API 请求代理到后端
+ location /api/ {
+
+ }
+
}
\ No newline at end of file
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/TrackerController.java b/src/main/java/com/pt/controller/TrackerController.java
index 1e0302d..edae09f 100644
--- a/src/main/java/com/pt/controller/TrackerController.java
+++ b/src/main/java/com/pt/controller/TrackerController.java
@@ -10,6 +10,8 @@
import java.util.Map;
@RestController
+@CrossOrigin(origins = "*")
+@RequestMapping("/api/tracker")
public class TrackerController {
@Autowired
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;
+ }
+}