绑定邀请用户获得奖励调整
This commit is contained in:
parent
4f6f296f6a
commit
8304e09c6e
@ -174,9 +174,6 @@ public class InAppPurchaseCommon {
|
||||
order.getAcceptUserId(),
|
||||
order.getAmountUsd().doubleValue());
|
||||
|
||||
// 发送首充奖励
|
||||
completedFirstCharge(order.getAcceptUserId(), order.getSysOrigin());
|
||||
|
||||
// SVip积分累计.
|
||||
userSvipClient.incrIntegral(order.getAcceptUserId(),
|
||||
amount.longValue());
|
||||
@ -185,6 +182,8 @@ public class InAppPurchaseCommon {
|
||||
inviteUserClient.processRechargeCommission(amount,
|
||||
order.getSysOrigin(), order.getAcceptUserId());
|
||||
|
||||
// 发送首充奖励
|
||||
completedFirstCharge(order.getAcceptUserId(), order.getSysOrigin());
|
||||
}
|
||||
|
||||
private void completedFirstCharge(Long userId, String sysOrigin) {
|
||||
|
||||
@ -85,10 +85,6 @@ public class BuySuccessListener implements MessageListener {
|
||||
return;
|
||||
}
|
||||
|
||||
handleVoiceSystemRechargeRewards(eventBody);
|
||||
|
||||
completedFirstCharge(eventBody.getUserId(), eventBody.getSysOrigin());
|
||||
|
||||
userExpandClient.updatePurchasingToTrue(eventBody.getUserId());
|
||||
userProfileClient.removeCache(eventBody.getUserId());
|
||||
|
||||
@ -96,14 +92,13 @@ public class BuySuccessListener implements MessageListener {
|
||||
cumulativeRechargeClient.incrTodayRechargeScore(
|
||||
eventBody.getAcceptUserId(), eventBody.getProductConfig().getUnitPrice().doubleValue());
|
||||
|
||||
try {
|
||||
|
||||
//被邀请人充值邀请人获得佣金
|
||||
inviteUserClient.processRechargeCommission(eventBody.getCandyQuantity(),
|
||||
eventBody.getSysOrigin(),
|
||||
eventBody.getUserId());
|
||||
} catch (Exception e) {
|
||||
log.error("[App内购] 被邀请人充值邀请人获得佣金累计错误", e);
|
||||
}
|
||||
eventBody.getSysOrigin(),
|
||||
eventBody.getUserId());
|
||||
|
||||
completedFirstCharge(eventBody.getUserId(), eventBody.getSysOrigin());
|
||||
}
|
||||
|
||||
private void completedFirstCharge(Long userId, String sysOrigin) {
|
||||
@ -154,7 +149,7 @@ public class BuySuccessListener implements MessageListener {
|
||||
.getBody();
|
||||
BigDecimal rewardQuantity = rewardAmount.divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN)
|
||||
.multiply(cmd.getCandyQuantity()).setScale(0, RoundingMode.DOWN);
|
||||
if (!ArithmeticUtils.gtZero(rewardQuantity)) {
|
||||
if (!ArithmeticUtils.gteZero(rewardQuantity)) {
|
||||
log.warn("没有找到有效奖励:{}", JacksonUtils.toJson(cmd));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -3,9 +3,14 @@ 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.domain.gateway.user.UserProfileGateway;
|
||||
import com.red.circle.other.domain.model.user.UserProfile;
|
||||
import com.red.circle.other.infra.database.rds.dao.user.user.UserInviteUserDAO;
|
||||
import com.red.circle.other.infra.database.rds.entity.user.user.InviteUserRechargeCommission;
|
||||
import com.red.circle.other.infra.database.rds.entity.user.user.OneTimeTask;
|
||||
import com.red.circle.other.infra.database.rds.entity.user.user.UserInviteUser;
|
||||
import com.red.circle.other.infra.database.rds.service.user.user.OneTimeTaskService;
|
||||
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
|
||||
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;
|
||||
@ -16,6 +21,8 @@ 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.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -40,8 +47,9 @@ public class InviteUserGatewayImpl implements InviteUserGateway {
|
||||
private final UserInviteCacheService userInviteCacheService;
|
||||
private final InviteUserSummaryService inviteUserSummaryService;
|
||||
private final UserInviteUserDAO userInviteUserDAO;
|
||||
private final InviteUserRegisterService inviteUserRegisterService;
|
||||
private final UserProfileGateway userProfileGateway;
|
||||
private final InviteUserRechargeCommissionService inviteUserRechargeCommissionService;
|
||||
private final OneTimeTaskService oneTimeTaskService;
|
||||
|
||||
/**
|
||||
* 被邀请人充值邀请人获得佣金
|
||||
@ -57,7 +65,6 @@ public class InviteUserGatewayImpl implements InviteUserGateway {
|
||||
//根据被邀请人获得邀请人
|
||||
UserInviteUser userInviteUser = getByInviteUserId(inviteUserId);
|
||||
if (Objects.isNull(userInviteUser)) {
|
||||
log.info("被邀请人获得邀请人 => null, inviteUserId:{}", inviteUserId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -75,7 +82,7 @@ public class InviteUserGatewayImpl implements InviteUserGateway {
|
||||
}
|
||||
|
||||
//获得佣金比例
|
||||
Double commissionRate = getCommissionRate(sysOrigin);
|
||||
Double commissionRate = getCommissionRate(sysOrigin, userInviteUser.getInviteUserId());
|
||||
if (Objects.isNull(commissionRate)) {
|
||||
log.info("获得佣金比例 => null, inviteUserId:{}", inviteUserId);
|
||||
return;
|
||||
@ -103,9 +110,6 @@ public class InviteUserGatewayImpl implements InviteUserGateway {
|
||||
log.info("被邀请人首次充值,累计邀请人数+1, inviterUserId:{}, inviteUserId:{}",
|
||||
userInviteUser.getUserId(), userInviteUser.getInviteUserId());
|
||||
inviteUserSummaryService.incrUser(userInviteUser.getUserId(), 1);
|
||||
} else {
|
||||
log.info("被邀请人非首次充值,不累计邀请人数, inviterUserId:{}, inviteUserId:{}, recordCount:{}",
|
||||
userInviteUser.getUserId(), userInviteUser.getInviteUserId(), recordCount);
|
||||
}
|
||||
|
||||
awardCommission(sysOrigin, userInviteUser.getUserId(), commission, userInviteUser.getInviteUserId());
|
||||
@ -137,9 +141,18 @@ public class InviteUserGatewayImpl implements InviteUserGateway {
|
||||
.setScale(0, RoundingMode.DOWN);
|
||||
}
|
||||
|
||||
private Double getCommissionRate(String sysOrigin) {
|
||||
return userInviteCacheService
|
||||
.getCommissionRate(SysOriginPlatformEnum.valueOf(sysOrigin));
|
||||
private Double getCommissionRate(String sysOrigin, Long userId) {
|
||||
Double commissionRate = userInviteCacheService.getCommissionRate(SysOriginPlatformEnum.valueOf(sysOrigin));
|
||||
|
||||
UserProfile userProfile = userProfileGateway.getByUserId(userId);
|
||||
Duration duration = Duration.between(userProfile.getCreateTime().toLocalDateTime(), LocalDateTime.now());
|
||||
if (duration.toDays() < 7) {
|
||||
OneTimeTask oneTimeTask = oneTimeTaskService.queryCompletedFirstCharge(userId, sysOrigin);
|
||||
if (Objects.isNull(oneTimeTask)) {
|
||||
commissionRate += 0.03;
|
||||
}
|
||||
}
|
||||
return commissionRate;
|
||||
}
|
||||
|
||||
private UserInviteUser getByInviteUserId(Long inviteUserId) {
|
||||
|
||||
@ -14,6 +14,7 @@ import com.red.circle.order.inner.endpoint.UserRechargeCountClient;
|
||||
import com.red.circle.order.inner.model.enums.MonthlyRechargeType;
|
||||
import com.red.circle.other.inner.endpoint.activity.PropsActivityClient;
|
||||
import com.red.circle.other.inner.endpoint.team.target.UserBillDiamondBalanceClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.InviteUserClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.UserOneTimeTaskClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.UserProfileClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.UserSvipClient;
|
||||
@ -92,6 +93,7 @@ public class UserBankExchangeGoldCmdExe {
|
||||
private final PropsActivityClient propsActivityClient;
|
||||
private final UserOneTimeTaskClient userOneTimeTaskClient;
|
||||
private final UserProfileClient userProfileClient;
|
||||
private final InviteUserClient inviteUserClient;
|
||||
|
||||
public UserBankExchangeGoldResultCO execute(UserBankExchangeGoldCmd cmd) {
|
||||
ResponseAssert.isTrue(ResponseErrorCode.REQUEST_PARAMETER_ERROR,
|
||||
@ -167,11 +169,15 @@ public class UserBankExchangeGoldCmdExe {
|
||||
MonthlyRechargeType.SHIPPING_AGENT
|
||||
);
|
||||
|
||||
completedFirstCharge(cmd.getReqUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
|
||||
// SVip积分累计.
|
||||
userSvipClient.incrIntegral(cmd.getReqUserId(), goldQuantity.longValue());
|
||||
redisService.unlock(key);
|
||||
|
||||
// 被邀请人充值邀请人获得佣金
|
||||
inviteUserClient.processRechargeCommission(goldQuantity,
|
||||
cmd.getReqSysOrigin().getOrigin(), cmd.getReqUserId());
|
||||
|
||||
completedFirstCharge(cmd.getReqUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
return new UserBankExchangeGoldResultCO()
|
||||
.setBankBalance(decrUserBankBalanceDTO.getAccurateBalance())
|
||||
.setExchangeGold(Objects.toString(goldRatio));
|
||||
|
||||
@ -14,6 +14,7 @@ import com.red.circle.order.inner.model.enums.MonthlyRechargeType;
|
||||
import com.red.circle.other.inner.endpoint.activity.AppRankCountClient;
|
||||
import com.red.circle.other.inner.endpoint.activity.CumulativeRechargeClient;
|
||||
import com.red.circle.other.inner.endpoint.activity.PropsActivityClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.InviteUserClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.UserOneTimeTaskClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.UserProfileClient;
|
||||
import com.red.circle.other.inner.enums.activity.PropsActivityTypeEnum;
|
||||
@ -80,6 +81,7 @@ public class DealerToUserShipCmdExe {
|
||||
private final PropsActivityClient propsActivityClient;
|
||||
private final UserOneTimeTaskClient userOneTimeTaskClient;
|
||||
private final UserProfileClient userProfileClient;
|
||||
private final InviteUserClient inviteUserClient;
|
||||
|
||||
public BigDecimal execute(FreightDealerToUserShipCmd cmd) {
|
||||
controlSwitch.execute(cmd.requireReqSysOriginChildEnum());
|
||||
@ -166,8 +168,6 @@ public class DealerToUserShipCmdExe {
|
||||
// 累计充值
|
||||
incrRechargeQuantity(cmd);
|
||||
|
||||
completedFirstCharge(cmd.getReqUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
|
||||
//累计今日充值,每日累计充值抽奖活动
|
||||
cumulativeRechargeClient.incrTodayRechargeScore(cmd.getAcceptUserId(),
|
||||
getGoldToSUD(cmd).doubleValue());
|
||||
@ -177,6 +177,11 @@ public class DealerToUserShipCmdExe {
|
||||
// SVip积分累计.
|
||||
userSvipClient.incrIntegral(cmd.getAcceptUserId(), cmd.getQuantity().longValue());
|
||||
|
||||
// 被邀请人充值邀请人获得佣金
|
||||
inviteUserClient.processRechargeCommission(cmd.getQuantity(),
|
||||
cmd.getReqSysOrigin().getOrigin(), cmd.getReqUserId());
|
||||
|
||||
completedFirstCharge(cmd.getReqUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
return balance;
|
||||
} finally {
|
||||
redisService.unlock(getLockKey(cmd));
|
||||
|
||||
@ -80,6 +80,7 @@ public class SendFreightShipCmdExe {
|
||||
private final UserLevelClient userLevelClient;
|
||||
private final PropsActivityClient propsActivityClient;
|
||||
private final UserOneTimeTaskClient userOneTimeTaskClient;
|
||||
private final InviteUserClient inviteUserClient;
|
||||
|
||||
public BigDecimal execute(FreightShipSendCmd cmd) {
|
||||
|
||||
@ -148,16 +149,11 @@ public class SendFreightShipCmdExe {
|
||||
// SVip积分累计.
|
||||
userSvipClient.incrIntegral(cmd.getAcceptUserId(), cmd.getQuantity().longValue());
|
||||
|
||||
completedFirstCharge(cmd.getAcceptUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
// 被邀请人充值邀请人获得佣金
|
||||
inviteUserClient.processRechargeCommission(cmd.getQuantity(),
|
||||
cmd.getReqSysOrigin().getOrigin(), cmd.getReqUserId());
|
||||
|
||||
//完成任务 钩子 9 充值 币商
|
||||
/*taskMqMessage.sendTask(TaskApprovalEvent.builder()
|
||||
.taskId(9)
|
||||
.userId(cmd.getAcceptUserId())
|
||||
.sysOrigin(cmd.requireReqSysOrigin())
|
||||
.currencyDiff((cmd.getQuantity().longValue()))
|
||||
.day(LocalDateTimeUtils.nowFormat("yyyy-MM-dd"))
|
||||
.build());*/
|
||||
completedFirstCharge(cmd.getAcceptUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
return balance;
|
||||
|
||||
} finally {
|
||||
|
||||
@ -95,6 +95,7 @@ public class SalaryExchangeGoldCmdExe {
|
||||
private final PropsActivityClient propsActivityClient;
|
||||
private final UserOneTimeTaskClient userOneTimeTaskClient;
|
||||
private final UserProfileClient userProfileClient;
|
||||
private final InviteUserClient inviteUserClient;
|
||||
|
||||
public UserBankExchangeGoldResultCO execute(SalaryWithdrawCmd cmd) {
|
||||
ResponseAssert.isTrue(ResponseErrorCode.REQUEST_PARAMETER_ERROR,
|
||||
@ -152,8 +153,11 @@ public class SalaryExchangeGoldCmdExe {
|
||||
MonthlyRechargeType.SHIPPING_AGENT
|
||||
);
|
||||
|
||||
completedFirstCharge(cmd.getReqUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
// 被邀请人充值邀请人获得佣金
|
||||
inviteUserClient.processRechargeCommission(cmd.getAmount(),
|
||||
cmd.getReqSysOrigin().getOrigin(), cmd.getReqUserId());
|
||||
|
||||
completedFirstCharge(cmd.getReqUserId(), cmd.getReqSysOrigin().getOrigin());
|
||||
redisService.unlock(key);
|
||||
return new UserBankExchangeGoldResultCO()
|
||||
.setBankBalance(salaryReceiptRes.getAvailableBalance().getDollarAmount())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user