yujian
2020-01-18 f4a0f2acc63d7785eab108419a4e16f5f688cb95
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -3,10 +3,13 @@
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.json.simple.JSONArray;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -14,20 +17,27 @@
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
import com.yeshi.fanli.dto.ConfigParamsDTO;
import com.yeshi.fanli.dto.jd.JDCategoryInfo;
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
import com.yeshi.fanli.dto.pdd.PDDPromotionUrl;
import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.ShamUser;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserMoneyExtra;
import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.jd.JDGoodsClass;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.system.SystemClientParams;
import com.yeshi.fanli.entity.taobao.ClientTBPid;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TLJFreeBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoShop;
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
@@ -36,33 +46,40 @@
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsUpdateException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.config.SystemClientParamsService;
import com.yeshi.fanli.service.inter.goods.CollectionGoodsV2Service;
import com.yeshi.fanli.service.inter.goods.ScanHistoryV2Service;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.jd.JDGoodsClassService;
import com.yeshi.fanli.service.inter.money.UserMoneyExtraService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.inter.redpack.UserTaoLiJinNewbiesService;
import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService;
import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService;
import com.yeshi.fanli.service.inter.user.ShamUserService;
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserGoodsStorageService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyExtraService;
import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
@@ -74,17 +91,17 @@
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.taobao.TaoLiJinUtil;
import com.yeshi.fanli.vo.goods.CouponInfoVO;
import com.yeshi.fanli.vo.goods.GoodsDetailExtraVO;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.goods.MoneyInfoVO;
import com.yeshi.fanli.vo.goods.OtherInfo;
import com.yeshi.fanli.vo.goods.RewardCouponVO;
import com.yeshi.fanli.vo.goods.ShareVO;
import com.yeshi.fanli.vo.goods.ShopInfoVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.tlj.NewUserHongBao;
import com.yeshi.fanli.vo.tlj.ReduceHongBao;
import com.yeshi.fanli.vo.tlj.SpreadHongBao;
import net.sf.json.JSONObject;
@@ -126,7 +143,7 @@
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
   @Resource
   private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   @Resource
   private HongBaoManageService hongBaoManageService;
@@ -138,13 +155,7 @@
   private UserGoodsStorageService userGoodsStorageService;
   @Resource
   private UserTaoLiJinOriginService userTaoLiJinOriginService;
   @Resource
   private ConfigTaoLiJinService configTaoLiJinService;
   @Resource
   private UserTaoLiJinRecordService userTaoLiJinRecordService;
   @Resource
   private UserInfoExtraService userInfoExtraService;
@@ -166,6 +177,27 @@
   @Resource
   private PinDuoDuoCacheUtil pinDuoDuoCacheUtil;
   @Resource
   private IntegralGetService integralGetService;
   @Resource
   private JumpDetailV2Service jumpDetailV2Service;
   @Resource
   private JDGoodsClassService jdGoodsClassService;
   @Resource
   private TLJFreeBuyGoodsService tljFreeBuyGoodsService;
   @Resource
   private UserTaoLiJinNewbiesService userTaoLiJinNewbiesService;
   @Resource
   private UserVIPInfoService userVIPInfoService;
   @Resource
   private UserVipConfigService userVipConfigService;
   /**
    * 淘宝商品详情
@@ -213,7 +245,7 @@
      LogHelper.test("获取PID耗时:" + (java.lang.System.currentTimeMillis() - startTime));
      final List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
      // final List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
      // 是否在服务端进行转链
      boolean convertInServer = configService.isConvertTaoBaoLinkInServer();
@@ -246,7 +278,6 @@
                  taoBaoGoodsUpdateService.offlineTaoBaoGoods(id);
               }
            });
         }
      } else {
@@ -283,7 +314,6 @@
      }
      if (goods != null) {
         goodsList.add(goods);
         final TaoBaoGoodsBrief newGoods = goods;
         ThreadUtil.run(new Runnable() {
            public void run() {
@@ -298,10 +328,7 @@
         });
      }
      TaoBaoGoodsBrief tb = null;
      if (goodsList.size() > 0) {
         tb = goodsList.get(0);
      }
      TaoBaoGoodsBrief tb = goods;
      if (tb == null) {
         out.print(JsonUtil.loadFalseResult(2, "商品不存在"));
@@ -312,25 +339,60 @@
         tb.setImgList(new ArrayList<>());
      }
      tb.getImgList().add(0, tb.getPictUrl());
      // tb.getImgList().add(0, tb.getPictUrl());
      List<String> finalImgList = new ArrayList<>();
      for (String img : tb.getImgList()) {
         finalImgList.add(TbImgUtil.getTBSizeImg(img, 600));
      }
      if (finalImgList.size() == 0) {
         finalImgList.add(tb.getPictUrl());
      }
      if (!StringUtil.isNullOrEmpty(tb.getPictUrlWhite()))
         finalImgList.add(0, tb.getPictUrlWhite());
      // 移除相同图片
      if (finalImgList.size() > 0)
         for (int i = 0; i < finalImgList.size(); i++) {
            if (i < finalImgList.size() - 1)
               if (TbImgUtil.getTBSizeImg(finalImgList.get(i), 600)
                     .equalsIgnoreCase(TbImgUtil.getTBSizeImg(finalImgList.get(i + 1), 600))) {
                  finalImgList.remove(i--);
               }
         }
      tb.setImgList(finalImgList);
      // 大淘客商品过滤
      try {
         goods = daTaoKeGoodsDetailService.filterTaoBaoGoods(goods);
         goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods);
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
      BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
      BigDecimal shareRate = hongBaoManageService.getShareRate();
      GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate, shareRate);
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
            acceptData.getVersion());
      GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
      if (goodsDetail != null && goodsDetail.getMoneyInfo() != null && userVIPInfoService.isVIP(uid)) {
         goodsDetail.getMoneyInfo().setFanliMoney(goodsDetail.getMoneyInfo().getMaxMoney());
         goodsDetail.getMoneyInfo().setShareMoney(
               "¥" + TaoBaoUtil.getGoodsHongBaoMoney(goods, hongBaoManageService.getVIPShareRate()));
         goodsDetail.getMoneyInfo().setRateInfo(goodsDetail.getMoneyInfo().getMaxRateInfo());
      }
      goodsDetail.getMoneyInfo()
            .setRateInfoHelpUrl(configService.get(ConfigKeyEnum.goodsDetailFanliRateHelpUrl.getKey()));
      if (TaoBaoUtil.isYUShou(goods)) {
         if (!StringUtil.isNullOrEmpty(goods.getPresaleDiscountFeeText())) {
            if (goodsDetail.getLabels() == null)
               goodsDetail.setLabels(new ArrayList<>());
            goodsDetail.getLabels().add(new ClientTextStyleVO(goods.getPresaleDiscountFeeText(), "#FF2B4E"));
         }
      }
      // 在标题添加优惠信息
      // 店铺信息
      TaoBaoShop shop = taoBaoShopService.getTaoBaoShop(id, goods.getSellerId());
@@ -354,7 +416,7 @@
      }
      extraVO.setTbPidInfo(clientTBPid);
      extraVO.setDetailUrl("http://apph5.yeshitv.com/apppage/goods_img.html?id=" + id);
      extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img.html?id=" + id);
      // 分享赚人提示
      MoneyInfoVO moneyInfo = goodsDetail.getMoneyInfo();
@@ -407,73 +469,7 @@
      boolean shareValid = true;
      int moneyType = 1;
      // 推广红包
      if (from != null && from.equals("taolijin")) {
         // 计算推广红包
         String warningRate = configTaoLiJinService.getValueByKey("warning_value");
         BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
         // 推广红包 不能小于1
         if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) {
            out.print(JsonUtil.loadFalseResult(2, "商品不存在"));
            return;
         }
         // 是否为新用户
         boolean isNewUser = userInfoExtraService.isNewUser(uid);
         if (isNewUser) {
            // 判定为老用户: 新人只要使用了新人红包,也就是那1块钱,那么,他看到的分享爆款中的商品-就只能分享。
            long countRecord = userTaoLiJinRecordService.countRecordByUid(uid);
            if (countRecord > 0) {
               isNewUser = false;
            }
         }
         SpreadHongBao spreadHongBao = new SpreadHongBao();
         if (isNewUser) {
            spreadHongBao.setMoney("1");
         } else {
            moneyType = 2;
            fanliValid = false;
            spreadHongBao.setMoney(spreadMoney.toString());
            ClientTextStyleVO textStyleVO1 = new ClientTextStyleVO();
            textStyleVO1.setContent("分享");
            textStyleVO1.setColor("#666666");
            ClientTextStyleVO textStyleVO2 = new ClientTextStyleVO();
            textStyleVO2.setContent("赚奖金");
            textStyleVO2.setColor("#F14242");
            ClientTextStyleVO textStyleVO3 = new ClientTextStyleVO();
            textStyleVO3.setContent(",好友");
            textStyleVO3.setColor("#666666");
            ClientTextStyleVO textStyleVO4 = new ClientTextStyleVO();
            textStyleVO4.setContent("领红包!");
            textStyleVO4.setColor("#F14242");
            List<ClientTextStyleVO> listText = new ArrayList<ClientTextStyleVO>();
            listText.add(textStyleVO1);
            listText.add(textStyleVO2);
            listText.add(textStyleVO3);
            listText.add(textStyleVO4);
            extraVO.setTip(listText);
         }
         spreadHongBao.setName("推广红包 ");
         spreadHongBao.setTip("当日领取,当日内使用,过期失效");
         OtherInfo otherInfo = new OtherInfo();
         otherInfo.setSpreadHongBao(spreadHongBao);
         goodsDetail.setOtherInfo(otherInfo);
         // 用户淘礼金
         UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid);
         if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) {
            extraVO.setUserTLJ(new BigDecimal(0).setScale(2).toString());
         } else {
            extraVO.setUserTLJ(userMoneyExtra.getTlj().setScale(2).toString());
         }
         helpLink = configTaoLiJinService.getValueByKey("share_goods_help_link");
      } else if (from != null && from.equals("taolijin_buy")) {
      if (from != null && from.equals("taolijin_buy")) {
         // 查询分享库
         TLJBuyGoods buyGoods = tljBuyGoodsService.selectByAuctionIdAndDay(id,
               TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"));
@@ -485,19 +481,83 @@
         moneyType = 2;
         fanliValid = true;
         shareValid = false;
         helpLink = configService.get("zigoulijian_nofanli_help");
         helpLink = configService.get(ConfigKeyEnum.zigoulijianNofanliHelp.getKey());
         String tljHongBao = TaoBaoUtil.getGoodsHongBaoMoney(goods, new BigDecimal(70)).toString();
         BigDecimal tljHongBao = TaoBaoUtil.getGoodsHongBaoMoney(goods, TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
         ReduceHongBao reduceHongBao = new ReduceHongBao();
         reduceHongBao.setLeft(buyGoods.getLeftHongBaoCount());
         reduceHongBao.setMoney(tljHongBao);
         reduceHongBao.setMoney(tljHongBao.toString());
         reduceHongBao.setName("付款立减 ");
         reduceHongBao.setTip("当日领取,当日内使用,过期失效");
         reduceHongBao.setTotal(buyGoods.getTotalHongBaoCount());
         OtherInfo otherInfo = new OtherInfo();
         otherInfo.setReduceHongBao(reduceHongBao);
         goodsDetail.setOtherInfo(otherInfo);
         // 1.6.5后改为福利价
         if (com.yeshi.fanli.util.VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
            if (goodsDetail.getCouponPrice() != null
                  && goodsDetail.getCouponPrice().compareTo(new BigDecimal(0)) > 0)
               goodsDetail.setCouponPrice(goodsDetail.getCouponPrice().subtract(tljHongBao));
            else
               goodsDetail.setZkPrice(goodsDetail.getZkPrice().subtract(tljHongBao));
         }
      } else if (from != null && from.equals("taolijin_free_buy")) {
         TLJFreeBuyGoods freeGoods = tljFreeBuyGoodsService.selectByAuctionIdAndDay(id,
               TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"));
         if (freeGoods == null) {
            out.print(JsonUtil.loadFalseResult(2, "免单商品已下架"));
            return;
         }
         fanliValid = true;
         shareValid = false;
         BigDecimal couponPrice = goodsDetail.getCouponPrice();
         if (couponPrice == null)
            couponPrice = goodsDetail.getZkPrice();
         NewUserHongBao newUserHongBao = new NewUserHongBao();
         newUserHongBao.setMoney(couponPrice.setScale(2).toString());
         newUserHongBao.setName("新人红包 ");
         newUserHongBao.setTip("当日领取,当日内使用,过期失效");
         newUserHongBao.setLeft(1);
         newUserHongBao.setTotal(1);
         OtherInfo otherInfo = new OtherInfo();
         otherInfo.setReduceHongBao(newUserHongBao);
         goodsDetail.setOtherInfo(otherInfo);
         // 专属标签
         List<ClientTextStyleVO> labels = new ArrayList<ClientTextStyleVO>();
         labels.add(new ClientTextStyleVO("新人专属", "#FE0014"));
         labels.add(new ClientTextStyleVO("实付0元", "#FF9600"));
         goodsDetail.setLabels(labels);
      } else {// 普通购买
         OtherInfo otherInfo = new OtherInfo();
         RewardCouponVO rewardCoupon = new RewardCouponVO();
         rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
         JSONObject params1 = new JSONObject();
         if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.get(ConfigKeyEnum.specialGuideRewardCouponLink.getKey()));
         else
            params1.put("url", userVipConfigService.getValueByKey("vip_link"));
         rewardCoupon.setMaxMoney(goodsDetail.getMoneyInfo().getMaxMoney());
         if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
            rewardCoupon.setDesc("返");
            params1.put("url", userVipConfigService.getValueByKey("vip_link"));
            rewardCoupon.getJumpDetail().setNeedLogin(true);
         } else
            rewardCoupon.setDesc("用返利奖励券最高返");
         rewardCoupon.setParams(params1.toString());
         otherInfo.setRewardCoupon(rewardCoupon);
         if ("ios".equalsIgnoreCase(acceptData.getPlatform())
               && configService.iosOnLining(Integer.parseInt(acceptData.getVersion())))
            otherInfo.setRewardCoupon(null);
         goodsDetail.setOtherInfo(otherInfo);
      }
      extraVO.setFanliValid(fanliValid);
@@ -510,7 +570,7 @@
      // 分享路径
      if (StringUtil.isNullOrEmpty(helpLink)) {
         helpLink = configService.get("no_rebate_help_link");
         helpLink = configService.get(ConfigKeyEnum.noRebateHelpLink.getKey());
      }
      // 分享路径
@@ -575,16 +635,82 @@
      // 保存缓存
      jdGoodsCacheUtil.saveGoodsInfo(jdGoods);
      BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
      BigDecimal shareRate = hongBaoManageService.getShareRate();
      GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertJDGoods(jdGoods, fanLiRate, shareRate);
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
            acceptData.getVersion());
      GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertJDGoods(jdGoods, paramsDTO);
      if (goodsDetail != null && goodsDetail.getMoneyInfo() != null && userVIPInfoService.isVIP(uid)) {
         goodsDetail.getMoneyInfo().setFanliMoney(goodsDetail.getMoneyInfo().getMaxMoney());
         goodsDetail.getMoneyInfo()
               .setShareMoney("¥" + JDUtil.getGoodsFanLiMoney(jdGoods, hongBaoManageService.getVIPShareRate()));
         goodsDetail.getMoneyInfo().setRateInfo(goodsDetail.getMoneyInfo().getMaxRateInfo());
      }
      goodsDetail.getMoneyInfo()
            .setRateInfoHelpUrl(configService.get(ConfigKeyEnum.goodsDetailFanliRateHelpUrl.getKey()));
      // 附加信息
      OtherInfo otherInfo = new OtherInfo();
      // 京东plus返利
      String maxMoneyPlus = null;
      JDCategoryInfo categoryInfo = jdGoods.getCategoryInfo();
      if (categoryInfo != null && categoryInfo.getCid3() != null && jdGoods.getCommissionInfo() != null) {
         Long cid3 = categoryInfo.getCid3();
         JDGoodsClass threeClass = jdGoodsClassService.getThreeClassByCid(Integer.parseInt(cid3.toString()));
         if (threeClass != null && threeClass.getSelfComm() != null
               && threeClass.getSelfComm().compareTo(new BigDecimal(0)) > 0) {
            BigDecimal commissionShare = jdGoods.getCommissionInfo().getCommissionShare();
            // plus比例 小于正常比例
            if (commissionShare != null && commissionShare.compareTo(threeClass.getSelfComm()) > 0) {
               jdGoods.setCommissionPlus(threeClass.getSelfComm());
               // plus返利
               BigDecimal fanliMoneyPlus = JDUtil.getGoodsFanLiMoneyPlus(jdGoods,
                     hongBaoManageService.getFanLiRate());
               otherInfo.setFanliMoneyPlus("京东plus返¥" + fanliMoneyPlus);
               // 使用奖励券最高返
               if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
                  maxMoneyPlus = "(京东plus返¥"
                        + JDUtil.getGoodsFanLiMoneyPlus(jdGoods, hongBaoManageService.getVIPFanLiRate()) + ")";
               } else
                  maxMoneyPlus = "(京东plus最高返¥"
                        + fanliMoneyPlus.add(MoneyBigDecimalUtil.mul(fanliMoneyPlus, Constant.MAX_REWARD_RATE))
                        + ")";
            }
         }
      }
      // 奖励券返利
      RewardCouponVO rewardCoupon = new RewardCouponVO();
      rewardCoupon.setMaxMoneyPlus(maxMoneyPlus);
      rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
      JSONObject params1 = new JSONObject();
      if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
         params1.put("url", configService.get(ConfigKeyEnum.specialGuideRewardCouponLink.getKey()));
      else
         params1.put("url", userVipConfigService.getValueByKey("vip_link"));
      rewardCoupon.setMaxMoney(goodsDetail.getMoneyInfo().getMaxMoney());
      if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
         rewardCoupon.setDesc("返");
         params1.put("url", userVipConfigService.getValueByKey("vip_link"));
         rewardCoupon.getJumpDetail().setNeedLogin(true);
      } else {
         rewardCoupon.setDesc("用返利奖励券最高返");
      }
      rewardCoupon.setParams(params1.toString());
      otherInfo.setRewardCoupon(rewardCoupon);
      if ("ios".equalsIgnoreCase(acceptData.getPlatform())
            && configService.iosOnLining(Integer.parseInt(acceptData.getVersion())))
         otherInfo.setRewardCoupon(null);
      goodsDetail.setOtherInfo(otherInfo);
      CouponInfoVO couponInfo = goodsDetail.getCouponInfo();
      if (couponInfo != null) {
         // 券链接处理
         String materialId = "https://item.jd.com/" + id + ".html";
         String url = JDApiUtil.convertLink(materialId, couponInfo.getLink(), JDApiUtil.POSITION_COUPON + "",
               null);
         String url = JDApiUtil.convertLinkWithSubUnionId(materialId, couponInfo.getLink(),
               JDApiUtil.POSITION_COUPON + "", null);
         couponInfo.setLink(url);
      }
@@ -608,7 +734,7 @@
      List<ShamUser> listShareUser = new ArrayList<ShamUser>();
      // 京东开启分享
      String open = configService.get("share_jd_open");
      String open = configService.get(ConfigKeyEnum.shareOpenJD.getKey());
      if ("1".equals(open.trim())) {
         extraVO.setShareValid(true);
         MoneyInfoVO moneyInfo = goodsDetail.getMoneyInfo();
@@ -661,7 +787,7 @@
      extraVO.setFanliValid(true);
      if (StringUtil.isNullOrEmpty(helpLink)) {
         helpLink = configService.get("no_rebate_help_link");
         helpLink = configService.get(ConfigKeyEnum.noRebateHelpLink.getKey());
      }
      ShareVO shareInfoVO = new ShareVO();
@@ -711,13 +837,48 @@
         return;
      }
      BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
      BigDecimal shareRate = hongBaoManageService.getShareRate();
      GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertPDDGoods(pddGoods, fanLiRate, shareRate);
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
            acceptData.getVersion());
      GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertPDDGoods(pddGoods, paramsDTO);
      if (goodsDetail != null && goodsDetail.getMoneyInfo() != null && userVIPInfoService.isVIP(uid)) {
         goodsDetail.getMoneyInfo().setFanliMoney(goodsDetail.getMoneyInfo().getMaxMoney());
         goodsDetail.getMoneyInfo().setShareMoney(
               "¥" + PinDuoDuoUtil.getGoodsFanLiMoney(pddGoods, hongBaoManageService.getVIPShareRate()));
         goodsDetail.getMoneyInfo().setRateInfo(goodsDetail.getMoneyInfo().getMaxRateInfo());
      }
      goodsDetail.getMoneyInfo()
            .setRateInfoHelpUrl(configService.get(ConfigKeyEnum.goodsDetailFanliRateHelpUrl.getKey()));
      // 附加信息
      OtherInfo otherInfo = new OtherInfo();
      RewardCouponVO rewardCoupon = new RewardCouponVO();
      rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
      JSONObject params1 = new JSONObject();
      if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
         params1.put("url", configService.get(ConfigKeyEnum.specialGuideRewardCouponLink.getKey()));
      else
         params1.put("url", userVipConfigService.getValueByKey("vip_link"));
      rewardCoupon.setMaxMoney(goodsDetail.getMoneyInfo().getMaxMoney());
      if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
         rewardCoupon.setDesc("返");
         params1.put("url", userVipConfigService.getValueByKey("vip_link"));
         rewardCoupon.getJumpDetail().setNeedLogin(true);
      } else
         rewardCoupon.setDesc("用返利奖励券最高返");
      rewardCoupon.setParams(params1.toString());
      otherInfo.setRewardCoupon(rewardCoupon);
      if ("ios".equalsIgnoreCase(acceptData.getPlatform())
            && configService.iosOnLining(Integer.parseInt(acceptData.getVersion())))
         otherInfo.setRewardCoupon(null);
      goodsDetail.setOtherInfo(otherInfo);
      CouponInfoVO couponInfo = goodsDetail.getCouponInfo();
      PDDPromotionUrl convertUrl = null;
      if (couponInfo != null) {
         String url = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_COUPON + "", null);
         couponInfo.setLink(url);
         convertUrl = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_COUPON + "", null);
         if (convertUrl != null)
            couponInfo.setLink(convertUrl.getUrl());
      }
      ShopInfoVO shopInfo = goodsDetail.getShopInfo();
@@ -737,10 +898,15 @@
      }
      // 图文详情
      extraVO.setDetailUrl("http://apph5.yeshitv.com/apppage/goods_img_pdd.html?id=" + id);
      extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img_pdd.html?id=" + id);
      String salesTip = pddGoods.getSalesTip();
      if (!StringUtil.isNullOrEmpty(salesTip)) {
         int indexOf = salesTip.indexOf("+");
         if (indexOf > 0) {
            salesTip = salesTip.substring(0, indexOf);
         }
         int totalSales = 0;
         if (salesTip.contains("万")) {
            salesTip = salesTip.substring(0, salesTip.indexOf("万"));
@@ -776,12 +942,7 @@
         extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id, Constant.SOURCE_TYPE_PDD));
      }
      // 测试
      SystemClientParams params = systemClientParamsService.getSystemClientParamsBySystemAndKey(system,
            "goods_detail_jump_taobao");
      if ("1".equalsIgnoreCase((params.getValue() + "").trim())) {
         extraVO.setIsNative(true);
      }
      extraVO.setIsNative(true);
      // 分享路径
      String h5Url = String.format("http://%s%s?uid=%s&id=%s", configService.getH5Host(),
@@ -797,12 +958,17 @@
      extraVO.setShareValid(true);
      if (StringUtil.isNullOrEmpty(helpLink)) {
         helpLink = configService.get("no_rebate_help_link");
         helpLink = configService.get(ConfigKeyEnum.noRebateHelpLink.getKey());
      }
      ShareVO shareInfoVO = new ShareVO();
      shareInfoVO.setHelpLink(helpLink);
      extraVO.setShare(shareInfoVO);
      if (convertUrl != null) {
         extraVO.setCouponJumpLink(convertUrl.getUrl());
         extraVO.setNativeCouponJumpLink(PinDuoDuoUtil.getAndroidNativeURI(convertUrl.getUrl()));
      }
      JSONObject object = new JSONObject();
      object.put("extra", JsonUtil.getApiCommonGson().toJson(extraVO));
@@ -834,148 +1000,155 @@
         goodsType = Constant.SOURCE_TYPE_TAOBAO;
      }
      // 京东
      if (goodsType == Constant.SOURCE_TYPE_JD) {
         JSONObject data = new JSONObject();
         data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>()));
         List<JDGoods> list = JDUtil.getRecommendGoodsById(id);
         if (list == null) {
            list = new ArrayList<JDGoods>();
         } else if (list.size() > 10) {
            list = list.subList(0, 10);
         }
         BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
         BigDecimal shareRate = hongBaoManageService.getShareRate();
         List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>();
         for (JDGoods goods : list) {
            listDetailVO.add(GoodsDetailVOFactory.convertJDGoods(goods, fanLiRate, shareRate));
         }
         // 取偶数个数据
         if (listDetailVO.size() % 2 != 0) {
            listDetailVO.remove(listDetailVO.size() - 1);
         }
         data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO));
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
      // 拼多多
      if (goodsType == Constant.SOURCE_TYPE_PDD) {
         JSONObject data = new JSONObject();
         data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>()));
         List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>();
         List<Long> goodsIdList = PinDuoDuoUtil.getRecommendGoodsId(id);
         if (goodsIdList != null && goodsIdList.size() > 0) {
            PDDSearchFilter pddfilter = new PDDSearchFilter();
            pddfilter.setPage(1);
            pddfilter.setPageSize(Constant.PAGE_SIZE);
            Long[] strings = new Long[goodsIdList.size()];
            pddfilter.setGoodsIdList(goodsIdList.toArray(strings));
            PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter);
            if (result != null) {
               List<PDDGoodsDetail> goodsList = result.getGoodsList();
               if (goodsList != null && goodsList.size() > 0) {
                  if (goodsList.size() > 10) {
                     goodsList = goodsList.subList(0, 10);
                  }
                  BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
                  BigDecimal shareRate = hongBaoManageService.getShareRate();
                  for (PDDGoodsDetail goods : goodsList) {
                     listDetailVO.add(GoodsDetailVOFactory.convertPDDGoods(goods, fanLiRate, shareRate));
                  }
               }
            }
         }
         // 取偶数个数据
         if (listDetailVO.size() % 2 != 0) {
            listDetailVO.remove(listDetailVO.size() - 1);
         }
         data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO));
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
      List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.getRelationGoodsRecommend(id, 10);
      // 初始化
      if (goodsList == null) {
         goodsList = new ArrayList<TaoBaoGoodsBrief>();
      }
      List<GoodsDetailVO> listExtra = new ArrayList<GoodsDetailVO>();
      TaoKeAppInfo app = new TaoKeAppInfo();
      app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
      app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      app.setAdzoneId(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]);
      app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
      List<Long> ids = new ArrayList<>();
      for (TaoBaoGoodsBrief goods : goodsList)
         ids.add(goods.getAuctionId());
      try {
         goodsList = TaoKeApiUtil.getBatchGoodsInfo(ids);
      } catch (TaoKeApiException e1) {
         e1.printStackTrace();
      } catch (TaobaoGoodsDownException e1) {
         e1.printStackTrace();
      }
      if (goodsList != null && goodsList.size() > 0) {
         // 京东
         if (goodsType == Constant.SOURCE_TYPE_JD) {
            JSONObject data = new JSONObject();
            data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>()));
         BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
         BigDecimal shareRate = hongBaoManageService.getShareRate();
            List<JDGoods> list = JDUtil.getRecommendGoodsById(id);
            if (list == null) {
               list = new ArrayList<JDGoods>();
            } else if (list.size() > 10) {
               list = list.subList(0, 10);
            }
         goodsList.parallelStream().forEach(goods -> {
            if (goods != null) {
               // 获取详情
               TaoBaoGoodsBrief taoBaoGoodsBrief = null;
               try {
                  taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId());
               } catch (Exception e) {
                  e.printStackTrace();
               }
            ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
                  acceptData.getVersion());
            List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>();
               if (taoBaoGoodsBrief == null) {
                  TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app);
                  goods.setCouponInfo(newGoods.getCouponInfo());
                  goods.setCouponLink(newGoods.getCouponLink());
                  goods.setTkRate(newGoods.getTkRate());
                  taoBaoGoodsBrief = goods;
               }
            for (JDGoods goods : list) {
               listDetailVO.add(GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO));
            }
               if (taoBaoGoodsBrief != null) {
                  listExtra.add(GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate));
            // 取偶数个数据
            if (listDetailVO.size() % 2 != 0) {
               listDetailVO.remove(listDetailVO.size() - 1);
            }
            data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO));
            out.print(JsonUtil.loadTrueResult(data));
            return;
         }
         // 拼多多
         if (goodsType == Constant.SOURCE_TYPE_PDD) {
            JSONObject data = new JSONObject();
            data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>()));
            List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>();
            List<Long> goodsIdList = PinDuoDuoUtil.getRecommendGoodsId(id);
            if (goodsIdList != null && goodsIdList.size() > 0) {
               PDDSearchFilter pddfilter = new PDDSearchFilter();
               pddfilter.setPage(1);
               pddfilter.setPageSize(Constant.PAGE_SIZE);
               Long[] strings = new Long[goodsIdList.size()];
               pddfilter.setGoodsIdList(goodsIdList.toArray(strings));
               PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter);
               if (result != null) {
                  List<PDDGoodsDetail> goodsList = result.getGoodsList();
                  if (goodsList != null && goodsList.size() > 0) {
                     if (goodsList.size() > 10) {
                        goodsList = goodsList.subList(0, 10);
                     }
                     ConfigParamsDTO paramsDTO = hongBaoManageService
                           .getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion());
                     for (PDDGoodsDetail goods : goodsList) {
                        listDetailVO.add(GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO));
                     }
                  }
               }
            }
         });
      }
      List<GoodsDetailVO> listQuality = new ArrayList<GoodsDetailVO>();
      // 取偶数个数据
      if (listExtra.size() % 2 != 0) {
         listExtra.remove(listExtra.size() - 1);
      }
            // 取偶数个数据
            if (listDetailVO.size() % 2 != 0) {
               listDetailVO.remove(listDetailVO.size() - 1);
            }
      if (listQuality.size() % 2 != 0) {
         listQuality.remove(listQuality.size() - 1);
      }
            data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO));
            out.print(JsonUtil.loadTrueResult(data));
            return;
         }
      JSONObject data = new JSONObject();
      data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listExtra));
      data.put("listGuess", JsonUtil.getApiCommonGson().toJson(listQuality));
      out.print(JsonUtil.loadTrueResult(data));
         List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.guessLikeByAuctionId(id, 10);
         // 初始化
         if (goodsList == null) {
            goodsList = new ArrayList<TaoBaoGoodsBrief>();
         }
         List<GoodsDetailVO> listExtra = new ArrayList<GoodsDetailVO>();
         TaoKeAppInfo app = new TaoKeAppInfo();
         app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
         app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         app.setAdzoneId(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]);
         app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
         List<Long> ids = new ArrayList<>();
         for (TaoBaoGoodsBrief goods : goodsList)
            ids.add(goods.getAuctionId());
         try {
            goodsList = TaoKeApiUtil.getBatchGoodsInfo(ids);
         } catch (TaoKeApiException e1) {
         } catch (TaobaoGoodsDownException e1) {
         }
         if (goodsList != null && goodsList.size() > 0) {
            ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
                  acceptData.getVersion());
            goodsList.parallelStream().forEach(goods -> {
               if (goods != null) {
                  // 获取详情
                  TaoBaoGoodsBrief taoBaoGoodsBrief = null;
                  try {
                     taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId());
                  } catch (Exception e) {
                     e.printStackTrace();
                  }
                  if (taoBaoGoodsBrief == null) {
                     TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app);
                     goods.setCouponInfo(newGoods.getCouponInfo());
                     goods.setCouponLink(newGoods.getCouponLink());
                     goods.setTkRate(newGoods.getTkRate());
                     taoBaoGoodsBrief = goods;
                  }
                  if (taoBaoGoodsBrief != null) {
                     listExtra.add(GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO));
                  }
               }
            });
         }
         List<GoodsDetailVO> listQuality = new ArrayList<GoodsDetailVO>();
         // 取偶数个数据
         if (listExtra.size() % 2 != 0) {
            listExtra.remove(listExtra.size() - 1);
         }
         if (listQuality.size() % 2 != 0) {
            listQuality.remove(listQuality.size() - 1);
         }
         JSONObject data = new JSONObject();
         data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listExtra));
         data.put("listGuess", JsonUtil.getApiCommonGson().toJson(listQuality));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
         JSONObject data = new JSONObject();
         data.put("listQuality", new JSONArray());
         data.put("listGuess", new JSONArray());
         out.print(JsonUtil.loadTrueResult(data));
      }
   }
   /**
@@ -984,12 +1157,13 @@
    * @param acceptData
    * @param uid
    * @param id
    * @param couponUrl
    *            -优惠券链接
    * @param source
    * @param request
    * @param out
    */
   @RequestMapping(value = "getJDLink")
   public void getJDLink(AcceptData acceptData, Long uid, Long id, String source, PrintWriter out) {
   public void getJDLink(AcceptData acceptData, Long uid, Long id, String couponUrl, String source, PrintWriter out) {
      if (uid == null || uid <= 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
         return;
@@ -1012,13 +1186,44 @@
         return;
      }
      String couponUrl = null;
      String jumpLink = null;
      String materialId = "https://item.jd.com/" + id + ".html";
      JDCouponInfo couponInfo = goods.getCouponInfo();
      if (couponInfo != null) {
         couponUrl = couponInfo.getLink();
      if (StringUtil.isNullOrEmpty(couponUrl)) {
         JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(goods.getCouponInfoList(), goods.getPrice());
         if (couponInfo != null) {
            couponUrl = couponInfo.getLink();
         }
         jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_FANLI + "",
               uid + "");
      } else {
         jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_FANLI + "",
               uid + "");
      }
      String jumpLink = JDApiUtil.convertLink(materialId, couponUrl, JDApiUtil.POSITION_FANLI + "", uid + "");
      JSONObject data = new JSONObject();
      data.put("native", true);
      data.put("jumpLink", jumpLink);
      out.print(JsonUtil.loadTrueResult(data));
      // 获得金币
      integralGetService.addCouponRebate(uid);
   }
   @RequestMapping(value = "getJDCouponLink")
   public void getJDCouponLink(AcceptData acceptData, Long id, String couponUrl, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(couponUrl)) {
         out.print(JsonUtil.loadFalseResult(1, "券链接不能为空"));
         return;
      }
      if (id == null || id <= 0) {
         out.print(JsonUtil.loadFalseResult(1, "商品ID不能为空"));
         return;
      }
      String jumpLink = null;
      String materialId = "https://item.jd.com/" + id + ".html";
      jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_FANLI + "", null);
      JSONObject data = new JSONObject();
      data.put("native", true);
@@ -1060,11 +1265,15 @@
         return;
      }
      String jumpLink = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_FANLI + "", uid + "");
      PDDPromotionUrl convertUrl = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_FANLI + "", uid + "");
      JSONObject data = new JSONObject();
      data.put("native", true);
      data.put("jumpLink", jumpLink);
      data.put("jumpLink", convertUrl.getUrl());
      data.put("nativeJumpLink", PinDuoDuoUtil.getAndroidNativeURI(convertUrl.getUrl()));
      out.print(JsonUtil.loadTrueResult(data));
      // 获得金币
      integralGetService.addCouponRebate(uid);
   }
   /**
@@ -1123,4 +1332,93 @@
      }
      out.print(JsonUtil.loadTrueResult(data));
   }
   @RequestMapping(value = "listSimpleGoods", method = RequestMethod.POST)
   public void listSimpleGoods(AcceptData acceptData, String goodsInfo, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(goodsInfo)) {
         out.print(JsonUtil.loadFalseResult(1, "商品信息为空"));
         return;
      }
      net.sf.json.JSONArray array = net.sf.json.JSONArray.fromObject(goodsInfo);
      List<CommonGoods> commonGoodsList = new ArrayList<>();
      for (int i = 0; i < array.size(); i++) {
         JSONObject obj = array.optJSONObject(i);
         CommonGoods cg = new CommonGoods();
         cg.setGoodsId(obj.optLong("goodsId"));
         cg.setGoodsType(obj.optInt("goodsType"));
         commonGoodsList.add(cg);
      }
      if (commonGoodsList.size() > 9) {
         out.print(JsonUtil.loadFalseResult(1, "最多同时获取9条数据"));
         return;
      }
      // 分离各个平台的商品信息
      List<Long> tbGoodsList = new ArrayList<>();
      List<Long> jdGoodsList = new ArrayList<>();
      List<Long> pddGoodsList = new ArrayList<>();
      List<String> keyList = new ArrayList<>();
      for (CommonGoods cg : commonGoodsList) {
         keyList.add(cg.getGoodsId() + "-" + cg.getGoodsType());
         if (cg.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
            tbGoodsList.add(cg.getGoodsId());
         } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_JD) {
            jdGoodsList.add(cg.getGoodsId());
         } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
            pddGoodsList.add(cg.getGoodsId());
         }
      }
      Map<String, GoodsDetailVO> tempGoodsList = new HashMap<>();
      ConfigParamsDTO params = new ConfigParamsDTO(hongBaoManageService.getFanLiRate(),
            hongBaoManageService.getShareRate(), new BigDecimal(80), hongBaoManageService.getVIPFanLiRate());
      hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion());
      if (tbGoodsList.size() > 0) {
         List<TaoBaoGoodsBrief> goodsList = null;
         try {
            goodsList = TaoKeApiUtil.getBatchGoodsInfo(tbGoodsList);
         } catch (TaobaoGoodsDownException e) {
            e.printStackTrace();
         } catch (TaoKeApiException e) {
            e.printStackTrace();
         }
         if (goodsList != null)
            for (TaoBaoGoodsBrief goods : goodsList) {
               goods.setTkRate(new BigDecimal(0));
               tempGoodsList.put(goods.getAuctionId() + "-" + Constant.SOURCE_TYPE_TAOBAO,
                     GoodsDetailVOFactory.convertTaoBao(goods, params));
            }
      }
      if (jdGoodsList.size() > 0) {
         List<JDGoods> goodsList = JDApiUtil.getGoodsDetail(jdGoodsList);
         for (JDGoods goods : goodsList) {
            tempGoodsList.put(goods.getSkuId() + "-" + Constant.SOURCE_TYPE_JD,
                  GoodsDetailVOFactory.convertJDGoods(goods, params));
         }
      }
      if (pddGoodsList.size() > 0) {
         List<PDDGoodsDetail> goodsList = PinDuoDuoApiUtil.listGoodsDetail(pddGoodsList);
         for (PDDGoodsDetail goods : goodsList) {
            tempGoodsList.put(goods.getGoodsId() + "-" + Constant.SOURCE_TYPE_PDD,
                  GoodsDetailVOFactory.convertPDDGoods(goods, params));
         }
      }
      List<GoodsDetailVO> voList = new ArrayList<>();
      Gson gson = JsonUtil.getApiCommonGson();
      for (String key : keyList) {
         GoodsDetailVO vo = tempGoodsList.get(key);
         if (vo != null) {
            voList.add(vo);
         }
      }
      out.print(JsonUtil.loadTrueResult(gson.toJson(voList)));
   }
}