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