| | |
| | | return; |
| | | } |
| | | } else if (commonGoods.getGoodsType() == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong( commonGoods.getGoodsId())); |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(commonGoods.getGoodsId()); |
| | | goodsDetail = GoodsDetailVOFactory.convertJDGoods(goodsInfo, params); |
| | | } else if (commonGoods.getGoodsType() == Constant.SOURCE_TYPE_PDD) { |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(commonGoods.getGoodsId()); |
| | |
| | | List<UserShareGoodsGroup> list = userShareGoodsRecordService.listByRecordId(shareId); |
| | | if (list != null && list.size() > 0) { |
| | | List<String> listIdTB = new ArrayList<>(); |
| | | List<Long> listIdJD = new ArrayList<Long>(); |
| | | List<String> listIdJD = new ArrayList<>(); |
| | | List<Long> listIdPDD = new ArrayList<Long>(); |
| | | |
| | | for (int i = 0; i < list.size(); i++) { |
| | |
| | | if (Constant.SOURCE_TYPE_TAOBAO == goodsType) { |
| | | listIdTB.add(commonGoods.getGoodsId()); |
| | | } else if (Constant.SOURCE_TYPE_JD == goodsType) { |
| | | listIdJD.add(Long.parseLong(commonGoods.getGoodsId())); |
| | | listIdJD.add(commonGoods.getGoodsId()); |
| | | } else if (Constant.SOURCE_TYPE_PDD == goodsType) { |
| | | listIdPDD.add(Long.parseLong(commonGoods.getGoodsId())); |
| | | } |
| | |
| | | if (listIdJD.size() > 0) { |
| | | try { |
| | | JDFilter filter = new JDFilter(); |
| | | filter.setListId(listIdJD); |
| | | filter.setListItemId(listIdJD); |
| | | filter.setPageIndex(1); |
| | | filter.setPageSize(100); |
| | | JDSearchResult result = JDApiUtil.queryByKey(filter); |
| | |
| | | |
| | | case Constant |
| | | .SOURCE_TYPE_JD: |
| | | JDGoods jdGoods = getJDGoods(Long.parseLong(goodsId)); |
| | | JDGoods jdGoods = getJDGoods(goodsId); |
| | | goodsDetailVO.setGoods(GoodsDetailVOLijinFactory.convertJDGoods(jdGoods, paramsDTO)); |
| | | extraVO.setDetailUrl("https://in.m.jd.com/product/jieshao/video/" + goodsId + ".html"); |
| | | ThreadUtil.run(new Runnable() { |
| | |
| | | return null; |
| | | } |
| | | |
| | | private JDGoods getJDGoods(Long id) { |
| | | private JDGoods getJDGoods(String id) { |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 高级接口 |
| | | if (jdGoods == null) { |
| | | jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页 |
| | | // jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页 |
| | | // jdGoods = JDApiUtil.getGoodsDetail(id); // 普通接口 |
| | | } |
| | | return jdGoods; |
| | |
| | | } |
| | | |
| | | |
| | | private boolean checkCanUsedJD(Long goodsId, BigDecimal priceLimit) { |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goods == null) |
| | | return false; |
| | | BigDecimal quanPrice = JDUtil.getCouponPrice(goods); |
| | | if (quanPrice.compareTo(priceLimit) <= 0) |
| | | return true; |
| | | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (jdGoods == null) { |
| | | jdGoods = JDApiUtil.getGoodsDetail(Long.parseLong(goodsId)); |
| | | jdGoods = JDApiUtil.getGoodsDetail(goodsId); |
| | | } |
| | | if (jdGoods == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "商品已下架")); |
| | |
| | | configService.getValue(ConfigKeyEnum.taobaoShareQrcodeText.getKey(), system), taoBaoLink.getGoods(), |
| | | TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); |
| | | } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsVO.getGoodsId())); |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsVO.getGoodsId()); |
| | | if (jdGoods == null) { |
| | | return null; |
| | | } |
| | |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getDetailJD") |
| | | public void getDetialJD(AcceptData acceptData, Long id, Long uid, String from, PrintWriter out) { |
| | | public void getDetialJD(AcceptData acceptData, String id, Long uid, String from, PrintWriter out) { |
| | | // uid=2255993L; |
| | | // 系统验证 |
| | | BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), |
| | |
| | | |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 高级接口 |
| | | if (jdGoods == null) { |
| | | jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页 |
| | | // jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页 |
| | | // jdGoods = JDApiUtil.getGoodsDetail(id); // 普通接口 |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | // 图文详情 |
| | | extraVO.setDetailUrl("https://in.m.jd.com/product/jieshao/video/" + id + ".html"); |
| | | extraVO.setDetailUrl("https://in.m.jd.com/product/jieshao/video/" + jdGoods.getSpuid() + ".html"); |
| | | |
| | | // 测试 |
| | | SystemClientParams params = systemClientParamsService.getSystemClientParamsBySystemAndKey(system, |
| | |
| | | * @param source |
| | | * @param out |
| | | */ |
| | | private void getJDLinkWithoutFanLi(AcceptData acceptData, Long id, String couponUrl, String source, PrintWriter out) { |
| | | private void getJDLinkWithoutFanLi(AcceptData acceptData, String id, String couponUrl, String source, PrintWriter out) { |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(id); |
| | | if (goods == null) { |
| | | out.print(JsonUtil.loadFalseResult(2, "商品已下架")); |
| | |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getJDLink") |
| | | public void getJDLink(AcceptData acceptData, Long uid, Long id, String couponUrl, String source, PrintWriter out) { |
| | | public void getJDLink(AcceptData acceptData, Long uid, String id, String couponUrl, String source, PrintWriter out) { |
| | | |
| | | |
| | | if (id == null || id <= 0) { |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | out.print(JsonUtil.loadFalseResult(1, "商品ID不能为空")); |
| | | return; |
| | | } |
| | |
| | | } |
| | | |
| | | String jumpLink = null; |
| | | String materialId = "https://item.jd.com/" + id + ".html"; |
| | | |
| | | String materialId = JDUtil.getMaterialId(id); |
| | | String pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.fanli); |
| | | |
| | | if (StringUtil.isNullOrEmpty(couponUrl)) { |
| | |
| | | } |
| | | |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(goodsId)); |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(goodsId); |
| | | if (goods == null) { |
| | | data.put("extend", false); |
| | | data.put("url", String.format("https://item.m.jd.com/product/%s.html", goodsId)); |
| | |
| | | |
| | | // 分离各个平台的商品信息 |
| | | List<String> tbGoodsList = new ArrayList<>(); |
| | | List<Long> jdGoodsList = new ArrayList<>(); |
| | | List<String> jdGoodsList = new ArrayList<>(); |
| | | List<Long> pddGoodsList = new ArrayList<>(); |
| | | |
| | | List<String> keyList = new ArrayList<>(); |
| | |
| | | if (cg.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | tbGoodsList.add(cg.getGoodsId()); |
| | | } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_JD) { |
| | | jdGoodsList.add(Long.parseLong(cg.getGoodsId())); |
| | | jdGoodsList.add(cg.getGoodsId()); |
| | | } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_PDD) { |
| | | pddGoodsList.add(Long.parseLong(cg.getGoodsId())); |
| | | } |
| | |
| | | if (jdGoodsList.size() > 0) { |
| | | List<JDGoods> goodsList = JDApiUtil.getGoodsDetail(jdGoodsList); |
| | | for (JDGoods goods : goodsList) { |
| | | tempGoodsList.put(goods.getSkuId() + "-" + Constant.SOURCE_TYPE_JD, |
| | | tempGoodsList.put(goods.getItemId() + "-" + Constant.SOURCE_TYPE_JD, |
| | | GoodsDetailVOFactory.convertJDGoods(goods, params)); |
| | | } |
| | | } |
| | |
| | | |
| | | boolean hasCoupon = false; |
| | | if (goodsId != null) { |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(goodsId)); |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(goodsId); |
| | | if (goods != null) { |
| | | count = 1; |
| | | goodsList.add(goods); |
| | |
| | | |
| | | // 京东 |
| | | if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | createJDShare(acceptData, uid, Long.parseLong(goodsId), source, needGoods, out); |
| | | createJDShare(acceptData, uid, goodsId, source, needGoods, out); |
| | | return; |
| | | } |
| | | |
| | |
| | | * @param source |
| | | * @param out |
| | | */ |
| | | public void createJDShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods, |
| | | public void createJDShare(AcceptData acceptData, Long uid, String goodsId, String source, boolean needGoods, |
| | | PrintWriter out) { |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (jdGoods == null) { |
| | |
| | | } |
| | | |
| | | if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | createJDViewText(acceptData.getSystem(), goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out); |
| | | createJDViewText(acceptData.getSystem(), goodsType, uid, template, goodsId, hasCoupon, out); |
| | | return; |
| | | } |
| | | |
| | |
| | | * @param hasCoupon |
| | | * @param out |
| | | */ |
| | | private void createJDViewText(SystemEnum system, Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, |
| | | private void createJDViewText(SystemEnum system, Integer goodsType, Long uid, String template, String goodsId, Boolean hasCoupon, |
| | | PrintWriter out) { |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goods == null) { |
| | |
| | | goodsDetail = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goods != null) { |
| | | goodsDetail = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); |
| | | } |
| | |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getJDGoodsDetail") |
| | | public void getJDGoodsDetail(final AcceptData acceptData, final Long id, String uid, String callback, |
| | | public void getJDGoodsDetail(final AcceptData acceptData, final String id, String uid, String callback, |
| | | PrintWriter out) { |
| | | if (id == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请上传id")); |
| | |
| | | } |
| | | |
| | | if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (jdGoods == null) { |
| | | jdGoods = JDApiUtil.getGoodsDetail(Long.parseLong(goodsId)); |
| | | jdGoods = JDApiUtil.getGoodsDetail(goodsId); |
| | | } |
| | | if (jdGoods == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "商品已下架")); |
| | |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getGoodsDetial") |
| | | public void getGoodsDetial(WXMPAcceptData acceptData, Long goodsId, Integer goodsType, String from, Long uid, |
| | | public void getGoodsDetial(WXMPAcceptData acceptData, String goodsId, Integer goodsType, String from, Long uid, |
| | | PrintWriter out) { |
| | | if (goodsType == null || goodsType < 2 || goodsType > 3) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数")); |
| | |
| | | |
| | | /*-------- 拼多多商品 -------*/ |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) { |
| | | getDetialPDD(acceptData, goodsId, uid, from, out); |
| | | getDetialPDD(acceptData, Long.parseLong(goodsId), uid, from, out); |
| | | return; |
| | | } |
| | | } |
| | |
| | | * @param from |
| | | * @param out |
| | | */ |
| | | private void getDetialJD(WXMPAcceptData acceptData, Long id, Long uid, String from, PrintWriter out) { |
| | | private void getDetialJD(WXMPAcceptData acceptData, String id, Long uid, String from, PrintWriter out) { |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 高级接口 |
| | | if (jdGoods == null) { |
| | | jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页 |
| | | // jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页 |
| | | // jdGoods = JDApiUtil.getGoodsDetail(id); // 普通接口 |
| | | } |
| | | |
| | |
| | | |
| | | String jumpLink = null; |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) { // 京东 |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goods == null) { |
| | | out.print(JsonUtil.loadFalseResult(2, "商品已下架")); |
| | | return; |
| | |
| | | } |
| | | |
| | | if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) { // 京东 |
| | | createPosterJD(acceptData, Long.parseLong(goodsId), goodsType, from, type, user, inviteCode, out); |
| | | createPosterJD(acceptData, goodsId, goodsType, from, type, user, inviteCode, out); |
| | | } else if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) { // 拼多多 |
| | | createPosterPDD(acceptData, goodsId, goodsType, from, type, user, inviteCode, out); |
| | | } else { |
| | |
| | | /** |
| | | * 创建京东分享海报 |
| | | */ |
| | | private void createPosterJD(WXMPAcceptData acceptData, Long goodsId, Integer goodsType, String from, Integer type, |
| | | private void createPosterJD(WXMPAcceptData acceptData, String goodsId, Integer goodsType, String from, Integer type, |
| | | UserInfo user, String inviteCode, PrintWriter out) { |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (jdGoods == null) { |
| | |
| | | } |
| | | } |
| | | if (!StringUtil.isNullOrEmpty(jdId)) { |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId)); |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(jdId); |
| | | if (goods != null) { |
| | | // 高级接口 -- 信息更完整 |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId)); |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(jdId); |
| | | if (jdGoods != null) { |
| | | commonGoods = CommonGoodsFactory.create(jdGoods); |
| | | } else { |
| | |
| | | private String keyword; // 关键字 |
| | | private String owner; // 商品类型:自营[g],POP[p] |
| | | private Integer isCoupon; // 是否是优惠券商品,1:有优惠券,0:无优惠券 |
| | | private List<Long> listId; // skuid集合(一次最多支持查询100个sku),数组类型开发时记得加[] |
| | | private List<String> listItemId; // skuid集合(一次最多支持查询100个sku),数组类型开发时记得加[] |
| | | private Double pricefrom; // 商品价格下限 |
| | | private Double priceto; // 商品价格上限 |
| | | private Integer commissionShareStart; // 佣金比例区间开始 |
| | |
| | | this.isCoupon = isCoupon; |
| | | } |
| | | |
| | | public List<Long> getListId() { |
| | | return listId; |
| | | public List<String> getListItemId() { |
| | | return listItemId; |
| | | } |
| | | |
| | | public void setListId(List<Long> listId) { |
| | | this.listId = listId; |
| | | public void setListItemId(List<String> listItemId) { |
| | | this.listItemId = listItemId; |
| | | } |
| | | |
| | | public Double getPricefrom() { |
| | |
| | | @Field |
| | | private String className; |
| | | @Field |
| | | private List<Long> skuList;// 商品列表 |
| | | private List<String> skuList;// 商品列表 |
| | | |
| | | public List<Long> getSkuList() { |
| | | public List<String> getSkuList() { |
| | | return skuList; |
| | | } |
| | | |
| | | public void setSkuList(List<Long> skuList) { |
| | | public void setSkuList(List<String> skuList) { |
| | | this.skuList = skuList; |
| | | } |
| | | |
| | |
| | | private String picUrl;// 商品图片 |
| | | private Integer isHot;// 是否爆款,1:是,0:否 |
| | | private Long spuid;// spuid,其值为同款商品的主skuid |
| | | private String itemId; |
| | | private String brandCode;// 品牌code |
| | | private String brandName;// 品牌名 |
| | | private String owner;// g=自营,p=pop |
| | |
| | | public void setCommissionPlus(BigDecimal commissionPlus) { |
| | | this.commissionPlus = commissionPlus; |
| | | } |
| | | |
| | | public String getItemId() { |
| | | return itemId; |
| | | } |
| | | |
| | | public void setItemId(String itemId) { |
| | | this.itemId = itemId; |
| | | } |
| | | } |
| | |
| | | package com.yeshi.fanli.job; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.service.inter.goods.jd.NYouHuiService; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import com.xxl.job.core.biz.model.ReturnT; |
| | | import com.xxl.job.core.handler.annotation.XxlJob; |
| | | import com.yeshi.fanli.entity.goods.jd.NYouHuiGoods; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.goods.jd.NYouHuiService; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | import com.yeshi.fanli.util.goods.jd.NYouHuiUtil; |
| | | import com.yeshi.fanli.util.jd.JDUtil; |
| | | import javax.annotation.Resource; |
| | | |
| | | /** |
| | | * 京东商品更新 |
| | |
| | | |
| | | @Resource |
| | | private NYouHuiService nyouHuiService; |
| | | |
| | | /** |
| | | * 更新内优惠最近几天的商品 |
| | | * |
| | | * @param param |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @XxlJob("nyhLatest2DayGoodsUpdateHandler") |
| | | public ReturnT<String> updateNYHLatest2DayGoods(String param) throws Exception { |
| | | long startTime = TimeUtil.convertToTimeTemp( |
| | | TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24L, "yyyy-MM-dd"), "yyyy-MM-dd"); |
| | | List<String> list = NYouHuiUtil.getClasses(); |
| | | for (String name : list) { |
| | | if (name.trim().equalsIgnoreCase("未分类")) |
| | | continue; |
| | | try { |
| | | List<NYouHuiGoods> goodsList = NYouHuiUtil.listByClassName(name, |
| | | StringUtil.isNullOrEmpty(param) ? 1 : Integer.parseInt(param)); |
| | | for (NYouHuiGoods goods : goodsList) { |
| | | try { |
| | | if (TimeUtil.convertToTimeTemp(goods.getPublishTime(), "yyyy-MM-dd") >= startTime) { |
| | | NYouHuiGoods old = nyouHuiService.selectByName(goods.getName()); |
| | | if (old == null |
| | | || TimeUtil.convertToTimeTemp(old.getPublishTime(), "yyyy-MM-dd") < startTime) { |
| | | NYouHuiGoods goodsDetail = NYouHuiUtil.getGoodsDetail(goods.getSourceUrl()); |
| | | List<Long> skuList = new ArrayList<>(); |
| | | for (String link : goodsDetail.getLinkList()) { |
| | | String skuId = JDUtil.getJDGoodsIdByUJD(link); |
| | | skuList.add(Long.parseLong(skuId)); |
| | | } |
| | | goodsDetail.setSkuId(skuList.get(0)); |
| | | goodsDetail.setSkuList(skuList); |
| | | goodsDetail.setClassName(name); |
| | | nyouHuiService.addGoods(goodsDetail); |
| | | Thread.sleep(2000 + (int) (Math.random() * 5) * 1000); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e, "京东-内优惠出错", goods.getSourceUrl()); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e, "京东-内优惠出错", name); |
| | | } |
| | | } |
| | | return ReturnT.SUCCESS; |
| | | } |
| | | |
| | | } |
| | |
| | | for (TaoBaoOrder order : list) { |
| | | tradeIds.add(order.getTradeId()); |
| | | } |
| | | if(tradeIds.isEmpty()){ |
| | | return; |
| | | } |
| | | List<TaoBaoOrderBackUp> orderBackUps = taoBaoOrderBackUpDao.listByIds(tradeIds); |
| | | List<TaoBaoOrder> orderList = new ArrayList<>(); |
| | | for (TaoBaoOrderBackUp backUp : orderBackUps) { |
| | |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | |
| | | } else if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_JD) { |
| | | String couponUrl = null; |
| | | |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsDetailVO.getGoodsId())); |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsDetailVO.getGoodsId()); |
| | | JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); |
| | | if (couponInfo != null) { |
| | | couponUrl = couponInfo.getLink(); |
| | |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetail = GoodsDetailVOFactory.convertJDGoods(goodsInfo, params); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | |
| | | } |
| | | |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goodsInfo != null) { |
| | | vo = GoodsDetailVOFactory.convertJDGoods(goodsInfo, paramsDTO); |
| | | } |
| | |
| | | } |
| | | break; |
| | | case "京东": { |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(id)); |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); |
| | | if (jdGoods != null && jdGoods.getImageList() != null) { |
| | | GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | goods = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); |
| | |
| | | return; |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getSkuId() + "", system); |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getItemId() + "", system); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | continue; |
| | | } |
| | |
| | | } |
| | | |
| | | private JDSearchResult filterGoods(JDSearchResult result) { |
| | | List<Long> skuIds = new ArrayList<>(); |
| | | List<String> skuIds = new ArrayList<>(); |
| | | if (result != null && result.getGoodsList() != null && result.getGoodsList().size() > 0) { |
| | | for (JDGoods goods : result.getGoodsList()) { |
| | | skuIds.add(goods.getSkuId()); |
| | | skuIds.add(goods.getItemId()); |
| | | } |
| | | List<JDGoods> goodsList = JDApiUtil.listGoodsDetail(skuIds); |
| | | result.setGoodsList(goodsList); |
| | |
| | | * @return |
| | | */ |
| | | private List<JDGoods> filterJDGoods(List<JDGoods> goodsList) { |
| | | List<Long> skuIds = new ArrayList<>(); |
| | | List<String> skuIds = new ArrayList<>(); |
| | | for (JDGoods goods : goodsList) { |
| | | skuIds.add(goods.getSkuId()); |
| | | skuIds.add(goods.getItemId()); |
| | | } |
| | | List<JDGoods> newGoodsList = JDApiUtil.listGoodsDetail(skuIds); |
| | | if (newGoodsList != null && newGoodsList.size() > 0) |
| | |
| | | cog.getGoodsType()); |
| | | if (commonGoodsList.size() <= 0)// 不存在就插入商品 |
| | | { |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(itemOrder.getSkuId()); |
| | | JDGoods goods = JDApiUtil.getGoodsDetail(itemOrder.getSkuId()+""); |
| | | if (goods == null) { |
| | | goods = JDUtil.getGoodsFromWeb(itemOrder.getSkuId()); |
| | | } |
| | |
| | | |
| | | if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | // 京东 |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(auctionId)); |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(auctionId); |
| | | if (jdGoods == null) { |
| | | jdGoods = JDApiUtil.getGoodsDetail(Long.parseLong( auctionId)); |
| | | jdGoods = JDApiUtil.getGoodsDetail( auctionId); |
| | | } |
| | | if (jdGoods == null) { |
| | | throw new UserGoodsStorageException(1, auctionId + "商品已下架"); |
| | |
| | | |
| | | CommonGoods convertGoods = null; |
| | | if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods jdGoods = redisManager.getJDGoods(Long.parseLong( goodsId)); |
| | | JDGoods jdGoods = redisManager.getJDGoods(goodsId); |
| | | if (jdGoods == null) { |
| | | throw new UserShareGoodsRecordException(1, "商品已下架"); |
| | | } |
| | |
| | | throw new UserCloudGoodsException(1, goodsId + "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { // 京东 |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong( goodsId)); |
| | | JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goods == null) |
| | | throw new UserCloudGoodsException(1, goodsId + "未找到商品信息"); |
| | | commonGoods = CommonGoodsFactory.create(goods); |
| | |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | sendJDGoods(user, robotId, wxId, Long.parseLong(goodsId), relationId, listOpen, result.getId()); |
| | | sendJDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | sendPDDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_VIP) { |
| | |
| | | * @param listOpen |
| | | * @throws UserCloudException |
| | | */ |
| | | private void sendJDGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId, |
| | | private void sendJDGoods(UserInfo user, int robotId, String wxId, String goodsId, String relationId, |
| | | List<UserCloudGroup> listOpen, String pid) throws UserCloudException { |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (jdGoods == null) |
| | |
| | | JDGoods jdGoods = null; |
| | | try { |
| | | // 防止高级接口被收回 |
| | | jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(simpleGoods.getGoodsId())); |
| | | jdGoods = JDApiUtil.queryGoodsDetail(simpleGoods.getGoodsId()); |
| | | } catch (Exception e) { |
| | | } |
| | | if (jdGoods == null) { |
| | | jdGoods = JDApiUtil.getGoodsDetail(Long.parseLong(simpleGoods.getGoodsId())); |
| | | jdGoods = JDApiUtil.getGoodsDetail(simpleGoods.getGoodsId()); |
| | | } |
| | | if (jdGoods != null) { |
| | | commonGoods = CommonGoodsFactory.create(jdGoods); |
| | |
| | | return JsonUtil.jsonToList(value, clazz); |
| | | } |
| | | |
| | | public JDGoods getJDGoods(long goodsId) { |
| | | public JDGoods getJDGoods(String goodsId) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.jingDongGoods, goodsId + ""); |
| | | String value = getCommonString(key); |
| | | if (StringUtil.isNullOrEmpty(value)) { |
| | |
| | | * @param goods |
| | | */ |
| | | public void saveGoodsInfo(JDGoods goods) { |
| | | if (goods == null || goods.getSkuId() == null) { |
| | | if (goods == null || goods.getItemId() == null) { |
| | | return; |
| | | } |
| | | // 保存20分钟 |
| | |
| | | * @param goodsId |
| | | * @return |
| | | */ |
| | | public JDGoods getGoodsInfo(long goodsId){ |
| | | public JDGoods getGoodsInfo(String goodsId){ |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.JDGoods, goodsId + ""); |
| | | String value = redisManager.getCommonString(key); |
| | | if (!StringUtil.isNullOrEmpty(value)) { |
| | |
| | | |
| | | JDGoods goods = JDApiUtil.queryGoodsDetail(goodsId); // 高级接口 |
| | | if (goods == null) { |
| | | goods = JDUtil.getGoodsDetail(goodsId); // 爬取网页 |
| | | // goods = JDUtil.getGoodsDetail(goodsId); // 爬取网页 |
| | | //jdGoods = JDApiUtil.getGoodsDetail(goodsId); // 普通接口 |
| | | } |
| | | |
| | |
| | | cg.setSellerName(shopInfo.getShopName() == null ? "" : shopInfo.getShopName()); |
| | | } |
| | | |
| | | cg.setGoodsId(goods.getSkuId()+""); |
| | | cg.setGoodsId(goods.getItemId()+""); |
| | | cg.setTitle(goods.getSkuName()); |
| | | cg.setGoodsType(CommonGoods.GOODS_TYPE_JD); |
| | | cg.setPicture(goods.getPicUrl()); |
| | |
| | | |
| | | public static CommonOrderGoods create(JDGoods jdGoods) { |
| | | CommonOrderGoods goods = new CommonOrderGoods(); |
| | | goods.setGoodsId(jdGoods.getSkuId() + ""); |
| | | goods.setGoodsId(jdGoods.getItemId() + ""); |
| | | goods.setCreateTime(new Date()); |
| | | goods.setGoodsType(Constant.SOURCE_TYPE_JD); |
| | | if (jdGoods.getImageList() != null && jdGoods.getImageList().size() > 0) |
| | |
| | | public static GoodsDetailVO convertJDGoods(JDGoods goods, GoodsMoneyConfigParamsDTO params) { |
| | | GoodsDetailVO goodsInfo = new GoodsDetailVO(); |
| | | goodsInfo.setGoodsType(Constant.SOURCE_TYPE_JD); |
| | | goodsInfo.setGoodsId(goods.getSkuId() + ""); |
| | | goodsInfo.setGoodsId(goods.getItemId() + ""); |
| | | goodsInfo.setTitle(goods.getSkuName()); |
| | | goodsInfo.setSalesType(1); // 默认月销量 |
| | | goodsInfo.setPicUrl(goods.getPicUrl()); |
| | |
| | | public static GoodsInfoVO convertJDGoods(JDGoods goods, GoodsMoneyConfigParamsDTO params) { |
| | | GoodsInfoVO goodsInfo = new GoodsInfoVO(); |
| | | goodsInfo.setGoodsType(Constant.SOURCE_TYPE_JD); |
| | | goodsInfo.setGoodsId(goods.getSkuId() + ""); |
| | | goodsInfo.setGoodsId(goods.getItemId() + ""); |
| | | goodsInfo.setTitle(goods.getSkuName()); |
| | | goodsInfo.setSalesType(1); // 默认月销量 |
| | | goodsInfo.setImgList(goods.getImageList()); |
| | |
| | | return resultJson.optJSONObject("data").optString("shortURL"); |
| | | } |
| | | |
| | | public static JDGoods queryGoodsDetail(Long skuId) { |
| | | List<Long> skuIdList = new ArrayList<>(); |
| | | skuIdList.add(skuId); |
| | | public static JDGoods queryGoodsDetail(String itemId) { |
| | | List<String> itemIdList = new ArrayList<>(); |
| | | itemIdList.add(itemId); |
| | | JDFilter filter = new JDFilter(); |
| | | filter.setPageIndex(1); |
| | | filter.setPageSize(20); |
| | | filter.setListId(skuIdList); |
| | | filter.setListItemId(itemIdList); |
| | | JDSearchResult searchResult = queryByKey(filter); |
| | | if (searchResult != null) { |
| | | List<JDGoods> list = searchResult.getGoodsList(); |
| | |
| | | return null; |
| | | } |
| | | |
| | | public static List<JDGoods> queryGoodsDetail(List<Long> skuIdList) { |
| | | public static List<JDGoods> queryGoodsDetail(List<String> itemIdList) { |
| | | JDFilter filter = new JDFilter(); |
| | | filter.setPageIndex(1); |
| | | filter.setPageSize(20); |
| | | filter.setListId(skuIdList); |
| | | filter.setListItemId(itemIdList); |
| | | JDSearchResult searchResult = queryByKey(filter); |
| | | if (searchResult != null) { |
| | | List<JDGoods> list = searchResult.getGoodsList(); |
| | |
| | | /** |
| | | * 通过商品搜索接口批量获取详情 |
| | | * |
| | | * @param skuIds |
| | | * @param itemIds |
| | | * @return |
| | | */ |
| | | public static List<JDGoods> listGoodsDetail(List<Long> skuIds) { |
| | | public static List<JDGoods> listGoodsDetail(List<String> itemIds) { |
| | | JDFilter filter = new JDFilter(); |
| | | filter.setListId(skuIds); |
| | | filter.setListItemId(itemIds); |
| | | JDSearchResult result = queryByKey(filter); |
| | | return result.getGoodsList(); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | public static JDSearchResult queryByKey(JDFilter filter) { |
| | | logger.info(String.format("queryByKey:%s %s", filter.getKeyword(), StringUtil.concat(filter.getListId(), ","))); |
| | | logger.info(String.format("queryByKey:%s %s", filter.getKeyword(), StringUtil.concat(filter.getListItemId(), ","))); |
| | | |
| | | JDSearchResult searchResult = new JDSearchResult(); |
| | | |
| | |
| | | JSONObject json = new JSONObject(); |
| | | json.put("pageIndex", filter.getPageIndex()); |
| | | json.put("pageSize", filter.getPageSize()); |
| | | // json.put("sceneId", 1); |
| | | |
| | | |
| | | if (filter.getCid1() != null) |
| | | json.put("cid1", filter.getCid1()); |
| | |
| | | if (filter.getIsCoupon() != null) |
| | | json.put("isCoupon", filter.getIsCoupon()); |
| | | |
| | | if (filter.getListId() != null) |
| | | json.put("skuIds", "[" + StringUtil.concat(filter.getListId(), ",") + "]"); |
| | | if (filter.getListItemId() != null) |
| | | json.put("itemIds", new Gson().toJson(filter.getListItemId())); |
| | | |
| | | if (filter.getIsPG() != null) |
| | | json.put("isPG", filter.getIsPG()); |
| | |
| | | String message = resultJson.optString("message"); |
| | | if ("SUCCESS".equalsIgnoreCase(message)) { |
| | | JSONArray array = resultJson.optJSONArray("data"); |
| | | System.out.println(array.toString()); |
| | | if (array != null) { |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JDGoods goods = parseJDGoods(array.optJSONObject(i)); |
| | |
| | | } else { |
| | | return null; |
| | | } |
| | | |
| | | goods.setItemId(json.optString("itemId")); |
| | | goods.setComments(json.optLong("comments")); |
| | | goods.setBrandCode(json.optString("brandCode")); |
| | | goods.setBrandName(json.optString("brandName")); |
| | |
| | | goods.setOwner(json.optString("owner")); |
| | | goods.setMaterialUrl(json.optString("materialUrl")); |
| | | goods.setSkuId(json.optLong("skuId")); |
| | | goods.setSpuid(json.optLong("spuid")); |
| | | goods.setSkuName(json.optString("skuName")); |
| | | goods.setIsHot(json.optInt("isHot")); |
| | | |
| | |
| | | /** |
| | | * 获取推广商品信息接口 |
| | | * |
| | | * @param skuIdList |
| | | * @param itemIdList |
| | | * @return |
| | | */ |
| | | public static List<JDGoods> getGoodsDetail(List<Long> skuIdList) { |
| | | public static List<JDGoods> getGoodsDetail(List<String> itemIdList) { |
| | | List<JDGoods> list = new ArrayList<>(); |
| | | JSONObject json = new JSONObject(); |
| | | json.put("skuIds", StringUtil.concat(skuIdList, ",")); |
| | | json.put("itemIds", StringUtil.concat(itemIdList, ",")); |
| | | String result = baseRequest2("jd.union.open.goods.promotiongoodsinfo.query", null, json); |
| | | System.out.println(result); |
| | | JSONObject resultJson = JSONObject.fromObject(result); |
| | |
| | | return list; |
| | | } |
| | | |
| | | public static JDGoods getGoodsDetail(Long skuId) { |
| | | List<Long> skuIdList = new ArrayList<>(); |
| | | skuIdList.add(skuId); |
| | | public static JDGoods getGoodsDetail(String itemId) { |
| | | List<String> skuIdList = new ArrayList<>(); |
| | | skuIdList.add(itemId); |
| | | List<JDGoods> list = getGoodsDetail(skuIdList); |
| | | if (list != null && list.size() > 0) |
| | | return list.get(0); |
| | |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | JDFilter filter=new JDFilter(); |
| | | filter.setKeyword("花卉"); |
| | | filter.setPageIndex(1); |
| | | filter.setPageSize(20); |
| | | queryByKey(filter); |
| | | getGoodsDetail(100007520546L); |
| | | |
| | | JDGoods goods = queryGoodsDetail("KXexrdv7wvWFvE1JNpVMEjdo_3KLpG8mAYwxxKXwFw0"); |
| | | System.out.println(goods.toString()); |
| | | |
| | | |
| | | |
| | |
| | | return urlList; |
| | | } |
| | | |
| | | |
| | | public static String getMaterialId(String id){ |
| | | if(NumberUtil.isNumeric(id)){ |
| | | return String.format("https://item.jd.com/%s.html", id); |
| | | }else{ |
| | | return String.format("https://jingfen.jd.com/detail/%s.html", id); |
| | | } |
| | | |
| | | } |
| | | |
| | | public static void main(String[] args) throws IOException { |
| | | System.out.printf(getJDGoodsIdByUJD("https://3.cn/1-U6tjhC")); |
| | | } |