CouponBuilder.java 3.91 KB
package com.topdraw.business.module.coupon.domain;

import com.topdraw.business.module.coupon.service.dto.CouponDTO;
import com.topdraw.util.IdWorker;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.Objects;

/**
 * 优惠券
 */
public class CouponBuilder {

    public static Coupon build(CouponDTO couponDTO){
        Coupon coupon = new Coupon();
        BeanUtils.copyProperties(couponDTO,coupon);
        return build(coupon.getId(),
                coupon.getCode(),
                coupon.getTitle(),coupon.getImages(),coupon.getStock(),coupon.getRemainStock(),coupon.getUseType(),
                coupon.getDenomination(),coupon.getDiscount(),coupon.getUserRange(),coupon.getCollectLimit(),
                coupon.getThresholdType(),coupon.getAmountThreshold(),coupon.getItemRange(),coupon.getEffectType(),
                coupon.getStartTime(),coupon.getExpireTime(),coupon.getValidDays(),coupon.getDescription(),coupon.getStatus());
    }

    public static Coupon build(Coupon coupon){
        return build(coupon.getId(),
                coupon.getCode(),
                coupon.getTitle(),coupon.getImages(),coupon.getStock(),coupon.getRemainStock(),coupon.getUseType(),
                coupon.getDenomination(),coupon.getDiscount(),coupon.getUserRange(),coupon.getCollectLimit(),
                coupon.getThresholdType(),coupon.getAmountThreshold(),coupon.getItemRange(),coupon.getEffectType(),
                coupon.getStartTime(),coupon.getExpireTime(),coupon.getValidDays(),coupon.getDescription(),coupon.getStatus());
    }

    public static Coupon build(Long id , String code , String title,
                               String images,
                               Integer stock,
                               Integer remainStock,
                               Integer useType,
                               BigDecimal denomination,
                               BigDecimal discount,
                               Integer userRange,
                               Integer collectLimit,
                               Integer thresholdType,
                               BigDecimal amountThreshold,
                               Integer itemRange,
                               Integer effectType,
                               Timestamp startTime,
                               LocalDateTime expireTime,
                               Integer validDays,String description , Integer status){

        Coupon coupon = new Coupon();
        coupon.setId(id);
        coupon.setCode(StringUtils.isBlank(code)? IdWorker.generatorCode("coupon"):code);
        coupon.setTitle(StringUtils.isBlank(title)?null:title);
        coupon.setImages(StringUtils.isBlank(images)?null:images);
        coupon.setStock(Objects.isNull(stock)?null:stock);
        coupon.setRemainStock(Objects.isNull(remainStock)?null:remainStock);
        coupon.setUseType(Objects.isNull(useType)?null:useType);
        coupon.setDenomination(Objects.isNull(denomination)?null:denomination);
        coupon.setDiscount(Objects.isNull(discount)?null:discount);
        coupon.setUserRange(Objects.isNull(userRange)?null:userRange);
        coupon.setCollectLimit(collectLimit);
        coupon.setThresholdType(Objects.isNull(thresholdType)?null:thresholdType);
        coupon.setAmountThreshold(Objects.isNull(amountThreshold)?null:amountThreshold);
        coupon.setItemRange(Objects.isNull(itemRange)?null:itemRange);
        coupon.setEffectType(Objects.isNull(effectType)?null:effectType);
        coupon.setStartTime(Objects.isNull(startTime)?null: startTime);
        coupon.setExpireTime(Objects.isNull(expireTime)?null:expireTime);
        coupon.setValidDays(validDays);
        coupon.setDescription(StringUtils.isBlank(description)?"":description);
        coupon.setStatus(Objects.nonNull(status)?status:0);
        return coupon;
    }

}