多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 系统配置的参数全部存入这张表 ~~~ CREATE TABLE `yjf_system` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `inc_type` varchar(255) NOT NULL DEFAULT '' COMMENT '类型', `name` varchar(255) NOT NULL DEFAULT '' COMMENT '参数名字', `value` varchar(255) NOT NULL DEFAULT '' COMMENT '值', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; ~~~ ~~~ /** * 获取缓存或者更新缓存 * @param $config_key|缓存文件名称 * @param array $data|缓存数据 array('k1'=>'v1','k2'=>'v3') * @return bool|mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ function yjfCache($config_key, $data = []){ $param = explode('.', $config_key); if(empty($data)){ //如$config_key=shop_info则获取网站信息数组 //如$config_key=shop_info.logo则获取网站logo字符串 $config = Cache::get($param[0],'');//直接获取缓存文件 if(empty($config)){ $config = []; //缓存文件不存在就读取数据库 $res = \think\facade\Db::name('system')->where("inc_type",$param[0])->select(); if($res){ foreach($res as $k=>$val){ $config[$val['name']] = $val['value']; } Cache::set($param[0],$config); } } if(count($param)>1){ return $config[$param[1]]; }else{ return $config; } }else{ //更新缓存 $result = \think\facade\Db::name('system')->where("inc_type", $param[0])->select(); if($result){ foreach($result as $val){ $temp[$val['name']] = $val['value']; } foreach ($data as $k=>$v){ $newArr = array('name'=>$k,'value'=>trim($v),'inc_type'=>$param[0]); if(!isset($temp[$k])){ \think\facade\Db::name('system')->insert($newArr);//新key数据插入数据库 }else{ if($v!=$temp[$k]) \think\facade\Db::name('system')->where("name", $k)->update($newArr);//缓存key存在且值有变更新此项 } } //更新后的数据库记录 $newRes = \think\facade\Db::name('system')->where("inc_type", $param[0])->select(); foreach ($newRes as $rs){ $newData[$rs['name']] = $rs['value']; } }else{ foreach($data as $k=>$v){ $newArr[] = array('name'=>$k,'value'=>trim($v),'inc_type'=>$param[0]); } \think\facade\Db::name('system')->insertAll($newArr); $newData = $data; } return Cache::set($param[0],$newData); } } /** ~~~