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.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.ruoyi.cai.enums.ConsumeLogType;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
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<UserListVo> inviteUserPage(@Param("build") Page<Object> build, @Param("inviteId") Long inviteId);
|
||||||
|
|
||||||
Page<UserInviteAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserInviteAdminVo bo);
|
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.dto.CommonConsumerEnum;
|
||||||
import com.ruoyi.cai.mq.handle.dto.RankDTO;
|
import com.ruoyi.cai.mq.handle.dto.RankDTO;
|
||||||
import com.ruoyi.cai.rank.RankManager;
|
import com.ruoyi.cai.rank.RankManager;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Slf4j
|
||||||
public class RankIHandle implements IHandle {
|
public class RankIHandle implements IHandle {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ public class RankDTO extends CommonDTO {
|
|||||||
* 2-邀请榜
|
* 2-邀请榜
|
||||||
*/
|
*/
|
||||||
private Integer rankType;
|
private Integer rankType;
|
||||||
|
// 受益人ID
|
||||||
private Long userId;
|
private Long userId;
|
||||||
private Long price;
|
private Long price;
|
||||||
private LocalDateTime happenTime;
|
private LocalDateTime happenTime;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public interface AccountService extends IService<Account> {
|
|||||||
|
|
||||||
Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo);
|
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);
|
WithholdingFeeUserResp withholdingFeeUser(Long userId, Long price);
|
||||||
|
|
||||||
|
|||||||
@@ -23,4 +23,6 @@ public interface UserInviteService extends IService<UserInvite> {
|
|||||||
Page<UserListVo> inviteUserPage(PageQuery pageQuery, Long inviteId);
|
Page<UserListVo> inviteUserPage(PageQuery pageQuery, Long inviteId);
|
||||||
|
|
||||||
Page<UserInviteAdminVo> pageAdmin(PageQuery pageQuery, UserInviteAdminVo bo);
|
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
|
@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);
|
User user = userService.getById(userId);
|
||||||
Account account = this.getByUserId(userId);
|
Account account = this.getByUserId(userId);
|
||||||
if(account == null || user == null){
|
if(account == null || user == null){
|
||||||
log.error("分销失败,无效账号 userId={}",userId);
|
log.error("分销失败,无效账号 userId={}",userId);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
if(amount == null || accountChangeEnum == null){
|
if(amount == null || accountChangeEnum == null){
|
||||||
log.error("分销失败,参数错误 amount={},accountChangeEnum={}",amount,accountChangeEnum);
|
log.error("分销失败,参数错误 amount={},accountChangeEnum={}",amount,accountChangeEnum);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
baseMapper.incsCoin(userId, amount);
|
baseMapper.incsCoin(userId, amount);
|
||||||
if(ConsumeLogType.GIFT.getCode().equals(consumeLog.getType())){ // 礼物
|
if(ConsumeLogType.GIFT.getCode().equals(consumeLog.getType())){ // 礼物
|
||||||
Gift gift = giftService.getById(consumeLog.getBusinessParam());
|
Gift gift = giftService.getById(consumeLog.getBusinessParam());
|
||||||
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
||||||
consumeLog.getTargetUserId(),gift);
|
consumeLog.getTargetUserId(),gift);
|
||||||
|
return true;
|
||||||
}else if(ConsumeLogType.VIDEO.getCode().equals(consumeLog.getType())
|
}else if(ConsumeLogType.VIDEO.getCode().equals(consumeLog.getType())
|
||||||
|| ConsumeLogType.GUARD.getCode().equals(consumeLog.getType())){ // 视频和守护
|
|| ConsumeLogType.GUARD.getCode().equals(consumeLog.getType())){ // 视频和守护
|
||||||
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
||||||
consumeLog.getTargetUserId());
|
consumeLog.getTargetUserId());
|
||||||
|
return true;
|
||||||
}else if(ConsumeLogType.RECHARGE.getCode().equals(consumeLog.getType())){ // 充值
|
}else if(ConsumeLogType.RECHARGE.getCode().equals(consumeLog.getType())){ // 充值
|
||||||
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
||||||
consumeLog.getSourceUserId());
|
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())
|
if(consumer.getOneUserId() != null && BooleanUtils.isTrue(consumer.getOneJoin())
|
||||||
&& consumer.getOneAmount() > 0){
|
&& consumer.getOneAmount() > 0){
|
||||||
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code);
|
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code);
|
||||||
accountService.distribution(consumer,consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum);
|
oneInviteSend = accountService.distribution(consumer, consumer.getOneUserId(), consumer.getOneAmount(), changeCodeEnum);
|
||||||
oneInviteSend = true;
|
|
||||||
}
|
}
|
||||||
// 计算工会
|
// 计算工会
|
||||||
if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin())
|
if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin())
|
||||||
&& consumer.getUnionAmount() > 0){
|
&& consumer.getUnionAmount() > 0){
|
||||||
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
|
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
|
||||||
accountService.distribution(consumer,consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum);
|
oneUnionSend = accountService.distribution(consumer, consumer.getUnionUserId(), consumer.getUnionAmount(), changeCodeEnum);
|
||||||
oneUnionSend = true;
|
|
||||||
}
|
}
|
||||||
if(oneInviteSend){
|
if(oneInviteSend){
|
||||||
rankManager.sendInviteRankMq(consumer.getOneUserId(),consumer.getOneAmount(),consumer.getTraceId());
|
rankManager.sendInviteRankMq(consumer.getOneUserId(),consumer.getOneAmount(),consumer.getTraceId());
|
||||||
|
userInviteService.incsCoinAsync(consumer.getOneUserId(),consumer.getCreateInviteUserId(),consumer.getOneAmount());
|
||||||
}
|
}
|
||||||
if(oneUnionSend){
|
if(oneUnionSend){
|
||||||
rankManager.sendInviteRankMq(consumer.getUnionUserId(),consumer.getUnionAmount(),consumer.getTraceId());
|
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.dto.InviteCountDTO;
|
||||||
import com.ruoyi.cai.dto.app.vo.invite.InviteHomeVo;
|
import com.ruoyi.cai.dto.app.vo.invite.InviteHomeVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.UserListVo;
|
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.mapper.UserInviteMapper;
|
||||||
import com.ruoyi.cai.service.UserInviteService;
|
import com.ruoyi.cai.service.UserInviteService;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
@@ -64,4 +65,27 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
|
|||||||
return baseMapper.pageAdmin(pageQuery.build(), bo);
|
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="inviteId" column="invite_id"/>
|
||||||
<result property="createTime" column="create_time"/>
|
<result property="createTime" column="create_time"/>
|
||||||
</resultMap>
|
</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 id="countInviteAndReward" resultType="com.ruoyi.cai.dto.app.dto.InviteCountDTO">
|
||||||
select ifnull(sum(reward_coin_total),0) as total_reward,
|
select ifnull(sum(reward_coin_total),0) as total_reward,
|
||||||
ifnull(count(1),0) as total_invite
|
ifnull(count(1),0) as total_invite
|
||||||
|
|||||||
Reference in New Issue
Block a user