diff --git a/application/admin/controller/system/SystemDatabackup.php b/application/admin/controller/system/SystemDatabackup.php index 68865839..23454533 100644 --- a/application/admin/controller/system/SystemDatabackup.php +++ b/application/admin/controller/system/SystemDatabackup.php @@ -1,12 +1,10 @@ './backup/data/', + 'path' => PUBILC_PATH.'backup/data/', //数据库备份路径 'part' => 20971520, //数据库备份卷大小 @@ -29,15 +27,12 @@ class SystemDatabackup extends AuthController ); $this->DB = new Backup($config); } - /** * 数据类表列表 */ public function index(){ - return $this->fetch(); } - /** * 获取数据库表 * @param Request|null $request @@ -47,7 +42,6 @@ class SystemDatabackup extends AuthController $db= $this->DB; return Json::result(0,'sucess',$db->dataList(),count($db->dataList())); } - /** * 查看表结构 * @param Request|null $request @@ -56,7 +50,6 @@ class SystemDatabackup extends AuthController { parent::__construct($request); } - /** * 优化表 * @param Request|null $request @@ -68,7 +61,6 @@ class SystemDatabackup extends AuthController $res = $db->optimize($tables); return Json::successful($res ? '优化成功':'优化失败'); } - /**修复表 * @param Request|null $request */ @@ -109,18 +101,68 @@ class SystemDatabackup extends AuthController $data[$key]['compress'] = $t['compress']; $data[$key]['time'] = date('Y-m-d H:i:s',$t['time']); } - - return Json::result(0,'sucess',$data,count($data)); - } /**删除备份记录表 + return Json::result(200,'sucess',$data,count($data)); + } + /**删除备份记录表 * @param Request|null $request */ public function delFile(Request $request = null) { $feilname = strtotime($request->post('feilname')); - echo $feilname; - - $files = $this->DB->delFile($feilname); - // return Json::result(0,'sucess',$data,count($data)); + return Json::result(200,'sucess'); + } + /**倒入备份记录表 + * @param Request|null $request + */ + public function import(Request $request = null) + { + $part = null; $start = null; + $time = strtotime($request->post('feilname')); + $db = $this->DB; + if(is_numeric($time) && is_null($part) && is_null($start)){ + $list= $db->getFile('timeverif',$time); + if(is_array($list)){ + session::set('backup_list',$list); + $this->success('初始化完成!','',array('part' =>1,'start'=>0)); + }else{ + $this->error('备份文件可能已经损坏,请检查!'); + } + }else if(is_numeric($part)&&is_numeric($start)){ + $list=session::get('backup_list'); + $start=$db->setFile($list)->import($start); + if(false===$start){ + $this->error('还原数据出错!'); + }elseif(0===$start){ + if(isset($list[++$part])){ + $data=array('part'=>$part,'start'=>0); + $this->success("正在还原...#{$part}",'',$data); + }else{ + session::delete('backup_list'); + $this->success('还原完成!'); + } + }else{ + $data=array('part'=>$part,'start'=>$start[0]); + if($start[1]){ + $rate=floor(100*($start[0]/$start[1])); + $this->success("正在还原...#{$part}({$rate}%)",'',$data); + }else{ + $data['gz']=1; + $this->success("正在还原...#{$part}",'',$data); + } + $this->success("正在还原...#{$part}",''); + } + }else{ + $this->error('参数错误!'); + } + // return Json::result(0,'sucess',$data,count($data)); + } + /**下载备份记录表 + * @param Request|null $request + */ + public function downloadFile(Request $request = null) + { + $feilname = strtotime($request->post('feilname')); + $this->DB->downloadFile($feilname); } } diff --git a/application/admin/view/system/system_databackup/index.php b/application/admin/view/system/system_databackup/index.php index 78b8dc3d..773dce42 100644 --- a/application/admin/view/system/system_databackup/index.php +++ b/application/admin/view/system/system_databackup/index.php @@ -66,6 +66,32 @@ //监听工具条 fileList.on('tool(fileList)', function(obj){ var data = obj.data; + var layEvent = obj.data; + switch (layEvent){ + case 'import': + layer.confirm('真的倒入该备份吗?', function(index){ + layList.basePost(layList.Url({a:'import'}),{feilname:data.time},function (res) { + layList.msg(res.msg); + buckdata.reload(); + }); + obj.del(); + layer.close(index); + }); + break; + case 'delFile': + layer.confirm('真的删除该备份吗?', function(index){ + layList.basePost(layList.Url({a:'delFile'}),{feilname:data.time},function (res) { + layList.msg(res.msg); + buckdata.reload(); + }); + obj.del(); + layer.close(index); + }); + break; + case 'downloadFile': + $eb.createModalFrame('详情',layList.Url({a:'downloadFile',p:{feilname:data.name}})); + break; + } if(obj.event === 'import'){ layer.msg('ID:'+ data.id + ' 的查看操作'); } else if(obj.event === 'delFile'){ @@ -106,35 +132,26 @@ $.each(data, function (name, value) { if (value['name'] != undefined) tables.push(value['name']); }); + if(tables.length < 1 || empty(tables)){ + return; + } switch(obj.event){ case 'backup': - if(tables.length){ - layList.basePost(layList.Url({a:'backup'}),{tables:tables},function (res) { - layList.msg(res.msg,{icon:1,time:1000},function(){ - buckdata.reload(); - }); + layList.basePost(layList.Url({a:'backup'}),{tables:tables},function (res) { + layList.msg(res.msg,{icon:1,time:1000},function(){ + buckdata.reload(); }); - }else{ - layList.msg('请选择表'); - } + }); break; case 'optimize': - if(tables.length){ - layList.basePost(layList.Url({a:'optimize'}),{tables:tables},function (res) { - layList.msg(res.msg); - }); - }else{ - layList.msg('请选择表'); - } + layList.basePost(layList.Url({a:'optimize'}),{tables:tables},function (res) { + layList.msg(res.msg); + }); break; case 'repair': - if(tables.length){ - layList.basePost(layList.Url({a:'repair'}),{tables:tables},function (res) { - layList.msg(res.msg); - }); - }else{ - layList.msg('请选择表'); - } + layList.basePost(layList.Url({a:'repair'}),{tables:tables},function (res) { + layList.msg(res.msg); + }); break; }; });