<?php
|
namespace app\api\logic\taoke\device;
|
|
use app\api\logic\taoke\Parser;
|
|
class Dingdanxia extends Parser
|
{
|
protected $appkey,$config;
|
protected $appSecret = '';
|
protected $timeout = 10;
|
|
const shop_type = ["tb"=>"淘宝","tm"=>"天猫","jd"=>"京东",'wph'=>'唯品会','suning'=>"苏宁"];
|
|
|
const request_url = [
|
'wph_goods_url' => "http://api.tbk.dingdanxia.com/vip/goodsList", //唯品会商品链接
|
'search_goods_url' => "http://api.tbk.dingdanxia.com/vip/query",
|
'viplink_check_url' => 'http://api.tbk.dingdanxia.com/vip/viplink_check',
|
'wph_goods_detail_url' => 'http://api.tbk.dingdanxia.com/vip/item_info', // 唯品会商品详情接口
|
'tkl_privilege_url' => 'http://api.tbk.dingdanxia.com/tbk/tkl_privilege',
|
'super_search_url' => 'http://api.tbk.dingdanxia.com/tbk/super_search',
|
'activity_info_url' => 'http://api.tbk.dingdanxia.com/tbk/activityinfo',
|
'id_privilege_url' => 'http://api.tbk.dingdanxia.com/tbk/id_privilege',
|
'vph_id_privilege_url' => 'http://api.tbk.dingdanxia.com/vip/id_privilege',
|
'url_privilege_url' => 'http://api.tbk.dingdanxia.com/vip/url_privilege',
|
'order_details2_url' => 'http://api.tbk.dingdanxia.com/vip/order_details2'
|
|
];
|
|
|
public function __construct()
|
{
|
parent::__construct();
|
|
$this->config = config('site.dingdanxia');
|
|
$this->appkey = $this->config['apikey'];
|
|
if(empty($this->appkey)) return fault('配置信息错误');
|
|
}
|
|
|
/**
|
* 获取订单列表信息 https://www.dingdanxia.com/doc/135/124
|
*
|
* @param [type] $page
|
* @param string $pageSize
|
* @param string $orderTimeStart
|
* @param string $orderTimeEnd
|
* @param string $status
|
* @param string $updateTimeStart
|
* @param string $updateTimeEnd
|
* @return void
|
*/
|
public function getOrderDetails2($page,$pageSize="20",$orderTimeStart="",$orderTimeEnd="",$status="",$updateTimeStart="",$updateTimeEnd="")
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'orderTimeStart' => $orderTimeStart,
|
'orderTimeEnd' => $orderTimeEnd,
|
'status' => $status,
|
'updateTimeStart' => $updateTimeStart,
|
'updateTimeEnd' => $updateTimeEnd,
|
'page' => $page,
|
'pageSize' => $pageSize
|
];
|
$result = send_get(self::request_url['order_details2_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return ['status'=>false,'info'=>'接口请求失败','list'=>[],'total' => 0,'hasMore' => false];
|
return ['status'=>true,'info'=>'接口请求成功','list'=>$result['total_results'] > 0 ?$result['data'] : [],'total' => $result['total_results'],'hasMore' => $result['total_results'] == $pageSize ? true : false];
|
}
|
|
|
/**
|
* 唯品会商品分类
|
*
|
* @return void
|
*/
|
public function wphCateList()
|
{
|
$cate = [
|
['name'=>'女装精选','value' => 'fqs3ruqw'],
|
['name'=>'男装精选','value' => 'kkhewi9q'],
|
['name'=>'美妆精选','value' => 'x6kihigh'],
|
['name'=>'精选-首饰','value' => 'ck9efvy0'],
|
['name'=>'鞋包精选','value' => '2jo673jj'],
|
['name'=>'母婴精选','value' => '0lreb0o6'],
|
['name'=>'居家精选','value' => 'axu1ike2'],
|
['name'=>'体用精选','value' => 'etr780b6'],
|
['name'=>'家用电器','value' => '2o396a6v']
|
];
|
return $cate;
|
}
|
|
|
/**
|
* 唯品会商品列表 https://www.dingdanxia.com/doc/129/124
|
*
|
* @param [type] $cate
|
* @param [type] $channelType
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @return void
|
*/
|
public function wphGoodsList($cate,$channelType,$page,$pageSize,$sourceType = 1)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'channelType' => $channelType,
|
'sourceType' => $sourceType, //组货
|
'page' => $page,
|
'pageSize' => $pageSize
|
];
|
if($sourceType == 1)$send_data['jxCode'] = $cate;
|
$result = send_get(self::request_url['wph_goods_url'],$send_data);
|
if(empty($result) || $result['code'] == 0) fault('数据获取失败');
|
$list = $result['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$marektprice=isset($goods['marketPrice']) ? (float)$goods['marketPrice'] : 0;
|
$vipprice=isset($goods['vipPrice']) ? (float)$goods['vipPrice'] : 0;
|
$goods["discount"]=$marektprice==0?0:number_format(($vipprice/$marektprice)*10,1);
|
$goods = self::initGoods($goods,'wph','w');
|
}
|
}
|
return $list;
|
}
|
|
|
/**
|
* 搜索商品 https://www.dingdanxia.com/doc/131/124
|
*
|
* @param [type] $keyword 关键词
|
* @param [type] $fieldName 排序字段 价格-PRICE、折扣-DISCOUNT、销量-SALES
|
* @param [type] $order 排序顺序:0-正序,1-逆序,默认正序
|
* @param [type] $page
|
* @param [type] $pageSize
|
* @param [type] $sourceType 来源
|
* @param [type] $faction 派系
|
* @return void
|
*/
|
public function searchGoods($keyword,$fieldName,$order,$page,$pageSize,$sourceType,$faction)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'keyword' => $keyword,
|
'fieldName' => $fieldName,
|
'order' => $order,
|
'page' => $page,
|
'pageSize' => $pageSize
|
];
|
$result = send_get(self::request_url['search_goods_url'],$send_data);
|
if(empty($result) || $result['code'] == 0) fault('数据获取失败');
|
$list = $result['data'];
|
if(!empty($list)){
|
foreach($list as &$goods){
|
$goods = self::initGoods($goods,$sourceType,$faction);
|
}
|
}
|
return $list;
|
}
|
|
|
|
/**
|
* 唯品会商品详情 https://www.dingdanxia.com/doc/130/124
|
*
|
* @param [type] $goodsId 商品id
|
* @return void
|
*/
|
public function getWphGoodsDetail($goodsId)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'id' => $goodsId
|
];
|
$result = send_get(self::request_url['wph_goods_detail_url'],$send_data);
|
if(empty($result) || $result['code'] == 0) fault('数据获取失败');
|
$info = $result['data'];
|
$goods = self::initGoods($info,'wph','w');
|
return $goods;
|
}
|
|
|
/**
|
* 解析唯品会商品ID https://www.dingdanxia.com/doc/149/124
|
*
|
* @param [type] $goods_url
|
* @return void
|
*/
|
public function checkLink($goods_url)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'url' => $goods_url
|
];
|
$result = send_get(self::request_url['viplink_check_url'],$send_data);
|
if(empty($result) || $result['code'] == 0) fault('数据获取失败');
|
$list = $result['data'];
|
if($list['linkType'] == "GOODS"){
|
return ['goodsId'=>$list['goodsId']];
|
}else{
|
return [];
|
}
|
}
|
|
|
|
/**
|
* 淘宝客高佣转链 https://www.dingdanxia.com/doc/3/8
|
*
|
* @param [type] $goods_url
|
* @param [type] $returnGoods 是否返回商品信息
|
* @return void
|
*/
|
public function tklPrivilege($goods_url)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'tkl' => $goods_url,
|
'itemInfo' => true
|
];
|
$result = send_get(self::request_url['tkl_privilege_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
$goods = $result['data'];
|
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'] = isset($goods['item_url']) ? $goods['item_url'] : ''; //商品链接
|
$init_goods['title'] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : '';
|
$init_goods["actualPrice"] = isset($goods['itemInfo']['qh_final_price']) ? $goods['itemInfo']['qh_final_price'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['itemInfo']['reserve_price']) ? $goods['itemInfo']['reserve_price'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['itemInfo']['nick']) ? $goods['itemInfo']['nick'] : ''; //店铺名称
|
$init_goods["couponPrice"] = isset($goods['coupon']) ? $goods['coupon'] : ''; //优惠券金额
|
$init_goods["mainPic"] = isset($goods['itemInfo']['pict_url']) ? $goods['itemInfo']['pict_url'] : ''; //商品主图
|
$init_goods["imgs"] = isset($goods['itemInfo']['small_images']) ? $goods['itemInfo']['small_images'] : '';
|
$init_goods['detailPics'] = $init_goods['imgs'];
|
$init_goods['couponLink'] = isset($goods['coupon_click_url']) ? $goods['coupon_click_url'] : '';
|
$init_goods['couponStartTime'] = isset($goods['coupon_start_time']) ? $goods['coupon_start_time'] : '';
|
$init_goods['couponEndTime'] = isset($goods['coupon_end_time']) ? $goods['coupon_end_time'] : '';
|
$init_goods['shopType'] = '淘宝'; //店铺类型
|
$init_goods['sourceType'] = 'tb';
|
$init_goods['faction'] = 't';
|
return $init_goods;
|
// if($returnGoods){
|
|
// }else{
|
// return [
|
// 'coupon_tpwd' => isset($goods['coupon_tpwd']) ? $goods['coupon_tpwd'] : "",
|
// 'long_coupon_tpwd' => isset($goods['long_coupon_tpwd']) ? $goods['long_coupon_tpwd'] : "",
|
// 'coupon_click_url' => isset($goods['coupon_click_url']) ? $goods['coupon_click_url'] : "",
|
// 'item_url' => isset($goods['item_url']) ? $goods['item_url'] : ""
|
// ];
|
// }
|
|
}
|
|
|
/**
|
* 唯品会高佣转链(商品ID版)) https://www.dingdanxia.com/doc/132/124
|
*
|
* @param [type] $goodsId 商品ID
|
* @param [type] $chanTag 渠道标识
|
* @return void
|
*/
|
public function idPrivilege($goodsId,$chanTag)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'id' => $goodsId,
|
'chanTag' => $chanTag
|
];
|
$result = send_get(self::request_url['vph_id_privilege_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
$info = $result['data'];
|
if(empty($info)) return [];
|
return $info;
|
}
|
|
|
/**
|
* 唯品会高佣转链(URL链接版) https://www.dingdanxia.com/doc/133/124
|
*
|
* @param [type] $url 商品,活动链接url
|
* @param [type] $common_relation_id 用户唯一标识
|
* @return void
|
*/
|
public function urlPrivilege($url,$common_relation_id)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'url' => $url,
|
'chanTag' => $common_relation_id,
|
'itemInfo' => true
|
];
|
$result = send_get(self::request_url['url_privilege_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) return [];
|
$info = $result['data'];
|
if(empty($info)) return '';
|
$str = $info['itemInfo']['goodsName']."\n"."市场价:¥".$info['itemInfo']['marketPrice']." 折扣价:¥".$info['itemInfo']['vipPrice']."\n"."抢购链接:".$info['url'];
|
return $str;
|
}
|
|
|
/**
|
* 超级搜索 https://www.dingdanxia.com/doc/15/8
|
*
|
* @param [type] $goods_url
|
* @return void
|
*/
|
public function superSearch($goods_url,$sourceType='',$faction="")
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'q' => $goods_url,
|
];
|
$result = send_get(self::request_url['super_search_url'],$send_data);
|
if(empty($result) || $result['code'] != 200) fault('数据获取失败');
|
if(!isset($result['data'][0])) return [];
|
$goods = $result['data'][0];
|
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'] = isset($goods['item_url']) ? $goods['item_url'] : ''; //商品链接
|
$init_goods['title'] = isset($goods['title']) ? $goods['title'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['title']) ? $goods['title'] : '';
|
$init_goods["actualPrice"] = isset($goods['zk_final_price']) ? $goods['zk_final_price'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['reserve_price']) ? $goods['reserve_price'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['nick']) ? $goods['nick'] : ''; //店铺名称
|
$init_goods["couponPrice"] = isset($goods['coupon']) ? $goods['coupon'] : ''; //优惠券金额
|
$init_goods["mainPic"] = isset($goods['pict_url']) ? $goods['pict_url'] : ''; //商品主图
|
$init_goods["imgs"] = isset($goods['small_images']) ? $goods['small_images'] : '';
|
$init_goods['couponLink'] = isset($goods['coupon_share_url']) ? $goods['coupon_share_url'] : '';
|
$init_goods['couponStartTime'] = isset($goods['coupon_start_time']) ? $goods['coupon_start_time'] : '';
|
$init_goods['couponEndTime'] = isset($goods['coupon_end_time']) ? $goods['coupon_end_time'] : '';
|
$init_goods['shopType'] = !empty($sourceType) && isset(self::shop_type[$sourceType]) ? self::shop_type[$sourceType] : "未知"; //店铺类型
|
$init_goods['sourceType'] = $sourceType;
|
$init_goods['faction'] = $faction;
|
return $init_goods;
|
}
|
|
|
/**
|
* 官方活动转链,饿了么/口碑活动转链 https://www.dingdanxia.com/doc/122/173
|
*
|
* @param [type] $activity_material_id
|
* @return void
|
*/
|
public function activityinfo($activity_material_id)
|
{
|
$send_data = [
|
'apikey' => $this->appkey,
|
'activity_material_id' => $activity_material_id
|
];
|
$result = send_get(self::request_url['activity_info_url'],$send_data);
|
|
if(empty($result) || $result['code'] == 0) fault('数据获取失败');
|
$info = $result['data'];
|
return self::initUnion($info);
|
}
|
|
|
|
/**
|
* 格式化转链
|
* @return void
|
*/
|
private static function initUnion($data)
|
{
|
if(empty($data)) return [];
|
$init_data = self::unionField();
|
$init_data['h5'] = isset($data['short_click_url']) ? $data['short_click_url'] : '';
|
$init_data['we_app_info'] = isset($data['we_app_info']) ? $data['we_app_info'] : [];
|
$init_data['act_name'] = isset($data['page_name']) ? $data['page_name'] : "";
|
$init_data['long_h5'] = isset($data['click_url']) ? $data['click_url'] : "";
|
if(isset($data['wx_qrcode_url'])) $init_data['we_app_info']['miniCode'] = $data['wx_qrcode_url'];
|
if(isset($data['wx_miniprogram_path'])) $init_data['we_app_info']['page_path'] = $data['wx_miniprogram_path'];
|
return $init_data;
|
}
|
|
|
/**
|
*格式化商品数据
|
*
|
* @param [type] $goods
|
* @param string $sourceType
|
* @return void
|
*/
|
public static function initSearchGoods($goods,$sourceType='',$faction='')
|
{
|
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'] = isset($goods['item_url']) ? $goods['item_url'] : ''; //商品链接
|
$init_goods['title'] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['itemInfo']['title']) ? $goods['itemInfo']['title'] : '';
|
$init_goods["actualPrice"] = isset($goods['itemInfo']['qh_final_price']) ? $goods['itemInfo']['qh_final_price'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['itemInfo']['reserve_price']) ? $goods['itemInfo']['reserve_price'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['itemInfo']['nick']) ? $goods['itemInfo']['nick'] : ''; //店铺名称
|
$init_goods["couponPrice"] = isset($goods['coupon']) ? $goods['coupon'] : ''; //优惠券金额
|
$init_goods["mainPic"] = isset($goods['itemInfo']['pict_url']) ? $goods['itemInfo']['pict_url'] : ''; //商品主图
|
$init_goods["imgs"] = isset($goods['itemInfo']['small_images']) ? $goods['itemInfo']['small_images'] : '';
|
$init_goods['couponLink'] = isset($goods['coupon_click_url']) ? $goods['coupon_click_url'] : '';
|
$init_goods['couponStartTime'] = isset($goods['coupon_start_time']) ? $goods['coupon_start_time'] : '';
|
$init_goods['couponEndTime'] = isset($goods['coupon_end_time']) ? $goods['coupon_end_time'] : '';
|
$init_goods['shopType'] = !empty($sourceType) && isset(self::shop_type[$sourceType]) ? self::shop_type[$sourceType] : "未知"; //店铺类型
|
$init_goods['sourceType'] = $sourceType;
|
$init_goods['faction'] = $faction;
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['commissionRate']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commissionRate']/100,self::$topFanliRate);
|
return $init_goods;
|
}
|
|
/**
|
* 统一商品信息
|
*
|
* @param [type] $goods
|
* @return void
|
*/
|
private static function initGoods($goods,$sourceType='',$faction='')
|
{
|
if(empty($goods)) return [];
|
$init_goods = self::goodsField();
|
$init_goods['id'] = isset($goods['id']) ? $goods['id'] : '';
|
$init_goods['goodsId'] = isset($goods['goodsId']) ? $goods['goodsId'] : ''; //商品id
|
$init_goods['itemLink'] = isset($goods['destUrl']) ? $goods['destUrl'] : ''; //商品链接
|
$init_goods['title'] = isset($goods['goodsName']) ? $goods['goodsName'] : ''; //商品标题
|
$init_goods["dtitle"] = isset($goods['goodsName']) ? $goods['goodsName'] : ''; //短标题
|
$init_goods["actualPrice"] = isset($goods['vipPrice']) ? $goods['vipPrice'] : ''; //券后价
|
$init_goods["originalPrice"] = isset($goods['marketPrice']) ? $goods['marketPrice'] : ''; //商品原价
|
$init_goods["shopName"] = isset($goods['storeInfo']['storeName']) ? $goods['storeInfo']['storeName'] : '';
|
$init_goods['discount'] = isset($goods['discount']) ? $goods['discount'] : '';
|
$init_goods["couponPrice"] = isset($goods['couponInfo']['fav']) ? $goods['couponInfo']['fav'] : ''; //优惠券金额
|
$init_goods['couponEndTime'] = isset($goods['couponInfo']['useEndTime']) && !empty($goods['couponInfo']['useEndTime']) ? date('Y-m-d',$goods['couponInfo']['useEndTime']/1000) : ''; //优惠券结束时间
|
$init_goods['couponStartTime'] = isset($goods['couponInfo']['useBeginTime']) && !empty($goods['couponInfo']['useBeginTime']) ? date('Y-m-d',$goods['couponInfo']['useBeginTime']/1000) : ''; //优惠券结束时间
|
|
$init_goods["mainPic"] = isset($goods['goodsThumbUrl']) ? $goods['goodsThumbUrl'] : ''; //商品主图
|
if(isset($goods['goodsMainPicture']) && !empty($goods['goodsMainPicture'])){
|
$imageList = strpos($goods['goodsMainPicture'],',') == true ? explode(',',$goods['goodsMainPicture']) : [$goods['goodsMainPicture']];
|
$init_goods['imgs'] = $imageList;
|
}
|
if(isset($goods['goodsDetailPictures']) && !empty($goods['goodsDetailPictures'])){
|
$detailList = is_array($goods['goodsDetailPictures']) ? $goods['goodsDetailPictures'] : explode(',',$goods['goodsDetailPictures']);
|
$init_goods['detailPics'] = $detailList;
|
}
|
if(empty($init_goods['detailPics']))$init_goods['detailPics'] = $init_goods['imgs'];
|
$init_goods['shopType'] = !empty($sourceType) && isset(self::shop_type[$sourceType]) ? self::shop_type[$sourceType] : "未知"; //店铺类型
|
$init_goods['sourceType'] = $sourceType;
|
$init_goods['faction'] = $faction;
|
$init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
|
$init_goods['isCollect'] = self::isCollect($init_goods);
|
$init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['commissionRate']/100);
|
$init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commissionRate']/100,self::$topFanliRate);
|
return $init_goods;
|
}
|
|
|
|
}
|