This commit is contained in:
777
2026-01-13 09:57:50 +08:00
parent 355eb8f9f5
commit a2e9e1e476
2 changed files with 48 additions and 7 deletions

View File

@@ -17,11 +17,11 @@ public enum SystemConfigEnum {
*/
OPEN_IP_NUMBER("5", "IP每日登录次数超过多少次封",SystemConfigGroupEnum.SECURITY),
LOGIN_ERROR_OPEN_SECURITY("2", "输入密码次数超过多少次开启图形验证码",SystemConfigGroupEnum.SECURITY),
// TODO 新台子改默认值
OPEN_OLD_LOGIN_API("1", "开启旧版无验证码登录接口",SystemConfigGroupEnum.SECURITY),
OPEN_OLD_LOGIN_API("0", "开启旧版无验证码登录接口",SystemConfigGroupEnum.SECURITY),
OPEN_OLD_REGISTER_CODE("0", "是否开启无验证码注册接口",SystemConfigGroupEnum.SECURITY, new BooleanSystemConfigCheck()),
OPEN_IP_AUTO("1", "开启自动定时封IP",SystemConfigGroupEnum.SECURITY),
OPEN_RESET_PASSWORD("1", "开启重置密码",SystemConfigGroupEnum.SECURITY, new BooleanSystemConfigCheck()),
LOGIN_PASSWORD_ERROR_MAX_NUM("5", "登录输错密码上限",SystemConfigGroupEnum.SECURITY, new NumberSystemConfigCheck()),
LOGIN_PASSWORD_ERROR_MAX_NUM("20", "登录输错密码上限",SystemConfigGroupEnum.SECURITY, new NumberSystemConfigCheck()),
SENSITIVE_ENABLE("1", "是否开启手机号脱敏",SystemConfigGroupEnum.SECURITY,new BooleanSystemConfigCheck()),
OPEN_CLEAN_DYNAMIC("1", "开启动态定时清除",SystemConfigGroupEnum.SECURITY,new BooleanSystemConfigCheck()),
YUNXIN_ONLINE_ENABLE("1", "是否开启云信监控在线状态",SystemConfigGroupEnum.SECURITY,new BooleanSystemConfigCheck()),
@@ -32,10 +32,9 @@ public enum SystemConfigEnum {
IPV6_FILTER("0", "是否开启IPV6请求拦截",SystemConfigGroupEnum.SECURITY, new BooleanSystemConfigCheck()),
IPV6_FILTER_PATH("/api/auth/login", "IPV6拦截路由配置逗号分隔",SystemConfigGroupEnum.SECURITY, new BooleanSystemConfigCheck(),"textarea"),
VIP_PRIVATE_PLUS("0", "开启VIP隐私模式增强模式",SystemConfigGroupEnum.SECURITY,new BooleanSystemConfigCheck()),
OPEN_ANCHOR_CHAT_COUNT("0", "开启主播主动消息统计",SystemConfigGroupEnum.SECURITY,new BooleanSystemConfigCheck()),
OPEN_ANCHOR_CHAT_COUNT("1", "开启主播主动消息统计",SystemConfigGroupEnum.SECURITY,new BooleanSystemConfigCheck()),
// 4-recordId拦截 5-recordId加强拦截 6-性别拦截 7-vip加强拦截
IM_FILTER_PLUS("0", "IM拦截配置勿动开发配置",SystemConfigGroupEnum.SECURITY),
OPEN_OLD_REGISTER_CODE("0", "是否开启无验证码注册接口",SystemConfigGroupEnum.SECURITY, new BooleanSystemConfigCheck()),
OPEN_NOTICE("1", "是否开启告警",SystemConfigGroupEnum.SECURITY, new BooleanSystemConfigCheck()),
PAY_ERROR_NUM_NOTICE("2", "连续调用支付失败N次发起告警",SystemConfigGroupEnum.SECURITY, new NumberSystemConfigCheck()),
PAY_NOTIFY_ERROR_NUM_NOTICE("5", "连续调用N次支付但是依旧未支付成功发起告警",SystemConfigGroupEnum.SECURITY, new NumberSystemConfigCheck()),

View File

@@ -1,11 +1,14 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.UserCodeGen;
import com.ruoyi.cai.mapper.UserCodeGenMapper;
import com.ruoyi.cai.service.UserCodeGenService;
import org.springframework.stereotype.Service;
import java.util.Random;
/**
* idService业务层处理
*
@@ -15,10 +18,49 @@ import org.springframework.stereotype.Service;
@Service
public class UserCodeGenServiceImpl extends ServiceImpl<UserCodeGenMapper, UserCodeGen> implements UserCodeGenService {
/**
* 用户号范围1000 到 9999999 (4-7位数字)
*/
private static final long MIN_USER_CODE = 1000L;
private static final long MAX_USER_CODE = 9999999L;
private static final int MAX_RETRY_COUNT = 10;
private final Random random = new Random();
@Override
public String getCodeGen(){
public String getCodeGen() {
// 使用数据库唯一索引保证不重复 + 随机生成
for (int i = 0; i < MAX_RETRY_COUNT; i++) {
// 生成随机用户号
long userCode = generateRandomUserCode();
try {
// 尝试保存如果ID重复会抛出DuplicateKeyException
UserCodeGen gen = new UserCodeGen();
gen.setId(userCode);
this.save(gen);
return userCode + "";
} catch (Exception e) {
// 捕获异常说明ID重复继续循环重试
// 记录日志(可选)
if (i == MAX_RETRY_COUNT - 1) {
// 最后一次重试失败,抛出异常
throw new RuntimeException("生成用户号失败:重试次数已达上限", e);
}
}
}
// 如果随机生成多次都失败,回退到自增方式(兜底方案)
UserCodeGen gen = new UserCodeGen();
this.save(gen);
return gen.getId()+"";
return gen.getId() + "";
}
/**
* 生成随机用户号4-7位数字
*/
private long generateRandomUserCode() {
// 生成 MIN_USER_CODE 到 MAX_USER_CODE 之间的随机数
return MIN_USER_CODE + (long) (random.nextDouble() * (MAX_USER_CODE - MIN_USER_CODE));
}
}