删除了邀请码部分

Change-Id: I6bb6a1b3ec092bebdc9c33364b9b385c6519f989
Signed-off-by: Your Name <your.email@example.com>
diff --git a/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java b/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java
index 1388940..7ac29f1 100644
--- a/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java
+++ b/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java
@@ -1,9 +1,7 @@
 package edu.bjtu.groupone.backend.controller;
 
-import edu.bjtu.groupone.backend.model.InviteCode;
 import edu.bjtu.groupone.backend.model.Result;
 import edu.bjtu.groupone.backend.model.User;
-import edu.bjtu.groupone.backend.service.InviteCodeService;
 import edu.bjtu.groupone.backend.service.UserService;
 import edu.bjtu.groupone.backend.utils.JwtUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -22,8 +20,6 @@
 
     @Autowired
     private UserService userService;
-    @Autowired
-    private InviteCodeService inviteCodeService;
 
     /** 登录:接收表单字段 identificationNumber、password */
     @PostMapping("/login")
@@ -56,13 +52,9 @@
             @RequestParam String email,
             @RequestParam String password,
             @RequestParam String verificationCode,
-            @RequestParam Integer identificationNumber,
-            @RequestParam String inviteCode
+            @RequestParam Integer identificationNumber
     ) {
-        // 1. 验证邀请码
-        if (inviteCodeService.validateInviteCode(inviteCode) == null) {
-            return Result.error("无效邀请码或已过期");
-        }
+
         // 2. 验证邮箱验证码
         if (!userService.verifyCode(email, verificationCode)) {
             return Result.error("验证码错误或已过期");
@@ -83,22 +75,16 @@
         );
         // 5. 插入到数据库
         userService.register(newUser);
-        // 6. 扣减邀请码次数
-        if (!inviteCodeService.useInviteCode(inviteCode)) {
-            log.error("邀请码扣减失败, code={}", inviteCode);
-        }
+
         return Result.success("注册成功");
     }
 
     /** 发送邮箱验证码:接收表单字段 email、inviteCode */
     @PostMapping("/sendVerification")
     public Result sendVerification(
-            @RequestParam String email,
-            @RequestParam String inviteCode
+            @RequestParam String email
     ) {
-        if (inviteCodeService.validateInviteCode(inviteCode) == null) {
-            return Result.error("无效邀请码");
-        }
+
         userService.sendVerificationCode(email);
         return Result.success("验证码已发送");
     }
diff --git a/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java b/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
index f3b9d2d..f00a646 100644
--- a/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
+++ b/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
@@ -14,6 +14,8 @@
 @Slf4j
 @Component
 public class Interceptor implements HandlerInterceptor {
+
+    
     @Override
     public boolean preHandle(HttpServletRequest req,
                              HttpServletResponse resp,
diff --git a/src/main/java/edu/bjtu/groupone/backend/mapper/InviteCodeMapper.java b/src/main/java/edu/bjtu/groupone/backend/mapper/InviteCodeMapper.java
deleted file mode 100644
index 78bb7e0..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/mapper/InviteCodeMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package edu.bjtu.groupone.backend.mapper;
-
-import edu.bjtu.groupone.backend.model.InviteCode;
-import org.apache.ibatis.annotations.*;
-
-@Mapper
-public interface InviteCodeMapper {
-    @Select("SELECT * FROM invite_code WHERE code = #{code}")
-    InviteCode selectByCode(String code);
-
-    @Update("UPDATE invite_code SET remaining_uses = remaining_uses - 1 " +
-            "WHERE code = #{code} AND remaining_uses > 0")
-    int decrementRemainingUses(String code);
-}
diff --git a/src/main/java/edu/bjtu/groupone/backend/model/InviteCode.java b/src/main/java/edu/bjtu/groupone/backend/model/InviteCode.java
deleted file mode 100644
index f1019f9..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/model/InviteCode.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package edu.bjtu.groupone.backend.model;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import java.time.LocalDateTime;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class InviteCode {
-    private String code;
-    private int maxUses;
-    private int remainingUses;
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime expiryTime;  //失效时间
-    private int createdBy;  //创建者的id
-}
diff --git a/src/main/java/edu/bjtu/groupone/backend/service/InviteCodeService.java b/src/main/java/edu/bjtu/groupone/backend/service/InviteCodeService.java
deleted file mode 100644
index 9391e14..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/service/InviteCodeService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package edu.bjtu.groupone.backend.service;
-
-import edu.bjtu.groupone.backend.model.InviteCode;
-
-public interface InviteCodeService {
-    InviteCode validateInviteCode(String code);
-    boolean useInviteCode(String code);
-}
diff --git a/src/main/java/edu/bjtu/groupone/backend/service/impl/InviteCodeServiceImpl.java b/src/main/java/edu/bjtu/groupone/backend/service/impl/InviteCodeServiceImpl.java
deleted file mode 100644
index b08b7a5..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/service/impl/InviteCodeServiceImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.bjtu.groupone.backend.service.impl;
-
-import edu.bjtu.groupone.backend.mapper.InviteCodeMapper;
-import edu.bjtu.groupone.backend.model.InviteCode;
-import edu.bjtu.groupone.backend.service.InviteCodeService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-
-@Service
-public class InviteCodeServiceImpl implements InviteCodeService {
-
-    @Autowired
-    private InviteCodeMapper inviteCodeMapper;
-
-    /**
-     * 验证邀请码是否存在、未过期且剩余次数大于 0
-     */
-    @Override
-    public InviteCode validateInviteCode(String code) {
-        InviteCode inviteCode = inviteCodeMapper.selectByCode(code);
-        if (inviteCode == null
-                || inviteCode.getRemainingUses() <= 0
-                || inviteCode.getExpiryTime().isBefore(LocalDateTime.now())) {
-            return null;
-        }
-        return inviteCode;
-    }
-
-    /**
-     * 使用一次邀请码:先验证再扣减剩余次数
-     */
-    @Override
-    public boolean useInviteCode(String code) {
-        // 先调用 validateInviteCode 保证业务合理性
-        InviteCode valid = validateInviteCode(code);
-        if (valid == null) {
-            return false;
-        }
-        // 再执行扣减
-        int updated = inviteCodeMapper.decrementRemainingUses(code);
-        return updated > 0;
-    }
-}
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index 8bb0c85..823ecdf 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -13,15 +13,7 @@
                         INDEX `idx_user_id` (`user_id`)          -- 可选:主键通常自带索引
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
-CREATE TABLE invite_code (
-                             code VARCHAR(20) PRIMARY KEY,
-                             max_uses INT NOT NULL,
-                             remaining_uses INT NOT NULL,
-                             expiry_time DATETIME NOT NULL,
-                             created_by INT NOT NULL,
-                             created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-                             FOREIGN KEY (created_by) REFERENCES user(user_id)
-);
+
 
 CREATE TABLE user_follow (
                              follower_id INT NOT NULL,
@@ -38,8 +30,3 @@
              'admin', 'admin@example.com', 'admin123', NOW(), 87654321, 'admin'
          );
 
-INSERT INTO invite_code (
-    code, max_uses, remaining_uses, expiry_time, created_by
-) VALUES
-      ('WELCOME2025', 5, 5, '2026-01-01 00:00:00', 1),
-      ('INVITEONLY', 3, 3, '2025-12-31 23:59:59', 1);
\ No newline at end of file
diff --git a/src/main/resources/static/home.html b/src/main/resources/static/home.html
index 635856a..5cac114 100644
--- a/src/main/resources/static/home.html
+++ b/src/main/resources/static/home.html
@@ -1,24 +1,30 @@
-<!-- src/main/resources/static/home.html -->
 <!DOCTYPE html>
 <html lang="zh-CN">
-<head><meta charset="UTF-8"><title>首页</title></head>
+<head>
+    <meta charset="UTF-8">
+    <title>首页</title>
+</head>
 <body>
 <h1>欢迎访问受保护页面</h1>
 <div id="userInfo"></div>
 <script>
-    (async ()=>{
-        const token = localStorage.getItem('token');
-        if (!token) return window.location.href='login.html';
+    (async () => {
+        const token = localStorage.getItem('token'); // 从 localStorage 获取 token
+        if (!token) return window.location.href = 'login.html'; // 如果 token 不存在,重定向到登录页面
+
         const res = await fetch('/api/me', {
-            headers: { 'token': token }
+            headers: { 'token': token } // 使用 token 请求用户信息
         });
-        const json = await res.json();
-        if (json.code!==0) {
-            return window.location.href='login.html';
+
+        const json = await res.json(); // 解析响应数据
+        if (json.code !== 0) {
+            return window.location.href = 'login.html'; // 如果获取用户信息失败,重定向到登录页面
         }
+
+        // 输出当前用户和 token
         document.getElementById('userInfo')
-            .innerText = '当前用户:' + json.data.username;
+            .innerText = '当前用户:' + json.data.username + ',Token:' + json.data; // 显示用户名和 token
     })();
 </script>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/static/register.html b/src/main/resources/static/register.html
index 1e43e90..549c790 100644
--- a/src/main/resources/static/register.html
+++ b/src/main/resources/static/register.html
@@ -19,8 +19,6 @@
     <input type="password" name="password" required>
     <label>身份证号(8 位数字):</label>
     <input type="number" name="identificationNumber" required>
-    <label>邀请码:</label>
-    <input type="text" name="inviteCode" required>
     <button type="submit">注册</button>
 </form>
 <script>
@@ -28,7 +26,6 @@
         .addEventListener('click', async () => {
             const form = new URLSearchParams();
             form.set('email', document.querySelector('[name=email]').value);
-            form.set('inviteCode', document.querySelector('[name=inviteCode]').value);
             const res = await fetch('/sendVerification', {
                 method: 'POST',
                 body: form
diff --git a/src/test/java/edu/bjtu/groupone/backend/UserControllerTest.java b/src/test/java/edu/bjtu/groupone/backend/UserControllerTest.java
index 7e2f691..7e82896 100644
--- a/src/test/java/edu/bjtu/groupone/backend/UserControllerTest.java
+++ b/src/test/java/edu/bjtu/groupone/backend/UserControllerTest.java
@@ -9,11 +9,8 @@
 import ch.qos.logback.classic.Logger;
 import org.slf4j.LoggerFactory;
 import edu.bjtu.groupone.backend.mapper.UserMapper;
-import edu.bjtu.groupone.backend.mapper.InviteCodeMapper;
 import edu.bjtu.groupone.backend.model.User;
-import edu.bjtu.groupone.backend.model.InviteCode;
 import edu.bjtu.groupone.backend.service.impl.UserServImpl;
-import edu.bjtu.groupone.backend.service.impl.InviteCodeServiceImpl;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
@@ -29,14 +26,12 @@
     @Mock
     private UserMapper userMapper;
 
-    @Mock
-    private InviteCodeMapper inviteCodeMapper;
+
 
     @InjectMocks
     private UserServImpl userService;
 
-    @InjectMocks
-    private InviteCodeServiceImpl inviteCodeService;
+
 
     @Test
     public void testLogin() {
@@ -56,27 +51,5 @@
         verify(userMapper, times(1)).login(loginUser);
     }
 
-    @Test
-    public void testUseInviteCode() {
-        String inviteCode = "TESTCODE";
 
-        // 构造一个有效的 InviteCode,注意设置 expiryTime
-        InviteCode dummy = new InviteCode();
-        dummy.setCode(inviteCode);
-        dummy.setRemainingUses(1);
-        // 设置有效期在未来,避免调用 expiryTime.isBefore(...)
-        dummy.setExpiryTime(LocalDateTime.now().plusDays(1));
-
-        // Stub 两个 Mapper 方法
-        when(inviteCodeMapper.selectByCode(inviteCode)).thenReturn(dummy);
-        when(inviteCodeMapper.decrementRemainingUses(inviteCode)).thenReturn(1);
-
-        // 调用 service
-        boolean used = inviteCodeService.useInviteCode(inviteCode);
-
-        // 断言和验证
-        assertThat(used).isTrue();
-        verify(inviteCodeMapper, times(1)).selectByCode(inviteCode);
-        verify(inviteCodeMapper, times(1)).decrementRemainingUses(inviteCode);
-    }
 }