TaskController.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. namespace backend\modules\admin\controllers;
  3. use backend\controllers\AdminController;
  4. use common\enums\StatusEnum;
  5. use common\models\common\CrontabTask;
  6. use common\models\common\CrontabTaskExecute;
  7. use Yii;
  8. /**
  9. * 任务管理
  10. *
  11. * @Author bing
  12. * @DateTime 2021-08-16 13:12:44
  13. * @copyright: Copyright (c) 2020 广东七件事集团
  14. */
  15. class TaskController extends AdminController
  16. {
  17. public function actionIndex()
  18. {
  19. if (Yii::$app->request->isAjax) {
  20. if (Yii::$app->request->isGet) {
  21. if (!\Yii::$app->request->isGet) {
  22. return $this->error('请求方式错误');
  23. }
  24. $page = \Yii::$app->request->get('page') ?? 1;
  25. $limit = \Yii::$app->request->get('page_size') ?? $this->pageSize;
  26. $name = \Yii::$app->request->get('name');
  27. $id = \Yii::$app->request->get('id');
  28. $start_time = \Yii::$app->request->get('start_time');
  29. $end_time = \Yii::$app->request->get('end_time');
  30. $type = \Yii::$app->request->get('type');
  31. // dd(strtotime($start_time), strtotime($end_time));
  32. $where = [['<>','status',StatusEnum::DELETE]];
  33. if (!empty($id)) {
  34. $where[] = ['id' => $id];
  35. }
  36. if (!empty($name)) {
  37. $where[] = ['like', 'name', $name];
  38. }
  39. if (!empty($start_time)) {
  40. $where[] = ['>=', 'created_at', strtotime($start_time)];
  41. }
  42. if (!empty($end_time)) {
  43. $where[] = ['<=', 'created_at', strtotime($end_time)];
  44. }
  45. if (!empty($type)) {
  46. $where[] = ['type' => $type];
  47. }
  48. $params = [
  49. 'select' => 'id,name,type,status,command,rule,created_at',
  50. 'where' => $where,
  51. 'order' => 'id desc',
  52. 'page' => $page,
  53. 'limit' => $limit,
  54. ];
  55. $list = CrontabTask::listPage($params, false, true);
  56. // $list = CrontabTask::getStaticError();
  57. return $this->success('操作成功', $list);
  58. }
  59. }
  60. return $this->render($this->action->id);
  61. }
  62. public function actionEdit()
  63. {
  64. if (Yii::$app->request->isAjax) {
  65. if (Yii::$app->request->isGet) {
  66. $get = Yii::$app->request->get();
  67. $res = Yii::$app->services->validate->validate($get, [[['id'], 'integer']]);
  68. if ($res === false) {
  69. return $this->error(Yii::$app->services->validate->getErrorMessage());
  70. }
  71. $info = CrontabTask::find()
  72. ->select('id,name,type,status,is_warning,command,rule,created_at')
  73. ->where(['id' => $get['id']])
  74. ->andWhere(['!=', 'status', -1])
  75. ->asArray()
  76. ->one();
  77. // $info = CrontabTask::getStaticError();
  78. return $this->success('操作成功', $info);
  79. } else {
  80. // 编辑任务
  81. $form = Yii::$app->request->post();
  82. $res = Yii::$app->services->validate->validate($form, [
  83. [['id', 'type', 'name', 'rule', 'is_warning', 'status', 'command'], 'required'],
  84. ]);
  85. // dd($form);
  86. if ($res === false) {
  87. return $this->error(Yii::$app->services->validate->getErrorMessage());
  88. }
  89. $res = CrontabTask::setData($form);
  90. if ($res === false) {
  91. return $this->error(CrontabTask::getStaticError());
  92. }
  93. return $this->success('操作成功');
  94. }
  95. }
  96. return $this->render($this->action->id);
  97. }
  98. public function actionDelete()
  99. {
  100. if (!\Yii::$app->request->isPost) {
  101. return $this->error('请求方式错误');
  102. }
  103. $id = \Yii::$app->request->post('id');
  104. if (empty($id) || !is_numeric($id)) {
  105. return $this->error('参数错误');
  106. }
  107. $task = CrontabTask::findOne($id);
  108. $task->status = -1;
  109. $task->updated_at = time();
  110. $res = $task->save();
  111. if ($res) {
  112. return $this->success('删除成功');
  113. } else {
  114. return $this->error('删除失败');
  115. }
  116. }
  117. public function actionExecutedList()
  118. {
  119. if (Yii::$app->request->isAjax) {
  120. if (Yii::$app->request->isGet) {
  121. if (!\Yii::$app->request->isGet) {
  122. return $this->error('请求方式错误');
  123. }
  124. $page = \Yii::$app->request->get('page') ?? 1;
  125. $limit = \Yii::$app->request->get('page_size') ?? $this->pageSize;
  126. $name = \Yii::$app->request->get('name');
  127. $task_id = \Yii::$app->request->get('task_id');
  128. $start_time = \Yii::$app->request->get('start_time');
  129. $end_time = \Yii::$app->request->get('end_time');
  130. $type = \Yii::$app->request->get('type');
  131. $status = \Yii::$app->request->get('status');
  132. // dd(strtotime($start_time), strtotime($end_time));
  133. $where = [];
  134. if (!empty($task_id)) {
  135. $where[] = ['task_id' => $task_id];
  136. }
  137. if (!empty($name)) {
  138. $where[] = ['like', 'name', $name];
  139. }
  140. if (!empty($start_time)) {
  141. $where[] = ['>=', 'created_at', strtotime($start_time)];
  142. }
  143. if (!empty($end_time)) {
  144. $where[] = ['<=', 'created_at', strtotime($end_time)];
  145. }
  146. if (!empty($type)) {
  147. $where[] = ['type' => $type];
  148. }
  149. if (!empty($status)) {
  150. $where[] = ['exec_process' => $status];
  151. }
  152. $params = [
  153. 'select' => 'id,name,command,type,start_time,execute_time,complete_time,running_time,exec_process,result,warning,created_at',
  154. 'where' => $where,
  155. 'order' => 'id desc',
  156. 'page' => $page,
  157. 'limit' => $limit,
  158. ];
  159. $list = CrontabTaskExecute::listPage($params, false, true);
  160. // $list = CrontabTaskExecute::getStaticError();
  161. return $this->success('操作成功', $list);
  162. }
  163. }
  164. return $this->render($this->action->id);
  165. }
  166. public function actionExecutedDetail()
  167. {
  168. if (\Yii::$app->request->isAjax) {
  169. if (!\Yii::$app->request->isGet) {
  170. return $this->error('请求方式错误');
  171. }
  172. $id = \Yii::$app->request->get('id');
  173. if (empty($id) || !is_numeric($id)) {
  174. return $this->error('参数错误');
  175. }
  176. $info = CrontabTaskExecute::findOne($id);
  177. return $this->success('操作成功', $info);
  178. } else {
  179. return $this->render('executed-detail');
  180. }
  181. }
  182. public function actionExecutedRecordDel()
  183. {
  184. if (!\Yii::$app->request->isPost) {
  185. return $this->error('请求方式错误');
  186. }
  187. $id = \Yii::$app->request->post('id');
  188. if (empty($id) || !is_numeric($id)) {
  189. return $this->error('参数错误');
  190. }
  191. $record = CrontabTaskExecute::findOne($id);
  192. if ($record->delete()) {
  193. return $this->success('删除成功');
  194. } else {
  195. return $this->error('删除失败');
  196. }
  197. }
  198. }