|
|
@@ -36,6 +36,7 @@ import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
@@ -63,10 +64,10 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
|
|
|
wrapper.orderByDesc(UserCoupon::getCreateTime);
|
|
|
|
|
|
IPage<UserCoupon> result = this.page(pageParam, wrapper);
|
|
|
- result.getRecords().forEach(this::fillCouponLabels);
|
|
|
+ fillCouponLabelsBatch(result.getRecords());
|
|
|
|
|
|
log.debug("[优惠券服务] 查询结果 - 总数: {}, 当前页数量: {}", result.getTotal(), result.getRecords().size());
|
|
|
-
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
@@ -347,24 +348,51 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
|
|
|
- private void fillCouponLabels(UserCoupon userCoupon) {
|
|
|
- // 填充优惠券模板信息
|
|
|
- CouponTemplate template = templateMapper.selectById(userCoupon.getTemplateId());
|
|
|
+ private void fillCouponLabelsBatch(List<UserCoupon> coupons) {
|
|
|
+ if (coupons == null || coupons.isEmpty()) return;
|
|
|
+
|
|
|
+ // 批量查询模板信息
|
|
|
+ List<Long> templateIds = coupons.stream()
|
|
|
+ .map(UserCoupon::getTemplateId)
|
|
|
+ .filter(id -> id != null)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<Long, CouponTemplate> templateMap = new HashMap<>();
|
|
|
+ if (!templateIds.isEmpty()) {
|
|
|
+ List<CouponTemplate> templates = templateMapper.selectBatchIds(templateIds);
|
|
|
+ if (templates != null) {
|
|
|
+ templateMap = templates.stream()
|
|
|
+ .collect(Collectors.toMap(CouponTemplate::getId, t -> t));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (UserCoupon coupon : coupons) {
|
|
|
+ fillCouponLabelsFromMap(coupon, templateMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void fillCouponLabelsFromMap(UserCoupon userCoupon, Map<Long, CouponTemplate> templateMap) {
|
|
|
+ CouponTemplate template = templateMap.get(userCoupon.getTemplateId());
|
|
|
if (template != null) {
|
|
|
userCoupon.setCouponName(template.getCouponName());
|
|
|
userCoupon.setCouponType(template.getCouponType());
|
|
|
userCoupon.setMinAmount(template.getMinAmount());
|
|
|
userCoupon.setCouponDesc(template.getCouponDesc());
|
|
|
userCoupon.setApplyScope(template.getApplyScope());
|
|
|
- // 填充模板的discountValue用于前端显示
|
|
|
userCoupon.setDiscountValue(template.getDiscountValue());
|
|
|
}
|
|
|
- // 填充状态标签
|
|
|
com.haha.common.vo.StatusLabel label = CouponStatusEnum.getLabelByCode(userCoupon.getStatus());
|
|
|
userCoupon.setStatusLabel(label.getLabel());
|
|
|
userCoupon.setStatusColor(label.getColor());
|
|
|
}
|
|
|
|
|
|
+ private void fillCouponLabels(UserCoupon userCoupon) {
|
|
|
+ CouponTemplate template = templateMapper.selectById(userCoupon.getTemplateId());
|
|
|
+ Map<Long, CouponTemplate> templateMap = new HashMap<>();
|
|
|
+ if (template != null) templateMap.put(template.getId(), template);
|
|
|
+ fillCouponLabelsFromMap(userCoupon, templateMap);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<UserCoupon> getUserCouponList(Long userId, String couponCode, Integer status, int page, int pageSize) {
|
|
|
log.debug("[优惠券服务] 查询用户优惠券列表 - userId: {}, couponCode: {}, status: {}, page: {}, pageSize: {}",
|
|
|
@@ -379,9 +407,7 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
|
|
|
wrapper.orderByDesc(UserCoupon::getCreateTime);
|
|
|
|
|
|
IPage<UserCoupon> result = this.page(pageParam, wrapper);
|
|
|
-
|
|
|
- // 填充优惠券模板信息和状态标签
|
|
|
- result.getRecords().forEach(this::fillCouponLabels);
|
|
|
+ fillCouponLabelsBatch(result.getRecords());
|
|
|
|
|
|
log.debug("[优惠券服务] 查询结果 - 总数: {}, 当前页数量: {}", result.getTotal(), result.getRecords().size());
|
|
|
|