src/main/java/cc/mrbird/febs/mall/service/AsyncService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/test/java/cc/mrbird/febs/ProfitTest.java | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/mall/service/AsyncService.java
New file @@ -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(); } 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 src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
New file @@ -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); } } } 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); }