This commit is contained in:
dute7liang
2024-01-21 21:14:00 +08:00
parent 5c9218ea83
commit 9a904f0c0c
10 changed files with 66 additions and 8 deletions

View File

@@ -38,7 +38,7 @@ public interface AccountService extends IService<Account> {
Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo);
void distribution(ConsumeLog consumeLog,Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum);
boolean distribution(ConsumeLog consumeLog, Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum);
WithholdingFeeUserResp withholdingFeeUser(Long userId, Long price);

View File

@@ -23,4 +23,6 @@ public interface UserInviteService extends IService<UserInvite> {
Page<UserListVo> inviteUserPage(PageQuery pageQuery, Long inviteId);
Page<UserInviteAdminVo> pageAdmin(PageQuery pageQuery, UserInviteAdminVo bo);
void incsCoinAsync(Long geUserId, Long seUserId, Long amount);
}

View File

@@ -234,32 +234,38 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
/**
* 分销
*
* @return
*/
@Override
public void distribution(ConsumeLog consumeLog,Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum) {
public boolean distribution(ConsumeLog consumeLog, Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum) {
User user = userService.getById(userId);
Account account = this.getByUserId(userId);
if(account == null || user == null){
log.error("分销失败,无效账号 userId={}",userId);
return;
return false;
}
if(amount == null || accountChangeEnum == null){
log.error("分销失败,参数错误 amount={},accountChangeEnum={}",amount,accountChangeEnum);
return;
return false;
}
baseMapper.incsCoin(userId, amount);
if(ConsumeLogType.GIFT.getCode().equals(consumeLog.getType())){ // 礼物
Gift gift = giftService.getById(consumeLog.getBusinessParam());
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
consumeLog.getTargetUserId(),gift);
return true;
}else if(ConsumeLogType.VIDEO.getCode().equals(consumeLog.getType())
|| ConsumeLogType.GUARD.getCode().equals(consumeLog.getType())){ // 视频和守护
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
consumeLog.getTargetUserId());
return true;
}else if(ConsumeLogType.RECHARGE.getCode().equals(consumeLog.getType())){ // 充值
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
consumeLog.getSourceUserId());
return true;
}
return false;
}
/**

View File

@@ -100,18 +100,17 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
if(consumer.getOneUserId() != null && BooleanUtils.isTrue(consumer.getOneJoin())
&& consumer.getOneAmount() > 0){
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code);
accountService.distribution(consumer,consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum);
oneInviteSend = true;
oneInviteSend = accountService.distribution(consumer, consumer.getOneUserId(), consumer.getOneAmount(), changeCodeEnum);
}
// 计算工会
if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin())
&& consumer.getUnionAmount() > 0){
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
accountService.distribution(consumer,consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum);
oneUnionSend = true;
oneUnionSend = accountService.distribution(consumer, consumer.getUnionUserId(), consumer.getUnionAmount(), changeCodeEnum);
}
if(oneInviteSend){
rankManager.sendInviteRankMq(consumer.getOneUserId(),consumer.getOneAmount(),consumer.getTraceId());
userInviteService.incsCoinAsync(consumer.getOneUserId(),consumer.getCreateInviteUserId(),consumer.getOneAmount());
}
if(oneUnionSend){
rankManager.sendInviteRankMq(consumer.getUnionUserId(),consumer.getUnionAmount(),consumer.getTraceId());

View File

@@ -9,6 +9,7 @@ import com.ruoyi.cai.dto.admin.vo.UserInviteAdminVo;
import com.ruoyi.cai.dto.app.dto.InviteCountDTO;
import com.ruoyi.cai.dto.app.vo.invite.InviteHomeVo;
import com.ruoyi.cai.dto.app.vo.user.UserListVo;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.mapper.UserInviteMapper;
import com.ruoyi.cai.service.UserInviteService;
import com.ruoyi.common.core.domain.PageQuery;
@@ -64,4 +65,27 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
/**
*
* @param geUserId 获取收益的人
* @param seUserId 创建收益的人
*/
@Override
public void incsCoinAsync(Long geUserId, Long seUserId, Long amount) {
ExecutorConstant.COMMON_EXECUTOR.execute(() -> {
if(geUserId == null || seUserId == null || amount == null || amount <= 0){
log.error("执行收益的递增失败【参数异常】");
return;
}
UserInvite one = this.getOne(Wrappers.lambdaQuery(UserInvite.class)
.eq(UserInvite::getInviteId, geUserId)
.eq(UserInvite::getUserId, seUserId));
if(one == null){
log.error("执行收益的递增失败");
return;
}
baseMapper.incsCoinTotal(one.getId(),amount);
});
}
}