邀请 新增我的邀请人信息查询接口
This commit is contained in:
parent
ad69f67c4a
commit
b0199267a0
@ -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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取我的邀请人信息
|
||||
* <p>
|
||||
* 返回当前用户的基本信息及其邀请人的信息
|
||||
*
|
||||
* @return 我的邀请人信息
|
||||
*/
|
||||
@GetMapping("/my-inviter-info")
|
||||
public MyInviterInfoCO getMyInviterInfo(AppExtCommand cmd) {
|
||||
return inviteUserActivityService.getMyInviterInfo(cmd);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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<ValidInviteUserCO> getValidInviteUsers(AppExtCommand cmd) {
|
||||
return getValidInviteUsersExe.execute(cmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MyInviterInfoCO getMyInviterInfo(AppExtCommand cmd) {
|
||||
return myInviterInfoQryExe.execute(cmd.getReqUserId());
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,66 @@
|
||||
package com.red.circle.other.app.dto.clientobject;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 我的邀请人信息 CO
|
||||
*
|
||||
* @author Claude
|
||||
* @since 2025-10-28
|
||||
*/
|
||||
@Data
|
||||
public class MyInviterInfoCO {
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 用户头像
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 用户创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 邀请人信息
|
||||
*/
|
||||
private InviterInfo inviter;
|
||||
|
||||
/**
|
||||
* 邀请人信息内部类
|
||||
*/
|
||||
@Data
|
||||
public static class InviterInfo {
|
||||
/**
|
||||
* 邀请人ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 邀请人昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 邀请人头像
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 邀请人创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
package com.red.circle.other.app.dto.clientobject.activity;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 我的邀请人信息客户端对象.
|
||||
*
|
||||
* @author tf
|
||||
* @since 2025-10-28
|
||||
*/
|
||||
@Data
|
||||
public class MyInviterInfoCO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 我的用户信息.
|
||||
*/
|
||||
private UserBasicInfoCO myInfo;
|
||||
|
||||
/**
|
||||
* 邀请人信息.
|
||||
*/
|
||||
private UserBasicInfoCO inviterInfo;
|
||||
|
||||
/**
|
||||
* 用户基本信息.
|
||||
*/
|
||||
@Data
|
||||
public static class UserBasicInfoCO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 用户ID.
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户名.
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 头像.
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 邀请码.
|
||||
*/
|
||||
private String inviteCode;
|
||||
|
||||
/**
|
||||
* 用户创建时间.
|
||||
*/
|
||||
private Timestamp createTime;
|
||||
|
||||
/**
|
||||
* 是否超过三天过期
|
||||
*/
|
||||
private boolean expired;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -13,6 +13,7 @@ import com.red.circle.other.app.dto.cmd.activity.InviteUserActivityLimitCmd;
|
||||
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.MyInviterInfoCO;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.ValidInviteUserCO;
|
||||
import java.util.List;
|
||||
|
||||
@ -82,4 +83,9 @@ public interface InviteUserActivityService {
|
||||
* 有效邀请用户列表.
|
||||
*/
|
||||
List<ValidInviteUserCO> getValidInviteUsers(AppExtCommand cmd);
|
||||
|
||||
/**
|
||||
* 获取我的邀请人信息.
|
||||
*/
|
||||
MyInviterInfoCO getMyInviterInfo(AppExtCommand cmd);
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ public class UserInviteUser extends TimestampBaseEntity {
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 邀请我的用户ID
|
||||
* 被邀请人userId
|
||||
*/
|
||||
@TableField("invite_user_id")
|
||||
private Long inviteUserId;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user