You've already forked qlg.tsgz.moe
							
							Init Repo
This commit is contained in:
		
							
								
								
									
										627
									
								
								hyhproject/admin/model/Goods.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										627
									
								
								hyhproject/admin/model/Goods.php
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,627 @@ | ||||
| <?php | ||||
| namespace wstmart\admin\model; | ||||
| use think\Db; | ||||
| use think\Loader; | ||||
| /** | ||||
|  * ============================================================================ | ||||
|  * 商品类 | ||||
|  */ | ||||
| class Goods extends Base{ | ||||
|      /** | ||||
|       *  上架商品列表 | ||||
|       */ | ||||
| 	public function saleByPage(){ | ||||
| 		$where = []; | ||||
| 		$where['g.goodsStatus'] = 1; | ||||
| 		$where['g.dataFlag'] = 1; | ||||
| 		$where['g.isSale'] = 1; | ||||
| 		$areaIdPath = input('areaIdPath'); | ||||
| 		$goodsCatIdPath = input('goodsCatIdPath'); | ||||
| 		$goodsName = input('goodsName'); | ||||
| 		$shopName = input('shopName'); | ||||
| 		$startDate = input('startDate'); | ||||
| 		$endDate = input('endDate'); | ||||
| 		if($startDate!='' && $endDate!=''){ | ||||
| 			$where['saleTime'] = ['between',[$startDate.' 00:00:00',$endDate.' 23:59:59']]; | ||||
| 		}else if($startDate!=''){ | ||||
| 			$where['saleTime'] = ['>=',$startDate.' 00:00:00']; | ||||
| 		}else if($endDate!=''){ | ||||
| 			$where['saleTime'] = ['<=',$endDate.' 23:59:59']; | ||||
| 		} | ||||
| 		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"]; | ||||
| 		if($goodsCatIdPath !='')$where['goodsCatIdPath'] = ['like',$goodsCatIdPath."%"]; | ||||
| 		if($goodsName != '')$where['goodsName|goodsSn'] = ['like',"%$goodsName%"]; | ||||
| 		if($shopName != '')$where['shopName|shopSn'] = ['like',"%$shopName%"]; | ||||
| 		// 排序 | ||||
| 		$sort = input('sort'); | ||||
| 		$order = 'saleTime desc'; | ||||
| 		if($sort!=''){ | ||||
| 			$sortArr = explode('.',$sort); | ||||
| 			$order = $sortArr[0].' '.$sortArr[1]; | ||||
| 		} | ||||
| 		$keyCats = model('GoodsCats')->listKeyAll(); | ||||
| 		$rs = $this->alias('g') | ||||
| 		    ->join('__SHOPS__ s','g.shopId=s.shopId','left') | ||||
| 		    ->where($where) | ||||
| 			->field('g.goodsId,g.goodsName,g.goodsSn,g.saleNum,g.shopPrice,g.discountRate,g.shopId,goodsImg,s.shopName,s.phone,goodsCatIdPath,g.createTime,g.saleTime,g.isSale') | ||||
| 			->order($order) | ||||
| 			->paginate(input('limit/d'))->toArray(); | ||||
|  | ||||
| 		foreach ($rs['Rows'] as $key => $v){ | ||||
| 			$rs['Rows'][$key]['verfiycode'] = WSTShopEncrypt($v['shopId']); | ||||
| 			$rs['Rows'][$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats); | ||||
| 		} | ||||
| 		// dump($rs);die; | ||||
| 		return $rs; | ||||
| 	} | ||||
| 	 /** | ||||
|       *  下架商品列表 | ||||
|       */ | ||||
| 	public function shelvesByPage(){ | ||||
| 		$where = []; | ||||
| 		$where['g.dataFlag'] = 1; | ||||
| 		$where['g.isSale'] = 0; | ||||
| 		$areaIdPath = input('areaIdPath'); | ||||
| 		$goodsCatIdPath = input('goodsCatIdPath'); | ||||
| 		$goodsName = input('goodsName'); | ||||
| 		$shopName = input('shopName'); | ||||
| 		$startDate = input('startDate'); | ||||
| 		$endDate = input('endDate'); | ||||
| 		if($startDate!='' && $endDate!=''){ | ||||
| 			$where['saleTime'] = ['between',[$startDate.' 00:00:00',$endDate.' 23:59:59']]; | ||||
| 		}else if($startDate!=''){ | ||||
| 			$where['saleTime'] = ['>=',$startDate.' 00:00:00']; | ||||
| 		}else if($endDate!=''){ | ||||
| 			$where['saleTime'] = ['<=',$endDate.' 23:59:59']; | ||||
| 		} | ||||
| 		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"]; | ||||
| 		if($goodsCatIdPath !='')$where['goodsCatIdPath'] = ['like',$goodsCatIdPath."%"]; | ||||
| 		if($goodsName != '')$where['goodsName|goodsSn'] = ['like',"%$goodsName%"]; | ||||
| 		if($shopName != '')$where['shopName|shopSn'] = ['like',"%$shopName%"]; | ||||
| 		// 排序 | ||||
| 		$sort = input('sort'); | ||||
| 		$order = 'saleTime desc'; | ||||
| 		if($sort!=''){ | ||||
| 			$sortArr = explode('.',$sort); | ||||
| 			$order = $sortArr[0].' '.$sortArr[1]; | ||||
| 		} | ||||
| 		$keyCats = model('GoodsCats')->listKeyAll(); | ||||
| 		$rs = $this->alias('g') | ||||
| 		    ->join('__SHOPS__ s','g.shopId=s.shopId','left') | ||||
| 		    ->where($where) | ||||
| 			->field('goodsId,goodsName,goodsSn,saleNum,shopPrice,g.shopId,goodsImg,s.shopName,goodsCatIdPath,g.createTime,saleTime,isSale') | ||||
| 			->order($order) | ||||
| 			->paginate(input('limit/d'))->toArray(); | ||||
| 		foreach ($rs['Rows'] as $key => $v){ | ||||
| 			$rs['Rows'][$key]['verfiycode'] = WSTShopEncrypt($v['shopId']); | ||||
| 			$rs['Rows'][$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats); | ||||
| 		} | ||||
| 		return $rs; | ||||
| 	} | ||||
|     public function getGoodsCatNames($goodsCatPath, $keyCats){ | ||||
| 		$catIds = explode("_",$goodsCatPath); | ||||
| 		$catNames = array(); | ||||
| 		for($i=0,$k=count($catIds);$i<$k;$i++){ | ||||
| 			if($catIds[$i]=='')continue; | ||||
| 			if(isset($keyCats[$catIds[$i]]))$catNames[] = $keyCats[$catIds[$i]]; | ||||
| 		} | ||||
| 		return implode("→",$catNames); | ||||
| 	} | ||||
| 	/** | ||||
| 	 * 审核中的商品 | ||||
| 	 */ | ||||
|     public function auditByPage(){ | ||||
|     	$where['goodsStatus'] = 0; | ||||
| 		$where['g.dataFlag'] = 1; | ||||
| 		$where['isSale'] = 1; | ||||
| 		$areaIdPath = input('areaIdPath'); | ||||
| 		$goodsCatIdPath = input('goodsCatIdPath'); | ||||
| 		$goodsName = input('goodsName'); | ||||
| 		$shopName = input('shopName'); | ||||
| 		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"]; | ||||
| 		if($goodsCatIdPath !='')$where['goodsCatIdPath'] = ['like',$goodsCatIdPath."%"]; | ||||
| 		if($goodsName != '')$where['goodsName|goodsSn'] = ['like',"%$goodsName%"]; | ||||
| 		if($shopName != '')$where['shopName|shopSn'] = ['like',"%$shopName%"]; | ||||
| 		// 排序 | ||||
| 		$sort = input('sort'); | ||||
| 		$order = 'saleTime desc'; | ||||
| 		if($sort!=''){ | ||||
| 			$sortArr = explode('.',$sort); | ||||
| 			$order = $sortArr[0].' '.$sortArr[1]; | ||||
| 		} | ||||
| 		$keyCats = model('GoodsCats')->listKeyAll(); | ||||
| 		$rs = $this->alias('g')->join('__SHOPS__ s','g.shopId=s.shopId','left') | ||||
| 		    ->where($where) | ||||
| 			->field('g.goodsId,g.discountRate,g.goodsName,g.goodsSn,g.saleNum,g.shopPrice,g.goodsImg,s.shopName,s.shopId,s.phone,goodsCatIdPath') | ||||
| 			->order($order) | ||||
| 			->paginate(input('limit/d'))->toArray(); | ||||
|         foreach ($rs['Rows'] as $key => $v){ | ||||
| 			$rs['Rows'][$key]['verfiycode'] =  WSTShopEncrypt($v['shopId']); | ||||
| 			$rs['Rows'][$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats); | ||||
| 		} | ||||
| 		return $rs; | ||||
| 	} | ||||
| 	/** | ||||
| 	 * 违规的商品  | ||||
| 	 */ | ||||
| 	public function illegalByPage(){ | ||||
| 		$where['goodsStatus'] = -1; | ||||
| 		$where['g.dataFlag'] = 1; | ||||
| 		$where['isSale'] = 1; | ||||
| 		$areaIdPath = input('areaIdPath'); | ||||
| 		$goodsCatIdPath = input('goodsCatIdPath'); | ||||
| 		$goodsName = input('goodsName'); | ||||
| 		$shopName = input('shopName'); | ||||
| 		$startDate = input('startDate'); | ||||
| 		$endDate = input('endDate'); | ||||
| 		if($startDate!='' && $endDate!=''){ | ||||
| 			$where['saleTime'] = ['between',[$startDate.' 00:00:00',$endDate.' 23:59:59']]; | ||||
| 		}else if($startDate!=''){ | ||||
| 			$where['saleTime'] = ['>=',$startDate.' 00:00:00']; | ||||
| 		}else if($endDate!=''){ | ||||
| 			$where['saleTime'] = ['<=',$endDate.' 23:59:59']; | ||||
| 		} | ||||
| 		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"]; | ||||
| 		if($goodsCatIdPath !='')$where['goodsCatIdPath'] = ['like',$goodsCatIdPath."%"]; | ||||
| 		if($goodsName != '')$where['goodsName|goodsSn'] = ['like',"%$goodsName%"]; | ||||
| 		if($shopName != '')$where['shopName|shopSn'] = ['like',"%$shopName%"]; | ||||
| 		// 排序 | ||||
| 		$sort = input('sort'); | ||||
| 		$order = 'saleTime desc'; | ||||
| 		if($sort!=''){ | ||||
| 			$sortArr = explode('.',$sort); | ||||
| 			$order = $sortArr[0].' '.$sortArr[1]; | ||||
| 		} | ||||
| 		$keyCats = model('GoodsCats')->listKeyAll(); | ||||
| 		$rs = $this->alias('g')->join('__SHOPS__ s','g.shopId=s.shopId','left') | ||||
| 		    ->where($where) | ||||
| 			->field('goodsId,goodsName,goodsSn,goodsImg,s.shopName,s.shopId,illegalRemarks,goodsCatIdPath') | ||||
| 			->order($order) | ||||
| 			->paginate(input('limit/d'))->toArray(); | ||||
| 		foreach ($rs['Rows'] as $key => $v){ | ||||
| 			$rs['Rows'][$key]['verfiycode'] = WSTShopEncrypt($v['shopId']); | ||||
| 			$rs['Rows'][$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats); | ||||
| 		} | ||||
| 		return $rs; | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * 删除商品 | ||||
| 	 */ | ||||
| 	public function del(){ | ||||
| 	    $id = input('post.id/d'); | ||||
| 		$data = []; | ||||
| 		$data['dataFlag'] = -1; | ||||
| 		$data['isSale'] = 0; | ||||
| 		Db::startTrans(); | ||||
| 		try{ | ||||
| 		    $result = $this->update($data,['goodsId'=>$id]); | ||||
| 	        if(false !== $result){ | ||||
| 	        	hook('afterChangeGoodsStatus',['goodsId'=>$id]); | ||||
| 	        	Db::name('carts')->where('goodsId',$id)->delete(); | ||||
| 	        	WSTUnuseImage('goods','goodsImg',$id); | ||||
| 		        WSTUnuseImage('goods','gallery',$id); | ||||
| 		        Db::commit(); | ||||
| 		        //标记删除购物车 | ||||
| 	        	return WSTReturn("删除成功", 1); | ||||
| 	        } | ||||
| 		}catch (\Exception $e) { | ||||
|             Db::rollback();errLog($e); | ||||
|         } | ||||
|         return WSTReturn('删除失败',-1); | ||||
| 	} | ||||
| 	/** | ||||
| 	  * 批量删除商品 | ||||
| 	  */ | ||||
| 	 public function batchDel(){ | ||||
| 	 	$shopId = (int)session('WST_USER.shopId'); | ||||
| 	   	$ids = input('post.ids/a'); | ||||
| 	   	Db::startTrans(); | ||||
| 		try{ | ||||
| 		   	$rs = $this->where(['goodsId'=>['in',$ids], | ||||
| 		   						'shopId'=>$shopId])->setField(['dataFlag'=>-1,'isSale'=>0]); | ||||
| 			if(false !== $rs){ | ||||
| 				Db::name('carts')->where(['goodsId'=>['in',$ids]])->delete(); | ||||
| 				//标记删除购物车 | ||||
| 			    foreach ($ids as $v){ | ||||
| 					WSTUnuseImage('goods','goodsImg',(int)$v); | ||||
| 			        WSTUnuseImage('goods','gallery',(int)$v); | ||||
| 			        hook('afterChangeGoodsStatus',['goodsId'=>$v]); | ||||
| 				} | ||||
| 				Db::commit(); | ||||
| 	        	return WSTReturn("删除成功", 1); | ||||
| 	        } | ||||
| 		}catch (\Exception $e) { | ||||
|             Db::rollback();errLog($e); | ||||
|         } | ||||
|         return WSTReturn('删除失败',-1); | ||||
| 	 } | ||||
|  | ||||
| 	/** | ||||
| 	* 设置商品违规状态 | ||||
| 	*/ | ||||
| 	public function illegal($goodsId=0,$from=0){ | ||||
| 		$illegalRemarks = input('post.illegalRemarks');		 | ||||
| 		$id = ($goodsId==0)?(int)input('post.id'):$goodsId; | ||||
| 		if($illegalRemarks==''){ | ||||
| 			return WSTReturn("请输入原因"); | ||||
| 		}else if($from == 1){ | ||||
| 			$id = ($goodsId==0)?(int)input('post.id'):$goodsId; | ||||
| 			$illegalRemarks = '该商品因被用户举报,现已下架'; | ||||
| 		} | ||||
| 		//判断商品状态 | ||||
| 		$rs = $this->alias('g')->join('__SHOPS__ s','g.shopId=s.shopId','left')->where('goodsId',$id) | ||||
| 		           ->field('s.userId,g.goodsName,g.goodsSn,g.goodsStatus,g.goodsId,g.shopId')->find(); | ||||
| 		if((int)$rs['goodsId']==0)return WSTReturn("无效的商品"); | ||||
| 		if((int)$rs['goodsStatus']<0)return WSTReturn("操作失败,商品状态已发生改变,请刷新后再尝试"); | ||||
| 		Db::startTrans(); | ||||
| 		try{ | ||||
| 			$res = $this->where('goodsId',$id)->setField(['goodsStatus'=>-1,'illegalRemarks'=>$illegalRemarks]); | ||||
| 			if($res!==false){ | ||||
|  | ||||
| 				Db::name('carts')->where(['goodsId'=>$id])->delete(); | ||||
| 				//发送一条商家信息 | ||||
| 				$shopId = $rs["shopId"]; | ||||
| 				$tpl = WSTMsgTemplates('GOODS_REJECT'); | ||||
| 		        if( $tpl['tplContent']!='' && $tpl['status']=='1'){ | ||||
| 		            $find = ['${GOODS}','${GOODS_SN}','${TIME}','${REASON}']; | ||||
| 		            $replace = [$rs['goodsName'],$rs['goodsSn'],date('Y-m-d H:i:s'),$illegalRemarks]; | ||||
| 		             | ||||
| 		            $msg = array(); | ||||
| 		            $msg["shopId"] = $shopId; | ||||
| 		            $msg["tplCode"] = $tpl["tplCode"]; | ||||
| 		            $msg["msgType"] = 1; | ||||
| 		            $msg["content"] = str_replace($find,$replace,$tpl['tplContent']); | ||||
| 		            $msg["msgJson"] = ['from'=>2,'dataId'=>$id]; | ||||
| 		            model("common/MessageQueues")->add($msg); | ||||
| 		        }  | ||||
| 		        if((int)WSTConf('CONF.wxenabled')==1){ | ||||
| 					$params = []; | ||||
| 					$params['GOODS'] = $rs['goodsName']; | ||||
| 					$params['GOODS_SN'] = $rs['goodsSn']; | ||||
| 					$params['TIME'] = date('Y-m-d H:i:s');  | ||||
| 					$params['REASON'] = $illegalRemarks;           | ||||
| 					 | ||||
| 					$msg = array(); | ||||
| 					$tplCode = "WX_GOODS_REJECT"; | ||||
| 					$msg["shopId"] = $shopId; | ||||
| 		            $msg["tplCode"] = $tplCode; | ||||
| 		            $msg["msgType"] = 4; | ||||
| 		            $msg["paramJson"] = ['CODE'=>$tplCode,'params'=>$params] ; | ||||
| 		            $msg["msgJson"] = ""; | ||||
| 		            model("common/MessageQueues")->add($msg); | ||||
| 				} | ||||
| 				hook('afterChangeGoodsStatus',['goodsId'=>$id]); | ||||
| 				Db::commit(); | ||||
| 				return WSTReturn('操作成功',1); | ||||
| 			} | ||||
| 		}catch (\Exception $e) { | ||||
|             Db::rollback();errLog($e); | ||||
|         } | ||||
|         return WSTReturn('操作失败',-1); | ||||
| 	} | ||||
| 	/** | ||||
| 	* 批量商品审核不通过 | ||||
| 	*/ | ||||
| 	public function batchIllegal(){ | ||||
| 		$ids = input('ids'); | ||||
| 		if(empty($ids))return WSTReturn('请选择商品'); | ||||
| 		$ids = explode(',' , $ids); | ||||
| 		foreach($ids as $k=>$v){ | ||||
| 			$rs = $this->illegal($v); | ||||
| 		} | ||||
| 		return WSTReturn('操作成功',1); | ||||
|  | ||||
| 	} | ||||
|    /** | ||||
| 	* 通过商品审核通过 | ||||
| 	*/ | ||||
| 	public function allow($goodsId=0){	 | ||||
| 		$id = ($goodsId==0)?(int)input('post.id'):$goodsId; | ||||
| 		//判断商品状态 | ||||
| 		$rs = $this->alias('g')->join('__SHOPS__ s','g.shopId=s.shopId','left')->where('goodsId',$id) | ||||
| 		           ->field('s.userId,g.goodsName,g.goodsSn,g.goodsStatus,g.goodsId,g.shopId')->find(); | ||||
| 		if((int)$rs['goodsId']==0)return WSTReturn("无效的商品"); | ||||
| 		if((int)$rs['goodsStatus']==1)return WSTReturn("操作失败,商品状态已发生改变,请刷新后再尝试"); | ||||
| 		Db::startTrans(); | ||||
| 		try{ | ||||
| 			$res = $this->setField(['goodsId'=>$id,'goodsStatus'=>1]); | ||||
| 			if($res!==false){ | ||||
| 				//发送一条商家信息 | ||||
| 				$shopId = $rs["shopId"]; | ||||
| 				$tpl = WSTMsgTemplates('GOODS_ALLOW'); | ||||
| 		        if( $tpl['tplContent']!='' && $tpl['status']=='1'){ | ||||
| 		            $find = ['${GOODS}','${GOODS_SN}','${TIME}']; | ||||
| 		            $replace = [$rs['goodsName'],$rs['goodsSn'],date('Y-m-d H:i:s')]; | ||||
| 		             | ||||
| 		            $msg = array(); | ||||
| 		            $msg["shopId"] = $shopId; | ||||
| 		            $msg["tplCode"] = $tpl["tplCode"]; | ||||
| 		            $msg["msgType"] = 1; | ||||
| 		            $msg["content"] = str_replace($find,$replace,$tpl['tplContent']) ; | ||||
| 		            $msg["msgJson"] = ['from'=>2,'dataId'=>$id]; | ||||
| 		            model("common/MessageQueues")->add($msg); | ||||
| 		        }  | ||||
| 		        if((int)WSTConf('CONF.wxenabled')==1){ | ||||
| 					$params = []; | ||||
| 					$params['GOODS'] = $rs['goodsName']; | ||||
| 					$params['GOODS_SN'] = $rs['goodsSn']; | ||||
| 					$params['TIME'] = date('Y-m-d H:i:s');            | ||||
| 					 | ||||
| 					$msg = array(); | ||||
| 					$tplCode = "WX_GOODS_ALLOW"; | ||||
| 					$msg["shopId"] = $shopId; | ||||
| 		            $msg["tplCode"] = $tplCode; | ||||
| 		            $msg["msgType"] = 4; | ||||
| 		            $msg["paramJson"] = ['CODE'=>$tplCode,'params'=>$params] ; | ||||
| 		            $msg["msgJson"] = ""; | ||||
| 		            model("common/MessageQueues")->add($msg); | ||||
| 				} | ||||
| 				hook('afterChangeGoodsStatus',['goodsId'=>$id]); | ||||
| 				Db::commit(); | ||||
| 				return WSTReturn('操作成功',1); | ||||
| 			} | ||||
| 		}catch (\Exception $e) { | ||||
|             Db::rollback();errLog($e); | ||||
|         } | ||||
|         return WSTReturn('操作失败',-1); | ||||
| 	} | ||||
| 	/** | ||||
| 	* 批量商品审核 | ||||
| 	*/ | ||||
| 	public function batchAllow(){ | ||||
| 		$ids = input('ids'); | ||||
| 		if(empty($ids))return WSTReturn('请选择商品'); | ||||
| 		$ids = explode(',' , $ids); | ||||
| 		$count = 0;// 记录上架不成功的商品数 | ||||
| 		foreach($ids as $k=>$v){ | ||||
| 			$rs = $this->allow($v); | ||||
| 			if($rs['status']==-1){ | ||||
| 				++$count; | ||||
| 			} | ||||
| 		} | ||||
| 		if($count==0)return WSTReturn('操作成功',1); | ||||
| 		$msg = "成功上架".(count($ids)-$count)."件商品,其中{$count}件商品上架失败."; | ||||
| 		return WSTReturn($msg,1); | ||||
|  | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	/** | ||||
| 	 * 查询商品 | ||||
| 	 */ | ||||
| 	public function searchQuery(){ | ||||
| 		$goodsCatatId = (int)input('post.goodsCatId'); | ||||
| 		if($goodsCatatId<=0)return []; | ||||
| 		$goodsCatIds = WSTGoodsCatPath($goodsCatatId); | ||||
| 		$key = input('post.key'); | ||||
| 		$where = []; | ||||
| 		$where['g.dataFlag'] = 1; | ||||
| 		$where['g.isSale'] = 1; | ||||
| 		$where['g.goodsStatus'] = 1; | ||||
| 		$where['goodsCatIdPath'] = ['like',implode('_',$goodsCatIds).'_%']; | ||||
| 		if($key!='')$where['goodsName|shopName'] = ['like','%'.$key.'%']; | ||||
| 		return $this->alias('g')->join('__SHOPS__ s','g.shopId=s.shopId','inner') | ||||
| 		     ->where($where)->field('g.goodsName,s.shopName,g.goodsId')->limit(50)->select(); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * 根据下架指定店铺下的所有商品 | ||||
| 	 */ | ||||
| 	public function unsaleByshopId($shopId){ | ||||
|         //下架商品 | ||||
| 		$data = []; | ||||
| 		$data['isSale'] = 0; | ||||
| 		$goodsIds = []; | ||||
| 		$goods = $this->where(['shopId'=>$shopId,'isSale'=>1])->field('goodsId')->select(); | ||||
| 		if(!empty($goods)){ | ||||
| 			foreach ($goods as $key => $v) { | ||||
| 				$goodsIds[] = $v['goodsId']; | ||||
| 			} | ||||
| 		} | ||||
| 		$result = $this->where(['shopId'=>$shopId])->update($data); | ||||
| 		if(false !== $result){ | ||||
| 		    //删除推荐商品,删除购物车里的商品 | ||||
| 		    if(count($goodsIds)>0){ | ||||
| 		    	//执行钩子事件 | ||||
| 		    	foreach ($goodsIds as $key => $v) { | ||||
| 		    		hook('afterChangeGoodsStatus',['goodsId'=>$v]); | ||||
| 		    	} | ||||
| 		    	Db::name('recommends')->where(['dataSrc'=>0,'dataId'=>['in',$goodsIds]])->delete(); | ||||
| 		        Db::name('carts')->where(['goodsId'=>['in',$goodsIds]])->delete(); | ||||
| 		    } | ||||
| 		    Db::commit(); | ||||
| 			return WSTReturn('操作成功',1); | ||||
| 		} | ||||
|         return WSTReturn('删除失败',-1); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| 	 * 根据下架指定店铺下的所有商品 | ||||
| 	 */ | ||||
| 	public function delByshopId($shopId){ | ||||
|         //下架商品 | ||||
| 		$data = []; | ||||
| 		$data['isSale'] = 0; | ||||
| 		$data['dataFlag'] = -1; | ||||
| 		$goodsIds = []; | ||||
| 		$goods = $this->where(['shopId'=>$shopId])->field('goodsId')->select(); | ||||
| 		if(!empty($goods)){ | ||||
| 			foreach ($goods as $key => $v) { | ||||
| 				$goodsIds[] = $v['goodsId']; | ||||
| 			} | ||||
| 		} | ||||
| 		$result = $this->where(['shopId'=>$shopId])->update($data); | ||||
| 		if(false !== $result){ | ||||
| 		    //删除推荐商品,删除购物车里的商品 | ||||
| 		    if(count($goodsIds)>0){ | ||||
| 		    	//执行钩子事件 | ||||
| 		    	foreach ($goodsIds as $key => $v) { | ||||
| 		    		hook('afterChangeGoodsStatus',['goodsId'=>$v]); | ||||
| 		    	} | ||||
| 		    	Db::name('recommends')->where(['dataSrc'=>0,'dataId'=>['in',$goodsIds]])->delete(); | ||||
| 		        Db::name('carts')->where(['goodsId'=>['in',$goodsIds]])->delete(); | ||||
| 		    } | ||||
| 		    Db::commit(); | ||||
| 			return WSTReturn('操作成功',1); | ||||
| 		} | ||||
|         return WSTReturn('删除失败',-1); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 商品ECT支付状态 | ||||
|      */ | ||||
|     public function goodsEct(){ | ||||
| 		$goodsId = input('post.id/d'); | ||||
|     	$pay = Db::name('goods_pay')->where(['goodsId'=>$goodsId])->select();//查询支付方式表是否已有该商品 | ||||
| 		if($pay){ | ||||
| 			return WSTReturn('此商品已添加ECT支付'); | ||||
| 		} | ||||
| 		$arr =[]; | ||||
|     	$arr['goodsId'] = $goodsId; | ||||
|     	$arr['ectPay'] = 1; | ||||
|     	// dump($arr);die; | ||||
|     	$result = Db::name('goods_pay')->insert($arr); | ||||
|     	if($result){ | ||||
|     		return WSTReturn('添加成功',1); | ||||
|     	}else{ | ||||
|     		return WSTReturn('添加失败'); | ||||
|     	} | ||||
|     } | ||||
|  | ||||
|     //上架商品导出 | ||||
|     public function toExportSale(){ | ||||
|     	$name="上架商品列表"; | ||||
|     	$where = []; | ||||
| 		$where['g.goodsStatus'] = 1; | ||||
| 		$where['g.dataFlag'] = 1; | ||||
| 		$where['g.isSale'] = 1; | ||||
| 		$areaIdPath = input('areaIdPath'); | ||||
| 		$goodsCatIdPath = input('goodsCatIdPath'); | ||||
| 		$goodsName = input('goodsName'); | ||||
| 		$shopName = input('shopName'); | ||||
| 		$startDate = input('startDate'); | ||||
| 		$endDate = input('endDate'); | ||||
| 		if($startDate!='' && $endDate!=''){ | ||||
| 			$where['saleTime'] = ['between',[$startDate.' 00:00:00',$endDate.' 23:59:59']]; | ||||
| 		}else if($startDate!=''){ | ||||
| 			$where['saleTime'] = ['>=',$startDate.' 00:00:00']; | ||||
| 		}else if($endDate!=''){ | ||||
| 			$where['saleTime'] = ['<=',$endDate.' 23:59:59']; | ||||
| 		} | ||||
| 		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"]; | ||||
| 		if($goodsCatIdPath !='')$where['goodsCatIdPath'] = ['like',$goodsCatIdPath."%"]; | ||||
| 		if($goodsName != '')$where['goodsName|goodsSn'] = ['like',"%$goodsName%"]; | ||||
| 		if($shopName != '')$where['shopName|shopSn'] = ['like',"%$shopName%"]; | ||||
| 		// 排序 | ||||
| 		$sort = input('sort'); | ||||
| 		$order = 'saleTime desc'; | ||||
| 		if($sort!=''){ | ||||
| 			$sortArr = explode('.',$sort); | ||||
| 			$order = $sortArr[0].' '.$sortArr[1]; | ||||
| 		} | ||||
| 		$keyCats = model('GoodsCats')->listKeyAll(); | ||||
| 		$page = $this->alias('g') | ||||
| 		    ->join('__SHOPS__ s','g.shopId=s.shopId','left') | ||||
| 		    ->where($where) | ||||
| 			->field('goodsId,goodsName,goodsSn,saleNum,shopPrice,g.shopId,goodsImg,s.shopName,goodsCatIdPath,g.createTime,saleTime,isSale') | ||||
| 			->order($order) | ||||
| 			->select(); | ||||
| 		foreach ($page as $key => $v){ | ||||
| 			$page[$key]['verfiycode'] = WSTShopEncrypt($v['shopId']); | ||||
| 			$page[$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats); | ||||
| 		} | ||||
|     	Loader::import('phpexcel.PHPExcel.IOFactory'); | ||||
|         $objPHPExcel = new \PHPExcel(); | ||||
|         // 设置excel文档的属性 | ||||
|         $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人 | ||||
|         ->setLastModifiedBy("heyuanhui")//最后修改人 | ||||
|         ->setTitle($name)//标题 | ||||
|         ->setSubject($name)//题目 | ||||
|         ->setDescription($name)//描述 | ||||
|         ->setKeywords("订单")//关键字 | ||||
|         ->setCategory("Test result file");//种类 | ||||
|      | ||||
|         // 开始操作excel表 | ||||
|         $objPHPExcel->setActiveSheetIndex(0); | ||||
|         // 设置工作薄名称 | ||||
|         $objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet')); | ||||
|         // 设置默认字体和大小 | ||||
|         $objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '')); | ||||
|         $objPHPExcel->getDefaultStyle()->getFont()->setSize(11); | ||||
|         $styleArray = array( | ||||
|                 'font' => array( | ||||
|                         'bold' => true, | ||||
|                         'color'=>array( | ||||
|                                 'argb' => 'ffffffff', | ||||
|                         ) | ||||
|                 ), | ||||
|                 'borders' => array ( | ||||
|                         'outline' => array ( | ||||
|                                 'style' => \PHPExcel_Style_Border::BORDER_THIN,  //设置border样式 | ||||
|                                 'color' => array ('argb' => 'FF000000'),     //设置border颜色 | ||||
|                         ) | ||||
|                 ) | ||||
|         ); | ||||
|         //设置宽 | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(40); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(8); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(8); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(25); | ||||
|         $objPHPExcel->getActiveSheet()->getStyle('A1:N1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID); | ||||
|         $objPHPExcel->getActiveSheet()->getStyle('A1:N1')->getFill()->getStartColor()->setARGB('333399'); | ||||
|          | ||||
|         $objPHPExcel->getActiveSheet() | ||||
|                                 ->setCellValue('A1', '商品ID') | ||||
|                                 ->setCellValue('B1', '商品名称') | ||||
|                                 ->setCellValue('C1', '商品编号') | ||||
|                                 ->setCellValue('D1', '价格') | ||||
|                                 ->setCellValue('E1', '所属店铺') | ||||
|                                 ->setCellValue('F1', '申请上架时间') | ||||
|                                 ->setCellValue('G1', '审核通过时间') | ||||
|                                 ->setCellValue('H1', '所属分类') | ||||
|                                 ->setCellValue('I1', '销量') | ||||
|                                 ->setCellValue('J1', '状态'); | ||||
|         $objPHPExcel->getActiveSheet()->getStyle('A1:J1')->applyFromArray($styleArray); | ||||
|      | ||||
|         for ($row = 0; $row < count($page); $row++){ | ||||
|             $i = $row+2; | ||||
|             $objPHPExcel->getActiveSheet() | ||||
|                                 ->setCellValue('A'.$i, $page[$row]['goodsId']) | ||||
|                                 ->setCellValue('B'.$i, $page[$row]['goodsName']) | ||||
|                                 ->setCellValue('C'.$i, chunk_split($page[$row]['goodsSn'])) | ||||
|                                 ->setCellValue('D'.$i, $page[$row]['shopPrice']) | ||||
|                                 ->setCellValue('E'.$i, $page[$row]['shopName']) | ||||
|                                 ->setCellValue('F'.$i, $page[$row]['saleTime']) | ||||
|                                 ->setCellValue('G'.$i, $page[$row]['createTime']) | ||||
|                                 ->setCellValue('H'.$i, $page[$row]['goodsCatName']) | ||||
|                                 ->setCellValue('I'.$i, $page[$row]['saleNum']) | ||||
|                                 ->setCellValue('J'.$i, $page[$row]['isSale']); | ||||
|  | ||||
|         } | ||||
|         //输出EXCEL格式 | ||||
|         $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); | ||||
|         // 从浏览器直接输出$filename | ||||
|         header('Content-Type:application/csv;charset=UTF-8'); | ||||
|         header("Pragma: public"); | ||||
|         header("Expires: 0"); | ||||
|         header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); | ||||
|         header("Content-Type:application/force-download"); | ||||
|         header("Content-Type:application/vnd.ms-excel;"); | ||||
|         header("Content-Type:application/octet-stream"); | ||||
|         header("Content-Type:application/download"); | ||||
|         header('Content-Disposition: attachment;filename="'.$name.'.xls"'); | ||||
|         header("Content-Transfer-Encoding:binary"); | ||||
|         $objWriter->save('php://output'); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user