package com.ruoyi.promotion.service.async; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.promotion.domain.Coupon; import com.ruoyi.promotion.service.ICouponMemberService; import com.ruoyi.system.api.domain.CouponMember; import java.util.ArrayList; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; /** * @author mitao * @date 2024/6/9 */ @Service @RequiredArgsConstructor public class AsyncMethodService { private final ICouponMemberService couponMemberService; /** * 异步处理优惠券发放 * * @param coupon 发放的优惠券 * @param memberIdList 发放的会员id */ @Async public void issueCoupon(Coupon coupon, List memberIdList) { Long couponId = coupon.getId(); Integer issuedQuantity = coupon.getIssuedQuantity(); List memberCouponList = new ArrayList<>(); for (Long memberId : memberIdList) { for (int i = 0; i < issuedQuantity; i++) { coupon.setId(null); CouponMember couponMember = BeanUtils.copyBean(coupon, CouponMember.class); couponMember.setMemberId(memberId); couponMember.setCouponId(couponId); memberCouponList.add(couponMember); } } if (StringUtils.isNotEmpty(memberCouponList)) { couponMemberService.saveBatch(memberCouponList); } } }