diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java index 05ca8083..3bd301e5 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java @@ -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()), diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCodeGenServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCodeGenServiceImpl.java index 443f6c71..996f568a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCodeGenServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCodeGenServiceImpl.java @@ -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 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)); } }