'desc'); $orderFile = array('1'=>'g.isHot','2'=>'g.saleNum','3'=>'g.shopPrice','4'=>'g.shopPrice','5'=>'(gs.totalScore/gs.totalUsers)','6'=>'g.saleTime'); $orderSort = array('0'=>'asc','1'=>'desc'); if($msort>0){ $order = array($orderFile[$msort]=>$orderSort[$mdesc]); } $goodsName = input("param.goodsName");//搜索店鋪名 $words = $where = $where2 = $where3 = $where4 = []; if($goodsName!=""){ $words = explode(" ",$goodsName); } if(!empty($words)){ $sarr = array(); foreach ($words as $key => $word) { if($word!=""){ $sarr[] = "g.goodsName like '%$word%'"; } } $where4 = implode(" or ", $sarr); } $sprice = input("param.sprice");//开始价格 $eprice = input("param.eprice");//结束价格 if($sprice!="")$where2 = "g.shopPrice >= ".(float)$sprice; if($eprice!="")$where3 = "g.shopPrice <= ".(float)$eprice; $ct1 = input("param.ct1/d"); $ct2 = input("param.ct2/d"); if($ct1>0)$where['shopCatId1'] = $ct1; if($ct2>0)$where['shopCatId2'] = $ct2; $goods = Db::name('goods')->alias('g') ->join('__GOODS_SCORES__ gs','gs.goodsId = g.goodsId','left') ->where(['g.shopId'=>$shopId,'g.isSale'=>1,'g.goodsStatus'=>1,'g.dataFlag'=>1]) ->where($where)->where($where2)->where($where3)->where($where4) ->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.marketPrice,g.saleNum,g.appraiseNum,g.goodsStock,g.isFreeShipping,g.saleTime,gallery')//添加上架时间 mark 20170103 ->order($order) ->paginate(input('pagesize/d'))->toArray(); return $goods; } /** * 新增商品 */ public function goodsAdd(){ $shopId = (int)input('post.shopId'); $data = input('post.'); $specsIds = input('post.specsIds'); $basicsMoney = isset($data['basicsMoney']) ? $data['basicsMoney'] : 0; if(!is_numeric($basicsMoney)){ return WSTReturn("商品成本价请填写数字"); } $aloneShop = false;//Db::name('alone_shops')->where(['shopId'=>$shopId,'dataFlag'=>1])->find(); // if($aloneShop && !$basicsMoney){ // return WSTReturn("请填写成本价"); // } WSTUnset($data,'goodsId,statusRemarks,goodsStatus,dataFlag,basicsMoney'); if(isset($data['goodsName'])){ if(!WSTCheckFilterWords($data['goodsName'],WSTConf("CONF.limitWords"))){ return WSTReturn("商品名称包含非法字符"); } } if(isset($data['goodsTips'])){ if(!WSTCheckFilterWords($data['goodsTips'],WSTConf("CONF.limitWords"))){ return WSTReturn("商品促销信息包含非法字符"); } } if(isset($data['goodsDesc'])){ if(!WSTCheckFilterWords($data['goodsDesc'],WSTConf("CONF.limitWords"))){ return WSTReturn("商品描述包含非法字符"); } } if(WSTConf("CONF.isGoodsVerify")==1){ $data['goodsStatus'] = 0; }else{ $data['goodsStatus'] = 1; } $data['shopId'] = $shopId; $data['saleTime'] = date('Y-m-d H:i:s'); $data['createTime'] = date('Y-m-d H:i:s'); $goodsCats = model('GoodsCats')->getParentIs($data['goodsCatId']); $data['goodsCatIdPath'] = implode('_',$goodsCats)."_"; if($data['goodsType']==0){ $data['isSpec'] = ($specsIds!='')?1:0; }else{ $data['isSpec'] = 0; } Db::startTrans(); try{ //保存插件数据钩子 hook('beforeEidtGoods',['data'=>&$data]); $shop = model('shops')->get($shopId); if($shop['dataFlag'] ==-1 || $shop['shopStatus'] != 1)$data['isSale'] = 0; $result = $this->validate(true)->allowField(true)->save($data); if(false !== $result){ $goodsId = $this->goodsId; //ect支付方式 // $ectPay=(int)input('ectPay'); // $ect['goodsId']=$goodsId; // $ect['ectPay']=$ectPay; // Db::name('goods_pay')->insert($ect); //商品图片 WSTUseImages(0, $goodsId, $data['goodsImg']); //商品相册 WSTUseImages(0, $goodsId, $data['gallery']); //商品描述图片 WSTEditorImageRocord(0, $goodsId, '',$data['goodsDesc']); //建立商品评分记录 $gs = []; $gs['goodsId'] = $goodsId; $gs['shopId'] = $shopId; Db::name('goods_scores')->insert($gs); //如果是实物商品并且有销售规格则保存销售和规格值 if($data['goodsType']==0 && $specsIds!=''){ $specsIds = explode(',',$specsIds); $specsArray = []; foreach ($specsIds as $v){ $vs = explode('-',$v); foreach ($vs as $vv){ if(!in_array($vv,$specsArray))$specsArray[] = $vv; } } //保存规格名称 $specMap = []; foreach ($specsArray as $v){ $vv = explode('_',$v); $sitem = []; $sitem['shopId'] = $shopId; $sitem['catId'] = (int)$vv[0]; $sitem['goodsId'] = $goodsId; $sitem['itemName'] = input('post.specName_'.$vv[0]."_".$vv[1]); $sitem['itemImg'] = input('post.specImg_'.$vv[0]."_".$vv[1]); $sitem['dataFlag'] = 1; $sitem['createTime'] = date('Y-m-d H:i:s'); $itemId = Db::name('spec_items')->insertGetId($sitem); if($sitem['itemImg']!='')WSTUseImages(0, $itemId, $sitem['itemImg']); $specMap[$v] = $itemId; } //保存销售规格 $defaultPrice = 0;//最低价 $totalStock = 0;//总库存 $gspecArray = []; $isFindDefaultSpec = false; $defaultSpec = Input('post.defaultSpec'); foreach ($specsIds as $v){ $vs = explode('-',$v); $goodsSpecIds = []; foreach ($vs as $gvs){ $goodsSpecIds[] = $specMap[$gvs]; } $gspec = []; $gspec['specIds'] = implode(':',$goodsSpecIds); $gspec['shopId'] = $shopId; $gspec['goodsId'] = $goodsId; $gspec['productNo'] = Input('productNo_'.$v); $gspec['marketPrice'] = (float)Input('marketPrice_'.$v); $gspec['specPrice'] = (float)Input('specPrice_'.$v); $gspec['specStock'] = (int)Input('specStock_'.$v); $gspec['warnStock'] = (int)Input('warnStock_'.$v); //设置默认规格 if($defaultSpec==$v){ $isFindDefaultSpec = true; $defaultPrice = $gspec['specPrice']; $gspec['isDefault'] = 1; }else{ $gspec['isDefault'] = 0; } $gspecArray[] = $gspec; //获取总库存 $totalStock = $totalStock + $gspec['specStock']; } if(!$isFindDefaultSpec)return WSTReturn("请选择推荐规格"); if(count($gspecArray)>0){ Db::name('goods_specs')->insertAll($gspecArray); //更新默认价格和总库存 $this->where('goodsId',$goodsId)->update(['isSpec'=>1,'shopPrice'=>$defaultPrice,'goodsStock'=>$totalStock]); } } //保存商品属性 $attrsArray = []; $attrRs = Db::name('attributes')->where(['goodsCatId'=>['in',$goodsCats],'isShow'=>1,'dataFlag'=>1]) ->field('attrId')->select(); foreach ($attrRs as $key =>$v){ $attrs = []; $attrs['attrVal'] = input('attr_'.$v['attrId']); if($attrs['attrVal']=='')continue; $attrs['shopId'] = $shopId; $attrs['goodsId'] = $goodsId; $attrs['attrId'] = $v['attrId']; $attrs['createTime'] = date('Y-m-d H:i:s'); $attrsArray[] = $attrs; } if(count($attrsArray)>0)Db::name('goods_attributes')->insertAll($attrsArray); if($aloneShop){ //保存商品成本价 $basicsArray = []; $now = time(); $basicsArray['shopId'] = $shopId; $basicsArray['goodsId'] = $goodsId; $basicsArray['basicsMoney'] = $basicsMoney; $basicsArray['createTime'] = $now; Db::name('alone_goods')->insert($basicsArray); } hook('afterGoodsEct',['data'=>&$data,'goodsId'=>$goodsId]); Db::commit(); return WSTReturn("新增成功", 1,['id'=>$goodsId]); }else{ return WSTReturn($this->getError(),-1); } }catch (\Exception $e) { Db::rollback();errLog($e); return WSTReturn('新增失败',-1); } } }