拉新奖励逻辑修改
This commit is contained in:
parent
b937f5762b
commit
e789098a0b
@ -127,6 +127,12 @@ public enum SendPropsOrigin {
|
||||
*/
|
||||
INVITE_USER_REWARDS("Invite users"),
|
||||
|
||||
|
||||
/**
|
||||
* 7天内充值奖励
|
||||
*/
|
||||
RECHARGE_7DAY("Recharge within 7 days"),
|
||||
|
||||
/**
|
||||
* 每周游戏任务奖励.
|
||||
*/
|
||||
|
||||
@ -484,6 +484,11 @@ public enum GoldOrigin {
|
||||
*/
|
||||
INVITE_USER_REWARDS("Invite User Rewards"),
|
||||
|
||||
/**
|
||||
* 7天内充值
|
||||
*/
|
||||
RECHARGE_7DAY("Recharge within 7 days"),
|
||||
|
||||
/**
|
||||
* 幸运礼物金币奖励.
|
||||
*/
|
||||
|
||||
@ -356,14 +356,14 @@ public class TaskListener implements MessageListener {
|
||||
userTaskProgressDAO.updateById(userTaskProgress);
|
||||
|
||||
// 发送道具
|
||||
propsActivityCnfClient.sendActivityReward(new SendActivityRewardCmd()
|
||||
/*propsActivityCnfClient.sendActivityReward(new SendActivityRewardCmd()
|
||||
.setTrackId(IdWorkerUtils.getId())
|
||||
.setSysOrigin(SysOriginPlatformEnum.LIKEI)
|
||||
.setAcceptUserId(eventBody.getUserId())
|
||||
.setSourceGroupId(userTaskProgress.getRewardId())
|
||||
.setOrigin(SendPropsOrigin.DAILY_TASK_REWARD)
|
||||
);
|
||||
|
||||
*/
|
||||
// 给邀请人和被邀请人发送金币奖励
|
||||
handleInviteUserGold(eventBody.getUserId());
|
||||
|
||||
|
||||
@ -90,33 +90,30 @@ public class InviteUserGatewayImpl implements InviteUserGateway {
|
||||
|
||||
//获得的佣金 = 糖果数 * 佣金比例
|
||||
BigDecimal commission = getCommission(rechargeAmount, commissionRate);
|
||||
if (commission.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
log.info("糖果数 * 佣金比例 <= 0, inviteUserId:{}", inviteUserId);
|
||||
return null;
|
||||
if (commission.compareTo(BigDecimal.ZERO) > 0) {
|
||||
inviteUserSummaryService.incrCommission(userInviteUser.getUserId(), commission);
|
||||
inviteUserRechargeCommissionService.add(sysOrigin, userInviteUser.getUserId(),
|
||||
userInviteUser.getInviteUserId(), commission);
|
||||
|
||||
// 累计邀请人数:判断inviteUserRechargeCommissionService里是否已有该被邀请人的记录
|
||||
// 查询该被邀请人在此之前是否有充值记录
|
||||
long recordCount = inviteUserRechargeCommissionService.query()
|
||||
.eq(InviteUserRechargeCommission::getUserId, userInviteUser.getUserId())
|
||||
.eq(InviteUserRechargeCommission::getInviteUserId, userInviteUser.getInviteUserId())
|
||||
.count();
|
||||
|
||||
// 如果记录数 < 1,说明是首次充值(当前这条刚插入),才累计邀请人数+1
|
||||
if (recordCount < 1) {
|
||||
log.info("被邀请人首次充值,累计邀请人数+1, inviterUserId:{}, inviteeUserId:{}",
|
||||
userInviteUser.getUserId(), userInviteUser.getInviteUserId());
|
||||
inviteUserSummaryService.incrUser(userInviteUser.getUserId(), 1);
|
||||
}
|
||||
|
||||
awardCommission(sysOrigin, userInviteUser.getUserId(), commission, userInviteUser.getInviteUserId());
|
||||
|
||||
recordRanking(userInviteUser.getUserId(), commission.longValue());
|
||||
}
|
||||
|
||||
inviteUserSummaryService.incrCommission(userInviteUser.getUserId(), commission);
|
||||
inviteUserRechargeCommissionService.add(sysOrigin, userInviteUser.getUserId(),
|
||||
userInviteUser.getInviteUserId(), commission);
|
||||
|
||||
// 累计邀请人数:判断inviteUserRechargeCommissionService里是否已有该被邀请人的记录
|
||||
// 查询该被邀请人在此之前是否有充值记录
|
||||
long recordCount = inviteUserRechargeCommissionService.query()
|
||||
.eq(InviteUserRechargeCommission::getUserId, userInviteUser.getUserId())
|
||||
.eq(InviteUserRechargeCommission::getInviteUserId, userInviteUser.getInviteUserId())
|
||||
.count();
|
||||
|
||||
// 如果记录数 < 1,说明是首次充值(当前这条刚插入),才累计邀请人数+1
|
||||
if (recordCount < 1) {
|
||||
log.info("被邀请人首次充值,累计邀请人数+1, inviterUserId:{}, inviteeUserId:{}",
|
||||
userInviteUser.getUserId(), userInviteUser.getInviteUserId());
|
||||
inviteUserSummaryService.incrUser(userInviteUser.getUserId(), 1);
|
||||
}
|
||||
|
||||
awardCommission(sysOrigin, userInviteUser.getUserId(), commission, userInviteUser.getInviteUserId());
|
||||
|
||||
recordRanking(userInviteUser.getUserId(), commission.longValue());
|
||||
|
||||
BigDecimal totalRecharge = accumulateRecharge(userInviteUser.getUserId(), inviteUserId, rechargeAmount);
|
||||
|
||||
RechargeCommissionResult result = new RechargeCommissionResult();
|
||||
|
||||
@ -15,7 +15,11 @@ import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||
import com.red.circle.other.domain.gateway.user.ability.InviteUserGateway;
|
||||
import com.red.circle.other.domain.model.user.RechargeCommissionResult;
|
||||
import com.red.circle.other.domain.model.user.UserProfile;
|
||||
import com.red.circle.other.domain.ranking.RankingActivityType;
|
||||
import com.red.circle.other.domain.ranking.RankingCycleType;
|
||||
import com.red.circle.other.domain.ranking.RankingDimension;
|
||||
import com.red.circle.other.infra.database.cache.service.user.UserInviteCacheService;
|
||||
import com.red.circle.other.infra.database.mongo.entity.activity.RankingActivityRecord;
|
||||
import com.red.circle.other.infra.database.rds.entity.user.user.OneTimeTask;
|
||||
import com.red.circle.other.infra.database.rds.query.user.InviteUserQry;
|
||||
import com.red.circle.other.infra.database.rds.service.user.user.InviteUserRechargeCommissionService;
|
||||
@ -24,6 +28,7 @@ import com.red.circle.other.infra.database.rds.service.user.user.InviteUserRewar
|
||||
import com.red.circle.other.infra.database.rds.service.user.user.InviteUserSummaryService;
|
||||
import com.red.circle.other.infra.database.rds.service.user.user.OneTimeTaskService;
|
||||
import com.red.circle.other.infra.enums.user.user.UserOneTimeTaskTypeEnum;
|
||||
import com.red.circle.other.infra.gateway.RankingActivityGateway;
|
||||
import com.red.circle.other.inner.endpoint.activity.PropsActivityClient;
|
||||
import com.red.circle.other.inner.endpoint.sys.EnumConfigClient;
|
||||
import com.red.circle.other.inner.model.cmd.activity.SendActivityRewardCmd;
|
||||
@ -37,6 +42,7 @@ import com.red.circle.other.inner.model.dto.user.InviteUserSummaryDTO;
|
||||
import com.red.circle.other.inner.model.dto.user.PageInviteUserRegisterDTO;
|
||||
import com.red.circle.other.inner.model.dto.user.SysInviteUserConfigDTO;
|
||||
import com.red.circle.tool.core.date.TimestampUtils;
|
||||
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
||||
import com.red.circle.tool.core.sequence.IdWorkerUtils;
|
||||
import com.red.circle.tool.core.text.StringUtils;
|
||||
import com.red.circle.wallet.inner.endpoint.wallet.WalletGoldClient;
|
||||
@ -47,6 +53,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@ -90,6 +97,8 @@ public class InviteUserClientServiceImpl implements InviteUserClientService {
|
||||
private final OneTimeTaskService oneTimeTaskService;
|
||||
private final EnumConfigClient enumConfigClient;
|
||||
private final UserProfileGateway userProfileGateway;
|
||||
private final InviteUserRechargeCommissionService inviteUserRechargeCommissionService;
|
||||
private final RankingActivityGateway rankingActivityGateway;
|
||||
|
||||
|
||||
@Override
|
||||
@ -176,17 +185,38 @@ public class InviteUserClientServiceImpl implements InviteUserClientService {
|
||||
.amount(BigDecimal.valueOf(gold))
|
||||
.build());
|
||||
|
||||
inviteUserSummaryService.incrCommission(result.getInviterUserId(), BigDecimal.valueOf(gold));
|
||||
inviteUserRechargeCommissionService.add(SysOriginPlatformEnum.LIKEI.name(), result.getInviterUserId(),
|
||||
result.getInviteeUserId(), BigDecimal.valueOf(gold));
|
||||
|
||||
recordRanking(result.getInviterUserId(), gold);
|
||||
|
||||
// 道具奖励发给被邀请人B
|
||||
propsActivityClient.sendActivityReward(new SendActivityRewardCmd()
|
||||
.setTrackId(IdWorkerUtils.getId())
|
||||
.setSysOrigin(SysOriginPlatformEnum.LIKEI)
|
||||
.setAcceptUserId(result.getInviteeUserId())
|
||||
.setSourceGroupId(propsId)
|
||||
.setOrigin(SendPropsOrigin.INVITE_USER_REWARDS)
|
||||
.setOrigin(SendPropsOrigin.RECHARGE_7DAY)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void recordRanking(Long userId, Long quantity) {
|
||||
RankingActivityRecord record = new RankingActivityRecord();
|
||||
record.setSysOrigin(SysOriginPlatformEnum.LIKEI.name());
|
||||
record.setUserId(userId);
|
||||
record.setUserSex(1);
|
||||
record.setActivityType(RankingActivityType.INVITE);
|
||||
record.setCycleType(RankingCycleType.WEEKLY);
|
||||
record.setCycleKey(ZonedDateTimeAsiaRiyadhUtils.nowWeekMondayToInt().toString());
|
||||
record.setDimension(RankingDimension.CONSUME_AMOUNT);
|
||||
record.setExpiredTime(new Timestamp(System.currentTimeMillis() + 30L * 24 * 60 * 60 * 1000));
|
||||
rankingActivityGateway.accumulateRankingData(record, quantity);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<InviteUserRegisterDTO> pageInviteUserRegister(Integer pageNumber, Long userId) {
|
||||
return userInviteInnerConvertor.toListInviteUserRegisterDTO(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user