'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; } }