admin
2024-10-16 62a447d89331aee1feae7724c7616aa1bb2cfe79
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java
@@ -1,462 +1,1034 @@
package com.yeshi.fanli.service.impl.goods;
import java.math.BigDecimal;
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.BigDecimalUtil;
import com.yeshi.fanli.dao.mybatis.goods.ShareGoodsTextTemplateMapper;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.entity.goods.ShareGoodsTextTemplate;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.goods.ShareGoodsTextTemplateException;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoLiJinUtil;
/**
 * 分享商品模板
 *
 * @author Administrator
 *
 */
@Service
public class ShareGoodsTextTemplateServiceImpl implements ShareGoodsTextTemplateService {
   @Resource
   private ShareGoodsTextTemplateMapper shareGoodsTextTemplateMapper;
   @Resource
   private ConfigService configService;
   @Resource
   private ConfigTaoLiJinService configTaoLiJinService;
   @Override
   public void saveCommonTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
      isCommonTemplateRight(template);
      ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (old != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(old.getId());
         update.setShareTextTemplate(template);
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      } else {
         ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
         textTemplate.setCreateTime(new Date());
         textTemplate.setShareTextTemplate(template);
         textTemplate.setUid(uid);
         shareGoodsTextTemplateMapper.insertSelective(textTemplate);
      }
   }
   @Override
   public void saveCommonTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
      isCommonTemplateRight(template);
      ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (old != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(old.getId());
         update.setShareJDTextTemplate(template);
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      } else {
         ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
         textTemplate.setCreateTime(new Date());
         textTemplate.setShareJDTextTemplate(template);
         textTemplate.setUid(uid);
         shareGoodsTextTemplateMapper.insertSelective(textTemplate);
      }
   }
   @Override
   public void saveCommonTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
      isCommonTemplateRight(template);
      ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (old != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(old.getId());
         update.setSharePDDTextTemplate(template);
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      } else {
         ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
         textTemplate.setCreateTime(new Date());
         textTemplate.setSharePDDTextTemplate(template);
         textTemplate.setUid(uid);
         shareGoodsTextTemplateMapper.insertSelective(textTemplate);
      }
   }
   @Override
   public String getCommonTemplate(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null)
         return template.getShareTextTemplate();
      return null;
   }
   @Transactional
   @Override
   public void saveCouponTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
      // 格式验证
      isTaoLiJinTemplateRight(template);
      ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (old != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(old.getId());
         update.setShareCouponTextTemplate(template);
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      } else {
         ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
         textTemplate.setCreateTime(new Date());
         textTemplate.setShareCouponTextTemplate(template);
         textTemplate.setUid(uid);
         shareGoodsTextTemplateMapper.insertSelective(textTemplate);
      }
   }
   @Transactional
   @Override
   public void saveCouponTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
      // 格式验证
      isTaoLiJinTemplateRight(template);
      ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (old != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(old.getId());
         update.setShareJDTextTemplateCoupon(template);
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      } else {
         ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
         textTemplate.setCreateTime(new Date());
         textTemplate.setShareJDTextTemplateCoupon(template);
         textTemplate.setUid(uid);
         shareGoodsTextTemplateMapper.insertSelective(textTemplate);
      }
   }
   @Transactional
   @Override
   public void saveCouponTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
      // 格式验证
      isTaoLiJinTemplateRight(template);
      ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (old != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(old.getId());
         update.setSharePDDTextTemplateCoupon(template);
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      } else {
         ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
         textTemplate.setCreateTime(new Date());
         textTemplate.setSharePDDTextTemplateCoupon(template);
         textTemplate.setUid(uid);
         shareGoodsTextTemplateMapper.insertSelective(textTemplate);
      }
   }
   @Transactional
   @Override
   public void saveTaoLiJinTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
      isCouponTemplateRight(template);
      ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (old != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(old.getId());
         update.setShareTaoLiJinTextTemplate(template);
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      } else {
         ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
         textTemplate.setCreateTime(new Date());
         textTemplate.setShareTaoLiJinTextTemplate(template);
         textTemplate.setUid(uid);
         shareGoodsTextTemplateMapper.insertSelective(textTemplate);
      }
   }
   @Override
   public String geteCouponTemplate(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null)
         return template.getShareCouponTextTemplate();
      return null;
   }
   @Override
   public String getTaoLiJinTemplate(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null)
         return template.getShareTaoLiJinTextTemplate();
      return null;
   }
   @Override
   public ShareGoodsTextTemplate getShareGoodsTextTemplate(Long uid) {
      return shareGoodsTextTemplateMapper.selectByUid(uid);
   }
   @Override
   public void isCommonTemplateRight(String template) throws ShareGoodsTextTemplateException {
      String[] keys = new String[] { "{标题}", "{店铺类型}", "{商品原价}", "{月销量}", "{短链}", "{淘口令}" };
      int keysCount = 0;
      for (String key : keys)
         if (template != null && template.contains(key))
            keysCount++;
      if (keysCount == 0)
         throw new ShareGoodsTextTemplateException(1, "模板格式有误");
   }
   @Override
   public void isCommonTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
      String[] keys = new String[] { "{标题}",  "{商品原价}", "{月销量}", "{短链接}" };
      int keysCount = 0;
      for (String key : keys)
         if (template != null && template.contains(key))
            keysCount++;
      if (keysCount == 0)
         throw new ShareGoodsTextTemplateException(1, "模板格式有误");
   }
   @Override
   public void isCommonTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
      String[] keys = new String[] { "{标题}", "{商品原价}", "{月销量}", "{短链接}", "{多多口令}" };
      int keysCount = 0;
      for (String key : keys)
         if (template != null && template.contains(key))
            keysCount++;
      if (keysCount == 0)
         throw new ShareGoodsTextTemplateException(1, "模板格式有误");
   }
   @Override
   public void isCouponTemplateRight(String template) throws ShareGoodsTextTemplateException {
      String[] keys = new String[] { "{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{领券短链}", "{淘口令}" };
      int keysCount = 0;
      for (String key : keys)
         if (template != null && template.contains(key))
            keysCount++;
      if (keysCount == 0)
         throw new ShareGoodsTextTemplateException(1, "模板格式有误");
   }
   @Override
   public void isCouponTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
      String[] keys = new String[] { "{标题}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{短链接}" };
      int keysCount = 0;
      for (String key : keys)
         if (template != null && template.contains(key))
            keysCount++;
      if (keysCount == 0)
         throw new ShareGoodsTextTemplateException(1, "模板格式有误");
   }
   @Override
   public void isCouponTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
      String[] keys = new String[] { "{标题}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{总销量}", "{短链接}"};
      int keysCount = 0;
      for (String key : keys)
         if (template != null && template.contains(key))
            keysCount++;
      if (keysCount == 0)
         throw new ShareGoodsTextTemplateException(1, "模板格式有误");
   }
   @Override
   public void isTaoLiJinTemplateRight(String template) throws ShareGoodsTextTemplateException {
      String[] keys = new String[] { "{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{淘礼金面额}", "{优惠券价}", "{月销量}", "{领券短链}", "{淘口令}" };
      int keysCount = 0;
      for (String key : keys)
         if (template != null && template.contains(key))
            keysCount++;
      if (keysCount == 0)
         throw new ShareGoodsTextTemplateException(1, "模板格式有误");
   }
   @Override
   public String createContentByTemplate(String template, Long uid, TaoBaoGoodsBrief goods, String token,
         String shortLink, boolean hasCoupon, Long tljId) {
      if (tljId != null) {
         // 计算推广红包
         String warningRate = configTaoLiJinService.getValueByKey("warning_value");
         BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
         return template.replace("{标题}", goods.getTitle()).replace("{商品原价}", BigDecimalUtil.getWithNoZera( goods.getZkPrice()).toString())
               .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
               .replace("{淘口令}", token).replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
               .replace("{淘礼金面额}", BigDecimalUtil.getWithNoZera(spreadMoney).toString()).replace("{优惠券价}", BigDecimalUtil.getWithNoZera( TaoBaoUtil.getAfterUseCouplePrice(goods)).toString())
               .replace("{店铺类型}", goods.getUserType() == 1 ? "天猫价" : "淘宝价");
      }
      if (!hasCoupon) {
         return template.replace("{标题}", goods.getTitle()).replace("{商品原价}",  BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
               .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{短链}", shortLink)
               .replace("{淘口令}", "").replace("{店铺类型}", goods.getUserType() == 1 ? "天猫价"
                     : "淘宝价");
      } else {
         return template.replace("{标题}", goods.getTitle()).replace("{商品原价}", BigDecimalUtil.getWithNoZera( goods.getZkPrice()).toString())
               .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
               .replace("{淘口令}", token).replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
               .replace("{优惠券价}", BigDecimalUtil.getWithNoZera( TaoBaoUtil.getAfterUseCouplePrice(goods)).toString())
               .replace("{店铺类型}", goods.getUserType() == 1 ? "天猫价" : "淘宝价");
      }
   }
   @Override
   public String createContentByTemplateJD(String template, Long uid, JDGoods goods, String shortLink, boolean hasCoupon) {
      if (!hasCoupon) {
         return template.replace("{标题}", goods.getSkuName()).replace("{商品原价}",  BigDecimalUtil.getWithNoZera(goods.getPrice()).toString())
               .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink);
      } else {
         return template.replace("{标题}", goods.getSkuName()).replace("{商品原价}", BigDecimalUtil.getWithNoZera( goods.getPrice()).toString())
               .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink)
               .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponInfo().getDiscount()).toString())
               .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(JDUtil.getQuanPrice(goods)).toString());
      }
   }
   @Override
   public String createContentByTemplatePDD(String template, Long uid, PDDGoodsDetail goods,
         String shortLink, boolean hasCoupon, String token) {
      if (!hasCoupon) {
         template = template.replace("{标题}", goods.getGoodsName()).replace("{商品原价}",  BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMinNormalPrice())).toString())
               .replace("{总销量}", PinDuoDuoUtil.getSaleCount(goods.getSoldQuantity())).replace("{短链接}", shortLink);
      } else {
         template = template.replace("{标题}", goods.getGoodsName()).replace("{商品原价}", BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMinNormalPrice())).toString())
               .replace("{总销量}", PinDuoDuoUtil.getSaleCount(goods.getSoldQuantity())).replace("{短链接}", shortLink)
               .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getCouponDiscount())).toString())
               .replace("{优惠券价}", BigDecimalUtil.getWithNoZera( PinDuoDuoUtil.getQuanPrice(goods)).toString());
      }
      if (StringUtil.isNullOrEmpty(token)) {
         template = template.replace("{多多口令}打开拼多多,", "");
      } else {
         template = template.replace("{多多口令}", token);
      }
      return template;
   }
   @Override
   public void resetCommonTemplate(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(template.getId());
         update.setShareTextTemplate("");
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      }
   }
   @Override
   public void resetCouponTemplate(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(template.getId());
         update.setShareCouponTextTemplate("");
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      }
   }
   @Override
   public void resetCommonTemplateJD(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(template.getId());
         update.setShareJDTextTemplate("");
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      }
   }
   @Override
   public void resetCouponTemplateJD(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(template.getId());
         update.setShareJDTextTemplateCoupon("");
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      }
   }
   @Override
   public void resetCommonTemplatePDD(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(template.getId());
         update.setSharePDDTextTemplate("");
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      }
   }
   @Override
   public void resetCouponTemplatePDD(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(template.getId());
         update.setSharePDDTextTemplateCoupon("");
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      }
   }
   @Override
   public void resetTaoLijinTemplate(Long uid) {
      ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
      if (template != null) {
         ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
         update.setId(template.getId());
         update.setShareTaoLiJinTextTemplate("");
         update.setUpdateTime(new Date());
         shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
      }
   }
}
package com.yeshi.fanli.service.impl.goods;
import java.math.BigDecimal;
import java.util.Date;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.BigDecimalUtil;
import com.yeshi.fanli.dao.mybatis.goods.ShareGoodsTextTemplateMapper;
import com.yeshi.fanli.dto.jd.JDPingouInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.goods.ShareGoodsTextTemplate;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.goods.ShareGoodsTextTemplateException;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
import org.yeshi.utils.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoLiJinUtil;
/**
 * 分享商品模板
 *
 * @author Administrator
 */
@Service
public class ShareGoodsTextTemplateServiceImpl implements ShareGoodsTextTemplateService {
    @Resource
    private ShareGoodsTextTemplateMapper shareGoodsTextTemplateMapper;
    @Resource
    private ConfigService configService;
    @Resource
    private ConfigTaoLiJinService configTaoLiJinService;
    @Resource
    private UserInfoService userInfoService;
    @Override
    public void saveCommonTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveCommonTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveCommonTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public String getCommonTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareTextTemplate();
        return null;
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareCouponTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareCouponTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplateCoupon(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplateCoupon(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplateCoupon(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplateCoupon(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveTaoLiJinTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCouponTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTaoLiJinTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTaoLiJinTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public String geteCouponTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareCouponTextTemplate();
        return null;
    }
    @Override
    public String getTaoLiJinTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareTaoLiJinTextTemplate();
        return null;
    }
    @Override
    public ShareGoodsTextTemplate getShareGoodsTextTemplate(Long uid) {
        return shareGoodsTextTemplateMapper.selectByUid(uid);
    }
    @Override
    public String getTextTemplateByTB(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareTextTemplate())) {
            template = objct.getShareTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{优惠券面额}") || template.contains("{优惠券价}")
                    || template.contains("{月销量}")) {
                template = ""; // 老板分享
            }
        }
        SystemEnum system = userInfoService.getUserSystem(uid);
        if (StringUtil.isNullOrEmpty(template)) {
            template = configService.getValue(ConfigKeyEnum.shareCommentTextTB.getKey(), system);
        }
        return template;
    }
    @Override
    public String getTextTemplateByJD(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareJDTextTemplate())) {
            template = objct.getShareJDTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{月销量}") || template.contains("{短链接}")) {
                template = ""; // 老板分享
            }
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextJD.getKey(), system);
        }
        return template;
    }
    @Override
    public String getTextTemplateByPDD(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getSharePDDTextTemplate())) {
            template = objct.getSharePDDTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{总销量}") || template.contains("{短链接}")) {
                template = ""; // 老板分享
            }
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextPDD.getKey(), system);
        }
        return template;
    }
    @Override
    public String getTextTemplateByVIP(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareVIPTextTemplate())) {
            template = objct.getShareVIPTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextVIP.getKey(), system);
        }
        return template;
    }
    @Override
    public String getTextTemplateBySuNing(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareSuNingTextTemplate())) {
            template = objct.getShareSuNingTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextSuNing.getKey(), system);
        }
        return template;
    }
    @Override
    public void resetCommonTemplateDY(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareDYTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplateDY(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareDYTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public String getTextTemplateByDY(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareDYTextTemplate())) {
            template = objct.getShareDYTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextDY.getKey(), system);
        }
        return template;
    }
    @Override
    public void saveTemplateTB(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightTB(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightJD(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightPDD(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateVIP(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightVIP(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareVIPTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareVIPTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateSuNing(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightSuNing(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareSuNingTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareSuNingTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateDY(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightDY(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareDYTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareDYTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void verifyRightTB(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightVIP(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{在售价}", "{折扣价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightSuNing(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightDY(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public String createContentTB(String template, TaoBaoGoodsBrief goods, String token, boolean coupon) {
        String commentText = template.replace("{原价}", goods.getZkPrice().toString());
        commentText = commentText.replace("{淘口令}", TaoBaoUtil.filterTaoToken(token));
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}", TaoBaoUtil.getCouponPrice(goods) + "");
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createContentJD(String template, JDGoods goods, String jumpLink, boolean coupon) {
        String commentText = template.replace("{原价}", goods.getPrice().toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createContentPDD(String template, PDDGoodsDetail goods, String jumpLink, boolean coupon) {
        String commentText = template.replace("{原价}", MoneyBigDecimalUtil
                .div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100)).setScale(2).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createContentVIP(String template, VIPGoodsInfo goods, String jumpLink) {
        String commentText = template.replace("{在售价}", "" + BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMarketPrice())));
        commentText = commentText.replace("{链接}", jumpLink);
        commentText = commentText.replace("{折扣价}", "" + MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getVipPrice())));
        return deleteBlankLine(commentText);
    }
    @Override
    public void isCommonTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{店铺类型}", "{商品原价}", "{月销量}", "{短链}", "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCommonTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{京东价}", "{商品原价}", "{月销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCommonTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{商品原价}", "{月销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCouponTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{领券短链}", "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCouponTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{京东价}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCouponTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{总销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isTaoLiJinTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{淘礼金面额}", "{优惠券价}", "{月销量}", "{领券短链}",
                "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    private String deleteBlankLine(String st) {
        return st.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public String createContentByTemplate(String template, Long uid, TaoBaoGoodsBrief goods, String token,
                                          String shortLink, boolean hasCoupon, Long tljId) {
        if (tljId != null) {
            // 计算推广红包
            String warningRate = configTaoLiJinService.getValueByKey("warning_value", new Date());
            BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{淘礼金面额}", BigDecimalUtil.getWithNoZera(spreadMoney).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
        if (!hasCoupon) {
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token).replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        } else {
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
    }
    @Override
    public String createContentByTemplateJD(String template, Long uid, JDGoods goods, String shortLink,
                                            boolean hasCoupon) {
        BigDecimal price = goods.getPrice();
        JDPingouInfo pinGouInfo = goods.getPinGouInfo();
        if (pinGouInfo != null) {
            price = pinGouInfo.getPingouPrice();
        }
        if (!hasCoupon) {
            template = template.replace("{标题}", goods.getSkuName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink);
        } else {
            template = template.replace("{标题}", goods.getSkuName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink)
                    .replace("{优惠券面额}",
                            BigDecimalUtil.getWithNoZera(JDUtil.getShowCouponInfo(goods).getDiscount()).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
        if (pinGouInfo != null) {
            template = template.replace("{京东价}", "拼购价");
        } else {
            template = template.replace("{京东价}", "京东价");
        }
        return template;
    }
    @Override
    public String createContentByTemplatePDD(String template, Long uid, PDDGoodsDetail goods, String shortLink,
                                             boolean hasCoupon, String token) {
        BigDecimal hundred = new BigDecimal(100);
        BigDecimal price = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred);
        if (!hasCoupon) {
            template = template.replace("{标题}", goods.getGoodsName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink);
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多,立即购买", "点击链接,打开拼多多,立即购买");
            } else {
                template = template.replace("{多多口令}", token);
            }
        } else {
            BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred);
            template = template.replace("{标题}", goods.getGoodsName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(amount).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多,免费领券", "点击链接,打开拼多多,免费领券");
            } else {
                template = template.replace("{多多口令}", token);
            }
        }
        return template;
    }
    @Override
    public void resetCommonTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareCouponTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCommonTemplateJD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareJDTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplateJD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareJDTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCommonTemplatePDD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setSharePDDTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplatePDD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setSharePDDTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCommonTemplateVIP(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareVIPTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplateVIP(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareVIPTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCommonTemplateSuNing(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareSuNingTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplateSuNing(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareSuNingTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetTaoLijinTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareTaoLiJinTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public String getRecommendText(boolean coupon, String title, String sales, String couponAmount, String description, SystemEnum system) {
        String template = configService.getValue(ConfigKeyEnum.quickShareGoodsText.getKey(), system);
        String recommendText = template.replace("[商品标题]", title);
        if (!coupon) {
            recommendText = recommendText.replace("推荐理由:[推荐语]", "");
            recommendText = recommendText.replace("优惠券:[券面额]元", "");
        } else {
            recommendText = recommendText.replace("[券面额]", couponAmount);
            if (!StringUtil.isNullOrEmpty(description)) {
                recommendText = recommendText.replace("[推荐语]", description);
            } else {
                recommendText = recommendText.replace("推荐理由:[推荐语]", "");
            }
        }
        if (StringUtil.isNullOrEmpty(sales) || sales.equals("0")) {
            recommendText = recommendText.replace("销量:[销量]", "");
        } else {
            recommendText = recommendText.replace("[销量]", sales.replace("万", "w"));
        }
        return recommendText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public String getCommentTextByTaoToken(boolean coupon, String taoToken, String zkPrice, String quanPrice, SystemEnum system) {
        String quickCommentText = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(), system);
        String commentText = quickCommentText.replace("[原价]", zkPrice);
        commentText = commentText.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoToken));
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        } else {
            commentText = commentText.replace("[券后价]", quanPrice);
        }
        return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public String getCommentTextByLink(boolean coupon, String link, String zkPrice, String quanPrice, ConfigKeyEnum keyEnum, SystemEnum system) {
        String quickCommentText = configService.getValue(keyEnum.getKey(), system);
        String commentText = quickCommentText.replace("[原价]", zkPrice);
        commentText = commentText.replace("[链接]", link);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        } else {
            commentText = commentText.replace("[券后价]", quanPrice);
        }
        return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public String createQuickShareTextSuNing(String template, SuningGoodsInfo goods, String jumpLink) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        String commentText = template.replace("[原价]", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
        commentText = commentText.replace("[链接]", jumpLink);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 有券
            BigDecimal amount = new BigDecimal(goods.getCouponInfo().getCouponValue());
            BigDecimal startFee = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            BigDecimal zkPrice = new BigDecimal(commodityPrice);
            if (zkPrice.compareTo(startFee) >= 0) {
                BigDecimal couponPrice = zkPrice.subtract(amount);
                commentText = commentText.replace("[券后价]", BigDecimalUtil.getWithNoZera(couponPrice).toString());
            } else {
                commentText = commentText.replace("[券后价]", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
            }
        } else {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createCommonShareTextSuNing(String template, SuningGoodsInfo goods, String jumpLink) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        String commentText = template.replace("{原价}", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 有券
            BigDecimal amount = new BigDecimal(goods.getCouponInfo().getCouponValue());
            BigDecimal startFee = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            BigDecimal zkPrice = new BigDecimal(commodityPrice);
            BigDecimal couponPrice = zkPrice;
            if (zkPrice.compareTo(startFee) >= 0) {
                couponPrice = zkPrice.subtract(amount);
                commentText = commentText.replace("{券后价}", BigDecimalUtil.getWithNoZera(couponPrice).toString());
            } else {
                commentText = commentText.replace("{券后价}", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
            }
        } else {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createCommonShareTextDY(String template, DYGoodsDetail goods, String jumpLink) {
        String commentText = template.replace("{原价}", BigDecimalUtil.getWithNoZera(DYUtil.getPrice(goods.getPrice())).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        commentText = commentText.replace("领券抢购", "抢购");
        commentText = commentText.replace("【券后价】{券后价}元", "");
        return deleteBlankLine(commentText);
    }
}