mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-14 10:11:53 +08:00
【功能新增】商城: 满减送活动下单后,赠送优惠劵
This commit is contained in:
@@ -7,10 +7,11 @@ import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponValidReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.convert.coupon.CouponConvert;
|
||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponDO;
|
||||
import cn.iocoder.yudao.module.promotion.service.coupon.CouponService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 优惠劵 API 实现类
|
||||
@@ -41,4 +42,9 @@ public class CouponApiImpl implements CouponApi {
|
||||
return CouponConvert.INSTANCE.convert(coupon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeCouponsByAdmin(List<Long> templateIds, List<Integer> counts, Long userId) {
|
||||
couponService.takeCouponsByAdmin(templateIds, counts, userId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -105,6 +105,15 @@ public interface CouponService {
|
||||
takeCoupon(templateId, userIds, CouponTakeTypeEnum.ADMIN);
|
||||
}
|
||||
|
||||
/**
|
||||
* 【管理员】给指定用户批量发送优惠券
|
||||
*
|
||||
* @param templateIds 优惠劵编号的数组
|
||||
* @param counts 优惠券数量的数组
|
||||
* @param userId 用户编号
|
||||
*/
|
||||
void takeCouponsByAdmin(List<Long> templateIds, List<Integer> counts, Long userId);
|
||||
|
||||
/**
|
||||
* 【会员】领取优惠券
|
||||
*
|
||||
|
@@ -19,19 +19,19 @@ import cn.iocoder.yudao.module.promotion.dal.mysql.coupon.CouponMapper;
|
||||
import cn.iocoder.yudao.module.promotion.enums.coupon.CouponStatusEnum;
|
||||
import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTakeTypeEnum;
|
||||
import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTemplateValidityTypeEnum;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
|
||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*;
|
||||
import static java.util.Arrays.asList;
|
||||
|
||||
@@ -175,10 +175,34 @@ public class CouponServiceImpl implements CouponService {
|
||||
// 3. 批量保存优惠劵
|
||||
couponMapper.insertBatch(convertList(userIds, userId -> CouponConvert.INSTANCE.convert(template, userId)));
|
||||
|
||||
// 3. 增加优惠劵模板的领取数量
|
||||
// 4. 增加优惠劵模板的领取数量
|
||||
couponTemplateService.updateCouponTemplateTakeCount(templateId, userIds.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeCouponsByAdmin(List<Long> templateIds, List<Integer> counts, Long userId) {
|
||||
// 1. 获得优惠券模版
|
||||
List<CouponTemplateDO> templateList = couponTemplateService.getCouponTemplateList(templateIds);
|
||||
if (CollUtil.isEmpty(templateList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Long, CouponTemplateDO> templateMap = convertMap(templateList, CouponTemplateDO::getId);
|
||||
// 2.1 批量构建优惠券
|
||||
List<CouponDO> couponList = new ArrayList<>();
|
||||
for (int i = 0; i < templateIds.size(); i++) {
|
||||
int finalI = i;
|
||||
findAndThen(templateMap, templateIds.get(i), template -> {
|
||||
for (int j = 0; j < counts.get(finalI); j++) {
|
||||
couponList.add(CouponConvert.INSTANCE.convert(template, userId)
|
||||
.setTakeType(CouponTakeTypeEnum.ADMIN.getValue()));
|
||||
}
|
||||
});
|
||||
}
|
||||
// 2.2 批量保存优惠券
|
||||
couponMapper.insertBatch(couponList);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void takeCouponByRegister(Long userId) {
|
||||
|
Reference in New Issue
Block a user