From 45536ef89d0593be1e96e014f841935240efebea Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期二, 10 九月 2024 14:29:54 +0800
Subject: [PATCH] 优化兑换商品计算问题
---
src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 53 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
index 69eccb0..dd40bfd 100644
--- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
+++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -16,6 +16,7 @@
import com.mzl.flower.entity.coupon.CouponTemplateCustomerDO;
import com.mzl.flower.entity.coupon.CouponTemplateDO;
import com.mzl.flower.entity.customer.Customer;
+import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.entity.point.CustomerPoint;
import com.mzl.flower.entity.point.CustomerPointDetail;
import com.mzl.flower.enums.*;
@@ -27,6 +28,7 @@
import com.mzl.flower.service.coupon.CouponRecordService;
import com.mzl.flower.service.coupon.CouponTemplateCustomerService;
import com.mzl.flower.service.coupon.CouponTemplateService2;
+import com.mzl.flower.service.menber.MemberService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -36,7 +38,9 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -70,6 +74,9 @@
@Autowired
private CustomerPointDetailMapper customerPointDetailMapper;
+
+ @Autowired
+ private MemberService memberService;
@@ -126,6 +133,8 @@
final List<CouponTemplateCustomerDO> couponCustomList = dto.getPointCostomIdList().stream().map(customId -> {
CouponTemplateCustomerDO customReDO = new CouponTemplateCustomerDO();
+ // 解决本地不加ID不报错,线上报错问题
+ customReDO.setId(IdUtil.simpleUUID());
customReDO.setCouponId(couponTemplateDO.getId());
customReDO.setCustomId(customId);
return customReDO;
@@ -146,13 +155,29 @@
@Override
public List<CouponTemplateVO> getList(QueryCouponDTO dto) {
- List<CouponTemplateVO> list = couponTemplateMapperCustom.getList(dto);
+ List<CouponTemplateVO> list =new ArrayList<>();
+ if(StringUtils.isNotBlank(dto.getCategory())
+ && dto.getCategory().equals(CouponCategoryEnum.MEMBER.getStatus())
+ ){
+ // 会员优惠券
+ list = couponTemplateMapperCustom.getVipList(dto);
+ }else{
+ list = couponTemplateMapperCustom.getList(dto);
+ }
return list;
}
@Override
public Page<CouponTemplateVO> getPage(Page page, QueryCouponDTO dto) {
- List<CouponTemplateVO> result = couponTemplateMapperCustom.getCouponTemplatePage(page, dto);
+ List<CouponTemplateVO> result =new ArrayList<>();
+ if(StringUtils.isNotBlank(dto.getCategory())
+ && dto.getCategory().equals(CouponCategoryEnum.MEMBER.getStatus())
+ ){
+ // 会员优惠券
+ result = couponTemplateMapperCustom.getCouponTemplateVipPage(page, dto);
+ }else{
+ result = couponTemplateMapperCustom.getCouponTemplatePage(page, dto);
+ }
return page.setRecords(result);
}
@@ -163,10 +188,23 @@
final List<CouponTemplateVO> list = getList(dto);
if (CollectionUtils.isNotEmpty(list)) {
CouponTemplateVO vo =list.get(0);
- if(vo.getCategory().equals(CouponCategoryEnum.USER.getStatus())){
+ // 用户获取
+ if(StringUtils.isNotBlank(vo.getCategory())
+ && vo.getCategory().equals(CouponCategoryEnum.USER.getStatus())){
List<CouponTemplateCustomerVO> customerList= couponTemplateMapperCustom.getCouponCustomerList(id);
vo.setCustomerList(customerList);
}
+ // 会员等级
+ if(StringUtils.isNotBlank(vo.getCategory()) && null!=vo.getMemberId()
+ && vo.getCategory().equals(CouponCategoryEnum.MEMBER.getStatus())){
+ final Member member = memberService.getById(vo.getMemberId());
+ if(null!=member){
+ vo.setMember(member);
+ vo.setMemberName(member.getName());
+ }
+
+ }
+
return vo;
}
return null;
@@ -188,7 +226,7 @@
// 判断当前的优惠券的用户类型是指定用户还是全部用户,如果是指定用户的情况下需要发布优惠券
if (StringUtils.isNotBlank(couponTemplateDO.getGetUserType())
&& StringUtils.isNotBlank(couponTemplateDO.getCategory())
- && couponTemplateDO.getGetUserType().equals(CouponGetUserTypeEnum.POINT.getType())
+ && couponTemplateDO.getGetUserType().equals(CouponGetUserTypeEnum.TARGET.getType())
&& couponTemplateDO.getCategory().equals(CouponCategoryEnum.USER.getStatus())
) {
@@ -222,6 +260,7 @@
List<CouponRecordDO> couponUsageDOList = couponTemplateCustomerDOList.stream().map(pointCustomRe -> {
CouponRecordDO couponRecordDO = new CouponRecordDO();
+ couponRecordDO.setId(IdUtil.simpleUUID());
couponRecordDO.setCouponId(pointCustomRe.getCouponId());
couponRecordDO.setCustomerId(pointCustomRe.getCustomId());
final Customer customer = customerMapper.selectById(pointCustomRe.getCustomId());
@@ -240,19 +279,26 @@
couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode());
couponRecordDO.setCouponName(couponTemplateDO.getCouponName());
// 优惠券种类
- couponRecordDO.setCategory(couponTemplateDO.getGetUserType());
+ couponRecordDO.setCategory(couponTemplateDO.getCategory());
couponRecordDO.setMinOrderAmount(couponTemplateDO.getMinOrderAmount());
couponRecordDO.setCouponDiscountValue(couponTemplateDO.getCouponDiscountValue());
couponRecordDO.setGetType(couponTemplateDO.getGetType());
couponRecordDO.setCouponDiscountType(couponTemplateDO.getCouponDiscountType());
couponRecordDO.setGetUserType(couponTemplateDO.getGetUserType());
couponRecordDO.setPoint(couponTemplateDO.getPoint());
+ couponRecordDO.setMemberId(couponRecordDO.getMemberId());
// 创建相关信息
couponRecordDO.create(SecurityUtils.getUserId());
- return couponRecordDO;
- }).collect(Collectors.toList());
+ // 查看当前优惠券是不是已经存在,存在的话则不能添加,防止同一人员重复下发同一张指定的优惠券
+ if(!couponRecordService.checkUserCouponExists(pointCustomRe.getCouponId(),pointCustomRe.getCustomId())){
+ return couponRecordDO;
+ }else{
+ return null;
+ }
+
+ }).filter(Objects::nonNull).collect(Collectors.toList());
// 批量保存优惠券信息
couponRecordService.saveBatch(couponUsageDOList);
--
Gitblit v1.9.3