admin
2020-05-31 2a48f2bd979d56ce4114ba9d56efaf49bab705d7
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -27,6 +27,9 @@
import com.yeshi.fanli.dto.jd.JDPingouInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.share.ShareGoodsRecordDTO;
import com.yeshi.fanli.dto.suning.SuningGoodsImg;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import com.yeshi.fanli.dto.vip.VIPConvertResultDTO;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.share.UserShareGoodsGroup;
@@ -82,6 +85,8 @@
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.suning.SuningApiUtil;
import com.yeshi.fanli.util.suning.SuningUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.taobao.TaoLiJinUtil;
@@ -205,7 +210,7 @@
    * @param out
    */
   @RequestMapping(value = "createShareInfo")
   public void createShareInfo(AcceptData acceptData, Long uid, Long goodsId, String source, Integer totalNum,
   public void createShareInfo(AcceptData acceptData, Long uid, String goodsId, String source, Integer totalNum,
         Integer goodsType, Boolean needGoods, HttpServletRequest request, PrintWriter out) {
      if (uid == null || uid <= 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
@@ -228,32 +233,38 @@
         return;
      }
      if (goodsId == null || goodsId <= 0) {
      if (goodsId == null ) {
         out.print(JsonUtil.loadFalseResult(2, "商品ID不能为空"));
         return;
      }
      // 淘宝
      if (goodsType == null || goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         createTaoBaoShare(acceptData, uid, goodsId, totalNum, source, needGoods, request, out);
         createTaoBaoShare(acceptData, uid,Long.parseLong(goodsId), totalNum, source, needGoods, request, out);
         return;
      }
      // 京东
      if (goodsType == Constant.SOURCE_TYPE_JD) {
         createJDShare(acceptData, uid, goodsId, source, needGoods, out);
         createJDShare(acceptData, uid, Long.parseLong(goodsId), source, needGoods, out);
         return;
      }
      // 拼多多
      if (goodsType == Constant.SOURCE_TYPE_PDD) {
         createPDDShare(acceptData, uid, goodsId, source, needGoods, out);
         createPDDShare(acceptData, uid, Long.parseLong(goodsId), source, needGoods, out);
         return;
      }
      // 唯品会
      if (goodsType == Constant.SOURCE_TYPE_VIP) {
         createPDDShare(acceptData, uid, goodsId, source, needGoods, out);
         createVIPShare(acceptData, uid, Long.parseLong(goodsId), source, needGoods, out);
         return;
      }
      // 苏宁
      if (goodsType == Constant.SOURCE_TYPE_SUNING) {
         createSuningShare(acceptData, uid, goodsId, source, needGoods, out);
         return;
      }
@@ -673,7 +684,7 @@
         // 设置评论文本选项
         shareInfo.setCommentTextChoiceList(
               getCommentChoiceList(shareInfo.getCommentText(), null, inviteCode, TaoBaoUtil.getGoodsHongBaoMoney(
                     taoBaoLink.getGoods(), hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP))));
                     taoBaoLink.getGoods(), hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP),false)));
         out.print(JsonUtil.loadTrueResult(
               JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo)));
@@ -1048,13 +1059,17 @@
   }
   /**
    * 拼多多分享
    *
    * 唯品会分享
    * @Title: createVIPShare
    * @Description:
    * @param acceptData
    * @param uid
    * @param goodsId
    * @param source
    * @param out
    * @param needGoods
    * @param out
    * void 返回类型
    * @throws
    */
   public void createVIPShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods,
         PrintWriter out) {
@@ -1064,11 +1079,11 @@
         return;
      }
      String jumpLink = VipShopApiUtil.convertLink(goodsId + "", VipShopUtil.getShareChanTag(uid));
      VIPConvertResultDTO jumpLink = VipShopApiUtil.convertLink(goodsId + "", VipShopUtil.getShareChanTag(uid));
      ShareInfoVO shareInfo = new ShareInfoVO();
      shareInfo.setClickUrl(jumpLink);
      shareInfo.setWxErCode(jumpLink);
      shareInfo.setClickUrl(jumpLink.getUrl());
      shareInfo.setWxErCode(jumpLink.getUrl());
      shareInfo.setCommentTexts(new ArrayList<>());
      shareInfo.setRule(configService.get(ConfigKeyEnum.shareRuleLinkVIP.getKey()));
      shareInfo.setPictUrl(goods.getGoodsThumbUrl());
@@ -1081,7 +1096,7 @@
      }
      String template = shareGoodsTextTemplateService.getTextTemplateByVIP(uid);
      String shareText = shareGoodsTextTemplateService.createContentVIP(template, goods, jumpLink);
      String shareText = shareGoodsTextTemplateService.createContentVIP(template, goods, jumpLink.getUrl());
      shareInfo.setShareText(shareText);
      String descText = shareText.replace(goods.getGoodsName(), "").trim();
@@ -1132,7 +1147,7 @@
      String quickCommentText = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey());
      commentText = quickCommentText.replace("[原价]", goods.getMarketPrice());
      commentText = commentText.replace("[链接]", jumpLink);
      commentText = commentText.replace("[链接]", jumpLink.getUrl());
      commentText = commentText.replace("领券抢购", "抢购");
      commentText = commentText.replace("【券后价】[券后价]元", "");
@@ -1163,10 +1178,150 @@
            history.setQuanLink(null);
            history.setGoodsId(goodsId);
            history.setPostPicture(goods.getGoodsThumbUrl());
            history.setShareImg(jumpLink);
            history.setShareImg(jumpLink.getUrl());
            List<String> imgList = goods.getGoodsDetailPictures();
            if (imgList == null) {
               imgList = new ArrayList<>();
            }
            history.setPictures(JsonUtil.getGson().toJson(imgList));
            shareGoodsService.addShareGoodsHistory(history);
         }
      });
   }
   /**
    * 苏宁易购分享
    * @Title: createSuningShare
    * @Description:
    * @param acceptData
    * @param uid
    * @param goodsId
    * @param source
    * @param needGoods
    * @param out
    * void 返回类型
    * @throws
    */
   public void createSuningShare(AcceptData acceptData, Long uid, String goodsId, String source, boolean needGoods,
         PrintWriter out) {
      String[] sts = SuningUtil.getGoodsIdDetail(goodsId);
      SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(sts[1], sts[0]);
      if (goods == null) {
         out.print(JsonUtil.loadFalseResult(1, "该商品已下架"));
         return;
      }
      String couponLink = goods.getCouponInfo().getCouponUrl();
      String jumpLink = SuningApiUtil.convertLink(SuningUtil.getProductUrl(sts[0], sts[1]),
            StringUtil.isNullOrEmpty(couponLink) ? null : couponLink, SuningApiUtil.PID_SHARE, uid + "");
      ShareInfoVO shareInfo = new ShareInfoVO();
      shareInfo.setClickUrl(jumpLink);
      shareInfo.setWxErCode(jumpLink);
      shareInfo.setCommentTexts(new ArrayList<>());
      shareInfo.setRule(configService.get(ConfigKeyEnum.shareRuleLinkSuning.getKey()));
      if (goods.getCommodityInfo().getPictureUrl() != null && goods.getCommodityInfo().getPictureUrl().size() > 0)
         shareInfo.setPictUrl(goods.getCommodityInfo().getPictureUrl().get(0).getPicUrl());
      if (needGoods) {
         shareInfo
               .setGoodsInfo(GoodsDetailVOFactory.convertSuningGoods(goods,
                     new ConfigParamsDTO(hongBaoManageService.getFanLiRate(),
                           hongBaoManageService.getShareRate(), Constant.MAX_REWARD_RATE,
                           hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP))));
      }
      String template = shareGoodsTextTemplateService.getTextTemplateByVIP(uid);
      String shareText = shareGoodsTextTemplateService.createContentSuning(template, goods, jumpLink);
      shareInfo.setShareText(shareText);
      String descText = shareText.replace(goods.getCommodityInfo().getCommodityName(), "").trim();
      if (descText.startsWith("\\r\\n")) {
         descText = descText.substring(0);
      }
      shareInfo.setDescText(descText);
      //
      String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), acceptData.getPlatform(),
            Integer.parseInt(acceptData.getVersion()));
      JSONArray array = JSONArray.fromObject(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.goodsShareNotifySuning.getKey()));
      // 添加分享记录
      BigDecimal shareRate = hongBaoManageService.getShareRate();
      BigDecimal shareMoney = SuningUtil.getGoodsFanLiMoney(goods, shareRate);
      shareInfo.setShareMoney("¥" + shareMoney.toString());
      try {
         ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid,
               Long.parseLong(sts[1]), Constant.SOURCE_TYPE_SUNING, false);
         shareInfo.setShareId(shareRecord.getRedisKey());
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
      String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
      String commentText = "";
      String recommendText = "";
      String qtemplate = configService.get(ConfigKeyEnum.quickShareGoodsText.getKey());
      recommendText = qtemplate.replace("[商品标题]", goods.getCommodityInfo().getCommodityName());
      recommendText = recommendText.replace("推荐理由:[推荐语]", "");
      String quickCommentText = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey());
      commentText = quickCommentText.replace("[原价]", goods.getCommodityInfo().getCommodityPrice());
      commentText = commentText.replace("[链接]", jumpLink);
      commentText = commentText.replace("领券抢购", "抢购");
      commentText = commentText.replace("【券后价】[券后价]元", "");
      recommendText = recommendText.replace("优惠券:[券面额]元", "");
      shareInfo.setRecommendText(deleteBlankLine(recommendText));
      shareInfo.setCommentText(deleteBlankLine(commentText));
      // 设置评论文本选项
      shareInfo.setCommentTextChoiceList(getCommentChoiceList(null, shareInfo.getCommentText(), inviteCode,
            SuningUtil.getGoodsFanLiMoney(goods, hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP))));
      out.print(JsonUtil.loadTrueResult(
            JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo)));
      // 异步操作
      com.yeshi.fanli.util.ThreadUtil.run(new Runnable() {
         @Override
         public void run() {
            // 异步操作 添加分享记录
            UserShareGoodsHistory history = new UserShareGoodsHistory();
            history.setUser(new UserInfo(uid));
            history.setHongbao(shareMoney);
            history.setCreateTime(new Date());
            history.setGoodsType(Constant.SOURCE_TYPE_VIP);
            history.setTkCode(null);
            history.setLink(null);
            history.setQuanLink(null);
            history.setGoodsId(Long.parseLong(sts[1]));
            if (goods.getCommodityInfo().getPictureUrl() != null
                  && goods.getCommodityInfo().getPictureUrl().size() > 0)
               history.setPostPicture(goods.getCommodityInfo().getPictureUrl().get(0).getPicUrl());
            history.setShareImg(jumpLink);
            List<SuningGoodsImg> pictureList = goods.getCommodityInfo().getPictureUrl();
            List<String> imgList = new ArrayList<>();
            if (pictureList != null) {
               for (SuningGoodsImg gi : pictureList)
                  imgList.add(gi.getPicUrl());
            }
            history.setPictures(JsonUtil.getGson().toJson(imgList));
            shareGoodsService.addShareGoodsHistory(history);
@@ -1544,7 +1699,11 @@
      JSONArray array = new JSONArray();
      JSONObject data = new JSONObject();
      List<UserShareGoodsGroup> list = userShareGoodsGroupService.listByRecordId(recordId);
      boolean notBackSuVip = false;
      if (!VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), acceptData.getVersion()))
         notBackSuVip = true;
      List<UserShareGoodsGroup> list = userShareGoodsGroupService.listByRecordId(recordId, notBackSuVip);
      if (list == null || list.size() == 0) {
         data.put("title", "分享商品");
         data.put("count", 0);