让wego微购购物分享系统采集拍拍数据功能之腾讯paipai功能采集插件
wego是一款很不错的导购系统,无论前后台设计风格和功能都还不错,可有时我们的确需要一些自定义的功能,毕竟万千世界,大家都做一样的东西,采集同样的数据,能不烦吗?哈哈,今天就奉献上一个wego拍拍采集的插件,虽有瑕疵,但愿能和大家一起完善。如果做paipai推广,需要注册一些帐号资料,主要是腾讯开放平台的应用和易推广ID http://etg.qq.com/,我要-人气购物平台就是采用这种方式调用数据的。
推广者ID是推广人身份的唯一编号,可不能搞错。其次需要我们在腾讯开放平台上http://fuwu.paipai.com/app/ui/my/list/all.xhtml创建我们的应用已获得CPS调用权限。
接下来我们完成功能实现吧,既然是插件就需要配置吧,咱们首先完成配置吧。
配置完成了,可后台功能,咱们还没实现了,别着急,马上附上代码,只附上有用的,如果大家觉得自己替换马上,可使用本文的附件直接替换,替换前记得要备份哟。
\admin\Lib\Action\items_collectAction.class.php
拍拍API设置:
/**
* @desc 拍拍API
*/
public function paipaiapi(){
$setting_mod = M('setting');
if (isset($_POST['dosubmit'])) {
$paipai['paipai_userid'] = isset($_POST['paipai_userid']) && trim($_POST['paipai_userid']) ? trim($_POST['paipai_userid']) : $this->error('请填写userid');
$paipai['paipai_appoauthid'] = isset($_POST['paipai_appoauthid']) && trim($_POST['paipai_appoauthid']) ? trim($_POST['paipai_appoauthid']) : $this->error('请填写appoauthid');
$paipai['paipai_appoauthkey'] = isset($_POST['paipai_appoauthkey']) && trim($_POST['paipai_appoauthkey']) ? trim($_POST['paipai_appoauthkey']) : $this->error('请填写appoauthkey');
$paipai['paipai_accesstoken'] = isset($_POST['paipai_accesstoken']) && trim($_POST['paipai_accesstoken']) ? trim($_POST['paipai_accesstoken']) : $this->error('请填写accesstoken');
$paipai['paipai_uid'] = isset($_POST['paipai_uid']) && trim($_POST['paipai_uid']) ? trim($_POST['paipai_uid']) : $this->error('请填写uid');
foreach( $paipai as $key=>$val ){
$setting_mod->where("name='$key'")->save(array('data'=>$val));
}
$this->success('修改成功', U('items_collect/paipaiapi'));
}
$res = $setting_mod->where("name='paipai_userid' OR name='paipai_appoauthid' OR name='paipai_appoauthkey' OR name='paipai_accesstoken' OR name='paipai_uid'")->select();
foreach( $res as $val ){
$paipaiset[$val['name']] = $val['data'];
}
$this->assign('paipai',$paipaiset);
$this->display();
}
//拍拍秒数据采集入库
private function paipai_collect_insert($item,$cate_id){
$items_mod=D('items');
$items_tags_mod=D('items_tags');
$items_tags_item_mod=D('items_tags_item');
//需要判断商品是否已经存在
$isset=$items_mod->where("item_key='".$item['item_key']."'")->getField('id');
if($isset){
return;
}
$add_time=time();
$item['img']=$item['bigUri'];
$item['simg']=$item['imgUri'];
$item['bimg']=$item['bigUri'];
if($item['popular']==0){
$item['popular']=1;
}
$item_id=$items_mod->add(array(
'title'=>ReplaceKeywords(strip_tags($item['title'])),
'cid'=>$cate_id,
'sid'=>$item['sid'],
'item_key'=>$item['item_key'],
'img'=>$item['img'],
'simg'=>$item['simg'],
'bimg'=>$item['bimg'],
'price'=>$item['price'],
'url'=>$item['tagUrl'],
'likes'=>$item['popular'],
'seller_name'=>$item['nickName'],
'cash_back_rate'=>$item['cvValue'],
'haves'=>1,
'add_time'=>$add_time,
));
//处理标签
$tags = $items_tags_mod->get_tags_by_title(strip_tags($item['title']));
if ($tags) {
$tags = array_unique($tags);
foreach ($tags as $tag) {
$isset_id = $items_tags_mod->where("name='".$tag."'")->getField('id');
if ($isset_id) {
$items_tags_mod->where('id='.$isset_id)->setInc('item_nums'); //如果存在此标签的商品 让item_nums+1
$items_tags_item_mod->add(array(
'item_id' => $item_id,
'tag_id' => $isset_id
));
} else {
$tag_id = $items_tags_mod->add(array('name'=>$tag));
$items_tags_item_mod->add(array(
'item_id' => $item_id,
'tag_id' => $tag_id
));
}
}
}
}
public function collect()
{
if(isset($_REQUEST['dosubmit'])){
$cate=implode(',',$_REQUEST['cate']);
header("location:".U('items_collect/taobao_batch_collect_jump?act=batch&cate='.$cate));
exit;
}
$code = isset($_REQUEST['code']) ? trim($_REQUEST['code']) : $this->error('参数错误');
$items_cate_mod = D('items_cate');
switch ($code) {
case 'taobao':
$res=get_items_cate_list();
$this->assign('items_cate_list', $res['sort_list']);
break;
case 'miao':
$res=get_items_cate_list('0','0','1','collect_miao');
$this->assign('items_cate_list', $res['sort_list']);
break;
case "paipai":
$this->error("暂不支持此功能。");
break;
}
$this->assign('code',$code);
$this->display();
}
//分类采集
public function cate_collect()
{
if(isset($_REQUEST['dosubmit'])){
$cate=implode(',',$_REQUEST['cate']);
header("location:".U('items_collect/taobao_batch_collect_jump?act=batch&cate='.$cate));
exit;
}
$code = isset($_REQUEST['code']) ? trim($_REQUEST['code']) : $this->error('参数错误');
$items_cate_mod = D('items_cate');
switch ($code) {
case 'taobao':
$items_cate_mod = D('items_cate');
$taocate=$this->get_taocats();
$this->assign('cate_list', $taocate);
break;
case 'miao':
$items_cate_mod = D('items_cate');
$miaocate=$this->get_miaocats();
$this->assign('cate_list', $miaocate);
break;
case "paipai":
$items_cate_mod = D('items_cate');
$paipaicate=$this->get_paipaicats();
break;
}
$this->assign('code',$code);
$this->display();
}
/**
* @desc 获取拍拍分类
*/
private function get_paipaicats($cid){
//$paipai_api=$this->paipai_client();
//$paipai_api->setApiPath("/deal/sellerSearchDealList.xhtml")
//exit;
return null;
}
拍拍搜索功能
public function search_paipai(){
$_GET=setFormString($_GET);
$keyword = isset($_GET['keyword']) && trim($_GET['keyword']) ? trim($_GET['keyword']) : '';
$pages = isset($_GET['pages']) && intval($_GET['pages']) ? intval($_GET['pages']) : 1;
$p=isset($_GET['p'])?$_GET['p']:1;
$start_price=$_GET['begPrice'];
$end_price=$_GET['endPrice'];
//获取此商品对应的商家sid
$items_cate_mod = D('items_cate');
$items_site_mod = D('items_site');
$paipai_api = $this->paipai_client(); //获取59秒api设置信息
$paipai_api->setApiPath("/cps/cpsCommSearch.xhtml");//这个是用户需要调用的 接口函数
$paipai_api->setMethod("get");//post
$paipai_api->setCharset("utf-8");//gbk
$paipai_api->setFormat("json");//gbk
!empty($_GET['begPrice'])&&$params['begPrice']=$_GET['begPrice'];
!empty($_GET['endPrice'])&&$params['endPrice']=$_GET['endPrice'];
!empty($_GET['keyWord'])&&$params['keyWord']=$_GET['keyWord'];
!empty($_GET['pageSize'])&&$params['pageSize']=$_GET['pageSize'];
!empty($_GET['degree'])&&$params['degree']=$_GET['degree'];
!empty($_GET['saleType'])&&$params['saleType']=$_GET['saleType'];
//填写推广者ID
$params['userId']=$this->setting['paipai_userid'];
$paipai_api->setParams($params);
$data=$paipai_api->invoke();
if(!$data||$data->CpsCommSearchResult->errorCode!=0)
return;
$data=json_decode($data);
$goods_list= $data->CpsCommSearchResult->vecComm;
$goods_list_s = array();
foreach ($goods_list as $val){
$val->price=doubleval(($val->price/100));
$val->cvValue=doubleval(($val->cvValue/10000));
$goods_list_s[$val->itemId]=get_object_vars_final($val);
}
//每次保存
count($goods_list_s)>0 && F('goods_list_paipai',$goods_list_s);
$this->assign('list', $goods_list_s);
$this->display();
}
/**
* @desc 拍拍数据发布
*/
public function publishpaipai(){
$ids=$_GET['ids'];
if(isset($_POST['dosubmit'])){
//从缓存中获取本页商品数据
$items_cate_mod = D('items_cate');
$ids=$_POST['ids'];
$ids_arr = explode(',', $ids);
$cate_id=$_POST['cid'];
$goods_list_s = F('goods_list_paipai');
$items_site_mod = D('items_site');
$sid = $items_site_mod->where("alias='paipai'")->getField('id');
$items_nums = 0;
foreach ($goods_list_s as $key => $val) {
if (in_array($key,$ids_arr)) {
$val['item_key'] = 'paipai_'.$val['itemId'];
$val['sid'] = $sid;
$this->paipai_collect_insert($val,$cate_id); //数据入库
$items_nums++;
}
}
if ($items_nums>0) {
$items_cate_mod->where('id='.$cate_id)->setInc('item_nums', $items_nums);
}
$this->collect_success('采集完成', '', 'collect');
}else{
$items_cate_mod = D('items_cate');
$cate_list=$items_cate_mod->get_top2_list();
$this->assign('cate_list', $cate_list);
$this->assign('ids',$ids);
}
$this->display();
}
最后一步我们追加系统需要的API到系统vendar库中:\includes\thinkphp\Extend\Vendor\apipaipai
HttpClient.class.php
PaiPaiOpenApiOauth.php
拍拍易推广CPSAPI:https://files.cnblogs.com/mengdejun/apipaipai.zip
整个插件附件:https://files.cnblogs.com/mengdejun/wyao.in.paipai.zip
现在我们可以畅快的使用拍拍产品了,多一种选择,多一种收获,何乐而不为了。
原创文章,拒绝采集,如需转载请保留出处及其作者信息。
作者:孟德军<mengdj@outlook.com> QQ:280759843 自定义开发可Q我。
本文地址:http://www.cnblogs.com/mengdejun/p/wego_paipai_collect_plugin.html