<?php
|
namespace app\api\logic\taoke\device;
|
|
use app\api\logic\taoke\Parser;
|
|
|
class Jd extends Parser
|
{
|
protected $appkey,$config,$unionid,$key;
|
protected $appid = '';
|
protected $goods_version = '';
|
protected $search_version = '';
|
protected $timeout = 10;
|
|
const request_url = [
|
'today_top_url' => 'http://japi.jingtuitui.com/api/today_top',
|
'goods_list_url' => 'http://japi.jingtuitui.com/api/get_goods_list',
|
'goods_detail_url' => "http://japi.jingtuitui.com/api/get_ware_style",
|
'cate_url' => 'http://japi.jingtuitui.com/api/get_super_category',
|
'daily_explosion_url' => 'http://japi.jingtuitui.com/api/subsidy_goods',
|
'search_url' => 'http://japi.jingtuitui.com/api/jd_goods_query',
|
'universal_url' => 'http://japi.jingtuitui.com/api/universal',
|
'get_goods_link_url' => 'http://japi.jingtuitui.com/api/get_goods_link',
|
'goods_info_url' => 'http://japi.jingtuitui.com/api/get_goods_info',
|
'get_order_url' => 'http://japi.jingtuitui.com/api/get_order_row'
|
];
|
|
const shop_type = "京东";
|
|
|
public function __construct()
|
{
|
parent::__construct();
|
|
$this->config = config('site.jingtuitui');
|
|
$this->appkey = $this->config['appkey'];
|
|
$this->goods_version = $this->config['goods_v'];
|
|
$this->search_version = $this->config['search_v'];
|
|
$this->unionid = $this->config['unionid'];
|
|
$this->appid = $this->config['appid'];
|
|
$this->key = $this->config['key'];
|
|
if(empty($this->appkey) || empty($this->appid)) return fault('配置信息错误');
|
}
|
|
|
/**
|
* 订单行查询 http://jingtuitui.com/api_item?id=28
|
*
|
* @param [type] $startTime 开始时间(格式yyyy-MM-dd HH:mm:ss 例2020-01-02 21:23:00,与endTime间隔不超过1小时)
|
* @param [type] $endTime 结束时间(格式yyyy-MM-dd HH:mm:ss 例2020-01-02 21:23:00,与startTime间隔不超过1小时)
|
* @param [type] $type 订单时间查询类型 1=下单时间;2=完成时间;3=更新时间
|
* @param [type] $pageIndex 页码
|
* @param string $pageSize 每页数量(最大500)
|
* @return void
|
*/
|
public function getOrderRow($startTime,$endTime,$type,$pageIndex,$pageSize="20",$step=0)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'key' => $this->key,
|
'unionid' => $this->unionid,
|
'startTime' => $startTime,
|
'endTime' => $endTime,
|
'type' => $type,
|
'$pageIndex' => $pageIndex,
|
'pageSize' => $pageSize,
|
'fields' => 'goodsInfo'
|
];
|
$result = send_get(self::request_url['get_order_url'],$send_data);
|
if(empty($result)){//做处理
|
if($step == 2) return ['status'=>false,'info'=>$startTime.'--'.$endTime.'返回链接错误','total' => 0,'hasMore' => false,'list'=>[]];
|
$step++;
|
return $this->getOrderRow($startTime,$endTime,$type,$pageIndex,$pageSize="20",$step);
|
}
|
if(empty($result) || $result['return'] != 0) return ['status'=>false,'info'=>'接口请求失败','total' => 0,'hasMore' => false];
|
if(empty($result['result']['data'])) return ['status'=>true,'info'=>'获取成功','list' => [],'total' => 0,'hasMore' => false];
|
return ['status'=>true,'info'=>'获取成功','list' => $result['result']['data'],'total' => count($result['result']['data']),'hasMore' => $result['result']['hasMore']];
|
}
|
|
|
|
|
/**
|
* 统一商品转链 http://jingtuitui.com/api_item?id=14
|
*
|
* @return void
|
*/
|
public function getPrivilegeLlink($goods_id,$common_relation_id)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'unionid' => $this->unionid,
|
'gid' => $goods_id,
|
'positionid' => $common_relation_id
|
];
|
$result = send_get(self::request_url['get_goods_link_url'],$send_data);
|
if(empty($result) || $result['return'] != 0) fault('数据获取失败');
|
$info = $result['result']['link'];
|
return $info;
|
}
|
|
/**
|
* 各大榜单 http://jingtuitui.com/api_item?id=9
|
*
|
* @param [type] $eliteId 频道ID discountReal实时爆单榜;inOrderCount30Days 30天销量榜;inOrderComm30Days 30天收益榜;discountCount总领券;
|
* @param integer $page
|
* @param [type] $page_size
|
* @return void
|
*/
|
public function getTodayTop($eliteId,$page = 1,$page_size)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'pageIndex' => $page,
|
'pageSize' => $page_size,
|
'eliteId' => $eliteId
|
];
|
$result = send_get(self::request_url['today_top_url'],$send_data);
|
|
if(empty($result) || $result['return'] != 0) fault('数据获取失败');
|
$list = $result['result']['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
}
|
return $list;
|
}
|
|
|
/**
|
* 获取商品详情信息 http://jingtuitui.com/api_item?id=4
|
*
|
* @param [type] $goods_id 商品id
|
* @param [type] $goods 商品参数
|
* @return void
|
*/
|
public function getGoodsDetail($goods_id,$goods_data)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'skuIds' => $goods_id
|
];
|
$result = send_get(self::request_url['goods_detail_url'],$send_data);
|
if(empty($result) || $result['return'] != 0) fault('数据获取失败');
|
$goods = isset($result['result'][0]) ? $result['result'][0] : [];
|
self::browseLog($goods_data);
|
return ['goodsId'=>$goods['goods_id'],'detailPics'=>$goods['img_array']];
|
}
|
|
|
/**
|
* 获取京东分类 http://jingtuitui.com/api_item?id=25
|
*
|
* @param [type] $level 分类等级1级2级
|
* @param [type] $cate_id 父级别id level为2时使用
|
* @return void
|
*/
|
public function getCate($level,$cate_id = "")
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'goods_type' => $cate_id
|
];
|
$result = send_get(self::request_url['cate_url'],$send_data);
|
|
if(empty($result) || $result['return'] != 0) fault('数据获取失败');
|
|
$list = $result['result']['data'];
|
$cate_list = [];
|
|
if(!empty($list)){
|
foreach($list as $cate){
|
if($level == 2 && !empty($cate_id)){
|
if($cate['J_cid'] == $cate_id){
|
foreach($cate['subcategories'] as $item){
|
$tmp = [
|
'id' => $item['J_cid'],
|
'name' => $item['cname'],
|
'cpic' => $item['cpic']
|
];
|
array_push($cate_list,$tmp);
|
}
|
}
|
}else{
|
$tmp = [
|
'id' => $cate['J_cid'],
|
'name' => $cate['cname'],
|
'cpic' => $cate['cpic']
|
];
|
array_push($cate_list,$tmp);
|
}
|
}
|
}
|
return $cate_list;
|
}
|
|
/**
|
* 京东商品列表 http://jingtuitui.com/api_item?id=1
|
*
|
* @param [type] $cate_id
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function getGoodsList($cate_id,$page,$pageSize)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'pageIndex' => $page,
|
'pageSize' => $pageSize,
|
'goods_type' => $cate_id
|
];
|
$result = send_get(self::request_url['goods_list_url'],$send_data);
|
|
if(empty($result) || $result['return'] != 0) fault('数据获取失败');
|
$list = $result['result']['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
}
|
return $list;
|
}
|
|
|
/**
|
* 每日爆款 http://jingtuitui.com/api_item?id=27
|
*
|
* @param [type] $cate_id 分类id
|
* @param integer $page
|
* @param [type] $page_size
|
* @return void
|
*/
|
public function dailyExplosion($cate_id,$page = 1,$page_size)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'pageIndex' => $page,
|
'pageSize' => $page_size,
|
'goods_type' => $cate_id
|
];
|
$result = send_get(self::request_url['daily_explosion_url'],$send_data);
|
|
if(empty($result) || $result['return'] != 0) fault('数据获取失败');
|
$list = $result['result']['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
}
|
return $list;
|
}
|
|
|
/**
|
* 搜索商品 http://jingtuitui.com/api_item?id=3
|
*
|
* @param [type] $keyword 关键词
|
* @param [type] $sort asc=升降序;desc=默认降序
|
* @param [type] $owner 商品类型 :(g:自营;p:POP)
|
* @param [type] $isCoupon 是否是优惠券商品 1=有优惠券
|
* @param [type] $sortName 排序字段 price单价; commissionShare佣金比例; commission佣金;inOrderCount30Days 30天引单量;inOrderComm30Days 30天支出佣金
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function searchGoods($keyword,$sort,$owner,$isCoupon,$sortName,$page,$pageSize)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->search_version,
|
'sort' => $sort,
|
'owner' => $owner,
|
'sortName' => $sortName,
|
'pageIndex' => $page,
|
'pageSize' => $pageSize,
|
'keyword' => $keyword
|
];
|
|
if($isCoupon == 1)$send_data['isCoupon'] = $isCoupon;
|
$result = send_get(self::request_url['search_url'],$send_data);
|
if(empty($result) || $result['return'] != 0) return [];
|
$list = $result['result']['goods'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initSearchGoods($goods);
|
}
|
}
|
return $list;
|
}
|
|
/**
|
* 搜索商品(增加类目id--hyt) http://jingtuitui.com/api_item?id=3
|
*
|
* @param [type] $keyword 关键词
|
* @param [type] $sort asc=升降序;desc=默认降序
|
* @param [type] $owner 商品类型 :(g:自营;p:POP)
|
* @param [type] $isCoupon 是否是优惠券商品 1=有优惠券
|
* @param [type] $sortName 排序字段 price单价; commissionShare佣金比例; commission佣金;inOrderCount30Days 30天引单量;inOrderComm30Days 30天支出佣金
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @param [type] $cid1 类目id
|
* @return void
|
*/
|
public function search_cid_Goods($keyword,$sort,$owner,$isCoupon,$sortName,$page,$pageSize,$cid1)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->search_version,
|
'sort' => $sort,
|
'owner' => $owner,
|
'sortName' => $sortName,
|
'pageIndex' => $page,
|
'pageSize' => $pageSize,
|
'keyword' => $keyword,
|
'cid1' => $cid1
|
];
|
|
if($isCoupon == 1)$send_data['isCoupon'] = $isCoupon;
|
$result = send_get(self::request_url['search_url'],$send_data);
|
if(empty($result) || $result['return'] != 0) return [];
|
$list = $result['result']['goods'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initSearchGoods($goods);
|
}
|
}
|
return $list;
|
}
|
|
|
|
/**
|
* 智能转链 http://jingtuitui.com/api_item?id=18
|
*
|
* @param [type] $content
|
* @param [type] $is_turn 是否转链
|
* @return void
|
*/
|
public function universal($content,$is_turn=false)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'unionid' => $this->unionid,
|
'content' => $content,
|
];
|
$result = send_get(self::request_url['universal_url'],$send_data);
|
if(empty($result) || $result['return'] != 0) return [];
|
if($is_turn){
|
$info = isset($result['result']['link_date'][0]) ? $result['result']['link_date'][0] : [];
|
}else{
|
$info = isset($result['result']['link_date'][0]['goods_info']) ? $result['result']['link_date'][0]['goods_info'] : [];
|
}
|
if(!empty($info)){
|
return $info;
|
}else{
|
return [];
|
}
|
}
|
|
/**
|
* 京东0元购商品列表 http://jingtuitui.com/api_item?id=1
|
*
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function getNineSift($page,$pageSize)
|
{
|
$send_data = [
|
'appkey' => $this->appkey,
|
'appid' => $this->appid,
|
'v' => $this->goods_version,
|
'pageIndex' => $page,
|
'pageSize' => $pageSize,
|
'sortName'=>' OrderCount30Days ',
|
'sort'=>'desc',
|
'price_start'=>1,
|
'price_end'=>5
|
];
|
$result = send_get(self::request_url['goods_list_url'],$send_data);
|
|
if(empty($result) || $result['return'] != 0) fault('数据获取失败');
|
$list = $result['result']['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
}
|
return $list;
|
}
|
|
|
|
/**
|
* 格式化商品信息
|
*
|
* @param [type] $goods
|
* @return void
|
*/
|
private static function initGoods($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['id']) ? $goods['id'] : ''; //奖励活动id
|
$init_goods['goodsId'] = isset($goods['goods_id']) ? $goods['goods_id'] : ''; //商品SKUid
|
$init_goods['itemLink'] = isset($goods['goods_link']) ? $goods['goods_link'] : ''; //商品落地页
|
$init_goods['title'] = isset($goods['short_name']) ? $goods['short_name'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['short_name']) ? $goods['short_name'] : ''; //短标题
|
$init_goods["actualPrice"] = isset($goods['final_price']) ? $goods['final_price'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['goods_price']) ? $goods['goods_price'] : ''; //商品原价
|
$init_goods["sellerId"] = isset($goods['shop_id']) ? $goods['shop_id'] : ''; //店铺Id
|
$init_goods["shopName"] = isset($goods['shop_name']) ? $goods['shop_name'] : ''; //店铺名称
|
$init_goods["couponPrice"] = isset($goods['discount_price']) ? $goods['discount_price'] : ''; //优惠券金额
|
$init_goods["monthSales"] = isset($goods['inOrderCount30Days']) ? format_number($goods['inOrderCount30Days']) : 0; //30天销量
|
$init_goods["mainPic"] = isset($goods['goods_img']) ? $goods['goods_img'] : ''; //商品主图
|
$init_goods['couponLink'] = isset($goods['discount_link']) ? $goods['discount_link'] : ''; //优惠券链接
|
$init_goods['couponEndTime'] = isset($goods['get_end_time']) && !empty($goods['get_end_time']) ? date("Y-m-d",$goods['get_end_time']/1000) : ''; //优惠券结束时间
|
$init_goods['couponStartTime'] = isset($goods['get_start_time']) && !empty($goods['get_start_time']) ? date("Y-m-d",$goods['get_start_time']/1000) : ''; //优惠券开始时间
|
$init_goods['shopType'] = self::shop_type; //店铺类型
|
$init_goods['sourceType'] = "jd";
|
$init_goods['desc'] = isset($goods['goods_content']) ? $goods['goods_content'] : ''; //推广文案
|
if(!empty($goods['imageList'])){
|
$imageList = json_decode($goods['imageList'],true);
|
$img_arr = [];
|
if(!empty($imageList)){
|
foreach($imageList as $img){
|
array_push($img_arr,$img['url']);
|
}
|
$init_goods['imgs'] = $img_arr;
|
}
|
}
|
if(empty($init_goods['detailPics']))$init_goods['detailPics'] = $init_goods['mainPic'];
|
$init_goods['faction'] = "j";
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
if($init_goods["originalPrice"])$init_goods["originalPrice"] = (string)$init_goods["originalPrice"];
|
$init_goods['fanli'] = self::rebate($goods['final_price'],$goods['commissionShare']/100);
|
$init_goods['topFanli'] = self::rebate($goods['final_price'],$goods['commissionShare']/100,self::$topFanliRate);
|
//新增商品类目ID--byhyt
|
$init_goods['cid'] = isset($goods['categoryInfo']['cid1']) ? $goods['categoryInfo']['cid1'] : '';
|
return $init_goods;
|
}
|
|
|
/**
|
* 格式化搜索商品信息
|
*
|
* @param [type] $goods
|
* @return void
|
*/
|
private static function initSearchGoods($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['id']) ? $goods['id'] : ''; //奖励活动id
|
$init_goods['goodsId'] = isset($goods['skuId']) ? $goods['skuId'] : ''; //商品SKUid
|
$init_goods['itemLink'] = isset($goods['goods_link']) ? $goods['goods_link'] : ''; //商品落地页
|
$init_goods['title'] = isset($goods['skuName']) ? $goods['skuName'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['skuName']) ? $goods['skuName'] : ''; //短标题
|
$init_goods["actualPrice"] = isset($goods['priceInfo']['lowestCouponPrice']) ? $goods['priceInfo']['lowestCouponPrice'] : $goods['priceInfo']['goods_price']; //券后价
|
$init_goods["originalPrice"] = isset($goods['priceInfo']['goods_price']) ? $goods['priceInfo']['goods_price'] : ''; //商品原价
|
$init_goods["sellerId"] = isset($goods['shopInfo']['shop_id']) ? $goods['shopInfo']['shop_id'] : ''; //店铺Id
|
$init_goods["shopName"] = isset($goods['shopInfo']['shopName']) ? $goods['shopInfo']['shopName'] : ''; //店铺名称
|
$init_goods["couponPrice"] = isset($goods['couponInfo']['couponList'][0]['discount_price']) ? $goods['couponInfo']['couponList'][0]['discount_price'] : 0; //优惠券金额
|
$init_goods["monthSales"] = isset($goods['inOrderCount30Days']) ? format_number($goods['inOrderCount30Days']) : 0; //30天销量
|
$init_goods["mainPic"] = isset($goods['imageInfo']['imageList'][0]['url']) ? $goods['imageInfo']['imageList'][0]['url'] : ''; //商品主图
|
$init_goods['couponLink'] = isset($goods['couponInfo']['couponList'][0]['discount_link']) ? $goods['couponInfo']['couponList'][0]['discount_link'] : ''; //优惠券链接
|
$init_goods['couponEndTime'] = isset($goods['couponInfo']['couponList'][0]['get_end_time']) && !empty($goods['couponInfo']['couponList'][0]['get_end_time']) ? date("Y-m-d",$goods['couponInfo']['couponList'][0]['get_end_time']/1000) : ''; //优惠券结束时间
|
$init_goods['couponStartTime'] = isset($goods['couponInfo']['couponList'][0]['get_start_time']) && !empty($goods['couponInfo']['couponList'][0]['get_start_time']) ? date("Y-m-d",$goods['couponInfo']['couponList'][0]['get_start_time']/1000) : ''; //优惠券开始时间
|
$goods['video'] = isset($goods['videoInfo']['videoList']) ? $goods['videoInfo']['videoList'][0]['video'] : '';
|
$init_goods['shopType'] = self::shop_type; //店铺类型
|
$init_goods['sourceType'] = "jd";
|
if(!empty($goods['imageInfo']['imageList'])){
|
$imageList = $goods['imageInfo']['imageList'];
|
$img_arr = [];
|
if(!empty($imageList)){
|
foreach($imageList as $img){
|
array_push($img_arr,$img['url']);
|
}
|
$init_goods['imgs'] = $img_arr;
|
}
|
}
|
|
$init_goods['faction'] = "j";
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
$init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['commissionInfo']['commissionShare']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commissionInfo']['commissionShare']/100,self::$topFanliRate);
|
//新增商品类目ID--byhyt
|
$init_goods['cid'] = isset($goods['categoryInfo']['cid1']) ? $goods['categoryInfo']['cid1'] : '';
|
return $init_goods;
|
}
|
|
|
}
|