feat(system): 实现注册码功能并优化用户注册流程
- 新增注册码生成和验证功能- 实现系统设置管理,包括注册功能开关 - 更新前端界面,增加系统管理和注册码相关功能 - 修改数据库结构,添加系统设置和注册码表
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package com.test.bijihoudaun.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.test.bijihoudaun.entity.RegistrationCode;
|
||||
|
||||
public interface RegistrationCodeService extends IService<RegistrationCode> {
|
||||
String generateCode(String creator);
|
||||
boolean validateCode(String code);
|
||||
void deleteExpiredCodes();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.test.bijihoudaun.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.test.bijihoudaun.entity.SystemSetting;
|
||||
|
||||
public interface SystemSettingService extends IService<SystemSetting> {
|
||||
boolean isRegistrationEnabled();
|
||||
void setRegistrationEnabled(boolean enabled);
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.test.bijihoudaun.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.test.bijihoudaun.entity.RegistrationCode;
|
||||
import com.test.bijihoudaun.mapper.RegistrationCodeMapper;
|
||||
import com.test.bijihoudaun.service.RegistrationCodeService;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
@Service
|
||||
public class RegistrationCodeServiceImpl extends ServiceImpl<RegistrationCodeMapper, RegistrationCode> implements RegistrationCodeService {
|
||||
|
||||
@Override
|
||||
public String generateCode(String creator) {
|
||||
RegistrationCode registrationCode = new RegistrationCode();
|
||||
String code = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 16);
|
||||
registrationCode.setCode(code);
|
||||
registrationCode.setCreatedBy(creator);
|
||||
registrationCode.setExpiryTime(LocalDateTime.now().plusDays(1));
|
||||
save(registrationCode);
|
||||
return code;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public boolean validateCode(String code) {
|
||||
QueryWrapper<RegistrationCode> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("code", code);
|
||||
RegistrationCode registrationCode = getOne(queryWrapper);
|
||||
|
||||
if (registrationCode == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (registrationCode.getExpiryTime().isBefore(LocalDateTime.now())) {
|
||||
remove(queryWrapper); // 注册码过期,删除
|
||||
return false;
|
||||
}
|
||||
|
||||
// 验证成功后立即删除,确保一次性使用
|
||||
remove(queryWrapper);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
|
||||
public void deleteExpiredCodes() {
|
||||
remove(new QueryWrapper<RegistrationCode>().lt("expiry_time", LocalDateTime.now()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.test.bijihoudaun.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.test.bijihoudaun.entity.SystemSetting;
|
||||
import com.test.bijihoudaun.mapper.SystemSettingMapper;
|
||||
import com.test.bijihoudaun.service.SystemSettingService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, SystemSetting> implements SystemSettingService {
|
||||
|
||||
private static final String REGISTRATION_ENABLED_KEY = "registration.enabled";
|
||||
|
||||
@Override
|
||||
public boolean isRegistrationEnabled() {
|
||||
SystemSetting setting = getById(REGISTRATION_ENABLED_KEY);
|
||||
// 默认开启注册
|
||||
return setting == null || Boolean.parseBoolean(setting.getSettingValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRegistrationEnabled(boolean enabled) {
|
||||
SystemSetting setting = new SystemSetting();
|
||||
setting.setSettingKey(REGISTRATION_ENABLED_KEY);
|
||||
setting.setSettingValue(String.valueOf(enabled));
|
||||
saveOrUpdate(setting);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user