DataBaseController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. // | Author: sai <1430792918@qq.com>
  6. // +----------------------------------------------------------------------
  7. namespace plugin\saiadmin\app\controller\system;
  8. use plugin\saiadmin\app\logic\system\DatabaseLogic;
  9. use plugin\saiadmin\basic\BaseController;
  10. use plugin\saiadmin\service\Permission;
  11. use support\Request;
  12. use support\Response;
  13. /**
  14. * 数据表维护控制器
  15. */
  16. class DataBaseController extends BaseController
  17. {
  18. /**
  19. * 构造
  20. */
  21. public function __construct()
  22. {
  23. $this->logic = new DatabaseLogic();
  24. parent::__construct();
  25. }
  26. /**
  27. * 数据源列表
  28. * @return Response
  29. */
  30. public function source(): Response
  31. {
  32. $data = $this->logic->getDbSource();
  33. return $this->success($data);
  34. }
  35. /**
  36. * 数据列表
  37. * @param Request $request
  38. * @return Response
  39. */
  40. #[Permission('数据表列表', 'core:database:index')]
  41. public function index(Request $request): Response
  42. {
  43. $where = $request->more([
  44. ['name', ''],
  45. ['source', ''],
  46. ]);
  47. $data = $this->logic->getList($where);
  48. return $this->success($data);
  49. }
  50. /**
  51. * 回收站数据
  52. * @param Request $request
  53. * @return Response
  54. */
  55. #[Permission('回收站数据', 'core:recycle:index')]
  56. public function recycle(Request $request): Response
  57. {
  58. $table = $request->input('table', '');
  59. $data = $this->logic->recycleData($table);
  60. return $this->success($data);
  61. }
  62. /**
  63. * 销毁数据
  64. * @param Request $request
  65. * @return Response
  66. */
  67. #[Permission('回收站销毁', 'core:recycle:edit')]
  68. public function delete(Request $request): Response
  69. {
  70. $table = $request->input('table', '');
  71. $ids = $request->input('ids', '');
  72. if (!empty($ids)) {
  73. $result = $this->logic->delete($table, $ids);
  74. if (!$result) {
  75. return $this->fail('操作失败');
  76. }
  77. return $this->success('操作成功');
  78. } else {
  79. return $this->fail('参数错误,请检查');
  80. }
  81. }
  82. /**
  83. * 恢复数据
  84. * @param Request $request
  85. * @return Response
  86. */
  87. #[Permission('回收站恢复', 'core:recycle:edit')]
  88. public function recovery(Request $request): Response
  89. {
  90. $table = $request->input('table', '');
  91. $ids = $request->input('ids', '');
  92. if (!empty($ids)) {
  93. $result = $this->logic->recovery($table, $ids);
  94. if (!$result) {
  95. return $this->fail('操作失败');
  96. }
  97. return $this->success('操作成功');
  98. } else {
  99. return $this->fail('参数错误,请检查');
  100. }
  101. }
  102. /**
  103. * 获取表字段信息
  104. * @param Request $request
  105. * @return Response
  106. */
  107. #[Permission('数据表字段', 'core:database:index')]
  108. public function detailed(Request $request): Response
  109. {
  110. $table = $request->input('table', '');
  111. $data = $this->logic->getColumnList($table, '');
  112. return $this->success($data);
  113. }
  114. /**
  115. * 优化表
  116. * @param Request $request
  117. * @return Response
  118. */
  119. #[Permission('数据表优化表', 'core:database:edit')]
  120. public function optimize(Request $request): Response
  121. {
  122. $tables = $request->input('tables', []);
  123. $this->logic->optimizeTable($tables);
  124. return $this->success('优化成功');
  125. }
  126. /**
  127. * 清理表碎片
  128. */
  129. #[Permission('数据表清理碎片', 'core:database:edit')]
  130. public function fragment(Request $request): Response
  131. {
  132. $tables = $request->input('tables', []);
  133. $this->logic->fragmentTable($tables);
  134. return $this->success('清理成功');
  135. }
  136. }