feat(system): 实现注册码功能并优化用户注册流程

- 新增注册码生成和验证功能- 实现系统设置管理,包括注册功能开关
- 更新前端界面,增加系统管理和注册码相关功能
- 修改数据库结构,添加系统设置和注册码表
This commit is contained in:
ikmkj
2025-08-01 19:29:27 +08:00
parent 92b6f6da88
commit 77efac5a81
17 changed files with 395 additions and 9 deletions

View File

@@ -0,0 +1,50 @@
package com.test.bijihoudaun.controller;
import com.test.bijihoudaun.common.response.R;
import com.test.bijihoudaun.service.RegistrationCodeService;
import com.test.bijihoudaun.service.SystemSettingService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
@RestController
@RequestMapping("/system")
@Tag(name = "系统管理")
public class SystemController {
@Autowired
private SystemSettingService systemSettingService;
@Autowired
private RegistrationCodeService registrationCodeService;
@GetMapping("/registration/status")
@Operation(summary = "获取注册功能状态")
public R<Boolean> isRegistrationEnabled() {
return R.success(systemSettingService.isRegistrationEnabled());
}
@PostMapping("/registration/toggle")
@PreAuthorize("isAuthenticated()")
@Operation(summary = "切换注册功能状态")
public R<Void> toggleRegistration(@RequestBody Boolean enabled) {
systemSettingService.setRegistrationEnabled(enabled);
return R.success();
}
@PostMapping("/registration/generate-code")
@PreAuthorize("isAuthenticated()")
@Operation(summary = "生成注册码")
public R<String> generateRegistrationCode() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String currentUserName = authentication.getName();
String code = registrationCodeService.generateCode(currentUserName);
return R.success(code);
}
}

View File

@@ -2,6 +2,8 @@ package com.test.bijihoudaun.controller;
import com.test.bijihoudaun.common.response.R;
import com.test.bijihoudaun.entity.User;
import com.test.bijihoudaun.service.RegistrationCodeService;
import com.test.bijihoudaun.service.SystemSettingService;
import com.test.bijihoudaun.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -24,14 +26,27 @@ public class UserController {
@Autowired
private UserService userService;
@Autowired
private SystemSettingService systemSettingService;
@Autowired
private RegistrationCodeService registrationCodeService;
@Operation(summary = "用户注册")
@Parameters({
@Parameter(name = "username", description = "用户名",required = true),
@Parameter(name = "password", description = "密码",required = true),
@Parameter(name = "email", description = "邮箱",required = true)
@Parameter(name = "email", description = "邮箱",required = true),
@Parameter(name = "registrationCode", description = "注册码", required = true)
})
@PostMapping("/register")
public R<User> register(String username, String password, String email){
public R<User> register(String username, String password, String email, String registrationCode){
if (!systemSettingService.isRegistrationEnabled()) {
return R.fail("注册功能已关闭");
}
if (!registrationCodeService.validateCode(registrationCode)) {
return R.fail("无效或已过期的注册码");
}
return R.success(userService.register(username,password,email));
}