From b0199267a0777968fbf6a1f33a5dcca988eac9a5 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Tue, 28 Oct 2025 18:28:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=80=E8=AF=B7=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=88=91=E7=9A=84=E9=82=80=E8=AF=B7=E4=BA=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InviteUserActivityRestController.java | 21 +++-- .../activity/query/MyInviterInfoQryExe.java | 85 +++++++++++++++++++ .../InviteUserActivityServiceImpl.java | 16 ++-- .../app/dto/clientobject/MyInviterInfoCO.java | 66 ++++++++++++++ .../activity/MyInviterInfoCO.java | 73 ++++++++++++++++ .../activity/InviteUserActivityService.java | 6 ++ .../rds/entity/user/user/UserInviteUser.java | 2 +- 7 files changed, 252 insertions(+), 17 deletions(-) create mode 100644 rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/query/MyInviterInfoQryExe.java create mode 100644 rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/MyInviterInfoCO.java create mode 100644 rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/activity/MyInviterInfoCO.java diff --git a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/InviteUserActivityRestController.java b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/InviteUserActivityRestController.java index 5a74c272..25469738 100644 --- a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/InviteUserActivityRestController.java +++ b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/activity/InviteUserActivityRestController.java @@ -2,18 +2,11 @@ package com.red.circle.other.adapter.app.activity; import com.red.circle.common.business.dto.cmd.AppExtCommand; import com.red.circle.common.business.dto.cmd.app.AppIdLongCmd; -import com.red.circle.other.app.dto.clientobject.activity.ActivityUserRewardPropsCO; -import com.red.circle.other.app.dto.clientobject.activity.InviteActivityCO; +import com.red.circle.other.app.dto.clientobject.activity.*; import com.red.circle.other.app.dto.clientobject.activity.InviteActivityCO.InviteActivityInfoCO; -import com.red.circle.other.app.dto.clientobject.activity.InviteUserActivitySummaryCO; -import com.red.circle.other.app.dto.clientobject.activity.InviteUserCO; -import com.red.circle.other.app.dto.clientobject.activity.InviteUserCommissionDetailsCO; import com.red.circle.other.app.dto.cmd.activity.InviteUserActivityLimitCmd; import com.red.circle.other.app.service.activity.InviteUserActivityService; import com.red.circle.other.app.dto.cmd.activity.BindInviteCodeCmd; -import com.red.circle.other.app.dto.clientobject.activity.InviteCodeCO; -import com.red.circle.other.app.dto.clientobject.activity.InviteIncomeStatisticsCO; -import com.red.circle.other.app.dto.clientobject.activity.ValidInviteUserCO; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -203,4 +196,16 @@ public class InviteUserActivityRestController { return users; } + + /** + * 获取我的邀请人信息 + *
+ * 返回当前用户的基本信息及其邀请人的信息
+ *
+ * @return 我的邀请人信息
+ */
+ @GetMapping("/my-inviter-info")
+ public MyInviterInfoCO getMyInviterInfo(AppExtCommand cmd) {
+ return inviteUserActivityService.getMyInviterInfo(cmd);
+ }
}
diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/query/MyInviterInfoQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/query/MyInviterInfoQryExe.java
new file mode 100644
index 00000000..ffaa96f4
--- /dev/null
+++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/query/MyInviterInfoQryExe.java
@@ -0,0 +1,85 @@
+package com.red.circle.other.app.command.activity.query;
+
+import com.red.circle.other.app.dto.clientobject.activity.MyInviterInfoCO;
+import com.red.circle.other.infra.database.rds.entity.user.user.UserInviteUser;
+import com.red.circle.other.infra.database.rds.service.user.user.UserInviteUserService;
+import com.red.circle.other.inner.endpoint.user.user.UserProfileClient;
+import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
+import com.red.circle.tool.core.date.TimestampUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * 查询我的邀请人信息执行器
+ *
+ * @author Claude
+ * @since 2025-10-28
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class MyInviterInfoQryExe {
+
+ private final UserInviteUserService inviteUserService;
+ private final UserProfileClient userProfileClient;
+
+ public MyInviterInfoCO execute(Long userId) {
+ // 1. 获取当前用户信息
+ UserProfileDTO currentUser = userProfileClient.getByUserId(userId).getBody();
+ if (currentUser == null) {
+ log.warn("用户不存在, userId: {}", userId);
+ return null;
+ }
+
+ // 2. 构建返回对象 - 当前用户信息
+ MyInviterInfoCO result = new MyInviterInfoCO();
+ MyInviterInfoCO.UserBasicInfoCO userBasicInfoCO = new MyInviterInfoCO.UserBasicInfoCO();
+ userBasicInfoCO.setUserId(currentUser.getId());
+ userBasicInfoCO.setUserName(currentUser.getUserNickname());
+ userBasicInfoCO.setAvatar(currentUser.getUserAvatar());
+ userBasicInfoCO.setCreateTime(currentUser.getCreateTime());
+
+ // 校验用户创建时间是否超过3天
+ Timestamp createTime = currentUser.getCreateTime();
+ if (createTime != null) {
+ long createTimeMillis = createTime.getTime();
+ long currentTime = TimestampUtils.now().getTime();
+ long threeDaysInMillis = 3 * 24 * 60 * 60 * 1000L; // 3天的毫秒数
+ long timeDiff = currentTime - createTimeMillis;
+
+ if (timeDiff > threeDaysInMillis) {
+ userBasicInfoCO.setExpired(true);
+ }
+ }
+
+ result.setMyInfo(userBasicInfoCO);
+
+ // 3. 查询邀请关系
+ UserInviteUser inviteRelation = inviteUserService.query()
+ .eq(UserInviteUser::getInviteUserId, userId)
+ .last("limit 1")
+ .getOne();
+ if (inviteRelation == null || inviteRelation.getInviteUserId() == null) {
+ // 没有邀请人,直接返回
+ return result;
+ }
+
+ // 4. 获取邀请人信息
+ Long inviterUserId = inviteRelation.getUserId();
+ UserProfileDTO inviterUser = userProfileClient.getByUserId(inviterUserId).getBody();
+ if (inviterUser != null) {
+ MyInviterInfoCO.UserBasicInfoCO inviter = new MyInviterInfoCO.UserBasicInfoCO();
+ inviter.setUserId(inviterUser.getId());
+ inviter.setUserName(inviterUser.getUserNickname());
+ inviter.setAvatar(inviterUser.getUserAvatar());
+ inviter.setCreateTime(inviterUser.getCreateTime());
+ result.setInviterInfo(inviter);
+ }
+
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/InviteUserActivityServiceImpl.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/InviteUserActivityServiceImpl.java
index 4ab72525..67c18fa6 100644
--- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/InviteUserActivityServiceImpl.java
+++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/activity/InviteUserActivityServiceImpl.java
@@ -10,20 +10,14 @@ import com.red.circle.other.app.command.activity.InviteUserListExe;
import com.red.circle.other.app.command.activity.InviteUserReceiveAwardExe;
import com.red.circle.other.app.command.activity.InviteUserSummaryExe;
import com.red.circle.other.app.command.activity.query.InviteUserQuantityAwardQueryExe;
-import com.red.circle.other.app.dto.clientobject.activity.ActivityUserRewardPropsCO;
-import com.red.circle.other.app.dto.clientobject.activity.InviteActivityCO;
+import com.red.circle.other.app.command.activity.query.MyInviterInfoQryExe;
+import com.red.circle.other.app.dto.clientobject.activity.*;
import com.red.circle.other.app.dto.clientobject.activity.InviteActivityCO.InviteActivityInfoCO;
-import com.red.circle.other.app.dto.clientobject.activity.InviteUserActivitySummaryCO;
-import com.red.circle.other.app.dto.clientobject.activity.InviteUserCO;
-import com.red.circle.other.app.dto.clientobject.activity.InviteUserCommissionDetailsCO;
import com.red.circle.other.app.command.activity.GetMyInviteCodeExe;
import com.red.circle.other.app.command.activity.BindInviteCodeExe;
import com.red.circle.other.app.command.activity.GetIncomeStatisticsExe;
import com.red.circle.other.app.command.activity.GetValidInviteUsersExe;
import com.red.circle.other.app.dto.cmd.activity.BindInviteCodeCmd;
-import com.red.circle.other.app.dto.clientobject.activity.InviteCodeCO;
-import com.red.circle.other.app.dto.clientobject.activity.InviteIncomeStatisticsCO;
-import com.red.circle.other.app.dto.clientobject.activity.ValidInviteUserCO;
import com.red.circle.other.app.dto.cmd.activity.InviteUserActivityLimitCmd;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -53,6 +47,7 @@ public class InviteUserActivityServiceImpl implements InviteUserActivityService
private final BindInviteCodeExe bindInviteCodeExe;
private final GetIncomeStatisticsExe getIncomeStatisticsExe;
private final GetValidInviteUsersExe getValidInviteUsersExe;
+ private final MyInviterInfoQryExe myInviterInfoQryExe;
@Override
public InviteUserActivitySummaryCO getSummary(AppExtCommand cmd) {
@@ -114,4 +109,9 @@ public class InviteUserActivityServiceImpl implements InviteUserActivityService
public List