Commit 2a9dffb6edeb057762c771b9858c8be2b0cce8b9

Authored by 芋道源码
Committed by Gitee
2 parents 3c10dcf3 12170402

!1246 【性能优化】循环中减少不必要的查询 update r/yudao/module/promotion/service/coupon/CouponServiceImpl.java.

Merge pull request !1246 from 山野羡民/N/A
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java
@@ -121,6 +121,10 @@ public class CouponServiceImpl implements CouponService { @@ -121,6 +121,10 @@ public class CouponServiceImpl implements CouponService {
121 @Transactional(rollbackFor = Exception.class) 121 @Transactional(rollbackFor = Exception.class)
122 public Map<Long, List<Long>> takeCoupon(Long templateId, Set<Long> userIds, CouponTakeTypeEnum takeType) { 122 public Map<Long, List<Long>> takeCoupon(Long templateId, Set<Long> userIds, CouponTakeTypeEnum takeType) {
123 CouponTemplateDO template = couponTemplateService.getCouponTemplate(templateId); 123 CouponTemplateDO template = couponTemplateService.getCouponTemplate(templateId);
  124 + return takeCoupon(template, userIds, takeType);
  125 + }
  126 +
  127 + private Map<Long, List<Long>> takeCoupon(CouponTemplateDO template, Set<Long> userIds, CouponTakeTypeEnum takeType) {
124 // 1. 过滤掉达到领取限制的用户 128 // 1. 过滤掉达到领取限制的用户
125 removeTakeLimitUser(userIds, template); 129 removeTakeLimitUser(userIds, template);
126 // 2. 校验优惠劵是否可以领取 130 // 2. 校验优惠劵是否可以领取
@@ -131,7 +135,7 @@ public class CouponServiceImpl implements CouponService { @@ -131,7 +135,7 @@ public class CouponServiceImpl implements CouponService {
131 couponMapper.insertBatch(couponList); 135 couponMapper.insertBatch(couponList);
132 136
133 // 4. 增加优惠劵模板的领取数量 137 // 4. 增加优惠劵模板的领取数量
134 - couponTemplateService.updateCouponTemplateTakeCount(templateId, userIds.size()); 138 + couponTemplateService.updateCouponTemplateTakeCount(template.getId(), userIds.size());
135 139
136 return convertMultiMap(couponList, CouponDO::getUserId, CouponDO::getId); 140 return convertMultiMap(couponList, CouponDO::getUserId, CouponDO::getId);
137 } 141 }
@@ -208,7 +212,7 @@ public class CouponServiceImpl implements CouponService { @@ -208,7 +212,7 @@ public class CouponServiceImpl implements CouponService {
208 public void takeCouponByRegister(Long userId) { 212 public void takeCouponByRegister(Long userId) {
209 List<CouponTemplateDO> templates = couponTemplateService.getCouponTemplateListByTakeType(CouponTakeTypeEnum.REGISTER); 213 List<CouponTemplateDO> templates = couponTemplateService.getCouponTemplateListByTakeType(CouponTakeTypeEnum.REGISTER);
210 for (CouponTemplateDO template : templates) { 214 for (CouponTemplateDO template : templates) {
211 - takeCoupon(template.getId(), CollUtil.newHashSet(userId), CouponTakeTypeEnum.REGISTER); 215 + takeCoupon(template, CollUtil.newHashSet(userId), CouponTakeTypeEnum.REGISTER);
212 } 216 }
213 } 217 }
214 218