yujian
2020-06-09 554de444b87aab5f93cb1593a8095612cf9479a7
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -233,14 +233,14 @@
         return;
      }
      if (goodsId == null ) {
      if (goodsId == null) {
         out.print(JsonUtil.loadFalseResult(2, "商品ID不能为空"));
         return;
      }
      // 淘宝
      if (goodsType == null || goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         createTaoBaoShare(acceptData, uid,Long.parseLong(goodsId), totalNum, source, needGoods, request, out);
         createTaoBaoShare(acceptData, uid, Long.parseLong(goodsId), totalNum, source, needGoods, request, out);
         return;
      }
@@ -684,7 +684,7 @@
         // 设置评论文本选项
         shareInfo.setCommentTextChoiceList(
               getCommentChoiceList(shareInfo.getCommentText(), null, inviteCode, TaoBaoUtil.getGoodsHongBaoMoney(
                     taoBaoLink.getGoods(), hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP),false)));
                     taoBaoLink.getGoods(), hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP), false)));
         out.print(JsonUtil.loadTrueResult(
               JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo)));
@@ -752,8 +752,10 @@
         couponUrl = couponInfo.getLink();
      }
      String materialId = "https://item.jd.com/" + goodsId + ".html";
      String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",
            uid + "");
      String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", uid + "");
      if (StringUtil.isNullOrEmpty(jumpLink)) {
         jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, JDApiUtil.POSITION_SHARE + "", uid + "");
      }
      ShareInfoVO shareInfo = new ShareInfoVO();
      shareInfo.setClickUrl(jumpLink);
@@ -858,6 +860,9 @@
      out.print(JsonUtil.loadTrueResult(
            JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo)));
   final String jumpLinkNew=jumpLink;
      // 异步操作
      final JDGoods goods = jdGoods;
      com.yeshi.fanli.util.ThreadUtil.run(new Runnable() {
@@ -874,7 +879,7 @@
            history.setQuanLink(null);
            history.setGoodsId(goodsId);
            history.setPostPicture(goods.getPicUrl());
            history.setShareImg(jumpLink);
            history.setShareImg(jumpLinkNew);
            List<String> imgList = goods.getImageList();
            if (imgList == null) {
@@ -1106,18 +1111,12 @@
      shareInfo.setDescText(descText);
      //
      String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), acceptData.getPlatform(),
      String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgsVIP.getKey(), acceptData.getPlatform(),
            Integer.parseInt(acceptData.getVersion()));
      JSONArray array = JSONArray.fromObject(imgs);
      shareInfo.setNotifyPicture(imgs);
      shareInfo.setNotifyPictureNew(imgs);
      shareInfo.setNotifyPicture(array.size() > 1 ? array.optString(1) : array.optString(0));
      // 2.0.7版本后的提示图片
      imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey());
      array = JSONArray.fromObject(imgs);
      shareInfo.setNotifyPictureNew(array.size() > 1 ? array.optString(1) : array.optString(0));
      shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotifyPDD.getKey()));
      shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotifyVIP.getKey()));
      // 添加分享记录
      BigDecimal shareRate = hongBaoManageService.getShareRate();
@@ -1142,17 +1141,15 @@
      String recommendText = "";
      String qtemplate = configService.get(ConfigKeyEnum.quickShareGoodsText.getKey());
      recommendText = qtemplate.replace("[商品标题]", goods.getGoodsName());
      recommendText = recommendText.replace("销量:[销量]", "");
      recommendText = recommendText.replace("推荐理由:[推荐语]", "");
      String quickCommentText = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey());
      commentText = quickCommentText.replace("[原价]", goods.getMarketPrice());
      commentText = commentText.replace("[链接]", jumpLink.getUrl());
      commentText = commentText.replace("领券抢购", "抢购");
      commentText = commentText.replace("【券后价】[券后价]元", "");
      recommendText = recommendText.replace("优惠券:[券面额]元", "");
      String quickCommentText = configService.get(ConfigKeyEnum.quickShareVIPCommentText.getKey());
      commentText = quickCommentText.replace("[在售价]", BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMarketPrice())).toString());
      commentText = commentText.replace("[链接]", jumpLink.getUrl());
      commentText = commentText.replace("[折扣价]", "" +MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getVipPrice())));
      shareInfo.setRecommendText(deleteBlankLine(recommendText));
      shareInfo.setCommentText(deleteBlankLine(commentText));
@@ -1183,6 +1180,11 @@
            if (imgList == null) {
               imgList = new ArrayList<>();
            }
            if (imgList.size() > 10) {
               imgList = imgList.subList(0, 9);
            }
            history.setPictures(JsonUtil.getGson().toJson(imgList));
            shareGoodsService.addShareGoodsHistory(history);
         }
@@ -1231,8 +1233,10 @@
                           hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP))));
      }
      String template = shareGoodsTextTemplateService.getTextTemplateByVIP(uid);
      String shareText = shareGoodsTextTemplateService.createContentSuning(template, goods, jumpLink);
      String template = shareGoodsTextTemplateService.getTextTemplateBySuNing(uid);
      //String shareText = shareGoodsTextTemplateService.createQuickShareTextSuNing(template, goods, jumpLink);
      String shareText = shareGoodsTextTemplateService.createCommonShareTextSuNing(template, goods, jumpLink);
      shareInfo.setShareText(shareText);
      String descText = shareText.replace(goods.getCommodityInfo().getCommodityName(), "").trim();
@@ -1274,6 +1278,11 @@
      String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
      String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
      if (StringUtil.isNullOrEmpty(commodityPrice)) {
         commodityPrice = goods.getCommodityInfo().getSnPrice();
      }
      String commentText = "";
      String recommendText = "";
      String qtemplate = configService.get(ConfigKeyEnum.quickShareGoodsText.getKey());
@@ -1281,14 +1290,45 @@
      recommendText = recommendText.replace("推荐理由:[推荐语]", "");
      String quickCommentText = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey());
      commentText = quickCommentText.replace("[原价]", goods.getCommodityInfo().getCommodityPrice());
      String quickCommentText = configService.get(ConfigKeyEnum.quickShareSuNingCommentText.getKey());
      commentText = quickCommentText.replace("[原价]", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
      commentText = commentText.replace("[链接]", jumpLink);
      commentText = commentText.replace("领券抢购", "抢购");
      commentText = commentText.replace("【券后价】[券后价]元", "");
      recommendText = recommendText.replace("优惠券:[券面额]元", "");
      String salesCountMidea = "";
      Integer count = Integer.parseInt(goods.getCommodityInfo().getMonthSales());
      if (count < 10000) {
         salesCountMidea = count + "";
      } else {
         double sales = count;
         salesCountMidea = String.format("%.1f", sales / 10000);
         salesCountMidea = salesCountMidea + "万";
      }
      if (StringUtil.isNullOrEmpty(salesCountMidea) || salesCountMidea.equals("0")) {
         recommendText = recommendText.replace("销量:[销量]", "");
      } else {
         recommendText = recommendText.replace("[销量]", salesCountMidea.replace("万", "w"));
      }
      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);
         }
         recommendText = recommendText.replace("[券面额]",
               BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getCouponInfo().getCouponValue())).toString());
         commentText = commentText.replace("[券后价]",BigDecimalUtil.getWithNoZera(couponPrice).toString());
      } else {
         commentText = commentText.replace("领券抢购", "抢购");
         commentText = commentText.replace("【券后价】[券后价]元", "");
         recommendText = recommendText.replace("优惠券:[券面额]元", "");
      }
      shareInfo.setRecommendText(deleteBlankLine(recommendText));
      shareInfo.setCommentText(deleteBlankLine(commentText));
@@ -1340,7 +1380,7 @@
    * @param out
    */
   @RequestMapping(value = "viewShareTextTemplate", method = RequestMethod.POST)
   public void viewShareTextTemplate(AcceptData acceptData, Long uid, String template, Integer goodsType, Long goodsId,
   public void viewShareTextTemplate(AcceptData acceptData, Long uid, String template, Integer goodsType, String goodsId,
         Long tljId, Boolean hasCoupon, PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
@@ -1352,23 +1392,28 @@
         return;
      }
      if (goodsType == null || goodsType > 3 || goodsType < 1) {
         out.print(JsonUtil.loadFalseResult(3, "平台类型不正确"));
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         createTaoBaoViewText(goodsType, uid, template, goodsId, tljId, hasCoupon, out);
         createTaoBaoViewText(goodsType, uid, template,Long.parseLong(goodsId) , tljId, hasCoupon, out);
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_JD) {
         createJDViewText(goodsType, uid, template, goodsId, hasCoupon, out);
         createJDViewText(goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out);
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_PDD) {
         createPDDViewText(goodsType, uid, template, goodsId, hasCoupon, out);
         createPDDViewText(goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out);
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_VIP) {
         createVIPViewText(goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out);
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_SUNING) {
         createSuNingViewText(goodsType, uid, template, goodsId, hasCoupon, out);
         return;
      }
   }
@@ -1535,6 +1580,79 @@
   }
   /**
    * 唯品会分享
    * @param goodsType
    * @param uid
    * @param template
    * @param goodsId
    * @param hasCoupon
    * @param out
    */
   private void createVIPViewText(Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon,
         PrintWriter out) {
      VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(goodsId + "");
      if (goods == null) {
         out.print(JsonUtil.loadFalseResult(4, "商品已下架"));
         return;
      }
      if (StringUtil.isNullOrEmpty(template)) {
         template = getShareTemplate(goodsType, uid, hasCoupon, null);
      }
      // 校验券模板是否正确
      try {
         shareGoodsTextTemplateService.verifyRightVIP(template);
      } catch (ShareGoodsTextTemplateException e) {
         out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
         return;
      }
      VIPConvertResultDTO jumpLink = VipShopApiUtil.convertLink(goodsId + "", VipShopUtil.getShareChanTag(uid));
      // 生成分享内容
      String content = shareGoodsTextTemplateService.createContentVIP(template, goods, jumpLink.getUrl());
      JSONObject data = new JSONObject();
      data.put("content", content);
      out.print(JsonUtil.loadTrueResult(data));
   }
   private void createSuNingViewText(Integer goodsType, Long uid, String template, String goodsId, Boolean hasCoupon,
         PrintWriter out) {
      String[] ids = SuningUtil.getGoodsIdDetail(goodsId);
      SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(ids[1], ids[0]);
      if (goods == null) {
         out.print(JsonUtil.loadFalseResult(4, "商品已下架"));
         return;
      }
      if (StringUtil.isNullOrEmpty(template)) {
         template = getShareTemplate(goodsType, uid, hasCoupon, null);
      }
      // 校验券模板是否正确
      try {
         shareGoodsTextTemplateService.verifyRightSuNing(template);
      } catch (ShareGoodsTextTemplateException e) {
         out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
         return;
      }
      String couponLink = goods.getCouponInfo().getCouponUrl();
      String jumpLink = SuningApiUtil.convertLink(SuningUtil.getProductUrl(ids[0], ids[1]),
            StringUtil.isNullOrEmpty(couponLink) ? null : couponLink, SuningApiUtil.PID_SHARE, uid + "");
      // 生成普通分享内容
      String content = shareGoodsTextTemplateService.createCommonShareTextSuNing(template, goods, jumpLink);
      JSONObject data = new JSONObject();
      data.put("content", content);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 获取分享模板
    * 
    * @param uid
@@ -1550,6 +1668,10 @@
         template = shareGoodsTextTemplateService.getTextTemplateByJD(uid);
      } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
         template = shareGoodsTextTemplateService.getTextTemplateByPDD(uid);
      } else if (goodsType == Constant.SOURCE_TYPE_VIP) {
         template = shareGoodsTextTemplateService.getTextTemplateByVIP(uid);
      } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
         template = shareGoodsTextTemplateService.getTextTemplateBySuNing(uid);
      }
      return template;
   }
@@ -1588,11 +1710,6 @@
    */
   @RequestMapping(value = "getShareTextTemplateRules", method = RequestMethod.POST)
   public void getShareTextTemplateRules(AcceptData acceptData, Integer goodsType, Long tljId, PrintWriter out) {
      if (goodsType == null || goodsType > 3 || goodsType < 1) {
         out.print(JsonUtil.loadFalseResult(3, "平台类型不正确"));
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         if (tljId != null) {
            out.print(
@@ -1604,6 +1721,10 @@
         out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesJD.getKey())));
      } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
         out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesPDD.getKey())));
      } else if (goodsType == Constant.SOURCE_TYPE_VIP) {
         out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesVIP.getKey())));
      } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
         out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesSuNing.getKey())));
      }
   }
@@ -1624,11 +1745,6 @@
         return;
      }
      if (goodsType == null || goodsType > 3 || goodsType < 1) {
         out.print(JsonUtil.loadFalseResult(3, "平台类型不正确"));
         return;
      }
      try {
         if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
            shareGoodsTextTemplateService.saveTemplateTB(uid, template);
@@ -1636,6 +1752,10 @@
            shareGoodsTextTemplateService.saveTemplateJD(uid, template);
         } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
            shareGoodsTextTemplateService.saveTemplatePDD(uid, template);
         } else if (goodsType == Constant.SOURCE_TYPE_VIP) {
            shareGoodsTextTemplateService.saveTemplateVIP(uid, template);
         } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
            shareGoodsTextTemplateService.saveTemplateSuNing(uid, template);
         }
      } catch (ShareGoodsTextTemplateException e) {
         out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
@@ -1654,15 +1774,10 @@
    * @param out
    */
   @RequestMapping(value = "resetShareTextTemplate", method = RequestMethod.POST)
   public void resetShareTextTemplate(AcceptData acceptData, Long uid, Long goodsId, Long tljId, Boolean hasCoupon,
   public void resetShareTextTemplate(AcceptData acceptData, Long uid, String goodsId, Long tljId, Boolean hasCoupon,
         Integer goodsType, PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      if (goodsType == null || goodsType > 3 || goodsType < 1) {
         out.print(JsonUtil.loadFalseResult(3, "平台类型不正确"));
         return;
      }
@@ -1672,6 +1787,10 @@
         shareGoodsTextTemplateService.resetCommonTemplateJD(uid);
      } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
         shareGoodsTextTemplateService.resetCommonTemplatePDD(uid);
      } else if (goodsType == Constant.SOURCE_TYPE_VIP) {
         shareGoodsTextTemplateService.resetCommonTemplateVIP(uid);
      } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
         shareGoodsTextTemplateService.resetCommonTemplateSuNing(uid);
      }
      if (goodsId != null) {
@@ -1796,7 +1915,7 @@
   }
   @RequestMapping(value = "getShareTextQuick", method = RequestMethod.POST)
   public void getShareTextQuick(AcceptData acceptData, Long goodsId, Integer goodsType, Long uid, PrintWriter out) {
   public void getShareTextQuick(AcceptData acceptData, String goodsId, Integer goodsType, Long uid, PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
@@ -1813,10 +1932,10 @@
      paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goodsId);
         TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(Long.parseLong(goodsId));
         if (goods == null) {
            try {
               goods = redisManager.getTaoBaoGoodsBrief(goodsId);
               goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsId));
            } catch (TaobaoGoodsDownException e) {
               goods = null;
            }
@@ -1825,15 +1944,26 @@
            goodsDetail = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
         }
      } else if (goodsType == Constant.SOURCE_TYPE_JD) {
         JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId);
         JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId));
         if (goods != null) {
            goodsDetail = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO);
         }
      } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
         PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
         PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(Long.parseLong(goodsId));
         if (goods != null) {
            goodsDetail = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
         }
      } else if (goodsType == Constant.SOURCE_TYPE_VIP) {
         VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(goodsId + "");
         if (goods == null) {
            goodsDetail = GoodsDetailVOFactory.convertVIPGoods(goods, paramsDTO);
         }
      } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
         String[] ids = SuningUtil.getGoodsIdDetail(goodsId);
         SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(ids[1], ids[0]);
         if (goods != null) {
            goodsDetail = GoodsDetailVOFactory.convertSuningGoods(goods, paramsDTO);
         }
      }
      if (goodsDetail == null) {