陶杰
2024-08-29 b676641e11008cb05b4e595850dbbf617fb7da56
1.积分优惠券-获取全部已发布的优惠券
已修改6个文件
已添加1个文件
96 ■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java
@@ -26,4 +26,7 @@
    @ApiModelProperty(value = "优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券)")
    private String category;
    @ApiModelProperty(value = "优惠券状态")
    private String status;
}
src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java
对比新文件
@@ -0,0 +1,19 @@
package com.mzl.flower.dto.request.coupon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class QueryExistCouponDTO {
    @ApiModelProperty(value = "优惠券ID")
    private String customerId;
    @ApiModelProperty(value = "优惠券ID")
    private String couponId;
    @ApiModelProperty(value = "优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券)")
    private String category;
}
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -1,12 +1,13 @@
package com.mzl.flower.service.coupon;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponStatisticsBO;
import com.mzl.flower.dto.request.coupon.QueryExistCouponDTO;
import com.mzl.flower.dto.response.coupon.CouponRecordVO;
import com.mzl.flower.entity.coupon.CouponRecordDO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@@ -49,4 +50,12 @@
    int statisCouponTemplateCurMonCount(QueryCouponStatisticsBO queryCouponStatisticsBO);
    int statisCouponPointCurMonPontAmonut(QueryCouponStatisticsBO queryCouponStatisticsBO);
    /**
     * 根据优惠券种类,优惠券ID,用户的ID查找优惠券的记录数量
     * @param queryExistCouponDTO
     * @return
     */
    int getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO);
}
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -9,15 +9,13 @@
import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponStatisticsBO;
import com.mzl.flower.dto.request.coupon.QueryExistCouponDTO;
import com.mzl.flower.dto.response.coupon.CouponRecordVO;
import com.mzl.flower.entity.coupon.CouponRecordDO;
import com.mzl.flower.entity.coupon.CouponTemplateDO;
import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.system.User;
import com.mzl.flower.enums.CouponCategoryEnum;
import com.mzl.flower.enums.CouponUsageTimeTypeEnum;
import com.mzl.flower.enums.CouponUsageTypeEnum;
import com.mzl.flower.enums.CouponUsedStatusEnum;
import com.mzl.flower.enums.*;
import com.mzl.flower.mapper.coupon.CouponRecordMapper;
import com.mzl.flower.mapper.coupon.CouponRecordMapperCustom;
import com.mzl.flower.mapper.customer.CustomerMapper;
@@ -74,14 +72,27 @@
            throw new ValidationException("商户信息不存在");
        }
        final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId());
        // TODO  活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发
        // TODO 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券
        CouponRecordDO couponRecordDO=new CouponRecordDO();
        BeanUtils.copyProperties(dto,couponRecordDO);
        couponRecordDO.create(SecurityUtils.getUserId());
        // 设置为待使用状态
        couponRecordDO.setStatus(CouponUsedStatusEnum.UNUSED.getType());
        // 根据商户设置用户id
        if(StringUtils.isBlank(dto.getUserId()) && StringUtils.isNotBlank(customer.getUserId())){
            couponRecordDO.setUserId(customer.getUserId());
        }
        // 优惠券字段冗余
        final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId());
        if(null!=couponTemplateDO){
            couponRecordDO.setCategory(couponTemplateDO.getGetUserType());
            couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode());
@@ -125,11 +136,11 @@
                    }
                    if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.HOUR.getType())) {
                        // 小时
                        couponRecordDO.setEffectiveEnd(currentTime.plusDays(couponTemplateDO.getUsageTimeNum()));
                        couponRecordDO.setEffectiveEnd(currentTime.plusHours(couponTemplateDO.getUsageTimeNum()));
                    }
                    if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.MINUTE.getType())) {
                        // 分钟
                        couponRecordDO.setEffectiveEnd(currentTime.plusDays(couponTemplateDO.getUsageTimeNum()));
                        couponRecordDO.setEffectiveEnd(currentTime.plusMinutes(couponTemplateDO.getUsageTimeNum()));
                    }
                }
@@ -285,4 +296,15 @@
    public int statisCouponPointCurMonPontAmonut(QueryCouponStatisticsBO queryCouponStatisticsBO) {
        return couponRecordMapperCustom.statisCouponPointCurMonPointAmonut(queryCouponStatisticsBO);
    }
    @Override
    public int getExistCouponAmount(QueryExistCouponDTO dto) {
        QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
        queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
                .eq(StringUtils.isNotBlank(dto.getCouponId()), CouponRecordDO::getCouponId,dto.getCouponId())
                .eq(StringUtils.isNotBlank(dto.getCustomerId()),CouponRecordDO::getCustomerId,dto.getCustomerId())
                .eq(StringUtils.isNotBlank(dto.getCategory()),CouponRecordDO::getCategory,dto.getCategory());
        return baseMapper.selectCount(queryWrapper);
    }
}
src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java
@@ -52,10 +52,10 @@
            throw new ValidationException("优惠券不存在");
        }
        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && !couponTemplateDO.getStatus().equals(CouponStatusEnum.INACTIVE.getStatus())){
        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.INACTIVE.getStatus())){
            throw new ValidationException("优惠券还未发布");
        }
        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && !couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){
        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){
            throw new ValidationException("优惠券已下架");
        }
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java
@@ -11,6 +11,7 @@
import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
import com.mzl.flower.entity.coupon.CouponTemplateDO;
import com.mzl.flower.enums.CouponCategoryEnum;
import com.mzl.flower.enums.CouponStatusEnum;
import com.mzl.flower.enums.CouponTypeEnum;
import com.mzl.flower.enums.CouponUsageTypeEnum;
import com.mzl.flower.service.coupon.CouponTemplateService2;
@@ -190,6 +191,15 @@
        return returnData(R.SUCCESS.getCode(), ConverterUtil.transObject(couponTemplateVO, CouponTemplatePointVO.class));
    }
    @GetMapping("/active/list")
    @ApiOperation(value = "查询-全部", notes = "查询-全部")
    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> activelist() {
        // 设置只查询积分优惠券的
        QueryCouponDTO dto=new QueryCouponDTO();
        dto.setCategory(CouponCategoryEnum.POINT.getStatus());
        dto.setStatus(CouponStatusEnum.ACTIVE.getStatus());
        return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplatePointVO.class));
    }
    private void valid(CreateCouponTemplatePointDTO dto){
src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
@@ -70,11 +70,11 @@
            create_by_user.nick_name as createByName,
            IFNULL(get_num.cnt, 0) as getNum,
            IFNULL(t.coupon_amount, 0) - IFNULL(get_num.cnt, 0) as unGetNum
            from t_coupon_template t
            left join t_user create_by_user
            on t.create_by =create_by_user.id
            left join (select coupon_template_id,count(1) as cnt  from t_coupon_usage where deleted=0 group by coupon_template_id) get_num
            on t.id=get_num.coupon_template_id
        from t_coupon_template t
        left join t_user create_by_user
        on t.create_by =create_by_user.id
        left join (select coupon_id,count(1) as cnt  from t_coupon_record where deleted=0 group by coupon_id) get_num
        on t.id=get_num.coupon_id
        ) t
        where t.deleted=0
        <if test="param.name != null and param.name != ''">
@@ -95,6 +95,9 @@
        <if test="param.category != null and param.category != ''">
            AND t.category =  #{param.category}
        </if>
        <if test="param.status != null and param.status != ''">
            AND t.status =  #{param.status}
        </if>
        order by t.create_time desc
    </sql>