绑定邀请码 新增设备指纹校验
This commit is contained in:
parent
4c12994010
commit
6145efc7a4
@ -139,4 +139,13 @@ public interface RegisterDeviceClientApi {
|
||||
*/
|
||||
@PostMapping("/pageList")
|
||||
ResultResponse<PageResult<ArchiveDeviceDTO>> pageList(@RequestBody ArchiveDeviceQryCmd query);
|
||||
|
||||
/**
|
||||
* 获取用户设备指纹(唯一标识)
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 设备指纹字符串,由 device_type|request_client|phone_model|ip 拼接而成
|
||||
*/
|
||||
@GetMapping("/user/device/fingerprint")
|
||||
ResultResponse<String> getDeviceFingerprintByUserId(@RequestParam("userId") Long userId);
|
||||
}
|
||||
|
||||
@ -196,25 +196,25 @@ public class BindInviteCodeExe {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取设备ID,如果没有则使用userId
|
||||
* 获取设备指纹(唯一标识)
|
||||
* @param userId 用户ID
|
||||
* @return 设备ID或用户ID
|
||||
* @return 设备指纹字符串或用户ID
|
||||
*/
|
||||
private String getDeviceId(Long userId) {
|
||||
try {
|
||||
ResultResponse<String> response = registerDeviceClient.getImeiByUserId(userId);
|
||||
String imei = response != null ? response.getBody() : null;
|
||||
ResultResponse<String> response = registerDeviceClient.getDeviceFingerprintByUserId(userId);
|
||||
String fingerprint = response != null && response.getStatus() ? response.getBody() : null;
|
||||
|
||||
if (StringUtils.isNotBlank(imei)) {
|
||||
log.info("获取到设备ID, userId={}, deviceId={}", userId, imei);
|
||||
return imei;
|
||||
if (StringUtils.isNotBlank(fingerprint)) {
|
||||
log.info("获取到设备指纹, userId={}, fingerprint={}", userId, fingerprint);
|
||||
return fingerprint;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("获取设备ID失败, userId={}, error={}", userId, e.getMessage());
|
||||
log.warn("获取设备指纹失败, userId={}, error={}", userId, e.getMessage());
|
||||
}
|
||||
|
||||
// 如果没有设备ID,使用userId
|
||||
log.info("未获取到设备ID,使用userId作为设备标识, userId={}", userId);
|
||||
// 如果没有设备指纹,使用userId
|
||||
log.info("未获取到设备指纹,使用userId作为设备标识, userId={}", userId);
|
||||
return "USER_" + userId;
|
||||
}
|
||||
|
||||
|
||||
@ -108,4 +108,12 @@ public interface LatestMobileDeviceService extends BaseService<LatestMobileDevic
|
||||
|
||||
Set<Long> getImeiUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 获取用户设备指纹
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 设备指纹字符串
|
||||
*/
|
||||
String getDeviceFingerprintByUserId(Long userId);
|
||||
|
||||
}
|
||||
|
||||
@ -275,4 +275,40 @@ public class LatestMobileDeviceServiceImpl extends
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDeviceFingerprintByUserId(Long userId) {
|
||||
if (userId == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
LatestMobileDevice device = query()
|
||||
.eq(LatestMobileDevice::getUserId, userId)
|
||||
.last(PageConstant.LIMIT_ONE)
|
||||
.getOne();
|
||||
|
||||
if (device == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return buildDeviceFingerprint(
|
||||
device.getRequestClient(),
|
||||
device.getPhoneModel(),
|
||||
device.getIp()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建设备指纹
|
||||
*/
|
||||
private String buildDeviceFingerprint(String requestClient,
|
||||
String phoneModel, String ip) {
|
||||
if (StringUtils.isBlank(requestClient)
|
||||
|| StringUtils.isBlank(phoneModel)
|
||||
|| StringUtils.isBlank(ip)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return requestClient + "|" + phoneModel + "|" + ip;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -118,4 +118,9 @@ public class RegisterDeviceClientEndpoint implements RegisterDeviceClientApi {
|
||||
public ResultResponse<PageResult<ArchiveDeviceDTO>> pageList(ArchiveDeviceQryCmd query) {
|
||||
return ResultResponse.success(registerDeviceClientService.pageList(query));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultResponse<String> getDeviceFingerprintByUserId(Long userId) {
|
||||
return ResultResponse.success(registerDeviceClientService.getDeviceFingerprintByUserId(userId));
|
||||
}
|
||||
}
|
||||
|
||||
@ -108,4 +108,12 @@ public interface RegisterDeviceClientService {
|
||||
* @return 设备信息
|
||||
*/
|
||||
Map<Long, String> mapImeiByIds(Set<Long> userIds);
|
||||
|
||||
/**
|
||||
* 获取用户设备指纹
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 设备指纹字符串
|
||||
*/
|
||||
String getDeviceFingerprintByUserId(Long userId);
|
||||
}
|
||||
|
||||
@ -229,4 +229,9 @@ public class RegisterDeviceClientServiceImpl implements RegisterDeviceClientServ
|
||||
public Map<Long, String> mapImeiByIds(Set<Long> userIds) {
|
||||
return latestMobileDeviceService.mapImeiByIds(userIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDeviceFingerprintByUserId(Long userId) {
|
||||
return latestMobileDeviceService.getDeviceFingerprintByUserId(userId);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user