1+ <?php
2+
3+ namespace app \admin \controller ;
4+
5+ use gophp \helper \file ;
6+ use gophp \page ;
7+ use gophp \request ;
8+ use gophp \response ;
9+ use gophp \schema ;
10+
11+ class db extends auth {
12+
13+ public function index ()
14+ {
15+ $ db = \gophp \db::instance ();
16+
17+ $ table_suffix = $ db ->suffix ;
18+ $ table_name = $ table_suffix .'dbbak ' ;
19+
20+ $ sql = "select * from $ table_name order by id desc " ;
21+
22+ $ total = count ($ db ->show (false )->query ($ sql ));
23+
24+ $ pre_rows = 10 ;
25+
26+ $ page = new page ($ total , $ pre_rows );
27+
28+ $ dbbaks = $ db ->show (false )->query ($ sql , $ pre_rows );
29+
30+ $ this ->assign ('page ' , $ page );
31+ $ this ->assign ('dbbaks ' , $ dbbaks );
32+
33+ $ this ->display ('db/index ' );
34+
35+ }
36+
37+ /**
38+ * 备份数据
39+ */
40+ public function backup ()
41+ {
42+
43+ if (!request::isAjax ()){
44+
45+ response::ajax (['code ' => 300 , 'msg ' => '非法请求方式 ' ]);
46+
47+ }
48+ $ schema = schema::instance ();
49+ $ tables = $ schema ->getTables ();
50+
51+ $ path = RUNTIME_PATH . '/data/ ' ;
52+
53+ $ file = $ path . date ('YmdHis ' ) . '_all.sql ' ;
54+ $ sql = '' ;
55+ foreach ($ tables as $ table ) {
56+ // 如果存在则删除表
57+ $ sql .= "DROP TABLE IF EXISTS ` " . $ table . '`;\r\n ' ;
58+ // 创建表结构
59+ $ sql .= $ schema ->getCreateTableSql ($ table ) . ';\r\n ' ;
60+
61+ $ sql .="INSERT INTO ` $ table` VALUES( " ;
62+
63+ $ data = $ schema ->query ("select * from $ table " )->fetchAll (\PDO ::FETCH_ASSOC );
64+
65+ foreach ($ data as $ v ){
66+ foreach ($ v as $ v1 ){
67+ $ sql .= '" ' .$ v1 .'", ' ;
68+ }
69+ }
70+
71+ $ sql = trim ($ sql , ', ' );
72+
73+ $ sql .= "); \r\n" ;
74+ }
75+
76+ if (!file::create ($ file , $ sql )){
77+
78+ response::ajax (['code ' => 301 , 'msg ' => '备份失败,请检查 ' .$ path .'是否有可写权限 ' ]);
79+
80+ }
81+
82+ $ size = file::getInfo ($ file ,'size ' )/1024 ;
83+
84+ $ result = db ('dbbak ' )->add (['file ' => date ('YmdHis ' ) . '_all.sql ' ,'size ' => $ size ]);
85+
86+ if ($ result ){
87+
88+ response::ajax (['code ' => 200 , 'msg ' => '备份成功! ' ]);
89+
90+ }
91+
92+ response::ajax (['code ' => 302 , 'msg ' => '备份失败! ' ]);
93+
94+ }
95+
96+ /**
97+ * 下载数据
98+ */
99+ public function download ()
100+ {
101+
102+ $ id = request::get ('id ' , 0 );
103+
104+ $ dbbak = db ('dbbak ' )->find ($ id );
105+
106+ $ file = RUNTIME_PATH . '/data/ ' . $ dbbak ['file ' ];
107+
108+ response::download ($ file );
109+
110+ response::ajax (['code ' => 200 , 'msg ' =>'下载成功 ' ]);
111+
112+ }
113+
114+ /**
115+ * 删除文件
116+ */
117+ public function delete ()
118+ {
119+
120+ $ id = request::post ('id ' , 0 );
121+
122+ $ dbbak = db ('dbbak ' )->find ($ id );
123+
124+ $ file = RUNTIME_PATH . '/data/ ' . $ dbbak ['file ' ];
125+
126+ if (!file::delete ($ file )){
127+
128+ response::ajax (['code ' => 300 , 'msg ' =>'删除失败 ' ]);
129+
130+ }
131+
132+ $ result = db ('dbbak ' )->delete ($ id );
133+
134+ if (!$ result ){
135+
136+ response::ajax (['code ' => 301 , 'msg ' =>'删除失败 ' ]);
137+
138+ }
139+
140+ response::ajax (['code ' => 200 , 'msg ' =>'删除成功 ' ]);
141+
142+ }
143+
144+ }
0 commit comments