From bdf04af3958fb7a61f3180aa1efb795ba8ac00d2 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 08 九月 2025 15:28:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 lmk-job/src/main/java/cn/lili/job/MemberJob.java |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/lmk-job/src/main/java/cn/lili/job/MemberJob.java b/lmk-job/src/main/java/cn/lili/job/MemberJob.java
new file mode 100644
index 0000000..58c371e
--- /dev/null
+++ b/lmk-job/src/main/java/cn/lili/job/MemberJob.java
@@ -0,0 +1,98 @@
+package cn.lili.job;
+
+
+import cn.lili.modules.member.entity.dos.Member;
+import cn.lili.modules.member.entity.dos.MemberAddress;
+import cn.lili.modules.member.mapper.MemberAddressMapper;
+import cn.lili.modules.member.mapper.MemberMapper;
+import cn.lili.modules.member.service.MemberService;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * lmk-shop-java
+ * 浼氬憳鐩稿叧浠诲姟
+ * @author : zxl
+ * @date : 2025-09-04 16:49
+ **/
+
+@Component
+@RequiredArgsConstructor
+public class MemberJob {
+
+    private final MemberMapper memberMapper;
+    private final MemberService memberService;
+
+    private final MemberAddressMapper memberAddressMapper;
+    /**
+     * 姣忔棩浠诲姟鍚屾鐢ㄦ埛鍦板潃
+     *
+     * @throws Exception
+     */
+    @XxlJob("everyDayExecuteJobHandlerAsyncMemberAddress")
+    public void everyDayExecuteJobHandlerAsyncMemberAddress() throws Exception {
+        XxlJobHelper.log("寮�濮嬫墽琛屾瘡鏃ヤ换鍔★細浼氬憳鍦板潃鍚屾");
+        List<Member> updateList = new ArrayList<>();
+        List<Member> list = new LambdaQueryChainWrapper<>(memberMapper)
+                // 鏌ヨregion涓虹┖鐨勮褰�
+                .and(wrapper -> wrapper
+                        .isNull(Member::getRegion)  // region 涓� NULL
+                        .or()                       // 鎴栬��
+                        .eq(Member::getRegion, "")  // region 涓虹┖瀛楃涓�
+                )
+                .and(wrapper -> wrapper
+                        .isNull(Member::getRegionId)  // region_id 涓� NULL
+                        .or()                         // 鎴栬��
+                        .eq(Member::getRegionId, "")  // region_id 涓虹┖瀛楃涓�
+                )
+                .eq(Member::getDeleteFlag,Boolean.FALSE)
+                .list();
+        if (CollectionUtils.isNotEmpty(list)) {
+            List<String> memberIds = list.stream().map(Member::getId).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(memberIds)) {
+                List<MemberAddress> addresses = new LambdaQueryChainWrapper<>(memberAddressMapper)
+                        .in(MemberAddress::getMemberId, memberIds) // 鏌ヨ鎸囧畾 memberIds 鐨勫湴鍧�
+                        .eq(MemberAddress::getDeleteFlag, Boolean.FALSE) // 閫昏緫鍒犻櫎瀛楁锛屽亣璁� 0 琛ㄧず鏈垹闄�
+                        .orderByDesc(MemberAddress::getIsDefault) // 浼樺厛杩斿洖榛樿鍦板潃锛坕s_default=1 鐨勬帓鍦ㄥ墠闈級
+                        .orderByDesc(MemberAddress::getCreateTime) // 鐒跺悗鎸夋椂闂撮檷搴忔帓鍒�
+                        .list();
+                Map<String, MemberAddress> firstAddressByMember = addresses.stream()
+                        .collect(Collectors.toMap(
+                                MemberAddress::getMemberId,
+                                address -> address,
+                                (existing, replacement) -> existing // 濡傛灉宸叉湁璇� member 鐨勫湴鍧�锛屼繚鐣欑涓�涓紙鐢变簬鎺掑簭锛岀涓�涓氨鏄紭鍏堢骇鏈�楂樼殑锛�
+                        ));
+                for (Member member : list) {
+                    MemberAddress address = firstAddressByMember.get(member.getId());
+                    if (address != null) {
+                        member.setRegion(address.getConsigneeAddressPath());
+                        member.setRegionId(address.getConsigneeAddressIdPath());
+                        updateList.add(member);
+                    } else {
+                        // 鍙�夛細澶勭悊鏃犲湴鍧�鐨勬儏鍐碉紙濡傛棩蹇楄褰曘�佽烦杩囨洿鏂扮瓑锛�
+                        XxlJobHelper.log("浼氬憳{}娌℃湁瀵瑰簲鐨勫湴鍧�璁板綍锛屼笉鏇存柊region淇℃伅", member.getId());
+                    }
+                }
+                System.out.println("鎵撳嵃闇�瑕佷慨鏀圭殑闆嗗悎--------------------");
+                System.out.println(updateList);
+                memberService.updateBatchById(list);
+
+            }
+
+
+        }
+
+        // 淇敼
+        XxlJobHelper.log("鎵ц瀹屾垚锛氫細鍛樺湴鍧�鍚屾瀹屾垚");
+    }
+
+}

--
Gitblit v1.8.0