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/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(MallMember mallMember); } src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -11,6 +11,7 @@ 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; @@ -639,6 +640,7 @@ return this.baseMapper.selectInfoByInviteId(inviteId); } private final AsyncService asyncService; @Override @Transactional(rollbackFor = Exception.class) public void modifyReferer(MallMember member) { @@ -665,6 +667,15 @@ child.setReferrerIds(member.getInviteId() + "," + refererIds); this.baseMapper.updateById(child); } log.info("异步更新用户信息"); List<MallMember> mallMembers = this.baseMapper.selectList(null); if(CollUtil.isEmpty(mallMembers)){ return; } for(MallMember mallMemberDown : mallMembers){ asyncService.updateAllMemberReferrerId(mallMemberDown); } } @Override src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
New file @@ -0,0 +1,46 @@ 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.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @Slf4j @Service @RequiredArgsConstructor public class AsyncServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements AsyncService { @Override public void updateAllMemberReferrerId(MallMember mallMember){ 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); } }