From 742011d98a68bcf3bd2623788c4a407e490ceb24 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 27 Mar 2024 14:44:05 +0800
Subject: [PATCH] 抽奖

---
 src/main/java/cc/mrbird/febs/mall/service/AsyncService.java                    |   15 +++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java           |   46 +++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java |   11 +++++
 3 files changed, 72 insertions(+), 0 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..73064fd
--- /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(MallMember mallMember);
+}
\ No newline at end of file
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 0b52189..bbe36a4 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
@@ -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
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..c03a3c3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
@@ -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);
+    }
+}

--
Gitblit v1.9.1