zhaojs
2023-08-02 6bf09b5ad960fd4e657c132f9e451c487aa4d9c7
application/api/logic/taoke/Search.php
@@ -139,18 +139,19 @@
        return $goods;
    }
    public function compare_good($content,$common_relation_id){
    public function compare_good($content,$common_relation_id,$exclude_tb=0,$exclude_jd=0,$exclude_pdd=0,$exclude_dy=0){
        //根据传入的内容调用ast方法
        $goods = $this->ast($content);
        $title = '';
        $ogoods=[];
        $newGoods = [];
        //判断goods是否为空
        if(empty($goods)){
            $title = $content;
            $newGoods=array_merge($newGoods,$goods);
        }
        else{
            $title = $goods['title'];
            $ogoods=array_merge($ogoods,$goods);
        }
        //根据$title搜索各大平台的商品天猫,淘宝,京东自营,京东POP,拼多多,唯品会,抖音
        $LogicDingdanxia = new LogicDingdanxia();
@@ -158,6 +159,9 @@
        $LogicPdd = new LogicPdd();
        $LogicHaodanku = new LogicHaodanku();
        $LogicDataoke=new LogicDataoke();
        // $c=$exclude_tb+$exclude_jd+$exclude_pdd+$exclude_dy;
        // $pagesize=bcdiv(40,(4-$c)==0?1:(4-$c),0)+1;
        $pagesize=10;
        //根据标题查询天猫商品
        $taobaoGoods = $LogicDataoke->superSearch($title,1,40,0,1);
        //去除销量为0的商品并按照价格排序
@@ -165,93 +169,104 @@
            return $v['monthSales'] > 0&&strstr($v['shopName'],'旗舰店');
            unset($v);
        });
        //按照价格排序
        $sort1 = array_column($tmGoods, 'actualPrice');
        array_multisort($sort1, SORT_ASC, $tmGoods);
        $tmcsGoods=array_filter($taobaoGoods,function($v){
            return $v['monthSales'] > 0&&strstr($v['shopName'],'天猫超市');
            unset($v);
        });
        //按照价格排序
        $sort1 = array_column($tmcsGoods, 'actualPrice');
        array_multisort($sort1, SORT_ASC, $tmcsGoods);
        //根据标题查询京东自营商品
        $jdGoods=$LogicJd->searchGoods($title,'desc','g',0,'match',1,20);
        $jdGoods=$LogicJd->searchGoods($title,'desc','g',0,'match',1,40);
        //去除销量为0的商品并按照价格排序
        $jdGoods = array_filter($jdGoods,function($v){
            return $v['monthSales'] > 0;
        });
        //按照价格排序
        $sort1 = array_column($jdGoods, 'actualPrice');
        array_multisort($sort1, SORT_ASC, $jdGoods);
        $ppdGoodes=[];
        $common_relation_id='168369887871568';
        //根据标题查询拼多多商品
        if(!empty($common_relation_id)){
            $ppdGoodes=$LogicPdd->searchGoods($title,'',$common_relation_id,'',1,20,0,'');
            $ppdGoodes=$LogicPdd->searchGoods($title,'',$common_relation_id,'',1,40,0,'');
            //去除销量为0的商品并按照价格排序
            $ppdGoodes = array_filter($ppdGoodes,function($v){
                return $v['monthSales'] > 0;
                return $v['monthSales'] > 0&&strstr($v['shopName'],'旗舰店');
            });
            //按照价格排序
            $sort1 = array_column($ppdGoodes, 'actualPrice');
            array_multisort($sort1, SORT_ASC, $ppdGoodes);
        }
        
        //根据标题查询抖音商品
        $dyGoods =$LogicHaodanku->getDygoodsList('',$title,0,1,20);
        $dyGoods =$LogicHaodanku->getDygoodsList('',$title,0,1,40);
        //去除销量为0的商品并按照价格排序
        $dyGoods = array_filter($dyGoods,function($v){
            return $v['monthSales'] > 0;
        });
        //按照价格排序
        $sort1 = array_column($dyGoods, 'actualPrice');
        array_multisort($sort1, SORT_ASC, $dyGoods);
        $goodscount=count(array_slice($tmGoods,0,5))+count(array_slice($jdGoods,0,5))+count(array_slice($ppdGoodes,0,5))+count(array_slice($dyGoods,0,5))+count(array_slice($tmcsGoods,0,5));
        if($goodscount<20){
        $goodsList=[];
        $goodscount=count(array_slice($tmGoods,0,$pagesize))+count(array_slice($jdGoods,0,$pagesize))+count(array_slice($ppdGoodes,0,$pagesize))+count(array_slice($dyGoods,0,$pagesize))+count(array_slice($tmcsGoods,0,$pagesize));
        if($goodscount<40){
            //如果goodscount不满足20则从天猫商品里补足20
            $needcount=20-$goodscount+5;
            $newGoods =array_merge($newGoods,array_slice($tmGoods,0,5));
            $newGoods =array_merge($newGoods,array_slice($tmcsGoods,0,5));
            $newGoods =array_merge($newGoods,array_slice($jdGoods,0,5));
            $needcount=40-$goodscount+10;
            if($exclude_tb==0){
                $goodsList =array_merge($goodsList,array_slice($tmGoods,0,$pagesize));
                $goodsList =array_merge($goodsList,array_slice($tmcsGoods,0,$pagesize));
            }
            if($exclude_jd==0){
                $goodsList =array_merge($goodsList,array_slice($jdGoods,0,$pagesize));
            }
            //按照价格排序
            $sort1 = array_column($newGoods, 'actualPrice');
            array_multisort($sort1, SORT_ASC, $newGoods);
            $newGoods =array_merge($newGoods,array_slice($taobaoGoods,0,$needcount));
            $newGoods =array_merge($newGoods,array_slice($ppdGoodes,0,5));
            $newGoods =array_merge($newGoods,array_slice($dyGoods,0,5));
            if(count($goodsList)>0){
               $sort1 = array_column($goodsList, 'actualPrice');
               array_multisort($sort1, SORT_ASC, $goodsList);
            }
            if($exclude_pdd==0){
                $goodsList =array_merge($goodsList,array_slice($ppdGoodes,0,$pagesize));
            }
            if($exclude_tb==0){
                $goodsList =array_merge($goodsList,array_slice($taobaoGoods,0,$needcount));
            }
            if($exclude_dy==0){
                $goodsList =array_merge($goodsList,array_slice($dyGoods,0,$pagesize));
            }
        }
        else{
            $newGoods =array_merge($newGoods,array_slice($tmGoods,0,5));
            $newGoods =array_merge($newGoods,array_slice($tmcsGoods,0,5));
            $newGoods =array_merge($newGoods,array_slice($jdGoods,0,5));
            if($exclude_tb==0){
                $goodsList =array_merge($goodsList,array_slice($tmGoods,0,$pagesize));
                $goodsList =array_merge($goodsList,array_slice($tmcsGoods,0,$pagesize));
            }
            if($exclude_jd==0){
                $goodsList =array_merge($goodsList,array_slice($jdGoods,0,$pagesize));
            }
            //按照价格排序
            $sort1 = array_column($newGoods, 'actualPrice');
            array_multisort($sort1, SORT_ASC, $newGoods);
            $newGoods =array_merge($newGoods,array_slice($ppdGoodes,0,5));
            $newGoods =array_merge($newGoods,array_slice($dyGoods,0,5));
            if(count($goodsList)>0){
                $sort1 = array_column($goodsList, 'actualPrice');
                array_multisort($sort1, SORT_ASC, $goodsList);
            }
            if($exclude_pdd==0){
                $goodsList =array_merge($goodsList,array_slice($ppdGoodes,0,$pagesize));
            }
            if($exclude_dy==0){
                $goodsList =array_merge($goodsList,array_slice($dyGoods,0,$pagesize));
            }
        }
        //如果还是不满足20则从淘宝商品里补足20
        if(count($newGoods)<20){
            $tbGoods = $LogicDataoke->superSearch($title,1,20,0,0);
            //去除销量为0的商品并按照价格排序
            $tbGoods = array_filter($tbGoods,function($v){
                return $v['monthSales'] > 0&&$v['shopType']=='淘宝';
            });
            //按照价格排序
            $sort1 = array_column($tbGoods, 'actualPrice');
            array_multisort($sort1, SORT_ASC, $tbGoods);
            $newGoods =array_merge($newGoods,array_slice($tbGoods,0,20));
        if(count($goodsList)<40){
            if($exclude_tb==0){
                $tbGoods = $LogicDataoke->superSearch($title,1,20,0,0);
                //去除销量为0的商品并按照价格排序
                $tbGoods = array_filter($tbGoods,function($v){
                    return $v['monthSales'] > 0&&$v['shopType']=='淘宝';
                });
                //按照价格排序
                $sort1 = array_column($tbGoods, 'actualPrice');
                array_multisort($sort1, SORT_ASC, $tbGoods);
                $goodsList =array_merge($goodsList,array_slice($tbGoods,0,20));
            }
        }
        //将$ogoods插入到$goodsList第一行
        if(!empty($ogoods)){
            array_unshift($goodsList,$ogoods);
        }
        //取出前20个商品
        $goodsList = array_slice($newGoods,0,20);
        $goodsList = array_slice($goodsList,0,40);
        return $goodsList;
       
    }