diff --git a/han-note-distributed-id-generator/han-note-distributed-id-generator-api/src/main/java/com/hanserwei/hannote/distributed/id/generator/api/DistributedIdGeneratorFeignApi.java b/han-note-distributed-id-generator/han-note-distributed-id-generator-api/src/main/java/com/hanserwei/hannote/distributed/id/generator/api/DistributedIdGeneratorFeignApi.java
new file mode 100644
index 0000000..22f9ab5
--- /dev/null
+++ b/han-note-distributed-id-generator/han-note-distributed-id-generator-api/src/main/java/com/hanserwei/hannote/distributed/id/generator/api/DistributedIdGeneratorFeignApi.java
@@ -0,0 +1,19 @@
+package com.hanserwei.hannote.distributed.id.generator.api;
+
+import com.hanserwei.hannote.distributed.id.generator.constant.ApiConstants;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+@FeignClient(name = ApiConstants.SERVICE_NAME)
+public interface DistributedIdGeneratorFeignApi {
+
+ String PREFIX = "/id";
+
+ @GetMapping(value = PREFIX + "/segment/get/{key}")
+ String getSegmentId(@PathVariable("key") String key);
+
+ @GetMapping(value = PREFIX + "/snowflake/get/{key}")
+ String getSnowflakeId(@PathVariable("key") String key);
+
+}
\ No newline at end of file
diff --git a/han-note-distributed-id-generator/han-note-distributed-id-generator-api/src/main/java/com/hanserwei/hannote/distributed/id/generator/constant/ApiConstants.java b/han-note-distributed-id-generator/han-note-distributed-id-generator-api/src/main/java/com/hanserwei/hannote/distributed/id/generator/constant/ApiConstants.java
new file mode 100644
index 0000000..765f736
--- /dev/null
+++ b/han-note-distributed-id-generator/han-note-distributed-id-generator-api/src/main/java/com/hanserwei/hannote/distributed/id/generator/constant/ApiConstants.java
@@ -0,0 +1,9 @@
+package com.hanserwei.hannote.distributed.id.generator.constant;
+
+public interface ApiConstants {
+
+ /**
+ * 服务名称
+ */
+ String SERVICE_NAME = "han-note-distributed-id-generator";
+}
\ No newline at end of file
diff --git a/han-note-user/han-note-user-biz/pom.xml b/han-note-user/han-note-user-biz/pom.xml
index dd75d46..43d5042 100644
--- a/han-note-user/han-note-user-biz/pom.xml
+++ b/han-note-user/han-note-user-biz/pom.xml
@@ -84,6 +84,10 @@
com.hanserwei
han-note-user-api
+
+ com.hanserwei
+ han-note-distributed-id-generator-api
+
diff --git a/han-note-user/han-note-user-biz/src/main/java/com/hanserwei/hannote/user/biz/rpc/DistributedIdGeneratorRpcService.java b/han-note-user/han-note-user-biz/src/main/java/com/hanserwei/hannote/user/biz/rpc/DistributedIdGeneratorRpcService.java
new file mode 100644
index 0000000..7d3b3a8
--- /dev/null
+++ b/han-note-user/han-note-user-biz/src/main/java/com/hanserwei/hannote/user/biz/rpc/DistributedIdGeneratorRpcService.java
@@ -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);
+ }
+}
\ No newline at end of file
diff --git a/han-note-user/han-note-user-biz/src/main/java/com/hanserwei/hannote/user/biz/service/impl/UserServiceImpl.java b/han-note-user/han-note-user-biz/src/main/java/com/hanserwei/hannote/user/biz/service/impl/UserServiceImpl.java
index 066c62f..b0ea4d9 100644
--- a/han-note-user/han-note-user-biz/src/main/java/com/hanserwei/hannote/user/biz/service/impl/UserServiceImpl.java
+++ b/han-note-user/han-note-user-biz/src/main/java/com/hanserwei/hannote/user/biz/service/impl/UserServiceImpl.java
@@ -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 implement
private RoleDOMapper roleDOMapper;
@Resource
private RedisTemplate redisTemplate;
+ @Resource
+ private DistributedIdGeneratorRpcService distributedIdGeneratorRpcService;
@Override
public Response> updateUserInfo(UpdateUserInfoReqVO updateUserInfoReqVO) {
@@ -155,10 +158,14 @@ public class UserServiceImpl extends ServiceImpl 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 implement
// 添加入库
this.save(userDO);
- // 获取刚刚添加入库的用户 ID
- Long userId = userDO.getId();
-
// 给该用户分配一个默认角色
UserRoleDO userRoleDO = UserRoleDO.builder()
.userId(userId)
diff --git a/pom.xml b/pom.xml
index 0883301..16d94b8 100755
--- a/pom.xml
+++ b/pom.xml
@@ -227,6 +227,12 @@
han-note-kv-api
${revision}
+
+ com.hanserwei
+ han-note-distributed-id-generator-api
+ ${revision}
+
+