陶杰
2024-08-30 b1bb9bcbe6a451855a298478a6d9690183e2e991
1.优惠券customerId 改成Long
已修改10个文件
已添加3个文件
232 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java
@@ -72,6 +72,6 @@
    @ApiModelProperty(value = "指定的用户列表id")
    @NotNull(message = "指定的用户列表id不能为空")
    private List<String> pointCostomIdList;
    private List<Long> pointCostomIdList;
}
src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java
对比新文件
@@ -0,0 +1,29 @@
package com.mzl.flower.dto.request.coupon;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("App活动优惠券实体类")
public class QueryActivityEffectCouponDTO {
    @ApiModelProperty(value = "优惠券类型(COUPON_TYPE)" ,hidden = true)
    private String couponDiscountType;
    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)",hidden = true)
    private String getType;
    @ApiModelProperty(value = "领取用户类型(COUPON_GET_USER_TYPE)",hidden = true)
    private String getUserType;
    @ApiModelProperty(value = "优惠券种类(COUPON_CATEGORY)",hidden = true)
    private String category;
    @ApiModelProperty(value = "优惠券状态(COUPON_STATUS)",hidden = true)
    private String status;
}
src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java
@@ -5,7 +5,7 @@
@Data
public class QueryCouponDTO extends QueryCouponVipDTO {
public class QueryCouponDTO {
    @ApiModelProperty(value = "id")
@@ -29,4 +29,6 @@
    @ApiModelProperty(value = "优惠券状态")
    private String status;
}
src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java
@@ -13,9 +13,7 @@
    @ApiModelProperty(value = "优惠券类型")
    private String couponDiscountType;
    @ApiModelProperty(value = "id")
    private String id;
}
src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java
@@ -7,8 +7,8 @@
@Data
public class QueryExistCouponDTO {
    @ApiModelProperty(value = "优惠券ID")
    private String customerId;
    @ApiModelProperty(value = "商户ID")
    private Long customerId;
    @ApiModelProperty(value = "优惠券ID")
    private String couponId;
src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java
对比新文件
@@ -0,0 +1,27 @@
package com.mzl.flower.enums;
import lombok.Getter;
/**
 * 优惠券领取渠道
 */
public enum CouponGetTypeEnum {
    HOME("home","首页弹框"),
    ACTIVITY("activity","活动入口"),
    CENTER("center","领券中心"),
    ;
    @Getter
    private String type;
    private String desc;
    private CouponGetTypeEnum(String type, String desc){
        this.type=type;
        this.desc=desc;
    }
}
src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.dto.request.coupon.BatchCouponTemplateDTO;
import com.mzl.flower.dto.request.coupon.QueryActivePointCouponDTO;
import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponDTO;
import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
import com.mzl.flower.entity.coupon.CouponTemplateDO;
@@ -46,4 +47,6 @@
    List<CouponTemplateVO> getCouponPointList(@Param("param") QueryActivePointCouponDTO dto);
    Page<CouponTemplateVO> getPointPage(Page page,@Param("param") QueryActivePointCouponDTO dto);
    List<CouponTemplateVO> getActivityEffectList(@Param("param") QueryActivityEffectCouponDTO dto);
}
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -56,6 +56,15 @@
     * @param queryExistCouponDTO
     * @return
     */
    int getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO);
    Integer getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO);
    /**
     * 根据优惠券的ID来查找已经领取的优惠券的数量
     * @param couponId
     * @return
     */
    Integer getExistGainCouponRecordAmountById(String couponId);
    Integer getUserGainCouponRecordAmountById(String couponId,Long customerId);
}
src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java
@@ -82,5 +82,14 @@
     */
    Page<CouponTemplateVO> getPointPage(Page page, QueryActivePointCouponDTO dto);
    /**
     * 获取活动优惠券
     * 1.需要领取时间在有效期内的
     * 2.已经发布的
     * @param dto
     * @return
     */
    List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto);
    void exchangeCoupon(ExchangeCouponDTO dto);
}
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -67,6 +67,8 @@
    @Override
    public boolean createCouponRecord(CreateCouponRecordDTO dto) {
        // TODO 需要控制超领
        final Customer customer = customerMapper.selectById(dto.getCustomerId());
        if(null==customer){
            throw new ValidationException("商户信息不存在");
@@ -77,10 +79,32 @@
            throw new ValidationException("优惠券不存在");
        }
        // TODO  活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发
        // 活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发
        if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && (
                couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) || couponTemplateDO.getCategory().equals(CouponCategoryEnum.POINT.getStatus())
                )){
            // 获取当前优惠券已经领取的数量
            final Integer gainTotal = getExistGainCouponRecordAmountById(couponTemplateDO.getId());
            if(couponTemplateDO.getCouponAmount().compareTo(gainTotal)<=0){
                throw new ValidationException("当前优惠券已经领完!");
            }
        }
        // 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券
        if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) ){
            // 查看当前优惠券的领取时间在不在设置的领取时间范围类
            LocalDateTime now = LocalDateTime.now();
            // 判断当前时间是否在领取时间范围内
            if (!(now.isAfter(couponTemplateDO.getGetStartDate()) && now.isBefore(couponTemplateDO.getGetEndDate()))) {
                throw new ValidationException("当前时间不在优惠券的领取时间范围内,无法操作!");
            }
        // TODO 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券
            // 获取当前优惠券已经领取的数量
            final Integer customGainTotal = getUserGainCouponRecordAmountById(couponTemplateDO.getId(),customer.getId());
            if(couponTemplateDO.getGetLimit().compareTo(customGainTotal)<=0){
                throw new ValidationException("超出个人领取限制,每人限领"+couponTemplateDO.getGetLimit()+"张!");
            }
        }
        CouponRecordDO couponRecordDO=new CouponRecordDO();
@@ -146,7 +170,6 @@
            }
        }
        return baseMapper.insert(couponRecordDO)>0;
    }
@@ -297,13 +320,33 @@
    }
    @Override
    public int getExistCouponAmount(QueryExistCouponDTO dto) {
    public Integer 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(null!=dto.getCustomerId(),CouponRecordDO::getCustomerId,dto.getCustomerId())
                .eq(StringUtils.isNotBlank(dto.getCategory()),CouponRecordDO::getCategory,dto.getCategory());
        return baseMapper.selectCount(queryWrapper);
    }
    @Override
    public Integer getExistGainCouponRecordAmountById(String couponId) {
        QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
        queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
                .eq(StringUtils.isNotBlank(couponId), CouponRecordDO::getCouponId,couponId)
                ;
        return baseMapper.selectCount(queryWrapper);
    }
    @Override
    public Integer getUserGainCouponRecordAmountById(String couponId, Long customerId) {
        QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
        queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
                .eq(StringUtils.isNotBlank(couponId), CouponRecordDO::getCouponId,couponId)
                .eq(null!=customerId,CouponRecordDO::getCustomerId,customerId)
                ;
        return baseMapper.selectCount(queryWrapper);
    }
}
src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -382,4 +382,10 @@
        customerPointDetailMapper.insert(detail);
    }
    @Override
    public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) {
        return couponTemplateMapperCustom.getActivityEffectList(dto);
    }
}
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java
对比新文件
@@ -0,0 +1,77 @@
package com.mzl.flower.web.v2.coupon;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponDTO;
import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
import com.mzl.flower.enums.CouponCategoryEnum;
import com.mzl.flower.enums.CouponGetTypeEnum;
import com.mzl.flower.enums.CouponStatusEnum;
import com.mzl.flower.service.coupon.CouponTemplateService2;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author @TaoJie
 * @since 2024-08-22
 */
@RestController
@RequestMapping("/api/v2/coupon/app")
@Api(value = "优惠券管理-小程序", tags = "优惠券管理-小程序")
@Validated
public class CouponTemplateAppController extends BaseController {
    @Autowired
    CouponTemplateService2 couponTemplateService;
    @GetMapping("/home/list")
    @ApiOperation(value = "查询-首页弹框", notes = "查询-首页弹框")
    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> homeList(QueryActivityEffectCouponDTO dto) {
        // TODO  需要查找到领取时间优惠券的开始时间和结束时间内的优惠券
        // 活动优惠券
        dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus());
        // 已经发布
        dto.setStatus(CouponStatusEnum.ACTIVE.getStatus());
        // 首页弹窗
        dto.setGetType(CouponGetTypeEnum.HOME.getType());
        couponTemplateService.getActivityEffectList(dto);
        return returnData(R.SUCCESS.getCode(),null);
    }
    @GetMapping("/activy/list")
    @ApiOperation(value = "查询-活动", notes = "查询-活动")
    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> activyList(QueryActivityEffectCouponDTO dto) {
        // TODO
        return returnData(R.SUCCESS.getCode(),null);
    }
    @GetMapping("/center/list")
    @ApiOperation(value = "查询-中心", notes = "查询-中心")
    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> centerList(QueryActivityEffectCouponDTO dto) {
        // TODO
        return returnData(R.SUCCESS.getCode(),null);
    }
}
src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
@@ -69,6 +69,11 @@
        <include refid="QueryPointSql" />
    </select>
<!--    app活动优惠券-->
    <select id="getActivityEffectList" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO">
    </select>
    <sql id="QueryPointSql">
        select *
        from t_coupon_template