From c2e8eee6cf751938f53d5839041d4ad2b9435ebf Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 15 Jan 2024 11:11:56 +0800 Subject: [PATCH] 修改联系人。异步更新所有用户的上下级关系 --- src/main/java/cc/mrbird/febs/mall/service/AsyncService.java | 15 +++++++ src/test/java/cc/mrbird/febs/ProfitTest.java | 41 ++++++++++++++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java | 54 +++++++++++++++++++++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 6 +++ 4 files changed, 115 insertions(+), 1 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java b/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java new file mode 100644 index 0000000..8ca6dda --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.mall.service; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.mall.entity.MallMember; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.scheduling.annotation.Async; + +/** + * 异步操作 + */ +public interface AsyncService extends IService<MallMember> { + + @Async(FebsConstant.ASYNC_POOL) + void updateAllMemberReferrerId(); +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java index 0b414a5..a1d3be2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java @@ -10,10 +10,12 @@ import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.entity.MallNewsInfo; import cc.mrbird.febs.mall.mapper.*; +import cc.mrbird.febs.mall.service.AsyncService; import cc.mrbird.febs.mall.service.IAdminMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.vo.*; +import cc.mrbird.febs.monitor.service.ILogService; import cc.mrbird.febs.pay.model.SinglePayDto; import cc.mrbird.febs.pay.service.UnipayService; import cn.hutool.core.collection.CollUtil; @@ -590,6 +592,8 @@ return this.baseMapper.selectInfoByInviteId(inviteId); } + + private final AsyncService asyncService; @Override @Transactional(rollbackFor = Exception.class) public void modifyReferer(MallMember member) { @@ -616,6 +620,8 @@ child.setReferrerIds(member.getInviteId() + "," + refererIds); this.baseMapper.updateById(child); } + + asyncService.updateAllMemberReferrerId(); } @Override diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java new file mode 100644 index 0000000..1770c3a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java @@ -0,0 +1,54 @@ +package cc.mrbird.febs.mall.service.impl; + +import cc.mrbird.febs.mall.entity.MallMember; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cc.mrbird.febs.mall.service.AsyncService; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +@Slf4j +@Service +@RequiredArgsConstructor +public class AsyncServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements AsyncService { + @Override + public void updateAllMemberReferrerId() { + log.info("异步更新用户信息"); + List<MallMember> mallMembers = this.baseMapper.selectList(null); + if(CollUtil.isEmpty(mallMembers)){ + return; + } + for(MallMember mallMember : mallMembers){ + boolean flag = false; + String parentId = mallMember.getReferrerId(); + if (StrUtil.isBlank(parentId)) { + flag = true; + } + String ids = ""; + while (!flag) { + if (StrUtil.isBlank(ids)) { + ids += parentId; + } else { + ids += ("," + parentId); + } + MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId); + if (parentMember == null) { + break; + } + parentId = parentMember.getReferrerId(); + if (StrUtil.isBlank(parentMember.getReferrerId())) { + flag = true; + } + } + + if (StrUtil.isNotBlank(ids)) { + mallMember.setReferrerIds(ids); + } + this.baseMapper.updateById(mallMember); + } + } +} diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index 1392c75..6b0c7ef 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -2,7 +2,9 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallOrderItem; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallOrderItemMapper; import cc.mrbird.febs.mall.quartz.OrderSettlementJob; @@ -13,7 +15,9 @@ import cc.mrbird.febs.pay.model.*; import cc.mrbird.febs.pay.service.UnipayService; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -37,6 +41,8 @@ // @Autowired private IAgentService agentService; + @Autowired + private MallMemberMapper mallMemberMapper; // // @Autowired // private IMemberProfitService memberProfitService; @@ -47,8 +53,41 @@ private IApiMallMemberWalletService walletService; @Test public void dynamicProfit() { + List<MallMember> mallMembers = mallMemberMapper.selectList(null); + if(CollUtil.isEmpty(mallMembers)){ + return; + } + for(MallMember mallMember : mallMembers){ + boolean flag = false; + String parentId = mallMember.getReferrerId(); + if (StrUtil.isBlank(parentId)) { + flag = true; + } + String ids = ""; + while (!flag) { + if (StrUtil.isBlank(ids)) { + ids += parentId; + } else { + ids += ("," + parentId); + } + MallMember parentMember = mallMemberMapper.selectInfoByInviteId(parentId); + if (parentMember == null) { + break; + } + parentId = parentMember.getReferrerId(); + if (StrUtil.isBlank(parentMember.getReferrerId())) { + flag = true; + } + } - walletService.add(new BigDecimal(2000), 1L, "equityLimit");//减少权益积分 + if (StrUtil.isNotBlank(ids)) { + mallMember.setReferrerIds(ids); + } + mallMemberMapper.updateById(mallMember); + } + + +// walletService.add(new BigDecimal(2000), 1L, "equityLimit");//减少权益积分 // agentService.returnMoneyToAgent(3323L); // agentService.autoUpAgentLevel(640L); } -- Gitblit v1.9.1