rentaiming
2024-07-20 ed4f07531b9cb0794e976a14cee3b591dec8d4f6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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<Long> memberIdList) {
        Long couponId = coupon.getId();
        Integer issuedQuantity = coupon.getIssuedQuantity();
        List<CouponMember> 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);
        }
    }
}