['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 = '/$v){ //mark by cheng商品详情换成远程oss图片20180313 //$goods['goodsDesc'] = str_replace($v, "&$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"); } }