admin
2019-09-22 b9f8ef2c4737b6e6be4b12fc8f7bafb033bfcfe5
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
@@ -20,13 +20,14 @@
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.Special;
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.jd.JDGoods;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
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;
@@ -35,27 +36,33 @@
import com.yeshi.fanli.service.inter.homemodule.DeviceSexService;
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.order.config.HongBaoManageService;
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.service.inter.taobao.dataoke.DaTaoKeGoodsService;
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.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;
import com.yeshi.fanli.vo.goods.OtherInfo;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.search.SearchKeyTOPVO;
import com.yeshi.fanli.vo.search.SearchKeyVO;
import com.yeshi.fanli.vo.tlj.ReduceHongBao;
import net.sf.json.JSONArray;
@@ -113,6 +120,12 @@
   @Resource
   private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
   @Resource
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   @Resource
   private DaTaoKeGoodsService daTaoKeGoodsService;
   /**
    * 新版推荐专题管理(1.5.3)
    * 
@@ -133,11 +146,6 @@
         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));
@@ -165,6 +173,9 @@
         if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion()))
            root.put("scoreExchange", getScoreExchangeInfo(acceptData));
         if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion()))
            root.put("searchDiscovery", getSearchDiscoveryInfo(acceptData));
         out.print(JsonUtil.loadTrueResult(root));
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult(1, "获取数据失败"));
@@ -189,44 +200,33 @@
   }
   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 + "")) {
@@ -237,6 +237,7 @@
            array = JSONArray.fromObject(cacheValue);
         }
      }
      JumpDetailV2 jumpDetail = jumpDetailV2Service.getByTypeCache("web");
      if (array == null) {
         array = new JSONArray();
@@ -248,15 +249,18 @@
               .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;
            }
@@ -282,11 +286,15 @@
         // 缓存半个小时
         redisManager.cacheCommonString(cachekey, array.toString(), 60 * 30);
      }
      Long endTime = nextTime.getTimeInMillis() - java.lang.System.currentTimeMillis();
      // 获取今天的数据
      Long endTime = nextTime - nowTime;
      JSONObject root = new JSONObject();
      if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
         root.put("time", nextTime.getTimeInMillis());
         root.put("time", nextTime);
         root.put("endTime", endTime > 0 ? endTime : 0);
         JSONArray imgArray = new JSONArray();
         if (array != null)
@@ -301,7 +309,7 @@
         root.put("name", "限时秒杀");
         root.put("desc", "整点更新,好物抢购");
      } else {
         root.put("time", nextTime.getTimeInMillis());
         root.put("time", nextTime);
         root.put("endTime", endTime > 0 ? endTime : 0);
         root.put("listgoods", array);
         JSONObject params = new JSONObject();
@@ -309,6 +317,10 @@
         root.put("params", params);
         root.put("jumpDetail", jumpDetail);
      }
      root.put("time", nextTime);
      root.put("endTime", endTime > 0 ? endTime : 0);
      root.put("listgoods", array);
      return root;
   }
@@ -323,10 +335,8 @@
      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");
      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);
@@ -337,6 +347,44 @@
      root.put("name", "金币兑换");
      root.put("desc", "每日签到,惊喜不停");
      root.put("tagImg", "http://img.flqapp.com/resource/score_exchange_tag.png");
      return root;
   }
   /**
    * 金币兑换信息
    *
    * @param acceptData
    * @return
    */
   private JSONObject getSearchDiscoveryInfo(AcceptData acceptData) {
      JSONArray array = new JSONArray();
      String keys = configService.getSearchDiscoveryKeys();
      if (!StringUtil.isNullOrEmpty(keys)) {
         JSONArray arrayKeys = JSONArray.fromObject(keys);
         for (int i = 0; i < arrayKeys.size(); i++) {
            String name = arrayKeys.get(i).toString();
            JSONObject params = new JSONObject();
            params.put("content", name);
            SearchKeyVO keyVO = new SearchKeyVO();
            keyVO.setName(name);
            keyVO.setParams(params.toString());
            array.add(keyVO);
         }
      }
      JSONObject params = new JSONObject();
      params.put("url", configService.get("search_discovery_h5_link"));
      JSONObject root = new JSONObject();
      root.put("picture", "http://img.flqapp.com/resource/home_search_found.png");
      root.put("params", params);
      root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("web",
            Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())));
      root.put("jumpResult", jumpDetailV2Service.getByTypeCache("search_goods_result",
            Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())));
      root.put("keyList", array);
      return root;
   }
@@ -603,4 +651,114 @@
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 搜索发现列表
    *
    * @param acceptData
    * @param uid
    * @param page
    * @param out
    */
   @RequestMapping(value = "getSearchDiscoveryTop")
   public void getSearchDiscoveryTop(AcceptData acceptData, Long uid, Integer page, String callback, PrintWriter out) {
      int count = 0;
      List<SearchKeyTOPVO> list = new ArrayList<SearchKeyTOPVO>();
      String keys = configService.getSearchDiscoveryKeys();
      if (!StringUtil.isNullOrEmpty(keys)) {
         JSONArray arrayKeys = JSONArray.fromObject(keys);
         if (arrayKeys != null && arrayKeys.size() > 0) {
            count = arrayKeys.size();
            BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
            BigDecimal shareRate = hongBaoManageService.getShareRate();
            int j = 1;
            for (int i = (page - 1) * 3; i < arrayKeys.size(); i++) {
               if (j > 3)
                  break;
               String words = arrayKeys.get(i).toString();
               List<GoodsDetailVO> listGoods = new ArrayList<GoodsDetailVO>();
               List<DaTaoKeDetailV2> listTaoKe = daTaoKeGoodsService.getSearchDiscoveryGoods(words);
               if (listTaoKe != null && listTaoKe.size() > 0) {
                  for (DaTaoKeDetailV2 daTaoKeDetailV2 : listTaoKe) {
                     listGoods.add(GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(daTaoKeDetailV2), null,
                           fanLiRate, shareRate));
                     if (listGoods.size() >= 3)
                        break;
                  }
               }
               SearchKeyTOPVO keyTOPVO = new SearchKeyTOPVO();
               keyTOPVO.setName(words);
               keyTOPVO.setListGoods(listGoods);
               list.add(keyTOPVO);
               j++;
            }
         }
      }
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      Gson gson = gsonBuilder.create();
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", gson.toJson(list));
      if (!StringUtil.isNullOrEmpty(callback)) {
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } else
         out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 获取专题渠道活动
    *
    * @param acceptData
    * @param uid
    * @param callback
    * @param out
    */
   @RequestMapping(value = "getSpecialChannelActivity")
   public void getSpecialChannelActivity(AcceptData acceptData, Long uid, String callback, PrintWriter out) {
      int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
      List<Special> list = specialService.listByPlaceKey("special_channel_activity", platformCode,
            Integer.parseInt(acceptData.getVersion()));
      long time = System.currentTimeMillis();
      // 删除尚未启用的过期的
      for (int i = 0; i < list.size(); i++) {
         Special special = list.get(i);
         if (special.getState() == 1L) {
            list.remove(i--);
         } else {
            if (special.getStartTime() != null && special.getEndTime() != null)
               special.setTimeTask(true);
            else
               special.setTimeTask(false);
            if (special.isTimeTask()) {
               if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
                  list.remove(i--);
               } else// 设置倒计时
               {
                  special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
               }
            }
         }
      }
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      Gson gson = gsonBuilder.create();
      JSONObject data = new JSONObject();
      data.put("count", list.size());
      data.put("list", gson.toJson(list));
      if (!StringUtil.isNullOrEmpty(callback)) {
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } else
         out.print(JsonUtil.loadTrueResult(data));
   }
}