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