Refactor(user): 引入分布式ID生成服务替代Redis自增ID
- 添加对 han-note-distributed-id-generator-api 模块的依赖 - 实现 DistributedIdGeneratorRpcService 调用远程ID生成服务 - 替换用户注册时使用的Redis自增ID为RPC方式获取 - 删除原有从数据库获取用户ID的逻辑 - 更新pom.xml引入新的API依赖并管理版本
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package com.hanserwei.hannote.user.biz.rpc;
|
||||
|
||||
import com.hanserwei.hannote.distributed.id.generator.api.DistributedIdGeneratorFeignApi;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class DistributedIdGeneratorRpcService {
|
||||
|
||||
@Resource
|
||||
private DistributedIdGeneratorFeignApi distributedIdGeneratorFeignApi;
|
||||
|
||||
/**
|
||||
* Leaf 号段模式:小憨书 ID 业务标识
|
||||
*/
|
||||
private static final String BIZ_TAG_HANNOTE_ID = "leaf-segment-hannote-id";
|
||||
|
||||
/**
|
||||
* Leaf 号段模式:用户 ID 业务标识
|
||||
*/
|
||||
private static final String BIZ_TAG_USER_ID = "leaf-segment-user-id";
|
||||
|
||||
/**
|
||||
* 调用分布式 ID 生成服务生成小憨书 ID
|
||||
*
|
||||
* @return 小憨书 ID
|
||||
*/
|
||||
public String getHannoteId() {
|
||||
return distributedIdGeneratorFeignApi.getSegmentId(BIZ_TAG_HANNOTE_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用分布式 ID 生成服务用户 ID
|
||||
*
|
||||
* @return 用户 ID
|
||||
*/
|
||||
public String getUserId() {
|
||||
return distributedIdGeneratorFeignApi.getSegmentId(BIZ_TAG_USER_ID);
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.hanserwei.hannote.user.biz.domain.mapper.UserRoleDOMapper;
|
||||
import com.hanserwei.hannote.user.biz.enums.ResponseCodeEnum;
|
||||
import com.hanserwei.hannote.user.biz.enums.SexEnum;
|
||||
import com.hanserwei.hannote.user.biz.model.vo.UpdateUserInfoReqVO;
|
||||
import com.hanserwei.hannote.user.biz.rpc.DistributedIdGeneratorRpcService;
|
||||
import com.hanserwei.hannote.user.biz.rpc.OssRpcService;
|
||||
import com.hanserwei.hannote.user.biz.service.UserService;
|
||||
import com.hanserwei.hannote.user.dto.req.FindUserByEmailReqDTO;
|
||||
@@ -53,6 +54,8 @@ public class UserServiceImpl extends ServiceImpl<UserDOMapper, UserDO> implement
|
||||
private RoleDOMapper roleDOMapper;
|
||||
@Resource
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
@Resource
|
||||
private DistributedIdGeneratorRpcService distributedIdGeneratorRpcService;
|
||||
|
||||
@Override
|
||||
public Response<?> updateUserInfo(UpdateUserInfoReqVO updateUserInfoReqVO) {
|
||||
@@ -155,10 +158,14 @@ public class UserServiceImpl extends ServiceImpl<UserDOMapper, UserDO> implement
|
||||
}
|
||||
|
||||
// 否则注册新用户
|
||||
// 获取全局自增的小憨书 ID
|
||||
Long hanNoteId = redisTemplate.opsForValue().increment(RedisKeyConstants.HAN_NOTE_ID_GENERATOR_KEY);
|
||||
// RPC获取全局自增的小憨书 ID
|
||||
String hanNoteId = distributedIdGeneratorRpcService.getHannoteId();
|
||||
// RPC调用获取用户ID
|
||||
String userIdStr = distributedIdGeneratorRpcService.getUserId();
|
||||
Long userId = Long.valueOf(userIdStr);
|
||||
|
||||
UserDO userDO = UserDO.builder()
|
||||
.id(userId)
|
||||
.email(email)
|
||||
.hanNoteId(String.valueOf(hanNoteId)) // 自动生成小憨书号 ID
|
||||
.nickname("小憨憨" + hanNoteId) // 自动生成昵称, 如:小憨憨10000
|
||||
@@ -171,9 +178,6 @@ public class UserServiceImpl extends ServiceImpl<UserDOMapper, UserDO> implement
|
||||
// 添加入库
|
||||
this.save(userDO);
|
||||
|
||||
// 获取刚刚添加入库的用户 ID
|
||||
Long userId = userDO.getId();
|
||||
|
||||
// 给该用户分配一个默认角色
|
||||
UserRoleDO userRoleDO = UserRoleDO.builder()
|
||||
.userId(userId)
|
||||
|
||||
Reference in New Issue
Block a user