You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			251 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			251 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| namespace wstmart\admin\model;
 | |
| 
 | |
| /**
 | |
| 
 | |
|  * ============================================================================
 | |
| 
 | |
|  * 商城配置业务处理
 | |
| 
 | |
|  */
 | |
| 
 | |
| use think\Db;
 | |
| 
 | |
| class Styles extends Base{
 | |
| 
 | |
| 	/**
 | |
| 
 | |
| 	 * 获取分类
 | |
| 
 | |
| 	 */
 | |
| 
 | |
| 	public function getCats(){
 | |
| 
 | |
| 		return $this->distinct(true)->field('styleSys')->select();
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 
 | |
| 	 * 获取风格列表
 | |
| 
 | |
| 	 */
 | |
| 
 | |
| 	public function listQuery(){
 | |
| 
 | |
| 		$styleSys = input('styleSys');
 | |
| 
 | |
| 		$rs = $this->where('styleSys',$styleSys)->select();
 | |
| 
 | |
| 		return ['sys'=>$styleSys,'list'=>$rs];
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 
 | |
| 	 * 初始化风格列表
 | |
| 
 | |
| 	 */
 | |
| 
 | |
| 	public function initStyles(){
 | |
| 
 | |
| 		$styles = $this->field('styleSys,stylePath,id')->select();
 | |
| 
 | |
|         $sys = [];
 | |
| 
 | |
| 		foreach ($styles as $key => $v) {
 | |
| 
 | |
| 			$sys[$v['styleSys']][$v['stylePath']] = 1;
 | |
| 
 | |
| 			//删除不存在的风格记录
 | |
| 
 | |
| 			if(!is_dir(WSTRootPath(). DS .'hyhproject'. DS .$v['styleSys']. DS .'view'. DS.$v['stylePath'])){
 | |
| 
 | |
| 				$this->where('id',$v['id'])->delete();
 | |
| 
 | |
| 			}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		Db::startTrans();
 | |
| 
 | |
|         try{
 | |
| 
 | |
|         	//添加不存在的风格目录
 | |
| 
 | |
|         	$prefix = config('database.prefix');
 | |
| 
 | |
| 			foreach ($sys as $key => $v) {
 | |
| 
 | |
| 			    $dirs = array_map('basename',glob(WSTRootPath(). DS .'hyhproject'.DS.$key.DS.'view'.DS.'*', GLOB_ONLYDIR));
 | |
| 
 | |
| 		        foreach ($dirs as $dkey => $dv) {
 | |
| 
 | |
| 		        	if(!isset($v[$dv])){
 | |
| 
 | |
| 		        		$sqlPath = WSTRootPath(). DS .'hyhproject'. DS .$key. DS .'view'. DS .$dv. DS.'sql'.DS.'install.sql';// sql路径
 | |
| 
 | |
| 						$hasFile = file_exists($sqlPath);
 | |
| 
 | |
| 						if(!$hasFile)continue;
 | |
| 
 | |
| 						$sql = file_get_contents($sqlPath);
 | |
| 
 | |
| 						$this->excute($sql,$prefix);
 | |
| 
 | |
| 		        	}
 | |
| 
 | |
| 		        }
 | |
| 
 | |
| 		    }
 | |
| 
 | |
| 		    Db::commit();
 | |
| 
 | |
| 		}catch (\Exception $e) {
 | |
| 
 | |
|             Db::rollback();errLog($e);
 | |
| 
 | |
|         }
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	
 | |
| 
 | |
|     /**
 | |
| 
 | |
| 	 * 编辑
 | |
| 
 | |
| 	 */
 | |
| 
 | |
| 	public function changeStyle(){
 | |
| 
 | |
| 		 $id = (int)input('post.id');
 | |
| 
 | |
| 		 $object = $this->get($id);
 | |
| 
 | |
| 		 // styleSys   stylePath
 | |
| 
 | |
| 
 | |
| 
 | |
| 		 $sqlPath = WSTRootPath(). DS .'hyhproject'. DS .$object['styleSys']. DS .'view'. DS .$object['stylePath']. DS.'sql'.DS.'style.sql';// sql路径
 | |
| 
 | |
| 		 $hasFile = file_exists($sqlPath);
 | |
| 
 | |
| 		 if(!$hasFile)return WSTReturn('风格sql文件不存在,请联系管理员');
 | |
| 
 | |
| 		 $sql = file_get_contents($sqlPath);
 | |
| 
 | |
| 
 | |
| 
 | |
| 		 $positionArr = ['home'=>1,'wechat'=>2,'mobile'=>3];
 | |
| 
 | |
| 		 if(!isset($positionArr[$object['styleSys']]))return WSTReturn('风格目录出错,请联系管理员');
 | |
| 
 | |
| 		 $positionType = $positionArr[$object['styleSys']];// 1:PC版 2:微信 3:手机版
 | |
| 
 | |
| 		 
 | |
| 
 | |
| 		 Db::startTrans();
 | |
| 
 | |
|          try{
 | |
| 
 | |
|          	 $prefix = config('database.prefix');
 | |
| 
 | |
|          	 /* 删除与风格无关广告 */
 | |
| 
 | |
| 			 $delAds = "delete from `".$prefix."ads` where positionType='".$positionType."';";
 | |
| 
 | |
| 			 // 若为pc版,则保留商家入驻广告位置
 | |
| 
 | |
| 			 if($positionType==1){
 | |
| 
 | |
| 			 	// 获取当前商家入驻广告位置的主键id
 | |
| 
 | |
| 			 	$positionId = Db::name('ad_positions')->where(['positionCode'=>'ads-shop-apply'])->value('positionId');
 | |
| 
 | |
| 			 	$delAds = "delete from `".$prefix."ads` where positionType='".$positionType."' and adPositionId!=$positionId;";
 | |
| 
 | |
| 			 }
 | |
| 
 | |
| 			 Db::execute($delAds);
 | |
| 
 | |
| 
 | |
| 
 | |
| 			 /*  删除无关广告位 */
 | |
| 
 | |
| 			 $delAdPosition = "delete from `".$prefix."ad_positions` where positionType='".$positionType."';";
 | |
| 
 | |
| 			 // 若为pc版,则保留商家入驻广告
 | |
| 
 | |
| 			 if($positionType==1){
 | |
| 
 | |
| 			 	$delAdPosition = "delete from `".$prefix."ad_positions` where positionType='".$positionType."' and positionCode not in ('ads-shop-apply');";
 | |
| 
 | |
| 			 }
 | |
| 
 | |
| 			 Db::execute($delAdPosition);
 | |
| 
 | |
|          	 $flag = $this->excute($sql,$prefix);
 | |
| 
 | |
|          	 if($flag===false)throw new \Exception("风格sql执行出错", 1);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 		     $rs = $this->where('styleSys',$object['styleSys'])->update(['isUse'=>0]);
 | |
| 
 | |
| 		     if(false !== $rs){
 | |
| 
 | |
| 		         $object->isUse = 1;
 | |
| 
 | |
| 		         $object->save();
 | |
| 
 | |
| 		         cache('WST_CONF',null);
 | |
| 
 | |
| 		         Db::commit();
 | |
| 
 | |
| 		         return WSTReturn('操作成功',1);
 | |
| 
 | |
| 		     }
 | |
| 
 | |
| 		}catch (\Exception $e) {
 | |
| 
 | |
|             Db::rollback();errLog($e);
 | |
| 
 | |
|             return WSTReturn("操作失败");
 | |
| 
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     /**
 | |
| 
 | |
|     * 执行sql
 | |
| 
 | |
|     */
 | |
| 
 | |
|     private function excute($sql,$db_prefix=''){
 | |
| 
 | |
| 		if(!isset($sql) || empty($sql)) return;
 | |
| 
 | |
| 		$sql = str_replace("\r", " ", str_replace('`wst_', '`'.$db_prefix, $sql));// 替换表前缀
 | |
| 
 | |
| 		$ret = array();
 | |
| 
 | |
| 		foreach(explode(";\n", trim($sql)) as $query) {
 | |
| 
 | |
|             Db::execute(trim($query));
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	
 | |
| 
 | |
| }
 | |
| 
 |