init
This commit is contained in:
@@ -3,6 +3,7 @@ package com.ruoyi.cai.domain;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.ruoyi.cai.enums.ConsumeLogType;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -175,4 +176,20 @@ public class ConsumeLog implements Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取创建受益人的源头
|
||||
* @return
|
||||
*/
|
||||
public Long getCreateInviteUserId(){
|
||||
if(ConsumeLogType.GIFT.getCode().equals(this.getType())){
|
||||
return this.targetUserId;
|
||||
}else if(ConsumeLogType.GUARD.getCode().equals(this.getType())){
|
||||
return this.targetUserId;
|
||||
}else if(ConsumeLogType.VIDEO.getCode().equals(this.getType())){
|
||||
return this.targetUserId;
|
||||
}else if(ConsumeLogType.RECHARGE.getCode().equals(this.getType())){
|
||||
return this.sourceUserId;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,4 +21,6 @@ public interface UserInviteMapper extends BaseMapper<UserInvite> {
|
||||
Page<UserListVo> inviteUserPage(@Param("build") Page<Object> build, @Param("inviteId") Long inviteId);
|
||||
|
||||
Page<UserInviteAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserInviteAdminVo bo);
|
||||
|
||||
void incsCoinTotal(@Param("id") Long id, @Param("amount") Long amount);
|
||||
}
|
||||
|
||||
@@ -4,10 +4,12 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.dto.RankDTO;
|
||||
import com.ruoyi.cai.rank.RankManager;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class RankIHandle implements IHandle {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -14,6 +14,7 @@ public class RankDTO extends CommonDTO {
|
||||
* 2-邀请榜
|
||||
*/
|
||||
private Integer rankType;
|
||||
// 受益人ID
|
||||
private Long userId;
|
||||
private Long price;
|
||||
private LocalDateTime happenTime;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="inviteId" column="invite_id"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
</resultMap>
|
||||
<update id="incsCoinTotal">
|
||||
update cai_user_invite
|
||||
set reward_coin_total = reward_coin_total + #{amount}
|
||||
where id = #{id}
|
||||
</update>
|
||||
<select id="countInviteAndReward" resultType="com.ruoyi.cai.dto.app.dto.InviteCountDTO">
|
||||
select ifnull(sum(reward_coin_total),0) as total_reward,
|
||||
ifnull(count(1),0) as total_invite
|
||||
|
||||
Reference in New Issue
Block a user