邀请码 充值后发送奖励完善
This commit is contained in:
parent
5a75f78165
commit
e9a281e8dd
@ -78,7 +78,7 @@ public class GetIncomeStatisticsExe {
|
||||
*/
|
||||
private List<Long> getValidInvitedUserIds(List<UserInviteUser> 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<InviteUserRechargeCommission> commissions = inviteUserRechargeCommissionDAO.selectList(
|
||||
new LambdaQueryWrapper<InviteUserRechargeCommission>()
|
||||
.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<InviteUserRechargeCommission> todayCommissions = inviteUserRechargeCommissionDAO.selectList(
|
||||
new LambdaQueryWrapper<InviteUserRechargeCommission>()
|
||||
.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))
|
||||
);
|
||||
|
||||
@ -85,13 +85,13 @@ public class GetValidInviteUsersExe {
|
||||
// 批量查询佣金信息(inviteUserId=邀请人,userId=被邀请人)
|
||||
List<InviteUserRechargeCommission> commissions = inviteUserRechargeCommissionDAO.selectList(
|
||||
new LambdaQueryWrapper<InviteUserRechargeCommission>()
|
||||
.eq(InviteUserRechargeCommission::getInviteUserId, inviterUserId) // 邀请人
|
||||
.in(InviteUserRechargeCommission::getUserId, invitedUserIds) // 被邀请人
|
||||
.eq(InviteUserRechargeCommission::getUserId, inviterUserId) // 邀请人
|
||||
.in(InviteUserRechargeCommission::getInviteUserId, invitedUserIds) // 被邀请人
|
||||
);
|
||||
|
||||
Map<Long, BigDecimal> commissionMap = commissions.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
InviteUserRechargeCommission::getUserId, // 被邀请人ID
|
||||
InviteUserRechargeCommission::getInviteUserId, // 被邀请人ID
|
||||
Collectors.reducing(BigDecimal.ZERO,
|
||||
InviteUserRechargeCommission::getCommission,
|
||||
BigDecimal::add)
|
||||
|
||||
@ -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<UserInviteUser> allInvites = userInviteUserDAO.selectList(
|
||||
new LambdaQueryWrapper<UserInviteUser>()
|
||||
.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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user