You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			628 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			628 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?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');
 | |
|     }
 | |
| }
 |