Administrator
2018-11-09 ecf03f89b06226588d9a0e6e7f6c58c42f3a85a3
fanli/src/main/java/com/yeshi/fanli/controller/client/RecommendController.java
@@ -9,26 +9,11 @@
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -36,7 +21,6 @@
import org.yeshi.utils.IPUtil;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.NumberUtil;
import org.yeshi.utils.taobao.TbImgUtil;
@@ -97,6 +81,7 @@
import com.yeshi.fanli.service.inter.homemodule.SuperSpecialService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
import com.yeshi.fanli.service.inter.monitor.MonitorService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
@@ -111,6 +96,7 @@
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.Utils;
import com.yeshi.fanli.util.factory.MonitorFactory;
import com.yeshi.fanli.util.taobao.TaoBaoCouponUtil;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
@@ -210,6 +196,8 @@
   @Resource
   private ShamUserService shamUserService;
   
   @Resource
   private MonitorService monitorService;
   @RequestMapping(value = "getrecommendsection")
   public void getRecommendSection(AcceptData acceptData, int index, PrintWriter out) {
@@ -767,7 +755,8 @@
   // 新版商品图文详情
   @RequestMapping(value = "getnewgoodsdetail", method = RequestMethod.POST)
   public void getNewGoodsDetail(AcceptData acceptData, String id, String uid, PrintWriter out) {
   public void getNewGoodsDetail(AcceptData acceptData, String id, String uid, HttpServletRequest request,
         PrintWriter out) {
      if ("0".equalsIgnoreCase(uid))
         uid = "";
      if (StringUtil.isNullOrEmpty(id)) {
@@ -864,12 +853,21 @@
               } catch (NumberFormatException e) {
                  e.printStackTrace();
               } catch (TaobaoGoodsDownException e) {
                  e.printStackTrace();
                  try {
                     monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, 0, "商品下架"));
                  } catch (Exception e1) {
                     e1.printStackTrace();
                  }
               }
            } else {
               try {
                  goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(id));
               } catch (TaobaoGoodsDownException e) {
                  try {
                     monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, 0, "商品下架"));
                  } catch (Exception e1) {
                     e1.printStackTrace();
                  }
                  // 商品下架
                  ThreadUtil.run(new Runnable() {
                     public void run() {
@@ -1399,7 +1397,8 @@
    *            -IOS的idfa广告标识信息
    */
   @RequestMapping(value = "guessLikeByDevice")
   public void guessUserLikeByDevice(AcceptData acceptData, String imei, String idfa, int page, PrintWriter out) {
   public void guessUserLikeByDevice(AcceptData acceptData, String imei, String idfa, int page,
         HttpServletRequest request, PrintWriter out) {
      int pageSize = Constant.PAGE_SIZE;
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
@@ -1412,7 +1411,6 @@
         if (!StringUtil.isNullOrEmpty(imei) || !StringUtil.isNullOrEmpty(idfa)) {
            long startTime = java.lang.System.currentTimeMillis();
            TaoBaoSearchResult result = TaoKeApiUtil.guessDeviceLike(page, 50, imei, idfa);
            LogHelper.test("首页为你推荐(淘宝)加载时间:" + (java.lang.System.currentTimeMillis() - startTime));
            if (result != null && result.getTaoBaoGoodsBriefs() != null) {
               // 筛选
@@ -1424,11 +1422,24 @@
                        && goods.getBiz30day() > 1000)
                     goodsList.add(goods);
               }
               try {
                  monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0,
                        (int) (java.lang.System.currentTimeMillis() - startTime), "推荐数量:" + goodsList.size()));
               } catch (Exception e) {
                  e.printStackTrace();
               }
               Collections.shuffle(goodsList);
               goodsList = goodsList.size() > 20 ? goodsList.subList(0, 20) : goodsList;
               for (TaoBaoGoodsBrief goods : goodsList) {
                  array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, proportion, fcRate, "")));
               }
            } else {
               try {
                  monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0,
                        (int) (java.lang.System.currentTimeMillis() - startTime), "无推荐"));
               } catch (Exception e) {
                  e.printStackTrace();
               }
            }
         }
@@ -1482,8 +1493,7 @@
            RecommendBannerV2 recommendBanner = superRecommendBanner.getRecommendBanner();
            // 淘特价暂时修改
            if (system.getId() == 7) {
               recommendBanner.getJumpDetail().setActivity(
                     recommendBanner.getJumpDetail().getActivity()
               recommendBanner.getJumpDetail().setActivity(recommendBanner.getJumpDetail().getActivity()
                           .replace("com.yeshi.ec.rebate.myapplication", "com.yeshi.ec.taospecial"));
            }
@@ -1560,9 +1570,9 @@
      out.print(JsonUtil.loadTrueResult(root));
   }
   
   /**
    * 商品基本详情 (1.4.0)
    *
    * @param acceptData
    * @param id
    * @param uid
@@ -1599,7 +1609,6 @@
      // 获取淘客参数
      ClientTBPid clientTBPid = null;
      
      if (StringUtil.isNullOrEmpty(uid)) {
         // 用户未登录
@@ -1642,7 +1651,6 @@
      }
      LogHelper.test("获取PID耗时:"   + (java.lang.System.currentTimeMillis() - startTime));
      
      final String clientPid = clientTBPid.getPid();
      final List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
@@ -1737,7 +1745,6 @@
         finalImgList.add(img);
      }
      
      JSONObject goods = new JSONObject();
      goods.put("auctionId", tb.getAuctionId());
      goods.put("imgList", finalImgList);
@@ -1745,7 +1752,6 @@
      goods.put("userType", tb.getUserType() == 1 ? 2 : 1);
      goods.put("price", tb.getReservePrice().toString());
      goods.put("zkPrice", tb.getZkPrice().toString());
      
      // 红包
      String rateStr = hongBaoManageService.get("hongbao_goods_proportion");
@@ -1764,14 +1770,14 @@
      if (StringUtil.isNullOrEmpty(uid)) {
         data.put("collected", false);
      } else {
         CollectionGoods collectionGoods =
               collectionGoodsService.findByUidAndAuctionId(Long.parseLong(uid), Long.parseLong(id));
         CollectionGoods collectionGoods = collectionGoodsService.findByUidAndAuctionId(Long.parseLong(uid),
               Long.parseLong(id));
         data.put("collected", collectionGoods != null ? true : false);
      }
      // 测试
      SystemClientParams params =
            systemClientParamsService.getSystemClientParamsBySystemAndKey(system, "goods_detail_jump_taobao");
      SystemClientParams params = systemClientParamsService.getSystemClientParamsBySystemAndKey(system,
            "goods_detail_jump_taobao");
      if ("1".equalsIgnoreCase((params.getValue() + "").trim())) {
         data.put("native", true);
      } else {
@@ -1798,11 +1804,13 @@
         if (convertInServer   && !StringUtil.isNullOrEmpty(tb.getCouponLink())) {
            couponInfo.put("couponUrl", tb.getCouponLink());
         } else {
            couponInfo.put("couponUrl",   TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId() + "", pid, tb.getAuctionId() + ""));
            couponInfo.put("couponUrl",
                  TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId() + "", pid, tb.getAuctionId() + ""));
         }
         
         couponInfo.put("couponAmount", NumberUtil.subZeroAndDot(tb.getCouponAmount().toString()));
         couponInfo.put("couponTime", "使用期限:"   + tb.getCouponEffectiveStartTime().replace("-", ".") + "-" + tb.getCouponEffectiveEndTime().replace("-", "."));
         couponInfo.put("couponTime", "使用期限:" + tb.getCouponEffectiveStartTime().replace("-", ".") + "-"
               + tb.getCouponEffectiveEndTime().replace("-", "."));
         goods.put("couponInfo", couponInfo);
         
         // 领券人列表
@@ -1814,7 +1822,8 @@
      String jumpUrl = "https://item.taobao.com/item.htm?id="   + tb.getAuctionId();
      
      if (!StringUtil.isNullOrEmpty(tb.getCouponActivityId())) {// 有券,跳转券链接
         jumpUrl = TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId(), clientTBPid.getPid(), "" + tb.getAuctionId());
         jumpUrl = TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId(), clientTBPid.getPid(),
               "" + tb.getAuctionId());
      }
      // 设置跳转链接
@@ -1856,8 +1865,7 @@
            ScanHistory sh = TaoBaoUtil.getScanHistory(goodsInfo);
            sh.setId(0);
            sh.setDevice(acceptData.getDevice());
            sh.setSystem(systemService.getSystem(acceptData.getPlatform(),
                  acceptData.getPackages()));
            sh.setSystem(systemService.getSystem(acceptData.getPlatform(), acceptData.getPackages()));
            sh.setCreatetime(new Date());
            if (!StringUtil.isNullOrEmpty(tempUid)) {
               sh.setUid(Long.parseLong(tempUid));
@@ -1871,9 +1879,9 @@
      });
   }
   /**
    * 获取图文详情(1.4.0)
    *
    * @param acceptData
    * @param id
    * @param out
@@ -1921,6 +1929,7 @@
   
   /**
    * 商品详情推荐1.4.0
    *
    * @param acceptData
    * @param id
    * @param out
@@ -2016,7 +2025,6 @@
            
      });
      List<TaoBaoGoodsBrief> listQuality = new ArrayList<TaoBaoGoodsBrief>();
      
      try {
@@ -2051,7 +2059,6 @@
      } catch (Exception e2) {
         e2.printStackTrace();
      }
      
      // 取偶数个数据
      if (listExtra.size() % 2 != 0) {