<?php
|
namespace app\api\logic\taoke\device;
|
|
use app\api\logic\taoke\Parser;
|
use fast\Http;
|
use think\Cache;
|
use think\log;
|
|
class Haodanku extends Parser
|
{
|
protected $apikey,$config;
|
|
const shop_type = ["B"=>"天猫","C"=>"淘宝"];
|
|
const masPageSize = 100;
|
|
const request_url = [
|
'brand_realtime_url' => "https://v2.api.haodanku.com/brand_realtime",
|
'deserve_item_url' => "http://v2.api.haodanku.com/get_deserve_item",
|
'brand_goods_url' => "http://v2.api.haodanku.com/brand",
|
'brand_list_url' => 'http://v2.api.haodanku.com/brandinfo',
|
'brand_info_url' => 'http://v2.api.haodanku.com/singlebrand',
|
'subsidy_url' => 'http://v2.api.haodanku.com/cash_subsidy_goods',
|
'may_like_url' => 'http://v2.api.haodanku.com/get_similar_info',
|
'low_price_url' => 'http://v2.api.haodanku.com/low_price_Pinkage_data',
|
'cate_url' => 'https://v2.api.haodanku.com/category_list',
|
'dy_goods_url' => 'https://v2.api.haodanku.com/dy_item_list',
|
'dh_goods_url' => 'http://v2.api.haodanku.com/get_trill_data',
|
'search_url' => 'http://v2.api.haodanku.com/supersearch',
|
'hot_key_url' => 'http://v2.api.haodanku.com/hot_key',
|
'talent_url' => 'http://v2.api.haodanku.com/talent_info',
|
'talent_article_url' => 'http://v2.api.haodanku.com/talent_article',
|
'single_page_url' => 'https://v3.api.haodanku.com/rest',
|
'dy_order_url' => 'https://v2.api.haodanku.com/dy_order_list',
|
'dy_goods_detail_url' => 'https://v2.api.haodanku.com/dy_detail',
|
'get_dyitem_link_url'=>'https://v2.api.haodanku.com/get_dyitem_link',
|
'dy_analyze_code_url'=>'https://v2.api.haodanku.com/dy_analyze_code',
|
'tk_rest_url'=>'https://v3.api.haodanku.com/rest',
|
'jd_hot_rank_url'=>'http://v2.api.haodanku.com/jd_hot_rank',
|
'dy_hot_rank_url'=>'https://v3.api.haodanku.com/dy_rankitem_list',
|
'pdd_hot_rank_url'=>'http://v2.api.haodanku.com/pdd_hot_rank',
|
'sign_red_url'=>'http://v2.api.haodanku.com/sign_red_pack_goods',
|
'dy_onebuy_url'=>'https://v3.api.haodanku.com/dy_onebuy'
|
];
|
|
/**
|
* 品牌分类
|
*/
|
const brand_cate = [
|
['name'=>'全部','value' => '0'],
|
['name'=>'母婴童品','value' => '1'],
|
['name'=>'百变女装','value' => '2'],
|
['name'=>'食品酒水','value' => '3'],
|
['name'=>'居家日用','value' => '4'],
|
['name'=>'美妆洗护','value' => '5'],
|
['name'=>'品质男装','value' => '6'],
|
['name'=>'舒适内衣','value' => '7'],
|
['name'=>'箱包配饰','value' => '8'],
|
['name'=>'男女鞋靴','value' => '9'],
|
['name'=>'宠物用品','value' => '10'],
|
['name'=>'数码家电','value' => '11'],
|
['name'=>'车品文体','value' => '12']
|
];
|
|
|
public function __construct()
|
{
|
parent::__construct();
|
|
$this->config = config('site.haodanku');
|
|
$this->apikey = $this->config['apikey'];
|
|
if(empty($this->apikey)) return fault('配置信息错误');
|
}
|
|
/**
|
* 获取签到红包商品
|
*/
|
|
public function getSignRedGoods($apikey,$min_size,$sort,$min_id,$keyword)
|
{
|
$send_data = [
|
'apikey' => $apikey,
|
'min_size' => $min_size,
|
'sort' => $sort,
|
'min_id' => $min_id,
|
'keyword' => $keyword
|
];
|
$result = send_get(self::request_url['sign_red_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
$list = $result['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::GetGoodsred($goods,$goods["itemendprice"],$goods["tkrates"]);
|
}
|
}
|
$result['data']=$list;
|
return $result;
|
}
|
|
private static function GetGoodsred($goods,$actprice,$rate)
|
{
|
//计算返利金额
|
$goods['fanli'] = self::rebate($actprice,$rate);
|
$goods['topFanli'] = self::rebate($actprice,$rate,self::$topFanliRate);
|
return $goods;
|
}
|
|
/**
|
*
|
* 获取个人cms地址
|
*/
|
public function getCmsUrl($tb_rid)
|
{
|
$send_data = [
|
'method' => 'cms.promotion.url',
|
'app_id' => '20237820',
|
'app_secret'=>'608e183d8bc44742ab544179bd54b2c3',
|
'date' => date('Y-m-d H:i:s'),
|
'tb_name' => $this->config['tb_name'],
|
'tb_pid' => 'mm_4091757048_2861600076_114781900494',
|
'tb_rid' => $tb_rid,
|
];
|
$send_data['sign'] = $this->sign_create($send_data,'608e183d8bc44742ab544179bd54b2c3');
|
$http = new Http();
|
$param = json_encode($send_data);
|
$result = $http->post(self::request_url['tk_rest_url'],$param,[
|
CURLOPT_HTTPHEADER => [
|
'Content-Type: application/json',
|
'Content-Length: ' . strlen($param)
|
]]);
|
$result = json_decode($result,true);
|
if(empty($result) || $result['code'] != 200) fault('转链失败');
|
return $result['data']['url'];
|
}
|
|
|
|
public function getShareLink($goods_id,$common_relation_id,$relation_id)
|
{
|
$send_data = [
|
'method' => 'single.item.promotion',
|
'app_id' => $this->config['app_id'],
|
'date' => date('Y-m-d H:i:s'),
|
'itemid' => $goods_id,
|
'tb_name' => $this->config['tb_name'],
|
'pid' => MOBILE_INFO == "IOS" ? config('site.taobao_pid')['ios_pid'] : config('site.taobao_pid')['android_pid'],
|
'relation_id' => $relation_id,
|
];
|
$send_data['sign'] = $this->sign_create($send_data,$this->config['app_secret']);
|
$http = new Http();
|
$param = json_encode($send_data);
|
$result = $http->post(self::request_url['tk_rest_url'],$param,[
|
CURLOPT_HTTPHEADER => [
|
'Content-Type: application/json',
|
'Content-Length: ' . strlen($param)
|
]]);
|
$result = json_decode($result,true);
|
if(empty($result) || $result['code'] != 200) fault('转链失败');
|
return $result['data'];
|
}
|
|
|
/**
|
* 抖音口令解析
|
*
|
* @return void
|
*/
|
public function urlPrivilege($content)
|
{
|
$send_data = [
|
'apikey' => $this->apikey,
|
'content' => $content,
|
];
|
$http = new Http();
|
$result = $http->post(self::request_url['dy_analyze_code_url'],$send_data);
|
if(empty($result)) fault('数据获取失败');
|
$result = json_decode($result, true);
|
return isset($result['data']) ? $result['data'] : [];
|
}
|
|
|
/**
|
* 商品转链
|
*
|
* @param [type] $itemid
|
* @param [type] $channel
|
* @return void
|
*/
|
public function idPrivilege($itemid,$channel){
|
$send_data = [
|
'apikey' => $this->apikey,
|
'itemid' => $itemid,
|
'channel' => $channel,
|
];
|
$http = new Http();
|
$result = $http->post(self::request_url['get_dyitem_link_url'],$send_data);
|
if(empty($result)) fault('数据获取失败');
|
$result = json_decode($result, true);
|
//获取抖音详情(兼容ios打开抖音商品问题)
|
$d_send_data = [
|
'itemid' => $itemid,
|
'apikey' => $this->apikey,
|
];
|
$d_result = send_get(self::request_url['dy_goods_detail_url'],$d_send_data);
|
if(!empty($d_result))
|
{
|
$result['data']['detail_url']=$d_result['data'][0]['detail_url'];
|
}
|
return isset($result['data']) ? $result['data'] : [];
|
}
|
|
/**
|
* 京东榜单(实时热榜) https://www.haodanku.com/Openapi/api_detail?id=52
|
*
|
*/
|
public function getJdHotRank($cid,$mainid)
|
{
|
$send_data = [
|
'apikey' => $this->apikey,
|
'sort'=>3,
|
'min_id'=>$mainid,
|
'cid'=>$cid
|
];
|
$result = send_get(self::request_url['jd_hot_rank_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
|
$goodsList = isset($result['data']) ? $result['data'] : [];
|
foreach($goodsList as &$goods){
|
$goods = self::initJdGoodsFy($goods);
|
}
|
return $goodsList;
|
}
|
/**
|
* 抖音榜单 https://www.haodanku.com/Openapi/api_detail?id=135
|
*
|
*/
|
public function getDyHotRank($cid,$mainid)
|
{
|
$send_data = [
|
'apikey' => $this->apikey,
|
'sort_id'=>1,
|
'min_id'=>$mainid,
|
'cate_id'=>$cid,
|
'back'=>50
|
];
|
$result = send_get(self::request_url['dy_hot_rank_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
|
$goodsList = isset($result['data']) ? $result['data'] : [];
|
foreach($goodsList as &$goods){
|
$goods = self::initDyGoodsFy($goods);
|
}
|
return $goodsList;
|
}
|
|
/**
|
* 拼多多榜单 https://www.haodanku.com/Openapi/api_detail?id=53
|
*/
|
|
public function getPddHotRank($cid,$mainid)
|
{
|
$send_data = [
|
'apikey' => $this->apikey,
|
'sort'=>1,
|
'min_id'=>$mainid,
|
'cid'=>$cid
|
];
|
$result = send_get(self::request_url['pdd_hot_rank_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
|
$goodsList = isset($result['data']) ? $result['data'] : [];
|
foreach($goodsList as &$goods){
|
$goods = self::initPddGoodsFy($goods);
|
}
|
return $goodsList;
|
}
|
|
public function initJdGoodsFy($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::FqgoodsField();
|
$init_goods['dtitle'] = isset($goods['goodsname']) ? $goods['goodsname'] : '';
|
$init_goods['goodsid'] = isset($goods['skuid']) ? $goods['skuid'] : '';
|
$init_goods['jiage'] = isset($goods['itemendprice']) ? $goods['itemendprice'] : '';
|
$init_goods['mallDesc'] = isset($goods['shopname']) ? $goods['shopname'] : '';
|
$init_goods['pic'] = isset($goods['itempic']) ? $goods['itempic'] : '';
|
$init_goods['quanJine'] = isset($goods['couponmoney']) ? $goods['couponmoney'] : '';
|
$init_goods['quanNum'] = isset($goods['couponnum']) ? $goods['couponnum'] : '';
|
$init_goods['salesNum'] = isset($goods['itemsale']) ? $goods['itemsale'] : '';
|
$init_goods['yuanjia'] = isset($goods['itemprice']) ? $goods['itemprice'] : '';
|
$init_goods['fanli'] = self::rebate($goods["itemendprice"],$goods['commissionshare']/100);
|
$init_goods['topFanli'] = self::rebate($goods['itemendprice'],$goods['commissionshare']/100,self::$topFanliRate);
|
$init_goods['sourceType']='jd';
|
return $init_goods;
|
}
|
|
public function initDyGoodsFy($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::FqgoodsField();
|
$init_goods['dtitle'] = isset($goods['itemtitle']) ? $goods['itemtitle'] : '';
|
$init_goods['goodsid'] = isset($goods['product_id']) ? $goods['product_id'] : '';
|
$init_goods['goodsId'] = isset($goods['product_id']) ? $goods['product_id'] : '';
|
$init_goods['jiage'] = isset($goods['itemendprice']) ? $goods['itemendprice'] : '';
|
$init_goods['mallDesc'] = isset($goods['shop_name']) ? $goods['shop_name'] : '';
|
$init_goods['pic'] = isset($goods['itempic']) ? $goods['itempic'] : '';
|
$init_goods['quanJine'] = 0;
|
$init_goods['salesNum'] = isset($goods['sales']) ? $goods['sales'] : '';
|
$init_goods['yuanjia'] = isset($goods['itemprice']) ? $goods['itemprice'] : '';
|
$init_goods['fanli'] = self::rebate($goods["itemendprice"],$goods['dyrates']/100);
|
$init_goods['topFanli'] = self::rebate($goods['itemendprice'],$goods['dyrates']/100,self::$topFanliRate);
|
$init_goods['sourceType']='dy';
|
return $init_goods;
|
}
|
|
public function initPddGoodsFy($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::FqgoodsField();
|
$init_goods['dtitle'] = isset($goods['goodsname']) ? $goods['goodsname'] : '';
|
$init_goods['goodsid'] = isset($goods['goods_id']) ? $goods['goods_id'] : '';
|
$init_goods['goods_sign'] = isset($goods['goods_sign']) ? $goods['goods_sign'] : '';
|
$init_goods['jiage'] = isset($goods['itemendprice']) ? $goods['itemendprice'] : '';
|
$init_goods['mallDesc'] = '拼多多';
|
$init_goods['pic'] = isset($goods['itempic']) ? $goods['itempic'] : '';
|
$init_goods['quanJine'] = isset($goods['couponmoney']) ? $goods['couponmoney'] : '';
|
$init_goods['quanNum'] = isset($goods['couponnum']) ? $goods['couponnum'] : '';
|
$init_goods['salesNum'] = isset($goods['itemsale']) ? $goods['itemsale'] : '';
|
$init_goods['yuanjia'] = isset($goods['itemprice']) ? $goods['itemprice'] : '';
|
$init_goods['fanli'] = self::rebate($goods["itemendprice"],$goods['promotion_rate']/100);
|
$init_goods['topFanli'] = self::rebate($goods['itemendprice'],$goods['promotion_rate']/100,self::$topFanliRate);
|
$init_goods['sourceType']='pdd';
|
|
return $init_goods;
|
}
|
|
|
|
/**
|
* 获取抖音商品详情https://www.haodanku.com/Openapi/api_detail?id=112
|
*
|
* @param [type] $itemid
|
* @return void
|
*/
|
public function getDyGoodsDetail($itemid)
|
{
|
$send_data = [
|
'itemid' => $itemid,
|
'apikey' => $this->apikey,
|
];
|
$result = send_get(self::request_url['dy_goods_detail_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
|
$goods = isset($result['data'][0]) ? $result['data'][0] : [];
|
|
if(empty($goods['product_id'])) return [];
|
|
$goods = self::initDyDetailGoods($goods);
|
|
return $goods;
|
}
|
|
/**
|
* 抖音订单 https://www.haodanku.com/Openapi/api_detail?id=108
|
*
|
* @param [type] $date_type 1付款时间(默认付款)、2.结算时间、3.失效时间、4.更新时间
|
* @param [type] $media_type 媒体类型:1物料商品、2直播商品
|
* @param [type] $start_date 开始时间(选择的date_type时间类型)
|
* @param [type] $end_date 结束时间(选择的date_type时间类型)
|
* @param [type] $page
|
* @param [type] $page_size
|
* @param integer $step
|
* @return void
|
*/
|
public function dyOrderList($date_type,$media_type,$start_date,$end_date,$page,$page_size,$step = 1)
|
{
|
$page_size > self::masPageSize && $page_size = self::masPageSize;
|
$send_data = [
|
'apikey' => $this->apikey,
|
'back' => $page_size,
|
'date_type' => $date_type,
|
'media_type' => $media_type,
|
'start_date' => $start_date,
|
'end_date' => $end_date,
|
'min_id' => $page
|
];
|
$http = new Http();
|
$result = $http->post(self::request_url['dy_order_url'],$send_data);
|
if(empty($result)){
|
if($step == 3) return ['status'=>false,'info'=>'接口请求失败','list'=>[],'total' => 0,'hasMore' => false];
|
$step++;
|
return $this->dyOrderList($date_type,$media_type,$start_date,$end_date,$page,$page_size,$step);
|
}
|
$result = json_decode($result,true);
|
if(empty($result) || ($result['code'] != 0 && $result['code'] != 200)) return ['status'=>false,'info'=>'接口请求失败','list'=>[],'total' => 0,'hasMore' => false];
|
return ['status'=>true,'info'=>'接口请求成功','list'=>$result['data'],'total' => count($result['data']),'hasMore' => count($result['data']) == $page_size ? true : false];
|
}
|
|
|
/**
|
* 获取单页数据 https://www.haodanku.com/Openapi/api_detail?id=98
|
*
|
* @param [type] $template_id 模版ID
|
* @param [type] $common_relation_id
|
* @return void
|
*/
|
public function getSinglePage($template_id,$common_relation_id)
|
{
|
$info = Cache::get('single_page_template_id:'.$template_id);
|
if(!empty($info))return json_decode($info,true);
|
$jd_pid = $this->config['jd_union']."_59133_".$common_relation_id;
|
$pdd_custom_parameters = urlencode('{"uid":"'.$common_relation_id.'"}');
|
$send_data = [
|
'method' => 'sourcecode.rates.url',
|
'app_id' => $this->config['app_id'],
|
'date' => date('Y-m-d H:i:s'),
|
'template_id' => $template_id,
|
'tb_name' => $this->config['tb_name'],
|
'tb_pid' => MOBILE_INFO == "IOS" ? config('site.taobao_pid')['ios_pid'] : config('site.taobao_pid')['android_pid'],
|
'jd_union' => $this->config['jd_union'],
|
'pdd_pid' => MOBILE_INFO == "IOS" ? config('site.pinduoduo')['ios_pid'] : config('site.pinduoduo')['android_pid'],
|
'pdd_union' => $this->config['pdd_union'],
|
'wph_nickname' => $this->config['wph_nickname'],
|
'wph_pid' => $common_relation_id,
|
'relation_id' => $common_relation_id,
|
'special_channel' => $common_relation_id
|
];
|
$send_data['jd_pid'] = $jd_pid;
|
$send_data['pdd_custom_parameters'] = $pdd_custom_parameters;
|
$send_data['sign'] = $this->sign_create($send_data,$this->config['app_secret']);
|
|
$http = new Http();
|
$param = json_encode($send_data);
|
$result = $http->post(self::request_url['single_page_url'],$param,[
|
CURLOPT_HTTPHEADER => [
|
'Content-Type: application/json',
|
'Content-Length: ' . strlen($param)
|
]]);
|
$result = json_decode($result,true);
|
if(empty($result) || $result['code'] != 200) fault('活动已结束或不存在');
|
|
Cache::set('single_page_template_id'.$template_id,json_encode($result['data']),3600);
|
|
return $result['data'];
|
}
|
|
|
/**
|
* 生成签名
|
* @param $data -请求数据组
|
* @param string $secret -应用密钥
|
*/
|
private function sign_create($data, $secret = '')
|
{
|
ksort($data);
|
$stringToBeSigned = '';
|
foreach ($data as $k => $v) {
|
if (!is_array($v) && "@" != substr($v, 0, 1)) {
|
$stringToBeSigned .= "$k$v";
|
}
|
}
|
return strtoupper(md5($stringToBeSigned . $secret));
|
}
|
|
|
|
/**
|
* 获取品牌时效榜数据 https://www.haodanku.com/Openapi/api_detail?id=78
|
*
|
* @return void
|
*/
|
public function getBrandRealtime($page = 1,$page_size)
|
{
|
$page_size > self::masPageSize && $page_size = self::masPageSize;
|
$send_data = [
|
'apikey' => $this->apikey,
|
'page_size' => $page_size,
|
'min_id' => $page
|
];
|
$result = send_get(self::request_url['brand_realtime_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 200) fault('数据获取失败');
|
|
$goods_list = $result['data'];
|
|
foreach($goods_list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
|
return $goods_list;
|
}
|
|
|
/**
|
* 今日值得买 https://www.haodanku.com/Openapi/api_detail?id=24
|
*
|
* @return void
|
*/
|
public function getDeserveItem()
|
{
|
$send_data = [
|
'apikey' => $this->apikey
|
];
|
$result = send_get(self::request_url['deserve_item_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$goods_list = $result['item_info'];
|
|
foreach($goods_list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
return $goods_list;
|
}
|
|
|
/**
|
* 获取品牌列表(不带商品) https://www.haodanku.com/Openapi/api_detail?id=33
|
*
|
* @param [type] $brandcat
|
* @param [type] $page
|
* @param [type] $page_size
|
* @return void
|
*/
|
public function getBrandList($brandcat,$page = 1,$page_size)
|
{
|
$page_size > self::masPageSize && $page_size = self::masPageSize;
|
|
$send_data = [
|
'apikey' => $this->apikey,
|
'back' => $page_size,
|
'min_id' => $page,
|
'brandcat' => $brandcat
|
];
|
$result = send_get(self::request_url['brand_list_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$brand_list = $result['data'];
|
|
if(!empty($brand_list)){
|
|
foreach($brand_list as &$brand){
|
|
$brand = self::initBrand($brand);
|
}
|
}
|
|
return $brand_list;
|
}
|
|
|
/**
|
* 获取品牌列表(带商品) https://www.haodanku.com/Openapi/api_detail?id=32
|
*
|
* @param [type] $brandcat 分类id
|
* @param [type] $page 分页
|
* @param [type] $page_size 每页数据
|
* @return void
|
*/
|
public function getBrandAndGoods($brandcat,$page = 1,$page_size)
|
{
|
$page_size > self::masPageSize && $page_size = self::masPageSize;
|
|
$send_data = [
|
'apikey' => $this->apikey,
|
'back' => $page_size,
|
'min_id' => $page,
|
'brandcat' => $brandcat
|
];
|
$result = send_get(self::request_url['brand_goods_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$brand_list = $result['data'];
|
|
if(!empty($brand_list)){
|
|
foreach($brand_list as &$brand){
|
|
$brand = self::initBrand($brand,'item');
|
}
|
}
|
|
return $brand_list;
|
}
|
|
|
/**
|
* 单个品牌详情 https://www.haodanku.com/Openapi/api_detail?id=34
|
*
|
* @param [type] $brand_id
|
* @param [type] $page
|
* @param [type] $page_size
|
* @return void
|
*/
|
public function getBrandInfo($brand_id,$page = 1,$page_size)
|
{
|
$page_size > self::masPageSize && $page_size = self::masPageSize;
|
|
$send_data = [
|
'apikey' => $this->apikey,
|
'back' => $page_size,
|
'min_id' => $page,
|
'id' => $brand_id
|
];
|
$result = send_get(self::request_url['brand_info_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$brand = $result['data'];
|
|
$brand = self::initBrand($brand,'items');
|
|
return $brand;
|
}
|
|
|
|
//百亿补贴 https://www.haodanku.com/Openapi/api_detail?id=64
|
|
public function getCashSubsidyGoods($category_id,$keyword = "",$sort = "",$page = 1,$page_size)
|
{
|
$page_size > self::masPageSize && $page_size = self::masPageSize;
|
|
$send_data = [
|
'apikey' => $this->apikey,
|
'min_size' => $page_size,
|
'min_id' => $page,
|
'category_id' => $category_id,
|
'keyword' => $keyword,
|
'sort' => $sort
|
];
|
$result = send_get(self::request_url['subsidy_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 200) fault('数据获取失败');
|
|
$list = $result['data'];
|
|
if(empty($list)) return [];
|
|
foreach($list as &$goods){
|
|
$goods = self::initSubsidyGoods($goods);
|
|
}
|
return $list;
|
}
|
|
|
/**
|
* 猜你喜欢 https://www.haodanku.com/Openapi/api_detail?id=22
|
*
|
* @param [type] $goods_id 关联商品id
|
* @param integer $page 页数
|
* @param [type] $page_size 每页数据
|
* @return void
|
*/
|
public function getSimilarInfo($goods_id,$page_size)
|
{
|
$page_size > 50 && $page_size = 50;
|
|
$send_data = [
|
'apikey' => $this->apikey,
|
'back' => $page_size,
|
'itemid' => $goods_id
|
];
|
$result = send_get(self::request_url['may_like_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$list = $result['data'];
|
|
if(!empty($list)){
|
|
foreach($list as &$goods){
|
|
$goods = self::initGoods($goods);
|
}
|
}
|
|
return $list;
|
}
|
|
|
/**
|
* 精选低价包邮专区API
|
* @param [type] $type 1.精选专区;2. 9.9专区;3. 6.9专区;4. 3.9专区
|
* @param [type] $page
|
* @param [type] $page_size
|
* @return void
|
*/
|
public function lowPrice($type,$page,$page_size)
|
{
|
$page_size > self::masPageSize && $page_size = self::masPageSize;
|
|
$send_data = [
|
'type' => $type,
|
'apikey' => $this->apikey,
|
'back' => $page_size,
|
'min_id' => $page
|
];
|
$result = send_get(self::request_url['low_price_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$goods_list = $result['data'];
|
|
foreach($goods_list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
|
return $goods_list;
|
}
|
|
|
/**
|
* 获取分类列表 https://www.haodanku.com/Openapi/api_detail?id=107
|
*
|
* @param [type] $type 类型:1 个性化福利清单-商品类目、2 个性化福利清单-线报类目、3 福利清单-商品类目、4 抖音商城-商品类目、5 凑单满减-满减类型、6 虎年单品类目
|
* @return void
|
*/
|
public function getCateList($type)
|
{
|
$send_data = [
|
'type' => $type,
|
'apikey' => $this->apikey
|
];
|
$result = send_get(self::request_url['cate_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 200) fault('数据获取失败');
|
|
$list = $result['data'];
|
|
return $list;
|
}
|
|
|
|
/**
|
* 抖音电商商品列表 https://www.haodanku.com/Openapi/api_detail?id=105
|
*
|
* @param [type] $cate_id 类目ID
|
* @param string $keyword 关键词搜索
|
* @param integer $sort 排序(默认0):0综合、1销量倒序、2销量升序、3价格倒序、4价格升序
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function getDygoodsList($cate_id,$keyword,$sort,$page,$pageSize)
|
{
|
$send_data = [
|
'type' => $cate_id,
|
'apikey' => $this->apikey,
|
'cate_id' => $cate_id,
|
'keyword' => $keyword,
|
'sort' => $sort,
|
'min_id' => $page,
|
'back' => $pageSize
|
];
|
$result = send_get(self::request_url['dy_goods_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) fault('数据获取失败');
|
|
$list = $result['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initDyGoods($goods);
|
}
|
}
|
|
return $list;
|
}
|
|
/**
|
* 抖货商品 https://www.haodanku.com/Openapi/api_detail?id=29
|
*
|
* @param [type] $cate_id 商品类目
|
* @param [type] $order
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function getDhgoodsList($cate_id,$order,$page,$pageSize)
|
{
|
$send_data = [
|
'type' => $cate_id,
|
'apikey' => $this->apikey,
|
'cate_id' => $cate_id,
|
'order' => $order,
|
'min_id' => $page,
|
'back' => $pageSize
|
];
|
$result = send_get(self::request_url['dh_goods_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$list = $result['data'];
|
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
}
|
|
return $list;
|
}
|
|
|
/**
|
* 商品搜索
|
*
|
* @param [type] $keyword 关键词
|
* @param [type] $sort 0.综合,1.最新,2.销量(高到低),3.销量(低到高),4.价格(低到高),5.价格(高到低),6.佣金比例(高到低)
|
* @param [type] $is_tmall 是否只取天猫商品:0否;1是,默认是0
|
* @param [type] $is_coupon 是否只取有券商品:0否;1是,默认是0
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function searchGoods($keyword,$sort,$is_tmall,$is_coupon,$page,$pageSize)
|
{
|
$send_data = [
|
'keyword' => urlencode(urlencode($keyword)),
|
'apikey' => $this->apikey,
|
'sort' => $sort,
|
'is_tmall' => $is_tmall,
|
'is_coupon' => $is_coupon,
|
'min_id' => $page,
|
'back' => $pageSize
|
];
|
$result = send_get(self::request_url['search_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$list = $result['data'];
|
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods);
|
}
|
}
|
|
return $list;
|
}
|
|
|
/**
|
* 热搜关键词记录API https://www.haodanku.com/Openapi/api_detail?id=20
|
*
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function getHotKey($page,$pageSize)
|
{
|
$send_data = [
|
'apikey' => $this->apikey,
|
'min_id' => $page,
|
'back' => $pageSize
|
];
|
$result = send_get(self::request_url['hot_key_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$list = $result['data'];
|
|
return $list;
|
}
|
|
|
/**
|
* 获取达人说列表
|
* $talentcat 文章类别(0.全部,1.好物,2.潮流,3.美食,4.生活)
|
* @return void
|
*/
|
public function getTalentInfo($talentcat = 0)
|
{
|
$send_data = [
|
'apikey' => $this->apikey,
|
'talentcat' => $talentcat
|
];
|
$result = send_get(self::request_url['talent_url'],$send_data);
|
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$list = $result['data'];
|
|
return $list;
|
}
|
|
|
/**
|
* 获取达人说详情
|
*/
|
public function getTalentArticle($id)
|
{
|
$send_data = [
|
'apikey' => $this->apikey,
|
'id' => $id
|
];
|
$result = send_get(self::request_url['talent_article_url'],$send_data);
|
if(empty($result) || $result['code'] != 1) fault('数据获取失败');
|
|
$info = $result['data'];
|
|
return $info;
|
}
|
|
/**
|
* 抖音1.9元/3.9元低价包邮商品
|
*/
|
public function getDyOnebyGood($page,$pageSize){
|
$send_data = [
|
'apikey' => $this->apikey,
|
'min_id' => $page,
|
'back' => $pageSize
|
];
|
$result = send_get(self::request_url['dy_onebuy_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) fault('数据获取失败');
|
|
$list = $result['data'];
|
$list_new=[];
|
$title_list=[];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$itemtitle=$goods['itemtitle'];
|
if(empty($title_list)){
|
array_push($title_list,$itemtitle);
|
}
|
else{
|
//判断商品标题是否相似
|
$is_same=false;
|
foreach($title_list as &$title){
|
similar_text($title,$itemtitle,$percent);
|
log::write($title.'----------'.$itemtitle.'--------------'.$percent);
|
if($percent>60){
|
$is_same=true;
|
break;
|
}
|
}
|
if($is_same){
|
continue;
|
}
|
array_push($title_list,$itemtitle);
|
}
|
$goods['shoptype']='';
|
// $goods = self::initDyOneByGoods($goods);
|
array_push($list_new,self::initDyOneByGoods($goods));
|
}
|
|
}
|
|
return $list_new;
|
}
|
|
|
/**
|
* 统一品牌数据格式 注:返回带商品数据有接口返回的是item 有的是items
|
*
|
* @param [type] $brand
|
* @return void
|
*/
|
private static function initBrand($brand,$goods_field = '')
|
{
|
$data = [
|
'brand_id' => $brand['id'],
|
"brand_label" => "官方正品",
|
"brand_name" => isset($brand['tb_brand_name']) ? $brand['tb_brand_name'] : '',
|
"brand_logo" => isset($brand['brand_logo']) ? $brand['brand_logo'] : '',
|
"inside_logo" => isset($brand['inside_logo']) ? $brand['inside_logo'] : '',
|
"introduce" => isset($brand['introduce']) ? $brand['introduce'] : '',
|
"brandcat" => isset($brand['brandcat']) ? $brand['brandcat'] : '',
|
];
|
|
if(!empty($goods_field)){
|
$data['goods_list'] = [];
|
if(!empty($brand[$goods_field])){
|
foreach($brand[$goods_field] as $item){
|
$data['goods_list'][] = self::initGoods($item);
|
}
|
}
|
}
|
return $data;
|
}
|
|
|
|
/**
|
* 统一商品信息
|
*
|
* @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'] : '';
|
$init_goods['goodsId'] = isset($goods['itemid']) ? $goods['itemid'] : ''; //商品id
|
$init_goods['itemLink'] = isset($goods['itemLink']) ? $goods['itemLink'] : ''; //商品链接
|
$init_goods['title'] = isset($goods['itemtitle']) ? $goods['itemtitle'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['itemshorttitle']) ? $goods['itemshorttitle'] : ''; //短标题
|
$init_goods["actualPrice"] = isset($goods['itemendprice']) ? $goods['itemendprice'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['itemprice']) ? $goods['itemprice'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['shopname']) ? $goods['shopname'] : ''; //店铺名称
|
$init_goods["couponPrice"] = isset($goods['couponmoney']) ? $goods['couponmoney'] : ''; //优惠券金额
|
$init_goods["monthSales"] = isset($goods['itemsale']) ? format_number($goods['itemsale']) : 0; //30天销量
|
$init_goods['couponInfo'] = isset($goods['coupon_info']) ? $goods['coupon_info'] : ''; //商品折扣信息
|
$init_goods["mainPic"] = isset($goods['itempic']) ? $goods['itempic'] : ''; //商品主图
|
$init_goods["video"] = isset($goods['videoid']) && $goods['videoid'] > 0 ? "http://cloud.video.taobao.com/play/u/1/p/1/e/6/t/1/".$goods['videoid'].".mp4" : ''; //商品视频
|
$init_goods['dyVideoLikeCount'] = isset($goods['dy_video_like_count']) ? $goods['dy_video_like_count'] : '';
|
$init_goods['dynamicImage'] = isset($goods['dynamic_image']) ? $goods['dynamic_image'] : '';
|
$init_goods['couponLink'] = isset($goods['couponurl']) ? $goods['couponurl'] : ''; //优惠券链接
|
$init_goods['couponEndTime'] = isset($goods['couponendtime']) && !empty($goods['couponendtime']) ? date("Y-m-d H:i:s",$goods['couponendtime']) : ''; //优惠券结束时间
|
$init_goods['couponStartTime'] = isset($goods['couponstarttime']) && !empty($goods['couponstarttime']) ? date("Y-m-d H:i:s",$goods['couponstarttime']) : ''; //优惠券开始时间
|
$init_goods['shopType'] = isset(self::shop_type[$goods['shoptype']]) ? self::shop_type[$goods['shoptype']] : "未知"; //店铺类型
|
$init_goods['sourceType'] = "tb";
|
if(isset($goods['shoptype'])){
|
if($goods['shoptype'] == "B"){
|
$init_goods['sourceType'] = "tm";
|
}
|
}
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
if(empty($init_goods['detailPics']))$init_goods['detailPics'] = $init_goods['mainPic'];
|
$init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['tkrates']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['tkrates']/100,self::$topFanliRate);
|
return $init_goods;
|
}
|
|
/**
|
* 统一抖音商品信息
|
*
|
* @param [type] $goods
|
* @return void
|
*/
|
private static function initDyGoods($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['id']) ? $goods['id'] : '';
|
$init_goods['goodsId'] = isset($goods['itemid']) ? $goods['itemid'] : ''; //商品id
|
$init_goods['itemLink'] = isset($goods['detail_url']) ? $goods['detail_url'] : ''; //商品链接
|
$init_goods['dtitle'] = isset($goods['itemtitle']) ? $goods['itemtitle'] : ''; //商品标题
|
$init_goods['title'] = $init_goods['dtitle'];
|
$init_goods["actualPrice"] = isset($goods['end_price']) ? $goods['end_price'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['end_price']) ? $goods['end_price'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['shop_name']) ? $goods['shop_name'] : ''; //店铺名称
|
$init_goods["monthSales"] = isset($goods['sales']) ? format_number($goods['sales']) : 0; //30天销量
|
$init_goods["mainPic"] = isset($goods['item_pic']) ? $goods['item_pic'] : ''; //商品主图
|
$init_goods['shopType'] = '抖音'; //店铺类型
|
$init_goods['sourceType'] = "dy";
|
$init_goods['desc'] = "";
|
$init_goods['faction'] = 'd';
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
$init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['dyrates']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['dyrates']/100,self::$topFanliRate);
|
//新增商品类目ID--byhyt
|
$init_goods['cid'] = isset($goods['cate_id']) ? $goods['cate_id'] : '';
|
return $init_goods;
|
}
|
|
/**
|
* 格式化抖音商品接口
|
*
|
* @param [type] $goods
|
* @return void
|
*/
|
private function initDyDetailGoods($goods){
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['id']) ? $goods['id'] : '';
|
$init_goods['goodsId'] = isset($goods['product_id']) ? $goods['product_id'] : ''; //商品id
|
$init_goods['itemLink'] = isset($goods['detail_url']) ? $goods['detail_url'] : ''; //商品链接
|
$init_goods['dtitle'] = isset($goods['product_title']) ? $goods['product_title'] : ''; //商品标题
|
$init_goods['title'] = $init_goods['dtitle'];
|
$init_goods["actualPrice"] = isset($goods['end_price']) ? $goods['end_price'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['end_price']) ? $goods['end_price'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['shop_name']) ? $goods['shop_name'] : ''; //店铺名称
|
$init_goods["monthSales"] = isset($goods['month_sales']) ? format_number($goods['month_sales']) : 0; //30天销量
|
$init_goods["mainPic"] = isset($goods['item_pic']) ? $goods['item_pic'] : ''; //商品主图
|
$init_goods['shopType'] = '抖音'; //店铺类型
|
$init_goods['sourceType'] = "dy";
|
$init_goods['faction'] = 'd';
|
$init_goods['desc'] = "";
|
$init_goods['imgs'] = $goods['douyin_images'];
|
$init_goods['detailPics'] = $init_goods['imgs'];
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
$init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['dyrates']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['dyrates']/100,self::$topFanliRate);
|
//新增商品类目ID--byhyt
|
$init_goods['cid'] = isset($goods['cate_id']) ? $goods['cate_id'] : '';
|
return $init_goods;
|
}
|
|
/**
|
* 格式化百亿补贴商品
|
*
|
* @return void
|
*/
|
private static function initSubsidyGoods($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['id']) ? $goods['id'] : '';
|
$init_goods['goodsId'] = isset($goods['item_id']) ? $goods['item_id'] : ''; //商品id
|
$init_goods['itemLink'] = ''; //商品链接
|
$init_goods['title'] = isset($goods['itemtitle']) ? $goods['itemtitle'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['itemshorttitle']) ? $goods['itemshorttitle'] : ''; //短标题
|
$init_goods["actualPrice"] = isset($goods['itemendprice']) ? $goods['itemendprice'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['itemprice']) ? $goods['itemprice'] : ''; //商品原价
|
$init_goods["shopName"] = ''; //店铺名称
|
$init_goods['couponInfo'] = isset($goods['coupon_info']) ? $goods['coupon_info'] : ''; //商品折扣信息
|
$init_goods["couponPrice"] = isset($goods['couponmoney']) ? $goods['couponmoney'] : ''; //优惠券金额
|
$init_goods["monthSales"] = isset($goods['itemsale']) ? format_number($goods['itemsale']) : 0; //30天销量
|
$init_goods["mainPic"] = isset($goods['itempic']) ? $goods['itempic'] : ''; //商品主图
|
$init_goods["video"] = isset($goods['videoid']) && $goods['videoid'] > 0 ? "http://cloud.video.taobao.com/play/u/1/p/1/e/6/t/1/".$goods['videoid'].".mp4" : ''; //商品视频
|
$init_goods['couponLink'] = isset($goods['couponurl']) ? $goods['couponurl'] : ''; //优惠券链接
|
$init_goods['couponEndTime'] = isset($goods['couponendtime']) && !empty($goods['couponendtime']) ? date("Y-m-d H:i:s",$goods['couponendtime']) : ''; //优惠券结束时间
|
$init_goods['couponStartTime'] = isset($goods['couponstarttime']) && !empty($goods['couponstarttime']) ? date("Y-m-d H:i:s",$goods['couponstarttime']) : ''; //优惠券开始时间
|
$init_goods['shopType'] = '淘宝'; //店铺类型
|
$init_goods['sourceType'] = "tb";
|
$init_goods['faction'] = "j";
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
$init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['commission_rate']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commission_rate']/100,self::$topFanliRate);
|
return $init_goods;
|
}
|
|
/**
|
* 格式化抖音1.9元/3.9元低价包邮商品
|
*
|
* @param [type] $goods
|
* @return void
|
*/
|
private static function initDyOneByGoods($goods)
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['product_id']) ? $goods['product_id'] : '';
|
$init_goods['goodsId'] = isset($goods['product_id']) ? $goods['product_id'] : ''; //商品id
|
$init_goods['itemLink'] = isset($goods['detail_url']) ? $goods['detail_url'] : ''; //商品链接
|
$init_goods['dtitle'] = isset($goods['itemshorttitle']) ? $goods['itemshorttitle'] : ''; //商品标题
|
$init_goods['title'] = $init_goods['dtitle'];
|
$init_goods["actualPrice"] = isset($goods['itemendprice']) ? $goods['itemendprice'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['itemprice']) ? $goods['itemprice'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['shop_name']) ? $goods['shop_name'] : ''; //店铺名称
|
$init_goods["monthSales"] = isset($goods['itemsale']) ? format_number($goods['itemsale']) : 0; //30天销量
|
$init_goods["mainPic"] = isset($goods['itempic']) ? $goods['itempic'] : ''; //商品主图
|
$init_goods['shopType'] = '抖音'; //店铺类型
|
$init_goods['sourceType'] = "dy";
|
$init_goods['desc'] = "";
|
$init_goods['faction'] = 'd';
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
$init_goods['fanli'] =isset($goods['itemendprice']) ? $goods['itemendprice'] : 0;
|
$init_goods['topFanli'] =0;
|
//新增商品类目ID--byhyt
|
$init_goods['cid'] = isset($goods['cate_id']) ? $goods['cate_id'] : '';
|
return $init_goods;
|
}
|
|
|
|
}
|