You've already forked qlg.tsgz.moe
							
							Init Repo
This commit is contained in:
		
							
								
								
									
										229
									
								
								hyhproject/common/model/Goods.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										229
									
								
								hyhproject/common/model/Goods.php
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,229 @@ | ||||
| <?php | ||||
| namespace wstmart\common\model; | ||||
| use think\Db; | ||||
| /** | ||||
|  * ============================================================================ | ||||
|  * 商品类 | ||||
|  */ | ||||
| class Goods extends Base{ | ||||
| 	/** | ||||
| 	 * 获取店铺商品列表 | ||||
| 	 */ | ||||
| 	public function shopGoods($shopId){ | ||||
| 		$msort = input("param.msort/d"); | ||||
| 		$mdesc = input("param.mdesc/d"); | ||||
| 		$order = array('g.saleTime'=>'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); | ||||
|         } | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user