yujian
2019-08-27 d8359ddb48dab5cc797a9d552e11fde571f4920c
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
@@ -6,31 +6,27 @@
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yeshi.fanli.dto.jd.JDSearchResult;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.taobao.SearchFilter;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
@@ -40,18 +36,24 @@
import com.yeshi.fanli.service.inter.homemodule.SpecialService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.jd.JDGoodsService;
import com.yeshi.fanli.service.inter.lable.QualityFlashSaleService;
import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
import com.yeshi.fanli.service.inter.monitor.MonitorService;
import com.yeshi.fanli.service.inter.pdd.PDDGoodsService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.Utils;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.factory.MonitorFactory;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
@@ -74,13 +76,13 @@
   @Resource
   private RedisManager redisManager;
   @Resource
   private HomeRecommendGoodsService homeRecommendGoodsService;
   @Resource
   private ConfigService configService;
   @Resource
   private MonitorService monitorService;
@@ -92,20 +94,31 @@
   @Resource
   private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService;
   @Resource
   private JumpDetailV2Service jumpDetailV2Service;
   @Resource
   private DeviceSexService deviceSexService;
   @Resource
   private SpecialService specialService;
   @Resource
   private SwiperPictureService swiperPictureService;
   @Resource
   private JDGoodsService jdGoodsService;
   @Resource
   private PDDGoodsService pddGoodsService;
   @Resource
   private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
   @Resource
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   /**
    * 新版推荐专题管理(1.5.3)
    * 
@@ -122,10 +135,16 @@
         JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex);
         // 2、顶部轮播图
         List<SwiperPicture> topPicList = swiperPictureService.getByBannerCard("index_top");
         if (topPicList == null) {
            topPicList = new ArrayList<SwiperPicture>();
         List<SwiperPicture> oldtopPicList = swiperPictureService.getByBannerCard("index_top");
         List<SwiperPicture> topPicList = new ArrayList<>();
         if (oldtopPicList != null && oldtopPicList.size() > 0)
            topPicList.addAll(oldtopPicList);
         if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
            SwiperPicture notifyReName = swiperPictureService.selectByPrimaryKey(162L);
            if (notifyReName != null)
               topPicList.add(0, notifyReName);
         }
         root.put("topPicList", JsonUtil.getApiCommonGson().toJson(topPicList));
         // 3、邀请有奖
@@ -149,6 +168,8 @@
         }
         root.put("spikeGoods", getSpikeGoodsContent(acceptData));
         if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion()))
            root.put("scoreExchange", getScoreExchangeInfo(acceptData));
         out.print(JsonUtil.loadTrueResult(root));
      } catch (Exception e) {
@@ -160,9 +181,7 @@
         }
      }
   }
   /**
    * 限时秒杀 1.5.3
    * 
@@ -174,48 +193,35 @@
      JSONObject root = getSpikeGoodsContent(acceptData);
      out.print(JsonUtil.loadTrueResult(root));
   }
   private JSONObject getSpikeGoodsContent(AcceptData acceptData) {
      // 下一次倒计时的时间
      int type = qualityFlashSaleService.getNowType() + 1;
      int hour = 0;
      switch (type) {
      case 1:
         hour = 0;
         break;
      case 2:
         hour = 9;
         break;
      case 3:
         hour = 12;
         break;
      case 4:
         hour = 14;
         break;
      case 5:
         hour = 16;
         break;
      case 6:
         hour = 20;
         break;
      case 7:
         hour = 22;
         break;
      default:
         break;
      List<String> dtoList = DaTaoKeUtil.getDingDongQiangTime();
      long nowTime = System.currentTimeMillis();
      int dateNum = Integer.parseInt(TimeUtil.getGernalTime(nowTime, "ddHH"));
      String timeStr = null;
      int nextPos = 0;
      for (int i = 0; i < dtoList.size() - 1; i++) {
         if (dateNum >= Integer.parseInt(dtoList.get(i)) && dateNum < Integer.parseInt(dtoList.get(i + 1))) {
            timeStr = dtoList.get(i);
            nextPos = i + 1;
            break;
         }
      }
      if (timeStr == null)
         timeStr = dtoList.get(dtoList.size() - 1);
      Calendar nextTime = Calendar.getInstance();
      nextTime.set(Calendar.HOUR_OF_DAY, hour);
      nextTime.set(Calendar.MINUTE, 0);
      nextTime.set(Calendar.SECOND, 0);
      nextTime.set(Calendar.MILLISECOND, 0);
      long nextTime = nowTime + 1000 * 60 * 60L;// 默认为1小时
      if (nextPos < dtoList.size()) {
         nextTime = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTime, "yyyyMM") + dtoList.get(nextPos),
               "yyyyMMddHH");
      }
      JSONArray array = null;
      String timekey = String.format("spikeGoods_hour_new-%s-%s", acceptData.getPlatform(), acceptData.getVersion());
      String cachekey = String.format("spikeGoodsList_new-%s-%s", acceptData.getPlatform(), acceptData.getVersion());
      Calendar nowCalendar = Calendar.getInstance();
      nowCalendar.setTimeInMillis(nowTime);
      int hour = nowCalendar.get(Calendar.HOUR_OF_DAY);
      String timeValue = redisManager.getCommonString(timekey);
      if (timeValue == null || !timeValue.equals(hour + "")) {
@@ -226,34 +232,39 @@
            array = JSONArray.fromObject(cacheValue);
         }
      }
      JumpDetailV2 jumpDetail = jumpDetailV2Service.getByTypeCache("web");
      if (array == null) {
         array = new JSONArray();
         BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
         BigDecimal shareRate = hongBaoManageService.getShareRate();
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
               .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         // 缓存中不存在
         List<QualityFactory> listGoods = qualityGoodsService.listFlashSaleRandGoods();
         List<DaTaoKeDetailV2> listGoods = daTaoKeGoodsDetailV2Service.getDingDongQiangData(timeStr);
         if (listGoods == null) {
            listGoods = new ArrayList<QualityFactory>();
            listGoods = new ArrayList<>();
         }
         if (listGoods != null && listGoods.size() > 3)
            listGoods = listGoods.subList(0, 3);
         /* 遍历列表数据 */
         for (QualityFactory qualityFactory : listGoods) {
            TaoBaoGoodsBrief taoBaoGoodsBrief = qualityFactory.getTaoBaoGoodsBrief();
         for (DaTaoKeDetailV2 detail : listGoods) {
            TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(detail);
            if (taoBaoGoodsBrief == null) {
               continue;
            }
            GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate);
            GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate,
                  shareRate);
            JSONObject params = new JSONObject();
            params.put("url", configService.get("spike_goods_link") + "?id=" + taoBaoGoodsBrief.getAuctionId());
            JSONObject goods = new JSONObject();
            goods.put("goods", gson.toJson(detailVO));
            goods.put("params", params);
@@ -270,81 +281,110 @@
         // 缓存半个小时
         redisManager.cacheCommonString(cachekey, array.toString(), 60 * 30);
      }
      Long endTime = nextTime.getTimeInMillis() - java.lang.System.currentTimeMillis();
      // 获取今天的数据
      Long endTime = nextTime - nowTime;
      JSONObject root = new JSONObject();
      root.put("time", nextTime.getTimeInMillis());
      if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
         root.put("time", nextTime);
         root.put("endTime", endTime > 0 ? endTime : 0);
         JSONArray imgArray = new JSONArray();
         if (array != null)
            for (int i = 0; i < array.size(); i++) {
               imgArray.add(array.optJSONObject(i).optJSONObject("goods").optString("picUrl"));
            }
         root.put("imgList", imgArray);
         JSONObject params = new JSONObject();
         params.put("url", configService.get("spike_goods_link"));
         root.put("params", params);
         root.put("jumpDetail", jumpDetail);
         root.put("name", "限时秒杀");
         root.put("desc", "整点更新,好物抢购");
      } else {
         root.put("time", nextTime);
         root.put("endTime", endTime > 0 ? endTime : 0);
         root.put("listgoods", array);
         JSONObject params = new JSONObject();
         params.put("url", configService.get("spike_goods_link"));
         root.put("params", params);
         root.put("jumpDetail", jumpDetail);
      }
      root.put("time", nextTime);
      root.put("endTime", endTime > 0 ? endTime : 0);
      root.put("listgoods", array);
      JSONObject params = new JSONObject();
      params.put("url", configService.get("spike_goods_link"));
      root.put("params", params);
      root.put("jumpDetail", jumpDetail);
      return root;
   }
   /**
    * 金币兑换信息
    *
    * @param acceptData
    * @return
    */
   private JSONObject getScoreExchangeInfo(AcceptData acceptData) {
      JSONObject root = new JSONObject();
      JSONArray array = new JSONArray();
      array.add("http://img.flqapp.com/resource/integral/integral_home_icon_2.png");
      array.add("http://img.flqapp.com/resource/integral/integral_home_icon_1.png");
      root.put("imgList", array);
      JSONObject params = new JSONObject();
      params.put("balanceMore", true);
      root.put("params", params);
      root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("integralExchange",
            Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())));
      root.put("name", "金币兑换");
      root.put("desc", "每日签到,惊喜不停");
      root.put("tagImg", "http://img.flqapp.com/resource/score_exchange_tag.png");
      return root;
   }
   /**
    * 首页底部商品推荐
    *
    * @param acceptData
    * @param out
    */
   @RequestMapping(value = "getGoodList")
   public void getGoodList(AcceptData acceptData, Integer goodsType, Integer page,
         HttpServletRequest request, PrintWriter out) {
   public void getGoodList(AcceptData acceptData, Integer goodsType, Integer page, HttpServletRequest request,
         PrintWriter out) {
      if (goodsType == null || page == null) {
         out.print(JsonUtil.loadFalseResult("参数信息不正常"));
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         taoBaoGuessUserLikeByDevice(acceptData, page, request, out);
         return;
      }
      if (goodsType == Constant.SOURCE_TYPE_JD) {
      }
      if (goodsType == Constant.SOURCE_TYPE_PDD) {
      }
      List<QualityFactory> listQuery = qualityGoodsService.listFreeGoods((page - 1) * 20, 20);
      if (listQuery == null) {
         listQuery = new ArrayList<QualityFactory>();
      }
      JSONArray array = new JSONArray();
      if (listQuery.size() > 0) {
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
               .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
         BigDecimal shareRate = hongBaoManageService.getShareRate();
         for (QualityFactory qualityFactory : listQuery) {
            TaoBaoGoodsBrief goods = qualityFactory.getTaoBaoGoodsBrief();
            if (goods == null) {
               continue;
            }
            array.add(gson.toJson(GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate, shareRate)));
      try {
         if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
            taoBaoGuessUserLikeByDevice(acceptData, page, request, out);
            return;
         }
         if (goodsType == Constant.SOURCE_TYPE_JD) {
            getIndexJDGoods(acceptData, page, out);
            return;
         }
         if (goodsType == Constant.SOURCE_TYPE_PDD) {
            getIndexPDDGoods(acceptData, page, out);
            return;
         }
         out.print(JsonUtil.loadFalseResult("商品类型错误"));
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
         JSONObject data = new JSONObject();
         data.put("list", new JSONArray());
         data.put("count", 0);
         out.print(JsonUtil.loadTrueResult(data));
      }
      long count = qualityGoodsService.countFreeGoods();
      JSONObject root = new JSONObject();
      root.put("count", count);
      root.put("list", array);
      out.print(JsonUtil.loadTrueResult(root));
   }
   /**
    * 根据设备信息获取猜你喜欢的内容
    * 
@@ -354,16 +394,24 @@
    * @param idfa
    *            -IOS的idfa广告标识信息
    */
   public void taoBaoGuessUserLikeByDevice(AcceptData acceptData, int page, HttpServletRequest request, PrintWriter out) {
   public void taoBaoGuessUserLikeByDevice(AcceptData acceptData, int page, HttpServletRequest request,
         PrintWriter out) {
      int pageSize = Constant.PAGE_SIZE;
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
      String idfa = acceptData.getIdfa();
      String imei = acceptData.getImei();
      if (VersionUtil.greaterThan_1_5_70(acceptData.getPlatform(), acceptData.getVersion())) {
         List<TaoBaoGoodsBrief> goodsList = homeRecommendGoodsService.listGoodsByPage(null, acceptData.getDevice(),
               imei, idfa, page);
         if (page < 4) {// 前三页加入更新
            try {
               taoBaoGoodsUpdateService.addUpdateQueueAsync(goodsList);
            } catch (Exception e) {
            }
         }
         BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
         BigDecimal shareRate = hongBaoManageService.getShareRate();
@@ -385,20 +433,22 @@
               for (int i = list.size() - 1; i >= 0; i--) {
                  TLJBuyGoods goods = list.get(i);
                  BigDecimal rateBuy = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE;
                  GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), null, rateBuy, rateBuy);
                  String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(),TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
                  GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), null, rateBuy,
                        rateBuy);
                  String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(),
                        TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
                  ReduceHongBao reduceHongBao = new ReduceHongBao();
                  reduceHongBao.setLeft(goods.getLeftHongBaoCount());
                  reduceHongBao.setMoney(hongBao);
                  reduceHongBao.setName("付款立减 " + hongBao);
                  reduceHongBao.setName("付款立减 ");
                  reduceHongBao.setTip("");
                  reduceHongBao.setTotal(goods.getTotalHongBaoCount());
                  OtherInfo otherInfo = new OtherInfo();
                  otherInfo.setReduceHongBao(reduceHongBao);
                  detailVO.setOtherInfo(otherInfo);
                  detailVO.setPictureTag(new ClientTextStyleVO("立减TOP" + (i + 1), "#E5005C", "#FCE431", null));
                  detailVO.setRecommend(true);
@@ -438,20 +488,21 @@
               if (gList != null) {
                  BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
                  BigDecimal shareRate = hongBaoManageService.getShareRate();
                  for (TaoBaoGoodsBrief goods : gList) {
                     if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && goods.getCouponAmount() != null
                           && goods.getCouponAmount().compareTo(new BigDecimal("5")) >= 0
                           && goods.getBiz30day() > 1000
                           && !StringUtil.isNullOrEmpty(goods.getPictUrlWhite())) {
                        GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate, shareRate);
                        GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate,
                              shareRate);
                        detailVO.setRecommend(true);
                        goodsList.add(detailVO);
                     }
                  }
               }
               try {
                  monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0,
                        (int) (java.lang.System.currentTimeMillis() - startTime), "推荐数量:" + goodsList.size()));
@@ -488,142 +539,73 @@
      data.put("count", 1000);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 粘贴板信息推荐
    * 京东首页商品
    * 
    * @param acceptData
    * @param url
    *            商品链接
    * @param page
    * @param out
    */
   @RequestMapping(value = "getNewGoodsInfo", method = RequestMethod.POST)
   public void getNewGoodsInfo(AcceptData acceptData, String text, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(text)) {
         out.print(JsonUtil.loadFalseResult("值为空"));
         return;
      }
      if (text.length() > 256) {
         out.print(JsonUtil.loadFalseResult("值过长"));
         return;
      }
      TaoBaoGoodsBrief tb = null;
      String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
      Pattern p = Pattern.compile(URL_REGEX);
      Matcher matcher = p.matcher(text);
      if (!matcher.find()) {// 不包含链接
         // 商品详情
         // 发现
         // 没有链接,标题过长也不处理
         if (text.startsWith("【") && text.contains("】")) {
            int end = text.indexOf("】");
            if (end > 2)
               text = text.substring(1, end);
   private void getIndexJDGoods(AcceptData acceptData, int page, PrintWriter out) {
      JDSearchResult result = jdGoodsService.getIndexJDGoods(page);
      long count = 0;
      JSONObject data = new JSONObject();
      JSONArray array = new JSONArray();
      if (result != null) {
         PageEntity pageEntity = result.getPageEntity();
         if (pageEntity != null) {
            count = pageEntity.getTotalCount();
         }
         LogHelper.test("根据粘贴板推荐:"+text);
         if (text.length() > 80) {
            out.print(JsonUtil.loadFalseResult("值过长"));
            return;
         }
         SearchFilter sf = new SearchFilter();
         sf.setKey(text);
         JSONObject root = new JSONObject();
         TaoBaoSearchResult result = TaoBaoUtil.search(sf);
         if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0)
            for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
               // 是属于淘宝联盟商品
               if (goods.getTitle().equalsIgnoreCase(text)) {
                  root.put("type", 2);
                  JSONObject data = new JSONObject();
                  data.put("title", goods.getTitle());
                  root.put("data", data);
                  out.print(JsonUtil.loadTrueResult(root));
                  return;
               }
         List<JDGoods> goodsList = result.getGoodsList();
         if (goodsList != null && goodsList.size() > 0) {
            BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
            BigDecimal shareRate = hongBaoManageService.getShareRate();
            Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                  .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
            for (JDGoods goods : goodsList) {
               GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, fanLiRate, shareRate);
               array.add(gson.toJson(goodsDetailVO));
            }
         // 查询大淘客标题
         List<DaTaoKeDetail> list = daTaoKeGoodsDetailService.listByDtitle(text);
         if (list != null && list.size() > 0) {
            root.put("type", 2);
            JSONObject data = new JSONObject();
            data.put("title", list.get(0).getdTitle());
            root.put("data", data);
            out.print(JsonUtil.loadTrueResult(root));
            return;
         }
         out.print(JsonUtil.loadFalseResult("暂不支持该类型!"));
         return;
      }
      text = matcher.group();
      if (text.contains("ju.taobao.com") || text.contains(".juhuasuan.com")) {// 聚划算
         int index = text.indexOf("item_id");
         if (index < 0) {
            out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
            return;
      data.put("list", array);
      data.put("count", count);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 爆款排行商品-实时热销榜
    *
    * @param acceptData
    * @param page
    * @param out
    */
   private void getIndexPDDGoods(AcceptData acceptData, int page, PrintWriter out) {
      PDDGoodsResult result = pddGoodsService.getTopGoodsList(page, 1);
      int count = 0;
      JSONArray array = new JSONArray();
      if (result != null) {
         count = result.getTotalCount();
         Gson gson = JsonUtil.getApiCommonGson();
         List<PDDGoodsDetail> goodsList = result.getGoodsList();
         if (goodsList != null && goodsList.size() > 0) {
            BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
            BigDecimal shareRate = hongBaoManageService.getShareRate();
            for (PDDGoodsDetail goods : goodsList) {
               GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, fanLiRate, shareRate);
               array.add(gson.toJson(goodsDetailVO));
            }
         }
         text = text.substring(index);
         int last = text.indexOf("&");
         String id = "";
         if (last > 0)
            id = text.substring(text.indexOf("=") + 1, text.indexOf("&"));
         else {
            id = text.substring(text.indexOf("=" + 1));
         }
         tb = TaoBaoUtil.isAlimama(id);
         if (tb == null) {
            tb = TaoBaoUtil.parsePhoneTmAndTb(id);
         }
      } else if (text.contains("http://zmnxbc.com")) { // 手机端天猫APP分享
         tb = TaoBaoUtil.parsePhoneShareUrlByTM(text);
      } else if (text.contains("h5.m.taobao") || text.contains("detail.m.tmall") || text.contains("item.taobao")
            || text.contains("detail.tmall")) { // 手机页面和电脑页面
         Map<String, String> map = Utils.parseURL(text);
         String id = "";
         id = map.get("id").replace("}", "");
         tb = TaoBaoUtil.isAlimama(id);
         if (tb == null) {
            tb = TaoBaoUtil.parsePhoneTmAndTb(id);
         }
      } else {
         tb = TaoBaoUtil.parsePhoneShareUrlByTB(text);
      }
      if (tb != null) {
         JSONObject data = new JSONObject();
         JSONObject taoBaoGoodsJSON = new JSONObject();
         taoBaoGoodsJSON.put("title", tb.getTitle());
         taoBaoGoodsJSON.put("zkPrice", tb.getZkPrice());
         taoBaoGoodsJSON.put("auctionId", tb.getAuctionId());
         taoBaoGoodsJSON.put("url", "http://item.taobao.com/item.htm?id=" + tb.getAuctionId());
         data.put("taoBaoGoodsBrief", taoBaoGoodsJSON);
         if (!StringUtil.isNullOrEmpty(tb.getPictUrl())) {
            if (tb.getImgList() == null)
               tb.setImgList(new ArrayList<>());
            tb.getImgList().add(0, TbImgUtil.getTBSize220Img(tb.getPictUrl()));
         }
         data.put("tbImgs", tb.getImgList());
         JSONObject root = new JSONObject();
         root.put("type", 1);
         root.put("data", data);
         out.print(JsonUtil.loadTrueResult(root));
      }
      out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
      return;
      JSONObject data = new JSONObject();
      data.put("list", array);
      data.put("count", count);
      out.print(JsonUtil.loadTrueResult(data));
   }
}