绑定邀请码 新增设备指纹校验
This commit is contained in:
parent
4c12994010
commit
6145efc7a4
@ -139,4 +139,13 @@ public interface RegisterDeviceClientApi {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/pageList")
|
@PostMapping("/pageList")
|
||||||
ResultResponse<PageResult<ArchiveDeviceDTO>> pageList(@RequestBody ArchiveDeviceQryCmd query);
|
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
|
* @param userId 用户ID
|
||||||
* @return 设备ID或用户ID
|
* @return 设备指纹字符串或用户ID
|
||||||
*/
|
*/
|
||||||
private String getDeviceId(Long userId) {
|
private String getDeviceId(Long userId) {
|
||||||
try {
|
try {
|
||||||
ResultResponse<String> response = registerDeviceClient.getImeiByUserId(userId);
|
ResultResponse<String> response = registerDeviceClient.getDeviceFingerprintByUserId(userId);
|
||||||
String imei = response != null ? response.getBody() : null;
|
String fingerprint = response != null && response.getStatus() ? response.getBody() : null;
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(imei)) {
|
if (StringUtils.isNotBlank(fingerprint)) {
|
||||||
log.info("获取到设备ID, userId={}, deviceId={}", userId, imei);
|
log.info("获取到设备指纹, userId={}, fingerprint={}", userId, fingerprint);
|
||||||
return imei;
|
return fingerprint;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("获取设备ID失败, userId={}, error={}", userId, e.getMessage());
|
log.warn("获取设备指纹失败, userId={}, error={}", userId, e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果没有设备ID,使用userId
|
// 如果没有设备指纹,使用userId
|
||||||
log.info("未获取到设备ID,使用userId作为设备标识, userId={}", userId);
|
log.info("未获取到设备指纹,使用userId作为设备标识, userId={}", userId);
|
||||||
return "USER_" + userId;
|
return "USER_" + userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -108,4 +108,12 @@ public interface LatestMobileDeviceService extends BaseService<LatestMobileDevic
|
|||||||
|
|
||||||
Set<Long> getImeiUserId(Long userId);
|
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) {
|
public ResultResponse<PageResult<ArchiveDeviceDTO>> pageList(ArchiveDeviceQryCmd query) {
|
||||||
return ResultResponse.success(registerDeviceClientService.pageList(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 设备信息
|
* @return 设备信息
|
||||||
*/
|
*/
|
||||||
Map<Long, String> mapImeiByIds(Set<Long> userIds);
|
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) {
|
public Map<Long, String> mapImeiByIds(Set<Long> userIds) {
|
||||||
return latestMobileDeviceService.mapImeiByIds(userIds);
|
return latestMobileDeviceService.mapImeiByIds(userIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDeviceFingerprintByUserId(Long userId) {
|
||||||
|
return latestMobileDeviceService.getDeviceFingerprintByUserId(userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user