package cn.iocoder.yudao.module.promotion.convert.coupon; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponRespDTO; import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.coupon.CouponPageItemRespVO; import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.coupon.CouponPageReqVO; import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponPageReqVO; import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponTemplateDO; import cn.iocoder.yudao.module.promotion.enums.coupon.CouponStatusEnum; import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTemplateValidityTypeEnum; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import java.time.LocalDateTime; import java.util.Collection; /** * 优惠劵 Convert * * @author 芋道源码 */ @Mapper public interface CouponConvert { CouponConvert INSTANCE = Mappers.getMapper(CouponConvert.class); PageResult convertPage(PageResult page); CouponRespDTO convert(CouponDO bean); default CouponDO convert(CouponTemplateDO template, Long userId) { CouponDO coupon = new CouponDO() .setTemplateId(template.getId()) .setName(template.getName()) .setTakeType(template.getTakeType()) .setUsePrice(template.getUsePrice()) .setProductScope(template.getProductScope()) .setProductScopeValues(template.getProductScopeValues()) .setDiscountType(template.getDiscountType()) .setDiscountPercent(template.getDiscountPercent()) .setDiscountPrice(template.getDiscountPrice()) .setDiscountLimitPrice(template.getDiscountLimitPrice()) .setStatus(CouponStatusEnum.UNUSED.getStatus()) .setUserId(userId); if (CouponTemplateValidityTypeEnum.DATE.getType().equals(template.getValidityType())) { coupon.setValidStartTime(template.getValidStartTime()); coupon.setValidEndTime(template.getValidEndTime()); } else if (CouponTemplateValidityTypeEnum.TERM.getType().equals(template.getValidityType())) { coupon.setValidStartTime(LocalDateTime.now().plusDays(template.getFixedStartTerm())); coupon.setValidEndTime(coupon.getValidStartTime().plusDays(template.getFixedEndTerm())); } return coupon; } CouponPageReqVO convert(AppCouponPageReqVO pageReqVO, Collection userIds); }