From 9adfc0c5aa084bc61807ce43badf8b9f48b588c3 Mon Sep 17 00:00:00 2001 From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com> Date: 星期四, 05 九月 2024 17:16:16 +0800 Subject: [PATCH] Merge branch 'master' into master-v2 --- src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 143 insertions(+), 17 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 26526cc..ce2b9af 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 @@ -1,24 +1,34 @@ package com.mzl.flower.service.impl.coupon; import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; +import com.mzl.flower.constant.Constants; import com.mzl.flower.dto.request.coupon.*; +import com.mzl.flower.dto.response.coupon.CouponPointStatisVO; +import com.mzl.flower.dto.response.coupon.CouponTemplateCustomerVO; import com.mzl.flower.dto.response.coupon.CouponTemplateVO; import com.mzl.flower.entity.coupon.CouponRecordDO; 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.*; import com.mzl.flower.mapper.coupon.CouponTemplateMapper; import com.mzl.flower.mapper.coupon.CouponTemplateMapperCustom; import com.mzl.flower.mapper.customer.CustomerMapper; +import com.mzl.flower.mapper.point.CustomerPointDetailMapper; +import com.mzl.flower.mapper.point.CustomerPointMapper; 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.payment.OrderService; +import com.mzl.flower.service.menber.MemberService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -26,7 +36,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -54,7 +66,18 @@ private CustomerMapper customerMapper; @Autowired - private OrderService orderService; + private CustomerPointMapper customerPointMapper; + + @Autowired + private CouponTemplateService2 couponTemplateService; + + @Autowired + private CustomerPointDetailMapper customerPointDetailMapper; + + @Autowired + private MemberService memberService; + + @Transactional @Override @@ -75,6 +98,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; @@ -107,6 +132,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; @@ -127,13 +154,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); } @@ -143,7 +186,25 @@ dto.setId(id); final List<CouponTemplateVO> list = getList(dto); if (CollectionUtils.isNotEmpty(list)) { - return list.get(0); + CouponTemplateVO vo =list.get(0); + // 用户获取 + 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; } @@ -198,6 +259,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()); @@ -223,6 +285,7 @@ couponRecordDO.setCouponDiscountType(couponTemplateDO.getCouponDiscountType()); couponRecordDO.setGetUserType(couponTemplateDO.getGetUserType()); couponRecordDO.setPoint(couponTemplateDO.getPoint()); + couponRecordDO.setMemberId(couponRecordDO.getMemberId()); // 创建相关信息 couponRecordDO.create(SecurityUtils.getUserId()); @@ -295,17 +358,80 @@ } @Override - public CouponTemplateVO statisCouponTemplatePoint(QueryCouponStatisticsBO queryCouponStatisticsBO) { - - //TODO 优惠券总数 - couponRecordService.statisCouponTemplateCount(queryCouponStatisticsBO); - - //TODO 本月兑换优惠券总数 - couponRecordService.statisCouponTemplateCurMonCount(queryCouponStatisticsBO); - - //TODO 本月兑换积分总数 - couponRecordService.statisCouponPointCurMonPontAmonut(queryCouponStatisticsBO); - - return null; + public CouponPointStatisVO statisCouponTemplatePoint(QueryCouponStatisticsBO queryCouponStatisticsBO) { + CouponPointStatisVO vo=new CouponPointStatisVO(); + //优惠券总数 + vo.setTotalAmount(couponRecordService.statisCouponTemplateCount(queryCouponStatisticsBO)); + // 本月兑换优惠券总数 + vo.setCurMonExchangeAmount(couponRecordService.statisCouponTemplateCurMonCount(queryCouponStatisticsBO)); + // 本月兑换积分总数 + vo.setCurMonExchangePointAmount(couponRecordService.statisCouponPointCurMonPontAmonut(queryCouponStatisticsBO)); + return vo; } + + @Override + public List<CouponTemplateVO> getPointList(QueryActivePointCouponDTO dto) { + if(StringUtils.isBlank(dto.getOrderStr())){ + dto.setOrderStr(" create_time desc "); + } + return couponTemplateMapperCustom.getCouponPointList(dto); + } + + @Override + public Page<CouponTemplateVO> getPointPage(Page page, QueryActivePointCouponDTO dto) { + if(StringUtils.isBlank(dto.getOrderStr())){ + dto.setOrderStr(" create_time desc "); + } + return couponTemplateMapperCustom.getPointPage(page,dto); + } + + @Override + public synchronized void exchangeCoupon(ExchangeCouponDTO dto) { + dto.setNum(1); + + final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId()); + if(couponTemplateDO==null){ + throw new ValidationException("优惠券不存在"); + } + + CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>() + .eq(CustomerPoint::getUserId, SecurityUtils.getUserId())); + if(cp == null || (cp.getTotalPoint()-cp.getUsedPoint()-cp.getExpiredPoint()) < couponTemplateDO.getPoint() * dto.getNum()){ + throw new ValidationException("积分不足"); + } + + CreateCouponRecordDTO recordDTO =new CreateCouponRecordDTO(); + recordDTO.setCouponId(dto.getCouponId()); + recordDTO.setUserId(SecurityUtils.getUserId()); + Customer customer = customerMapper.selectOne(new LambdaQueryWrapper<Customer>() + .eq(Customer::getUserId, SecurityUtils.getUserId())); + if(customer == null){ + throw new ValidationException("商户不存在"); + } + recordDTO.setCustomerId(customer.getId()); + couponRecordService.createCouponRecord(recordDTO); + + //更新积分汇总 + cp.setUsedPoint(cp.getUsedPoint()+couponTemplateDO.getPoint()); + customerPointMapper.updateById(cp); + + //记录积分明细 + CustomerPointDetail detail = new CustomerPointDetail(); + detail.setUserId(customer.getUserId()); + detail.setCustomerId(customer.getId()); + detail.setPoint(couponTemplateDO.getPoint()); + detail.setChangeType(Constants.POINT_CHANGE_TYPE.reduce.name()); + detail.setType(Constants.POINT_TYPE.exchange.name()); + detail.setRecordDate(LocalDate.now()); + detail.setRemarks(couponTemplateDO.getCouponName()); + detail.create(SecurityUtils.getUserId()); + customerPointDetailMapper.insert(detail); + } + + @Override + public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) { + + return couponTemplateMapperCustom.getActivityEffectList(dto); + } + } -- Gitblit v1.9.3