新增设备注册白名单

This commit is contained in:
tianfeng 2025-11-11 11:13:21 +08:00
parent 09a35ed351
commit 91acf6e8cd
3 changed files with 27 additions and 1 deletions

View File

@ -380,7 +380,12 @@ public enum EnumConfigKey {
/** /**
* H5用户账号处理白名单 * H5用户账号处理白名单
*/ */
ACCOUNT_PROCESS_WHITELIST; ACCOUNT_PROCESS_WHITELIST,
/**
* 设备注册白名单
*/
DEVICE_REGISTER_WHITELIST;
public String concatSysOrigin(SysOriginPlatformEnum sysOrigin) { public String concatSysOrigin(SysOriginPlatformEnum sysOrigin) {

View File

@ -1,8 +1,10 @@
package com.red.circle.other.infra.gateway.user; package com.red.circle.other.infra.gateway.user;
import com.red.circle.other.domain.gateway.user.UserProfileGateway; import com.red.circle.other.domain.gateway.user.UserProfileGateway;
import com.red.circle.other.infra.database.cache.service.other.EnumConfigCacheService;
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMember; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMember;
import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService; import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService;
import com.red.circle.other.infra.database.rds.service.sys.EnumConfigService;
import com.red.circle.other.infra.database.rds.service.user.device.LatestMobileDeviceService; import com.red.circle.other.infra.database.rds.service.user.device.LatestMobileDeviceService;
import com.red.circle.tool.core.text.StringUtils; import com.red.circle.tool.core.text.StringUtils;
import com.red.circle.tool.core.thread.ThreadPoolManager; import com.red.circle.tool.core.thread.ThreadPoolManager;
@ -11,6 +13,7 @@ import com.red.circle.other.infra.database.rds.service.user.device.DeviceRegiste
import com.red.circle.other.infra.database.rds.service.user.device.IpRegisterQuantityService; import com.red.circle.other.infra.database.rds.service.user.device.IpRegisterQuantityService;
import com.red.circle.other.inner.model.cmd.user.IncrDeviceRegisterCmd; import com.red.circle.other.inner.model.cmd.user.IncrDeviceRegisterCmd;
import com.red.circle.other.inner.model.cmd.user.device.AllowDeviceRegisterCmd; import com.red.circle.other.inner.model.cmd.user.device.AllowDeviceRegisterCmd;
import com.red.circle.other.inner.enums.config.EnumConfigKey;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -28,6 +31,7 @@ public class RegisterDeviceGatewayImpl implements RegisterDeviceGateway {
private final LatestMobileDeviceService latestMobileDeviceService; private final LatestMobileDeviceService latestMobileDeviceService;
private final UserProfileGateway userProfileGateway; private final UserProfileGateway userProfileGateway;
private final TeamMemberService teamMemberService; private final TeamMemberService teamMemberService;
private final EnumConfigCacheService enumConfigCacheService;
/** /**
* 累计注册数量. * 累计注册数量.
@ -94,6 +98,13 @@ public class RegisterDeviceGatewayImpl implements RegisterDeviceGateway {
return false; return false;
} }
// 跳过白名单用户
String whitelistConfig = enumConfigCacheService.getValue(
EnumConfigKey.DEVICE_REGISTER_WHITELIST, userProfile.getOriginSys());
if (StringUtils.isNotBlank(whitelistConfig) && whitelistConfig.contains(String.valueOf(userProfile.getAccount()))) {
return false;
}
java.util.List<Long> userIds = latestMobileDeviceService.listUserIdsByDeviceFingerprint( java.util.List<Long> userIds = latestMobileDeviceService.listUserIdsByDeviceFingerprint(
fingerprint, userProfile.getOriginSys()); fingerprint, userProfile.getOriginSys());

View File

@ -8,6 +8,7 @@ import com.red.circle.other.app.inner.convertor.user.UserProfileInnerConvertor;
import com.red.circle.other.app.inner.service.user.device.RegisterDeviceClientService; import com.red.circle.other.app.inner.service.user.device.RegisterDeviceClientService;
import com.red.circle.other.domain.gateway.user.UserProfileGateway; import com.red.circle.other.domain.gateway.user.UserProfileGateway;
import com.red.circle.other.domain.model.user.UserProfile; import com.red.circle.other.domain.model.user.UserProfile;
import com.red.circle.other.infra.database.cache.service.other.EnumConfigCacheService;
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMember; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMember;
import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService; import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService;
import com.red.circle.other.infra.database.rds.entity.user.user.LatestMobileDevice; import com.red.circle.other.infra.database.rds.entity.user.user.LatestMobileDevice;
@ -16,6 +17,7 @@ import com.red.circle.other.infra.database.rds.service.user.device.DeviceRegiste
import com.red.circle.other.infra.database.rds.service.user.device.LatestMobileDeviceService; import com.red.circle.other.infra.database.rds.service.user.device.LatestMobileDeviceService;
import com.red.circle.tool.core.collection.CollectionUtils; import com.red.circle.tool.core.collection.CollectionUtils;
import com.red.circle.tool.core.text.StringUtils; import com.red.circle.tool.core.text.StringUtils;
import com.red.circle.other.inner.enums.config.EnumConfigKey;
import com.red.circle.other.inner.model.cmd.user.device.ArchiveDeviceQryCmd; import com.red.circle.other.inner.model.cmd.user.device.ArchiveDeviceQryCmd;
import com.red.circle.other.inner.model.cmd.user.device.DeviceRegisterQuantityQryCmd; import com.red.circle.other.inner.model.cmd.user.device.DeviceRegisterQuantityQryCmd;
import com.red.circle.other.inner.model.cmd.user.device.PageLatestMobileDeviceQryCmd; import com.red.circle.other.inner.model.cmd.user.device.PageLatestMobileDeviceQryCmd;
@ -52,6 +54,7 @@ public class RegisterDeviceClientServiceImpl implements RegisterDeviceClientServ
private final RegisterDeviceInnerConvertor registerDeviceInnerConvertor; private final RegisterDeviceInnerConvertor registerDeviceInnerConvertor;
private final DeviceRegisterQuantityService deviceRegisterQuantityService; private final DeviceRegisterQuantityService deviceRegisterQuantityService;
private final TeamMemberService teamMemberService; private final TeamMemberService teamMemberService;
private final EnumConfigCacheService enumConfigCacheService;
@Override @Override
public Boolean existsDevice(String deviceNo, String sysOrigin) { public Boolean existsDevice(String deviceNo, String sysOrigin) {
@ -254,6 +257,13 @@ public class RegisterDeviceClientServiceImpl implements RegisterDeviceClientServ
return false; return false;
} }
// 跳过白名单用户
String whitelistConfig = enumConfigCacheService.getValue(
EnumConfigKey.DEVICE_REGISTER_WHITELIST, userProfile.getOriginSys());
if (StringUtils.isNotBlank(whitelistConfig) && whitelistConfig.contains(String.valueOf(userProfile.getAccount()))) {
return false;
}
List<Long> userIds = latestMobileDeviceService.listUserIdsByDeviceFingerprint( List<Long> userIds = latestMobileDeviceService.listUserIdsByDeviceFingerprint(
fingerprint, userProfile.getOriginSys()); fingerprint, userProfile.getOriginSys());