From e9a281e8ddcf5bb64cfca2e651c4057514b69672 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Wed, 22 Oct 2025 12:21:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=80=E8=AF=B7=E7=A0=81=20=E5=85=85?= =?UTF-8?q?=E5=80=BC=E5=90=8E=E5=8F=91=E9=80=81=E5=A5=96=E5=8A=B1=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/GetIncomeStatisticsExe.java | 10 ++-- .../activity/GetValidInviteUsersExe.java | 6 +-- .../gateway/user/InviteUserGatewayImpl.java | 53 ++++++++++--------- .../other-start/src/test/java/SpringTest.java | 12 +++++ 4 files changed, 47 insertions(+), 34 deletions(-) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetIncomeStatisticsExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetIncomeStatisticsExe.java index a00e7ad2..f0a97716 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetIncomeStatisticsExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetIncomeStatisticsExe.java @@ -78,7 +78,7 @@ public class GetIncomeStatisticsExe { */ private List getValidInvitedUserIds(List allInvites) { return allInvites.stream() - .filter(this::isValidInvite) +// .filter(this::isValidInvite) .map(UserInviteUser::getInviteUserId) // inviteUserId是被邀请人 .collect(Collectors.toList()); } @@ -128,8 +128,8 @@ public class GetIncomeStatisticsExe { List commissions = inviteUserRechargeCommissionDAO.selectList( new LambdaQueryWrapper() - .eq(InviteUserRechargeCommission::getInviteUserId, inviterUserId) - .in(InviteUserRechargeCommission::getUserId, validInvitedUserIds) + .eq(InviteUserRechargeCommission::getUserId, inviterUserId) + .in(InviteUserRechargeCommission::getInviteUserId, validInvitedUserIds) ); return commissions.stream() @@ -150,8 +150,8 @@ public class GetIncomeStatisticsExe { List todayCommissions = inviteUserRechargeCommissionDAO.selectList( new LambdaQueryWrapper() - .eq(InviteUserRechargeCommission::getInviteUserId, inviterUserId) - .in(InviteUserRechargeCommission::getUserId, validInvitedUserIds) + .eq(InviteUserRechargeCommission::getUserId, inviterUserId) + .in(InviteUserRechargeCommission::getInviteUserId, validInvitedUserIds) .ge(InviteUserRechargeCommission::getCreateTime, Timestamp.valueOf(todayStart)) .le(InviteUserRechargeCommission::getCreateTime, Timestamp.valueOf(todayEnd)) ); diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetValidInviteUsersExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetValidInviteUsersExe.java index a26018d3..f1d6d471 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetValidInviteUsersExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/activity/GetValidInviteUsersExe.java @@ -85,13 +85,13 @@ public class GetValidInviteUsersExe { // 批量查询佣金信息(inviteUserId=邀请人,userId=被邀请人) List commissions = inviteUserRechargeCommissionDAO.selectList( new LambdaQueryWrapper() - .eq(InviteUserRechargeCommission::getInviteUserId, inviterUserId) // 邀请人 - .in(InviteUserRechargeCommission::getUserId, invitedUserIds) // 被邀请人 + .eq(InviteUserRechargeCommission::getUserId, inviterUserId) // 邀请人 + .in(InviteUserRechargeCommission::getInviteUserId, invitedUserIds) // 被邀请人 ); Map commissionMap = commissions.stream() .collect(Collectors.groupingBy( - InviteUserRechargeCommission::getUserId, // 被邀请人ID + InviteUserRechargeCommission::getInviteUserId, // 被邀请人ID Collectors.reducing(BigDecimal.ZERO, InviteUserRechargeCommission::getCommission, BigDecimal::add) diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/user/InviteUserGatewayImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/user/InviteUserGatewayImpl.java index c38a1cc7..80c2f29c 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/user/InviteUserGatewayImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/user/InviteUserGatewayImpl.java @@ -1,6 +1,10 @@ package com.red.circle.other.infra.gateway.user; +import com.alibaba.nacos.client.naming.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.red.circle.common.business.core.enums.SysOriginPlatformEnum; +import com.red.circle.other.infra.database.rds.dao.user.user.UserInviteUserDAO; +import com.red.circle.other.infra.database.rds.entity.user.user.UserInviteUser; import com.red.circle.tool.core.date.TimestampUtils; import com.red.circle.other.domain.gateway.user.ability.InviteUserGateway; import com.red.circle.other.infra.database.cache.service.user.UserInviteCacheService; @@ -11,6 +15,7 @@ import com.red.circle.other.infra.database.rds.service.user.user.InviteUserSumma import java.math.BigDecimal; import java.math.RoundingMode; import java.sql.Timestamp; +import java.util.List; import java.util.Objects; import com.red.circle.wallet.inner.endpoint.wallet.WalletGoldClient; @@ -33,6 +38,7 @@ public class InviteUserGatewayImpl implements InviteUserGateway { private final WalletGoldClient walletGoldClient; private final UserInviteCacheService userInviteCacheService; private final InviteUserSummaryService inviteUserSummaryService; + private final UserInviteUserDAO userInviteUserDAO; private final InviteUserRegisterService inviteUserRegisterService; private final InviteUserRechargeCommissionService inviteUserRechargeCommissionService; @@ -48,8 +54,8 @@ public class InviteUserGatewayImpl implements InviteUserGateway { Long inviteUserId) { //根据被邀请人获得邀请人 - InviteUserRegister userRegister = getByInviteUserId(inviteUserId); - if (Objects.isNull(userRegister)) { + UserInviteUser userInviteUser = getByInviteUserId(inviteUserId); + if (Objects.isNull(userInviteUser)) { log.info("被邀请人获得邀请人 => null, inviteUserId:{}", inviteUserId); return; } @@ -61,7 +67,7 @@ public class InviteUserGatewayImpl implements InviteUserGateway { return; } //邀请时间 + 有效天数 > 当前时间 则可以继续获得佣金。 - Timestamp limitedTime = getLimitedTime(userRegister, commissionDays); + Timestamp limitedTime = getLimitedTime(userInviteUser, commissionDays); if (limitedTime.compareTo(TimestampUtils.now()) < 0) { log.info("邀请时间 + 有效天数 < 当前时间, inviteUserId:{}", inviteUserId); return; @@ -81,13 +87,10 @@ public class InviteUserGatewayImpl implements InviteUserGateway { return; } - inviteUserSummaryService.incrCommission(userRegister.getUserId(), commission); - inviteUserRegisterService.incrCommission(userRegister.getInviteUserId(), commission); - inviteUserRechargeCommissionService.add(sysOrigin, - userRegister.getUserId(), userRegister.getInviteUserId(), commission); + inviteUserSummaryService.incrCommission(userInviteUser.getUserId(), commission); + inviteUserRechargeCommissionService.add(sysOrigin, userInviteUser.getUserId(), userInviteUser.getInviteUserId(), commission); - awardCommission(sysOrigin, userRegister.getUserId(), commission, - userRegister.getInviteUserId()); + awardCommission(sysOrigin, userInviteUser.getUserId(), commission, userInviteUser.getInviteUserId()); } /** @@ -98,9 +101,7 @@ public class InviteUserGatewayImpl implements InviteUserGateway { * @param amount 佣金 * @param inviteUserId 被邀请人(充值人) */ - private void awardCommission(String sysOrigin, Long userId, BigDecimal amount, - Long inviteUserId) { - + private void awardCommission(String sysOrigin, Long userId, BigDecimal amount, Long inviteUserId) { walletGoldClient.changeBalance(GoldReceiptCmd.builder() .appIncome() .userId(userId) @@ -111,16 +112,6 @@ public class InviteUserGatewayImpl implements InviteUserGateway { .amount(amount) .closeDelayAsset() .build()); - // TODO 2023-05-08 刘占洋, 有用户薅羊毛去除 -// walletRepository.changeGoldBalance(GoldReceipt.builder() -// .consumeId(IdWorkerUtils.getId()) -// .trackId(inviteUserId) -// .type(ReceiptType.INCOME) -// .userId(userId) -// .sysOrigin(SysOriginPlatformEnum.valueOf(sysOrigin)) -// .origin(GoldOrigin.INVITE_USER_REWARDS) -// .amount(amount) -// .build()); } private BigDecimal getCommission(BigDecimal rechargeAmount, Double commissionRate) { @@ -133,11 +124,21 @@ public class InviteUserGatewayImpl implements InviteUserGateway { .getCommissionRate(SysOriginPlatformEnum.valueOf(sysOrigin)); } - private InviteUserRegister getByInviteUserId(Long inviteUserId) { + private UserInviteUser getByInviteUserId(Long inviteUserId) { if (Objects.isNull(inviteUserId)) { return null; } - return inviteUserRegisterService.getByInviteUserId(inviteUserId); + + List allInvites = userInviteUserDAO.selectList( + new LambdaQueryWrapper() + .eq(UserInviteUser::getInviteUserId, inviteUserId) + .orderByDesc(UserInviteUser::getCreateTime) + ); + if (CollectionUtils.isEmpty(allInvites)) { + return null; + } + + return allInvites.get(0); } private Integer getCommissionDays(String sysOrigin) { @@ -145,9 +146,9 @@ public class InviteUserGatewayImpl implements InviteUserGateway { .getCommissionDays(SysOriginPlatformEnum.valueOf(sysOrigin)); } - private Timestamp getLimitedTime(InviteUserRegister userRegister, Integer commissionDays) { + private Timestamp getLimitedTime(UserInviteUser userInviteUser, Integer commissionDays) { return TimestampUtils - .dateTimestampPlusDays(userRegister.getCreateTime().toLocalDateTime(), commissionDays); + .dateTimestampPlusDays(userInviteUser.getCreateTime().toLocalDateTime(), commissionDays); } } diff --git a/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java b/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java index 4cbb0f56..8a9246c6 100644 --- a/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java +++ b/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java @@ -1,14 +1,26 @@ import com.red.circle.OtherServiceApplication; import com.red.circle.other.app.scheduler.TeamBillTask; +import com.red.circle.other.domain.gateway.user.ability.InviteUserGateway; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import java.math.BigDecimal; + @SpringBootTest(classes = OtherServiceApplication.class) @RunWith(SpringRunner.class) public class SpringTest { + @Autowired + private InviteUserGateway inviteUserGateway; + + @Test + public void execute() { + BigDecimal amount = new BigDecimal("100"); + Long userId = 1963789902071508993L; + inviteUserGateway.getRechargeCommission(amount, "LIKEI", userId); + } }