| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | |
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | | |
| | |
|
| | | @Resource
|
| | | private HomeRecommendGoodsService homeRecommendGoodsService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private MonitorService monitorService;
|
| | |
|
| | |
| | |
|
| | | @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)
|
| | | *
|
| | |
| | | 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、邀请有奖
|
| | |
| | | }
|
| | |
|
| | | 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) {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | |
| | | /**
|
| | | * 限时秒杀 1.5.3
|
| | | *
|
| | |
| | | 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 + "")) {
|
| | |
| | | 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);
|
| | |
| | | // 缓存半个小时
|
| | | 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));
|
| | | }
|
| | | |
| | | |
| | | |
| | |
|
| | | /**
|
| | | * 根据设备信息获取猜你喜欢的内容
|
| | | *
|
| | |
| | | * @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();
|
| | |
| | | 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);
|
| | |
| | | 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()));
|
| | |
| | | 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));
|
| | | }
|
| | |
|
| | | }
|