You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			707 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			707 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
namespace wstmart\home\controller;
 | 
						|
use wstmart\home\model\Goods as M;
 | 
						|
use wstmart\common\model\Goods as CM;
 | 
						|
/**
 | 
						|
 * ============================================================================
 | 
						|
 * 商品控制器
 | 
						|
 */
 | 
						|
class Goods extends Base{
 | 
						|
    protected $beforeActionList = [
 | 
						|
          'checkShopAuth' =>  ['except'=>'search,lists,detail,historybygoods,contrastgoods,contrastdel,contrast']
 | 
						|
    ];
 | 
						|
    /**
 | 
						|
      * 批量删除商品
 | 
						|
      */
 | 
						|
     public function batchDel(){
 | 
						|
        $m = new M();
 | 
						|
        return $m->batchDel();
 | 
						|
     }
 | 
						|
    /**
 | 
						|
     * 修改商品库存/价格
 | 
						|
     */
 | 
						|
    public function editGoodsBase(){
 | 
						|
        $m = new M();
 | 
						|
        return $m->editGoodsBase();
 | 
						|
    }
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 修改商品状态
 | 
						|
	 */
 | 
						|
	public function changSaleStatus(){
 | 
						|
		$m = new M();
 | 
						|
		return $m->changSaleStatus();
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 修改商品店长推荐状态
 | 
						|
	 */
 | 
						|
	public function changStoreRecom(){
 | 
						|
		$m = new M();
 | 
						|
		return $m->changStoreRecom();
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 批量修改商品状态 新品/精品/热销/推荐
 | 
						|
	 */
 | 
						|
	public function changeGoodsStatus(){
 | 
						|
		$m = new M();
 | 
						|
		return $m->changeGoodsStatus();
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 批量修改商品状态 店长推荐
 | 
						|
	 */
 | 
						|
	public function changeStoreStatus(){
 | 
						|
		$m = new M();
 | 
						|
		return $m->changeStoreStatus();
 | 
						|
	}
 | 
						|
    /**
 | 
						|
    *   批量上(下)架
 | 
						|
    */
 | 
						|
    public function changeSale(){
 | 
						|
        $m = new M();
 | 
						|
        return $m->changeSale();
 | 
						|
    }
 | 
						|
   /**
 | 
						|
    *  上架商品列表
 | 
						|
    */
 | 
						|
	public function sale(){
 | 
						|
		return $this->fetch('shops/goods/list_sale');
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 获取上架商品列表
 | 
						|
	 */
 | 
						|
	public function saleByPage(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->saleByPage();
 | 
						|
		$rs['status'] = 1;
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 仓库中商品
 | 
						|
	 */
 | 
						|
    public function store(){
 | 
						|
		return $this->fetch('shops/goods/list_store');
 | 
						|
	}
 | 
						|
    /**
 | 
						|
	 * 审核中的商品
 | 
						|
	 */
 | 
						|
    public function audit(){
 | 
						|
		return $this->fetch('shops/goods/list_audit');
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 获取审核中的商品
 | 
						|
	 */
 | 
						|
    public function auditByPage(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->auditByPage();
 | 
						|
		$rs['status'] = 1;
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 获取仓库中的商品
 | 
						|
	 */
 | 
						|
    public function storeByPage(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->storeByPage();
 | 
						|
		$rs['status'] = 1;
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 违规商品
 | 
						|
	 */
 | 
						|
    public function illegal(){
 | 
						|
		return $this->fetch('shops/goods/list_illegal');
 | 
						|
	}
 | 
						|
	/*
 | 
						|
     * 设置商品特定价格
 | 
						|
     * */
 | 
						|
	public function limitPrice(){
 | 
						|
		$shopId=(int)session('WST_USER.shopId');
 | 
						|
		$where['shopId'] = $shopId;
 | 
						|
		$where['goodsStatus'] = 1;
 | 
						|
		$where['dataFlag'] = 1;
 | 
						|
		$where['isSale'] = 1;
 | 
						|
		if (Request()->isPost()) {
 | 
						|
			$goodsType = input('goodsType');
 | 
						|
			if ($goodsType != '') $where['goodsType'] = (int)$goodsType;
 | 
						|
			$c1Id = (int)input('cat1');
 | 
						|
			$c2Id = (int)input('cat2');
 | 
						|
			$goodsName = input('goodsName');
 | 
						|
			if ($goodsName != '') {
 | 
						|
				$where['goodsName'] = ['like', "%$goodsName%"];
 | 
						|
			}
 | 
						|
			if ($c2Id != 0 && $c1Id != 0) {
 | 
						|
				$where['shopCatId2'] = $c2Id;
 | 
						|
			} else if ($c1Id != 0) {
 | 
						|
				$where['shopCatId1'] = $c1Id;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		$lists=db('goods')->where($where)->field('goodsId,goodsName,goodsType')->select();
 | 
						|
		//dump($lists);
 | 
						|
		if (Request()->isAjax()) {
 | 
						|
			//dump($lists);
 | 
						|
			exit(json_encode(WSTReturn('',1,$lists)));
 | 
						|
		}
 | 
						|
		$this->assign('lists',$lists);
 | 
						|
		return $this->fetch('shops/goods/list_limitprice');
 | 
						|
	}
 | 
						|
	//获取商品货号
 | 
						|
	public function getGoodsProduct(){
 | 
						|
		$goodsId = (int)input('goodsId');
 | 
						|
		$res['specs'] = db('goods_specs')->where(['goodsId'=>$goodsId])->field('productNo,specIds')->select();
 | 
						|
		$res['goods'] = db('goods')->where(['goodsId'=>$goodsId])->field('marketPrice')->find();
 | 
						|
		// dump($res);die;
 | 
						|
		exit(json_encode($res));
 | 
						|
	}
 | 
						|
 | 
						|
	//获取商品规格
 | 
						|
	public function getGoodsSpecs(){
 | 
						|
		$productNo = input('productNo');
 | 
						|
		$res = db('goods_specs')->where(['productNo'=>$productNo])->field('specIds,marketPrice')->find();
 | 
						|
		$specs = explode(':',$res['specIds']);
 | 
						|
		$data = db('spec_items')->where(['itemId'=>['in',$specs]])->select();
 | 
						|
		$rs['itemName'] = implode(',',array_column($data,'itemName'));
 | 
						|
		$rs['marketPrice'] = $res['marketPrice'];
 | 
						|
		exit(json_encode($rs));
 | 
						|
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 获取违规的商品
 | 
						|
	 */
 | 
						|
	public function illegalByPage(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->illegalByPage();
 | 
						|
		$rs['status'] = 1;
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 获取已设置限时价格的商品
 | 
						|
	 */
 | 
						|
	public function limitPriceByPage(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->limitPriceByPage();
 | 
						|
		$rs['status'] = 1;
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 获取指定显示价格的商品的商品
 | 
						|
	 */
 | 
						|
	public function getLimitGoods(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->getLimitGoods();
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 跳去新增限时价格商品页面
 | 
						|
	 */
 | 
						|
	public function addLimitGoods(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->addLimitGoods();
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 跳去编辑限时价格商品页面
 | 
						|
	 */
 | 
						|
	public function editLimitGoods(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->editLimitGoods();
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 删除显示价格商品
 | 
						|
	 */
 | 
						|
	public function delLimitGoods(){
 | 
						|
		$m = new M();
 | 
						|
		$rs = $m->delLimitGoods();
 | 
						|
		return $rs;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * 跳去新增页面
 | 
						|
	 */
 | 
						|
    public function add(){
 | 
						|
    	$m = new M();
 | 
						|
    	$object = $m->getEModel('goods');
 | 
						|
        $shopId=(int)session('WST_USER.shopId');
 | 
						|
  //       $object['pay']=db('shop_pay')->where(['shopId'=>$shopId,'status'=>1])->find();
 | 
						|
		// $object['isEct']=0;
 | 
						|
        $object['ectPayRatio'] = db('payments')->where(['payCode'=>'ect'])->value('payRatio');
 | 
						|
    	$object['goodsSn'] = WSTGoodsNo();
 | 
						|
    	$object['productNo'] = WSTGoodsNo();
 | 
						|
    	$object['goodsImg'] = WSTConf('CONF.goodsLogo');
 | 
						|
		$object['ectPay']=0;//db('goods')->alias('g')->join('goods_ectpay ge','ge.goodsId=g.goodsId','left')->value('ectPay');
 | 
						|
        $object['alone'] =0;
 | 
						|
        $object['basicsMoney'] = 0;
 | 
						|
        // $aloneShop = db('alone_shops')->alias('as')->join('__SHOPS__ s','as.shopId=s.shopId')->where(['as.dataFlag'=>'1','as.shopId'=>$shopId])->value('as.shopId');
 | 
						|
        // if($aloneShop){
 | 
						|
        //     $object['alone'] =1;
 | 
						|
        // }
 | 
						|
		//dump($object); 
 | 
						|
    	$data = ['object'=>$object,'src'=>'add'];
 | 
						|
    	return $this->fetch('shops/goods/edit',$data);
 | 
						|
    } 
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * 新增商品
 | 
						|
     */
 | 
						|
    public function toAdd(){
 | 
						|
    	$m = new M();
 | 
						|
    	return $m->add();
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * 跳去编辑页面
 | 
						|
     */
 | 
						|
    public function edit(){
 | 
						|
    	$m = new M();
 | 
						|
    	$object = $m->getById(input('get.id'));
 | 
						|
		$shopId=(int)session('WST_USER.shopId');
 | 
						|
		// $object['pay']=db('shop_pay')->where(['shopId'=>$shopId,'status'=>1])->find();
 | 
						|
		// //$object['pay']=1;
 | 
						|
		// if($object['pay']){
 | 
						|
		// 	$object['isEct']=db('goods_pay')->where('goodsId',$object['goodsId'])->value('ectPay');
 | 
						|
		// 	//$object['isOnline']=db('goods_pay')->where('goodsId',$object['goodsId'])->value('onlinePay');
 | 
						|
		// }
 | 
						|
        $object['ectPayRatio'] = db('payments')->where(['payCode'=>'ect'])->value('payRatio');
 | 
						|
    	if($object['goodsImg']=='')$object['goodsImg'] = WSTConf('CONF.goodsLogo');
 | 
						|
        $object['ectPay']=0;
 | 
						|
        if($object['basicsMoney'] == '') $object['basicsMoney'] = 0;
 | 
						|
        $object['alone'] =0;
 | 
						|
        // $aloneShop = db('alone_shops')->alias('as')->join('__SHOPS__ s','as.shopId=s.shopId')->where(['as.dataFlag'=>'1','as.shopId'=>$shopId])->value('as.shopId');
 | 
						|
        // if($aloneShop){
 | 
						|
        //     $object['alone'] =1;
 | 
						|
        // }
 | 
						|
    	$data = ['object'=>$object,'src'=>input('src')];
 | 
						|
    	return $this->fetch('shops/goods/edit',$data);
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * 编辑商品
 | 
						|
     */
 | 
						|
    public function toEdit(){
 | 
						|
    	$m = new M();
 | 
						|
    	return $m->edit();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 删除商品
 | 
						|
     */
 | 
						|
    public function del(){
 | 
						|
    	$m = new M();
 | 
						|
    	return $m->del();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 获取商品规格属性
 | 
						|
     */
 | 
						|
    public function getSpecAttrs(){
 | 
						|
    	$m = new M();
 | 
						|
    	return $m->getSpecAttrs();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 进行商品搜索
 | 
						|
     */
 | 
						|
    public function search(){
 | 
						|
    	//获取商品记录
 | 
						|
    	$m = new M();
 | 
						|
    	$data = [];
 | 
						|
    	$data['isStock'] = Input('isStock/d');
 | 
						|
    	$data['isNew'] = Input('isNew/d');
 | 
						|
        $data['isFreeShipping'] = input('isFreeShipping/d');
 | 
						|
    	$data['orderBy'] = Input('orderBy/d');
 | 
						|
    	$data['order'] = Input('order/d',1);
 | 
						|
    	$data['keyword'] = input('keyword');
 | 
						|
    	$data['sprice'] = Input('sprice/d');
 | 
						|
    	$data['eprice'] = Input('eprice/d');
 | 
						|
 | 
						|
        $data['areaId'] = (int)Input('areaId');
 | 
						|
        $aModel = model('home/areas');
 | 
						|
 | 
						|
        // 获取地区
 | 
						|
        $data['area1'] = $data['area2'] = $data['area3'] = $aModel->listQuery(); // 省级
 | 
						|
 | 
						|
        // 如果有筛选地区 获取上级地区信息
 | 
						|
        if($data['areaId']!==0){
 | 
						|
            $areaIds = $aModel->getParentIs($data['areaId']);
 | 
						|
            /*
 | 
						|
              2 => int 440000
 | 
						|
              1 => int 440100
 | 
						|
              0 => int 440106
 | 
						|
            */
 | 
						|
            $selectArea = [];
 | 
						|
            $areaName = '';
 | 
						|
            foreach($areaIds as $k=>$v){
 | 
						|
                $a = $aModel->getById($v);
 | 
						|
                $areaName .=$a['areaName'];
 | 
						|
                $selectArea[] = $a;
 | 
						|
            }
 | 
						|
            // 地区完整名称
 | 
						|
            $selectArea['areaName'] = $areaName;
 | 
						|
            // 当前选择的地区
 | 
						|
            $data['areaInfo'] = $selectArea;
 | 
						|
 | 
						|
            $data['area2'] = $aModel->listQuery($areaIds[2]); // 广东的下级
 | 
						|
 
 | 
						|
            $data['area3'] = $aModel->listQuery($areaIds[1]); // 广州的下级
 | 
						|
        }
 | 
						|
        
 | 
						|
 | 
						|
    	$data['goodsPage'] = $m->pageQuery();
 | 
						|
    	return $this->fetch("goods_search",$data);
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * 获取商品列表
 | 
						|
     */
 | 
						|
    public function lists(){
 | 
						|
    	$catId = Input('cat/d');
 | 
						|
    	$goodsCatIds = model('GoodsCats')->getParentIs($catId);
 | 
						|
    	reset($goodsCatIds);
 | 
						|
    	//填充参数
 | 
						|
    	$data = [];
 | 
						|
    	$data['catId'] = $catId;
 | 
						|
    	$data['isStock'] = Input('isStock/d');
 | 
						|
    	$data['isNew'] = Input('isNew/d');
 | 
						|
        $data['isFreeShipping'] = input('isFreeShipping/d');
 | 
						|
    	$data['orderBy'] = Input('orderBy/d');
 | 
						|
    	$data['order'] = Input('order/d',1);
 | 
						|
    	$data['sprice'] = Input('sprice');
 | 
						|
    	$data['eprice'] = Input('eprice');
 | 
						|
    	$data['attrs'] = [];
 | 
						|
 | 
						|
        $data['areaId'] = (int)Input('areaId');
 | 
						|
        $aModel = model('home/areas');
 | 
						|
 | 
						|
        // 获取地区
 | 
						|
        $data['area1'] = $data['area2'] = $data['area3'] = $aModel->listQuery(); // 省级
 | 
						|
 | 
						|
        // 如果有筛选地区 获取上级地区信息
 | 
						|
        if($data['areaId']!==0){
 | 
						|
            $areaIds = $aModel->getParentIs($data['areaId']);
 | 
						|
            /*
 | 
						|
              2 => int 440000
 | 
						|
              1 => int 440100
 | 
						|
              0 => int 440106
 | 
						|
            */
 | 
						|
            $selectArea = [];
 | 
						|
            $areaName = '';
 | 
						|
            foreach($areaIds as $k=>$v){
 | 
						|
                $a = $aModel->getById($v);
 | 
						|
                $areaName .=$a['areaName'];
 | 
						|
                $selectArea[] = $a;
 | 
						|
            }
 | 
						|
            // 地区完整名称
 | 
						|
            $selectArea['areaName'] = $areaName;
 | 
						|
            // 当前选择的地区
 | 
						|
            $data['areaInfo'] = $selectArea;
 | 
						|
 | 
						|
            $data['area2'] = $aModel->listQuery($areaIds[2]); // 广东的下级
 | 
						|
 
 | 
						|
            $data['area3'] = $aModel->listQuery($areaIds[1]); // 广州的下级
 | 
						|
        }
 | 
						|
        
 | 
						|
    	$vs = input('vs');
 | 
						|
    	$vs = ($vs!='')?explode(',',$vs):[];
 | 
						|
    	foreach ($vs as $key => $v){
 | 
						|
    		if($v=='' || $v==0)continue;
 | 
						|
    		$v = (int)$v;
 | 
						|
    		$data['attrs']['v_'.$v] = input('v_'.$v);
 | 
						|
    	}
 | 
						|
    	$data['vs'] = $vs;
 | 
						|
 | 
						|
    	$brandIds = Input('brand');
 | 
						|
 | 
						|
 | 
						|
        $bgIds = [];// 品牌下的商品Id
 | 
						|
        if(!empty($vs)){
 | 
						|
            // 存在筛选条件,取出符合该条件的商品id,根据商品id获取可选品牌
 | 
						|
            $goodsId = model('goods')->filterByAttributes();
 | 
						|
            $data['brandFilter'] = model('Brands')->canChoseBrands($goodsId);
 | 
						|
        }else{
 | 
						|
           // 取出分类下包含商品的品牌
 | 
						|
           $data['brandFilter'] = model('Brands')->goodsListQuery((int)current($goodsCatIds));
 | 
						|
        }
 | 
						|
        if(!empty($brandIds))$bgIds = model('Brands')->getGoodsIds($brandIds);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    	$data['price'] = Input('price');
 | 
						|
    	//封装当前选中的值
 | 
						|
    	$selector = [];
 | 
						|
    	//处理品牌
 | 
						|
        $brandIds = explode(',',$brandIds);
 | 
						|
        $bIds = $brandNames = [];
 | 
						|
        foreach($brandIds as $bId){
 | 
						|
        	if($bId>0){
 | 
						|
        		foreach ($data['brandFilter'] as $key =>$v){
 | 
						|
        			if($v['brandId']==$bId){
 | 
						|
                        array_push($bIds, $v['brandId']);
 | 
						|
                        array_push($brandNames, $v['brandName']);
 | 
						|
                    }
 | 
						|
        		}
 | 
						|
                $selector[] = ['id'=>join(',',$bIds),'type'=>'brand','label'=>"品牌","val"=>join('、',$brandNames)];
 | 
						|
            }
 | 
						|
        }
 | 
						|
        // 当前是否有品牌筛选
 | 
						|
        if(!empty($selector)){
 | 
						|
            $_s[] = $selector[count($selector)-1];
 | 
						|
            $selector = $_s;
 | 
						|
            unset($data['brandFilter']);
 | 
						|
        }
 | 
						|
        $data['brandId'] = Input('brand');
 | 
						|
 | 
						|
    	//处理价格
 | 
						|
    	if($data['sprice']!='' && $data['eprice']!=''){
 | 
						|
    		$selector[] = ['id'=>0,'type'=>'price','label'=>"价格","val"=>$data['sprice']."-".$data['eprice']];
 | 
						|
    	}
 | 
						|
        if($data['sprice']!='' && $data['eprice']==''){
 | 
						|
        	$selector[] = ['id'=>0,'type'=>'price','label'=>"价格","val"=>$data['sprice']."以上"];
 | 
						|
    	}
 | 
						|
        if($data['sprice']=='' && $data['eprice']!=''){
 | 
						|
        	$selector[] = ['id'=>0,'type'=>'price','label'=>"价格","val"=>"0-".$data['eprice']];
 | 
						|
    	}
 | 
						|
    	//处理已选属性
 | 
						|
    	$goodsFilter = model('Attributes')->listQueryByFilter($catId);
 | 
						|
    	$ngoodsFilter = [];
 | 
						|
        if(!empty($vs)){
 | 
						|
            // 存在筛选条件,取出符合该条件的商品id,根据商品id获取可选属性进行拼凑
 | 
						|
            $goodsId = model('goods')->filterByAttributes();
 | 
						|
                // 如果同时有筛选品牌,则与品牌下的商品Id取交集
 | 
						|
            if(!empty($bgIds))$goodsId = array_intersect($bgIds,$goodsId);
 | 
						|
 | 
						|
 | 
						|
            $attrs = model('Attributes')->getAttribute($goodsId);
 | 
						|
            // 去除已选择属性
 | 
						|
            foreach ($attrs as $key =>$v){
 | 
						|
                if(!in_array($v['attrId'],$vs))$ngoodsFilter[] = $v;
 | 
						|
            }
 | 
						|
        }else{
 | 
						|
            if(!empty($bgIds))$goodsFilter = model('Attributes')->getAttribute($bgIds);// 存在品牌筛选
 | 
						|
            // 当前无筛选条件,取出分类下所有属性
 | 
						|
        	foreach ($goodsFilter as $key =>$v){
 | 
						|
        		if(!in_array($v['attrId'],$vs))$ngoodsFilter[] = $v;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        if(count($vs)>0){
 | 
						|
            $_vv = [];
 | 
						|
            $_attrArr = [];
 | 
						|
    		foreach ($goodsFilter as $key =>$v){
 | 
						|
    			if(in_array($v['attrId'],$vs)){
 | 
						|
    				foreach ($v['attrVal'] as $key2 =>$vv){
 | 
						|
    					if(strstr(input('v_'.$v['attrId']),$vv)!==false){
 | 
						|
                            array_push($_vv, $vv);
 | 
						|
                            $_attrArr[$v['attrId']]['attrName'] = $v['attrName'];
 | 
						|
                            $_attrArr[$v['attrId']]['val'] = $_vv;
 | 
						|
                        }
 | 
						|
    				}
 | 
						|
                    $_vv = [];
 | 
						|
    			}
 | 
						|
    		}
 | 
						|
            foreach($_attrArr as $k1=>$v1){
 | 
						|
                $selector[] = ['id'=>$k1,'type'=>'v_'.$k1,'label'=>$v1['attrName'],"val"=>join('、',$v1['val'])];
 | 
						|
            }
 | 
						|
    	}
 | 
						|
    	$data['selector'] = $selector;
 | 
						|
    	$data['goodsFilter'] = $ngoodsFilter;
 | 
						|
    	//获取商品记录
 | 
						|
    	$m = new M();
 | 
						|
    	$data['priceGrade'] = $m->getPriceGrade($goodsCatIds);
 | 
						|
    	$data['goodsPage'] = $m->pageQuery($goodsCatIds);
 | 
						|
        $catPaths = model('goodsCats')->getParentNames($catId);
 | 
						|
        $data['catNamePath'] = '全部商品分类';
 | 
						|
        if(!empty($catPaths))$data['catNamePath'] = implode(' - ',$catPaths);
 | 
						|
        // 商品分类下级
 | 
						|
        $where = ['parentId'=>0,'dataFlag'=>1];
 | 
						|
        if($catId!='')$where['parentId']=$catId;
 | 
						|
        $goodsCats = model('goodsCats')->field('catId,catName')->where($where)->select();
 | 
						|
        $this->assign('goodsCats',$goodsCats);
 | 
						|
    	return $this->fetch("goods_list",$data);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 查看商品详情
 | 
						|
     */
 | 
						|
    public function detail(){
 | 
						|
    	$m = new M();
 | 
						|
    	$goods = $m->getBySale(input('id/d',0));
 | 
						|
        $key=input('key');
 | 
						|
    	if(!empty($goods)){
 | 
						|
            //判断是否药品
 | 
						|
            $goods_cat=strpos($goods['goodsCatIdPath'],'389');
 | 
						|
            if($goods_cat!==false && $key==''){
 | 
						|
                return $this->fetch("error_lost");
 | 
						|
            }
 | 
						|
            if((int)session('WST_USER.userId')!=""){
 | 
						|
            $history_data['userId']=(int)session('WST_USER.userId');
 | 
						|
            $history_data['goodsId']=$goods['goodsId'];
 | 
						|
            $history_data['path']='1';
 | 
						|
            $history_data['create_time']=time();
 | 
						|
            $result=db('page_view')->insert($history_data);
 | 
						|
        }
 | 
						|
    	    $history = cookie("history_goods");
 | 
						|
    	    $history = is_array($history)?$history:[];
 | 
						|
            array_unshift($history, (string)$goods['goodsId']);
 | 
						|
            $history = array_values(array_unique($history));
 | 
						|
            
 | 
						|
			if(!empty($history)){
 | 
						|
				cookie("history_goods",$history,25920000);
 | 
						|
			}
 | 
						|
            // 商品详情延迟加载
 | 
						|
            $goods['goodsDesc']=htmlspecialchars_decode($goods['goodsDesc']);
 | 
						|
            //修改匹配规则 适应oss 地址 mark 20180615 by zl
 | 
						|
            // $rule = '/<img src="\/(upload.*?)"/';
 | 
						|
            $rule = '/<img src=".*?\/(upload.*?)"/';
 | 
						|
            preg_match_all($rule, $goods['goodsDesc'], $images);
 | 
						|
            foreach($images[0] as $k=>$v){
 | 
						|
                //mark by cheng商品详情换成远程oss图片20180313
 | 
						|
                //$goods['goodsDesc'] = str_replace($v, "<img class='goodsImg' data-original=\"__ROOT__/".WSTImg($images[1][$k],3)."\"", $goods['goodsDesc']);
 | 
						|
                $goods['goodsDesc'] = str_replace($v, "<img class='goodsImg' data-original=\"__IMGURL__/".WSTImg($images[1][$k],0)."\"", $goods['goodsDesc']);
 | 
						|
 | 
						|
            }
 | 
						|
            hook('afterGetGoods',['params'=>&$goods]);
 | 
						|
            $goods['is_seckilling']=isset($goods['is_seckilling'])?$goods['is_seckilling']:0;
 | 
						|
			$this->assign('goods',$goods);
 | 
						|
            $this->assign('shop',$goods['shop']);
 | 
						|
	    	return $this->fetch("goods_detail");
 | 
						|
    	}else{
 | 
						|
    		return $this->fetch("error_lost");
 | 
						|
    	}
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 预警库存
 | 
						|
     */
 | 
						|
    public function stockwarnbypage(){
 | 
						|
    	return $this->fetch("shops/stockwarn/list");
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 获取预警库存列表
 | 
						|
     */
 | 
						|
    public function stockByPage(){
 | 
						|
    	$m = new M();
 | 
						|
    	$rs = $m->stockByPage();
 | 
						|
    	$rs['status'] = 1;
 | 
						|
    	return $rs;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 修改预警库存
 | 
						|
     */
 | 
						|
    public function editwarnStock(){
 | 
						|
    	$m = new M();
 | 
						|
    	return $m->editwarnStock();
 | 
						|
    }
 | 
						|
    
 | 
						|
	/**
 | 
						|
	 * 获取商品浏览记录
 | 
						|
	 */
 | 
						|
	public function historyByGoods(){
 | 
						|
		$rs = model('Tags')->historyByGoods(8);
 | 
						|
		return WSTReturn('',1,$rs);
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 *  记录对比商品
 | 
						|
	 */
 | 
						|
	public function contrastGoods(){
 | 
						|
		$id = (int)input('post.id');
 | 
						|
		$contras = cookie("contras_goods");
 | 
						|
		if($id>0){
 | 
						|
			$m = new M();
 | 
						|
			$goods = $m->getBySale($id);
 | 
						|
			$catId = explode('_',$goods['goodsCatIdPath']);
 | 
						|
			$catId = $catId[0];
 | 
						|
			if(isset($contras['catId']) && $catId!=$contras['catId'])return WSTReturn('请选择同分类对比',-1);
 | 
						|
			if(isset($contras['list']) && count($contras['list'])>3)return WSTReturn('对比栏已满',-1);
 | 
						|
			if(!isset($contras['catId']))$contras['catId'] = $catId;
 | 
						|
			$contras['list'][$id] = $id;
 | 
						|
			cookie("contras_goods",$contras,25920000);
 | 
						|
		}
 | 
						|
		if(isset($contras['list'])){
 | 
						|
			$m = new M();
 | 
						|
			$list = [];
 | 
						|
			foreach($contras['list'] as $k=>$v){
 | 
						|
				$list[] = $m->getBySale($v);
 | 
						|
			}
 | 
						|
			return WSTReturn('',1,$list);
 | 
						|
		}else{
 | 
						|
			return WSTReturn('',1);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 *  删除对比商品
 | 
						|
	 */
 | 
						|
	public function contrastDel(){
 | 
						|
		$id = (int)input('post.id');
 | 
						|
		$contras = cookie("contras_goods");
 | 
						|
		if($id>0 && isset($contras['list'])){
 | 
						|
			unset($contras['list'][$id]);
 | 
						|
			cookie("contras_goods",$contras,25920000);
 | 
						|
		}else{
 | 
						|
			cookie("contras_goods", null);
 | 
						|
		}
 | 
						|
		return WSTReturn('删除成功',1);
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 *  商品对比
 | 
						|
	 */
 | 
						|
	public function contrast(){
 | 
						|
		$contras = cookie("contras_goods");
 | 
						|
		$list = [];
 | 
						|
		$list = $lists= $saleSpec = $shop = $score = $brand = $spec = [];
 | 
						|
		if(isset($contras['list'])){
 | 
						|
			$m = new M();
 | 
						|
			foreach($contras['list'] as $key=>$value){
 | 
						|
				$dara = $m->getBySale($value);
 | 
						|
				if(isset($dara['saleSpec'])){
 | 
						|
					foreach($dara['saleSpec'] as $ks=>$vs){
 | 
						|
						if($vs['isDefault']==1){
 | 
						|
							$dara['defaultSpec'] = $vs;
 | 
						|
							$dara['defaultSpec']['ids'] = explode(':',$ks);
 | 
						|
						}
 | 
						|
					}
 | 
						|
					$saleSpec[$value] = $dara['saleSpec'];
 | 
						|
				}
 | 
						|
				$list[] = $dara;
 | 
						|
			}
 | 
						|
			//第一个商品信息
 | 
						|
			$goods = $list[0];
 | 
						|
			//对比处理
 | 
						|
			$shops['identical'] = $scores['identical'] = $brands['identical'] = 1;
 | 
						|
			foreach($list as $k=>$v){
 | 
						|
				$shop[$v['goodsId']] = $v['shop']['shopName'];
 | 
						|
				if($goods['shop']['shopId']!=$v['shop']['shopId'])$shops['identical'] = 0;
 | 
						|
				$score[$v['goodsId']] = $v['scores']['totalScores'];
 | 
						|
				if($goods['scores']['totalScores']!=$v['scores']['totalScores'])$scores['identical'] = 0;
 | 
						|
				$brand[$v['goodsId']] = $v['brandName'];
 | 
						|
				if($goods['brandId']!=$v['brandId'])$brands['identical'] = 0;
 | 
						|
				if(isset($v['spec'])){
 | 
						|
					foreach($v['spec'] as $k2=>$v2){
 | 
						|
						$spec[$k2]['identical'] = 0;
 | 
						|
						$spec[$k2]['type'] = 'spec';
 | 
						|
						$spec[$k2]['name'] = $v2['name'];
 | 
						|
						$spec[$k2]['catId'] = $k2;
 | 
						|
						foreach($v2['list'] as $ks22=>$vs22){
 | 
						|
							$v['spec'][$k2]['list'][$ks22]['isDefault'] = (in_array($vs22['itemId'],$v['defaultSpec']['ids']))?1:0;
 | 
						|
						}
 | 
						|
						$spec[$k2]['info'][$v['goodsId']] = $v['spec'][$k2];
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			$shops['name'] = '店铺';
 | 
						|
			$shops['type'] = 'shop';
 | 
						|
			$shops['info'] =  $shop;
 | 
						|
			$lists[] = $shops;
 | 
						|
			$scores['name'] = '商品评分';
 | 
						|
			$scores['type'] = 'score';
 | 
						|
			$scores['info'] =  $score;
 | 
						|
			$lists[] = $scores;
 | 
						|
			$brands['name'] = '品牌';
 | 
						|
			$brands['type'] = 'brand';
 | 
						|
			$brands['info'] =  $brand;
 | 
						|
			$lists[] = $brands;
 | 
						|
			foreach($spec as $k3=>$v3){
 | 
						|
				$lists[] = $v3;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		$data['list'] = $list;
 | 
						|
		$data['lists'] = $lists;
 | 
						|
		$data['saleSpec'] = $saleSpec;
 | 
						|
		$this->assign('data',$data);
 | 
						|
		return $this->fetch("goods_contrast");
 | 
						|
	}
 | 
						|
}
 |