GenerateTablesController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. // | Author: sai <1430792918@qq.com>
  6. // +----------------------------------------------------------------------
  7. namespace plugin\saiadmin\app\controller\tool;
  8. use plugin\saiadmin\basic\BaseController;
  9. use plugin\saiadmin\app\logic\tool\GenerateTablesLogic;
  10. use plugin\saiadmin\app\validate\tool\GenerateTablesValidate;
  11. use plugin\saiadmin\app\cache\UserMenuCache;
  12. use plugin\saiadmin\service\Permission;
  13. use support\Request;
  14. use support\Response;
  15. /**
  16. * 代码生成控制器
  17. */
  18. class GenerateTablesController extends BaseController
  19. {
  20. /**
  21. * 构造
  22. */
  23. public function __construct()
  24. {
  25. $this->logic = new GenerateTablesLogic();
  26. $this->validate = new GenerateTablesValidate;
  27. parent::__construct();
  28. }
  29. /**
  30. * 数据列表
  31. * @param Request $request
  32. * @return Response
  33. */
  34. #[Permission('代码生成列表', 'tool:code:index')]
  35. public function index(Request $request): Response
  36. {
  37. $where = $request->more([
  38. ['table_name', ''],
  39. ]);
  40. $query = $this->logic->search($where);
  41. $data = $this->logic->getList($query);
  42. return $this->success($data);
  43. }
  44. /**
  45. * 读取数据
  46. * @param Request $request
  47. * @return Response
  48. */
  49. #[Permission('代码生成列表', 'tool:code:index')]
  50. public function read(Request $request): Response
  51. {
  52. $id = $request->input('id', '');
  53. $model = $this->logic->read($id);
  54. if ($model) {
  55. $data = is_array($model) ? $model : $model->toArray();
  56. return $this->success($data);
  57. } else {
  58. return $this->fail('未查找到信息');
  59. }
  60. }
  61. /**
  62. * 修改数据
  63. * @param Request $request
  64. * @return Response
  65. */
  66. #[Permission('代码生成修改', 'tool:code:edit')]
  67. public function update(Request $request): Response
  68. {
  69. $data = $request->post();
  70. $this->validate('update', $data);
  71. $result = $this->logic->edit($data['id'], $data);
  72. if ($result) {
  73. return $this->success('修改成功');
  74. } else {
  75. return $this->fail('修改失败');
  76. }
  77. }
  78. /**
  79. * 删除数据
  80. * @param Request $request
  81. * @return Response
  82. */
  83. #[Permission('代码生成删除', 'tool:code:edit')]
  84. public function destroy(Request $request): Response
  85. {
  86. $ids = $request->post('ids', '');
  87. if (empty($ids)) {
  88. return $this->fail('请选择要删除的数据');
  89. }
  90. $result = $this->logic->destroy($ids);
  91. if ($result) {
  92. return $this->success('删除成功');
  93. } else {
  94. return $this->fail('删除失败');
  95. }
  96. }
  97. /**
  98. * 装载数据表
  99. * @param Request $request
  100. * @return Response
  101. */
  102. #[Permission('代码生成装载', 'tool:code:edit')]
  103. public function loadTable(Request $request): Response
  104. {
  105. $names = $request->input('names', []);
  106. $source = $request->input('source', '');
  107. $this->logic->loadTable($names, $source);
  108. return $this->success('操作成功');
  109. }
  110. /**
  111. * 同步数据表字段信息
  112. * @param Request $request
  113. * @return Response
  114. */
  115. #[Permission('代码生成同步表结构', 'tool:code:edit')]
  116. public function sync(Request $request): Response
  117. {
  118. $id = $request->input('id', '');
  119. $this->logic->sync($id);
  120. return $this->success('操作成功');
  121. }
  122. /**
  123. * 代码预览
  124. */
  125. #[Permission('代码生成预览', 'tool:code:edit')]
  126. public function preview(Request $request): Response
  127. {
  128. $id = $request->input('id', '');
  129. $data = $this->logic->preview($id);
  130. return $this->success($data);
  131. }
  132. /**
  133. * 代码生成
  134. */
  135. #[Permission('代码生成文件', 'tool:code:edit')]
  136. public function generate(Request $request): Response
  137. {
  138. $ids = $request->input('ids', '');
  139. $data = $this->logic->generate($ids);
  140. return response()->download($data['download'], $data['filename']);
  141. }
  142. /**
  143. * 生成到模块
  144. */
  145. #[Permission('代码生成到模块', 'tool:code:edit')]
  146. public function generateFile(Request $request): Response
  147. {
  148. $id = $request->input('id', '');
  149. $this->logic->generateFile($id);
  150. UserMenuCache::clearMenuCache();
  151. return $this->success('操作成功');
  152. }
  153. /**
  154. * 获取数据表字段信息
  155. * @param Request $request
  156. * @return Response
  157. */
  158. #[Permission('代码生成读取表字段', 'tool:code:index')]
  159. public function getTableColumns(Request $request): Response
  160. {
  161. $table_id = $request->input('table_id', '');
  162. $data = $this->logic->getTableColumns($table_id);
  163. return $this->success($data);
  164. }
  165. }