package com.yeshi.fanli.controller.client.lijin;
|
|
import com.yeshi.common.entity.taobao.TaoKeAppInfo;
|
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
|
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
|
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
import com.yeshi.fanli.entity.jd.JDGoods;
|
import com.yeshi.fanli.exception.pdd.PDDApiException;
|
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
import com.yeshi.fanli.service.inter.pdd.PDDAuthService;
|
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.TaoBaoConstant;
|
import com.yeshi.fanli.util.ThreadUtil;
|
import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
|
import com.yeshi.fanli.util.jd.JDApiUtil;
|
import com.yeshi.fanli.util.jd.JDUtil;
|
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
|
import com.yeshi.fanli.util.suning.SuningApiUtil;
|
import com.yeshi.fanli.util.suning.SuningUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
import com.yeshi.fanli.util.vipshop.VipShopApiUtil;
|
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.annotation.Resource;
|
|
@Controller
|
@RequestMapping("api/lijin/goods")
|
public class GoodsControllerLijin {
|
|
@Resource
|
private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
|
|
@Resource
|
private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
|
|
@Resource
|
private PDDAuthService pddAuthService;
|
|
/**
|
* 获取商品详情
|
*
|
* @param acceptData
|
* @param goodsType
|
* @param goodsId
|
* @param from
|
* @return
|
*/
|
@RequestMapping("getGoodsDetail")
|
@ResponseBody
|
public String getGoodsDetail(AcceptData acceptData, int goodsType, String goodsId, Long uid, String from) {
|
|
switch (goodsType) {
|
case Constant
|
.SOURCE_TYPE_TAOBAO:
|
TaoBaoGoodsBrief taobaoGoods = getTaoBaoGoods(Long.parseLong(goodsId));
|
if (taobaoGoods == null) {
|
|
}
|
|
break;
|
|
case Constant
|
.SOURCE_TYPE_JD:
|
JDGoods jdGoods = getJDGoods(Long.parseLong(goodsId));
|
|
break;
|
|
case Constant
|
.SOURCE_TYPE_PDD:
|
PDDGoodsDetail pddGoodsDetail = getPDDGoods(Long.parseLong(goodsId), uid);
|
|
break;
|
|
case Constant
|
.SOURCE_TYPE_VIP:
|
VIPGoodsInfo vipGoodsInfo = VipShopApiUtil.getGoodsDetail(goodsId);
|
|
break;
|
|
case Constant
|
.SOURCE_TYPE_SUNING:
|
String[] ids = SuningUtil.getGoodsIdDetail(goodsId);
|
SuningGoodsInfo suningGoodsInfo = SuningApiUtil.getGoodsDetail(ids[1], ids[0]);
|
|
break;
|
|
|
}
|
|
|
return null;
|
}
|
|
private TaoBaoGoodsBrief getTaoBaoGoods(Long id) {
|
try {
|
TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(id);
|
if (goods != null) {
|
return goods;
|
}
|
TaoKeAppInfo app = new TaoKeAppInfo();
|
app.setAppKey(TaoBaoConstant.TAOBAO_COMMON_APPKEY);
|
app.setAppSecret(TaoBaoConstant.TAOBAO_COMMON_APPSECRET);
|
app.setPid(TaoBaoConstant.TAOBAO_COMMON_PID);
|
app.setAdzoneId(TaoBaoConstant.TAOBAO_COMMON_PID.split("_")[3]);
|
goods = TaoKeApiUtil.searchGoodsDetail(id, app);
|
|
final TaoBaoGoodsBrief finalGoods = goods;
|
if (goods != null) {
|
ThreadUtil.run(new Runnable() {
|
@Override
|
public void run() {
|
taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(finalGoods);
|
}
|
});
|
}
|
return goods;
|
} catch (TaobaoGoodsDownException e) {
|
// 商品下架
|
ThreadUtil.run(new Runnable() {
|
|
public void run() {
|
taoBaoGoodsUpdateService.offlineTaoBaoGoods(id);
|
}
|
});
|
}
|
return null;
|
}
|
|
|
private JDGoods getJDGoods(Long id) {
|
JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 高级接口
|
if (jdGoods == null) {
|
jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页
|
// jdGoods = JDApiUtil.getGoodsDetail(id); // 普通接口
|
}
|
return jdGoods;
|
}
|
|
private PDDGoodsDetail getPDDGoods(Long id, Long uid) {
|
PDDGoodsDetail pddGoods = null;
|
try {
|
pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, PinDuoDuoApiUtil.PID_FANLI, pddAuthService.getFanliCustomParams(uid));
|
} catch (PDDApiException e) {
|
e.printStackTrace();
|
if (e.getCode() == PDDApiException.CODE_NOT_AUTH) {
|
try {
|
pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, PinDuoDuoApiUtil.PID_FANLI, Constant.PDD_SEARCH_CUSTOMER_PARAMS);
|
} catch (PDDApiException e1) {
|
}
|
}
|
}
|
return pddGoods;
|
}
|
|
}
|