From 3f5d62a7b4d20f6c63021361e7a48cab02e6cca3 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期二, 03 九月 2024 15:15:23 +0800
Subject: [PATCH] 1.优惠券相关代码提交
---
src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java | 164 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 145 insertions(+), 19 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 d64b382..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;
}
@@ -185,11 +246,11 @@
}
if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.HOUR.getType())) {
// 小时
- couponTemplateDO.setUsageEndDate(currentTime.plusDays(couponTemplateDO.getUsageTimeNum()));
+ couponTemplateDO.setUsageEndDate(currentTime.plusHours(couponTemplateDO.getUsageTimeNum()));
}
if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.MINUTE.getType())) {
// 分钟
- couponTemplateDO.setUsageEndDate(currentTime.plusDays(couponTemplateDO.getUsageTimeNum()));
+ couponTemplateDO.setUsageEndDate(currentTime.plusMinutes(couponTemplateDO.getUsageTimeNum()));
}
// 优惠券的总数等于下发人员的总数
@@ -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