diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 079e75a3..985e2b77 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api; +use App\Exceptions\ApiException; use App\Models\AbstractModel; use App\Models\Project; use App\Models\ProjectColumn; @@ -217,7 +218,7 @@ class ProjectController extends AbstractController return Base::retError('你不是项目负责人'); } // - return AbstractModel::transaction(function() use ($project, $userid) { + $deleteUser = AbstractModel::transaction(function() use ($project, $userid) { $array = []; foreach ($userid as $uid) { if ($project->joinProject($uid)) { @@ -229,10 +230,12 @@ class ProjectController extends AbstractController $delete->delete(); $project->syncDialogUser(); $project->addLog("修改项目成员"); - $project->pushMsg('delete', null, $deleteUser->toArray()); - $project->pushMsg('detail'); - return Base::retSuccess('修改成功', ['id' => $project->id]); + return $deleteUser->toArray(); }); + // + $project->pushMsg('delete', null, $deleteUser); + $project->pushMsg('detail'); + return Base::retSuccess('修改成功', ['id' => $project->id]); } /** @@ -257,7 +260,7 @@ class ProjectController extends AbstractController return Base::retError('会员不存在'); } // - return AbstractModel::transaction(function() use ($owner_userid, $project) { + AbstractModel::transaction(function() use ($owner_userid, $project) { ProjectUser::whereProjectId($project->id)->update(['owner' => 0]); ProjectUser::updateInsert([ 'project_id' => $project->id, @@ -267,10 +270,10 @@ class ProjectController extends AbstractController ]); $project->syncDialogUser(); $project->addLog("移交项目给会员ID:" . $owner_userid); - $project->pushMsg('detail'); - // - return Base::retSuccess('移交成功', ['id' => $project->id]); }); + // + $project->pushMsg('detail'); + return Base::retSuccess('移交成功', ['id' => $project->id]); } /** @@ -343,13 +346,13 @@ class ProjectController extends AbstractController return Base::retError('项目负责人无法退出项目'); } // - return AbstractModel::transaction(function() use ($user, $project) { + AbstractModel::transaction(function() use ($user, $project) { ProjectUser::whereProjectId($project->id)->whereUserid($user->userid)->delete(); $project->syncDialogUser(); $project->addLog("会员ID:" . $user->userid . " 退出项目"); $project->pushMsg('delete', null, $user->userid); - return Base::retSuccess('退出成功', ['id' => $project->id]); }); + return Base::retSuccess('退出成功', ['id' => $project->id]); } /** @@ -368,10 +371,8 @@ class ProjectController extends AbstractController return Base::retError('你不是项目负责人'); } // - if ($project->deleteProject()) { - return Base::retSuccess('删除成功', ['id' => $project->id]); - } - return Base::retError('删除失败'); + $project->deleteProject(); + return Base::retSuccess('删除成功', ['id' => $project->id]); } /** @@ -472,7 +473,8 @@ class ProjectController extends AbstractController return Base::retError('项目不存在或不在成员列表内'); } // - return $column->deleteColumn(); + $column->deleteColumn(); + return Base::retSuccess('删除成功', $column->toArray()); } /** @@ -709,26 +711,24 @@ class ProjectController extends AbstractController if ($task->complete_at) { return Base::retError('任务已完成'); } - $result = $task->completeTask(Carbon::now()); + $task->completeTask(Carbon::now()); $updateComplete = true; } elseif (Arr::exists($data, 'complete_at')) { // 标记未完成 if (!$task->complete_at) { return Base::retError('未完成任务'); } - $result = $task->completeTask(null); + $task->completeTask(null); $updateComplete = true; } else { // 更新任务 - $result = $task->updateTask($data, $updateContent); + $task->updateTask($data, $updateContent); } - if (Base::isSuccess($result)) { - $result['data'] = $task->toArray(); - $result['data']['is_update_complete'] = $updateComplete; - $result['data']['is_update_content'] = $updateContent; - $task->pushMsg('update', $result['data']); - } - return $result; + $data = $task->toArray(); + $data['is_update_complete'] = $updateComplete; + $data['is_update_content'] = $updateContent; + $task->pushMsg('update', $data); + return Base::retSuccess('修改成功', $data); } /** @@ -804,7 +804,7 @@ class ProjectController extends AbstractController return Base::retError('子任务不支持此功能'); } // - return AbstractModel::transaction(function() use ($task) { + AbstractModel::transaction(function() use ($task) { if (empty($task->dialog_id)) { $task->lockForUpdate(); $dialog = WebSocketDialog::createGroup(null, $task->relationUserids(), 'task'); @@ -814,14 +814,15 @@ class ProjectController extends AbstractController } } if (empty($task->dialog_id)) { - return Base::retError('创建聊天失败'); + throw new ApiException('创建聊天失败'); } - $task->pushMsg('dialog'); - return Base::retSuccess('success', [ - 'id' => $task->id, - 'dialog_id' => $task->dialog_id, - ]); }); + // + $task->pushMsg('dialog'); + return Base::retSuccess('success', [ + 'id' => $task->id, + 'dialog_id' => $task->dialog_id, + ]); } /** @@ -841,7 +842,8 @@ class ProjectController extends AbstractController return Base::retError('子任务不支持此功能'); } // - return $task->archivedTask(Carbon::now()); + $task->archivedTask(Carbon::now()); + return Base::retSuccess('保存成功', $task); } /** @@ -857,7 +859,8 @@ class ProjectController extends AbstractController // $task = ProjectTask::userTask($task_id); // - return $task->deleteTask(); + $task->deleteTask(); + return Base::retSuccess('删除成功', $task); } /** diff --git a/app/Models/AbstractModel.php b/app/Models/AbstractModel.php index 696cca96..25b7ab42 100644 --- a/app/Models/AbstractModel.php +++ b/app/Models/AbstractModel.php @@ -113,9 +113,8 @@ class AbstractModel extends Model */ public static function updateData($where, $updateArray) { - $isUpdate = false; if ($updateArray) { - $result = self::transaction(function () use ($updateArray, $where) { + self::transaction(function () use ($updateArray, $where) { $list = static::where($where)->get(); if ($list->isNotEmpty()) { foreach ($list AS $row) { @@ -124,9 +123,9 @@ class AbstractModel extends Model } } }); - $isUpdate = Base::isSuccess($result); + return true; } - return $isUpdate; + return false; } /** @@ -154,7 +153,7 @@ class AbstractModel extends Model /** * 用于Model的事务处理 * @param \Closure $closure - * @return array + * @return mixed */ public static function transaction(\Closure $closure) { diff --git a/app/Models/Project.php b/app/Models/Project.php index 09ec03f3..cd890831 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -152,18 +152,15 @@ class Project extends AbstractModel public function getDialogIdAttribute($value) { if ($value === 0) { - $result = AbstractModel::transaction(function() { + return AbstractModel::transaction(function() { $this->lockForUpdate(); $dialog = WebSocketDialog::createGroup(null, $this->relationUserids(), 'project'); if ($dialog) { $this->dialog_id = $dialog->id; $this->save(); } - return Base::retSuccess('success', $dialog->id); + return $dialog->id; }); - if (Base::isSuccess($result)) { - $value = $result['data']; - } } return $value; } @@ -261,7 +258,7 @@ class Project extends AbstractModel */ public function deleteProject() { - $result = AbstractModel::transaction(function () { + AbstractModel::transaction(function () { WebSocketDialog::whereId($this->dialog_id)->delete(); $columns = ProjectColumn::whereProjectId($this->id)->get(); foreach ($columns as $column) { @@ -269,10 +266,9 @@ class Project extends AbstractModel } $this->delete(); $this->addLog("删除项目"); - $this->pushMsg('delete'); - return Base::retSuccess('删除成功', $this->toArray()); }); - return Base::isSuccess($result); + $this->pushMsg('delete'); + return true; } /** diff --git a/app/Models/ProjectColumn.php b/app/Models/ProjectColumn.php index b78b8666..136cc128 100644 --- a/app/Models/ProjectColumn.php +++ b/app/Models/ProjectColumn.php @@ -62,22 +62,22 @@ class ProjectColumn extends AbstractModel /** * 删除列表 * @param bool $pushMsg 是否推送 - * @return array + * @return bool */ public function deleteColumn($pushMsg = true) { - return AbstractModel::transaction(function () use ($pushMsg) { + AbstractModel::transaction(function () use ($pushMsg) { $tasks = ProjectTask::whereColumnId($this->id)->get(); foreach ($tasks as $task) { $task->deleteTask($pushMsg); } $this->delete(); $this->addLog("删除列表:" . $this->name); - if ($pushMsg) { - $this->pushMsg("delete"); - } - return Base::retSuccess('删除成功', $this->toArray()); }); + if ($pushMsg) { + $this->pushMsg("delete"); + } + return true; } /** diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 3792630f..74989be6 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -309,7 +309,7 @@ class ProjectTask extends AbstractModel $task->sort = intval(self::whereColumnId($task->column_id)->orderByDesc('sort')->value('sort')) + 1; } // - $result = AbstractModel::transaction(function() use ($subtasks, $content, $owner, $task) { + return AbstractModel::transaction(function() use ($subtasks, $content, $owner, $task) { $task->save(); if ($owner) { ProjectTaskUser::createInstance([ @@ -336,29 +336,25 @@ class ProjectTask extends AbstractModel } } $task->addLog("创建{任务}:" . $task->name); - return Base::retSuccess('success', $task); + return $task; }); - if (Base::isError($result)) { - throw new ApiException($result); - } - return $result['data']; } /** * 修改任务 * @param $data * @param $updateContent - * @return array + * @return bool */ public function updateTask($data, &$updateContent) { - return AbstractModel::transaction(function () use ($data, &$updateContent) { + AbstractModel::transaction(function () use ($data, &$updateContent) { // 标题 if (Arr::exists($data, 'name') && $this->name != $data['name']) { if (empty($data['name'])) { - return Base::retError('任务描述不能为空'); + throw new ApiException('任务描述不能为空'); } elseif (mb_strlen($data['name']) > 255) { - return Base::retError('任务描述最多只能设置255个字'); + throw new ApiException('任务描述最多只能设置255个字'); } $this->name = $data['name']; $this->addLog("修改{任务}标题:{$this->name} => {$data['name']}"); @@ -369,7 +365,7 @@ class ProjectTask extends AbstractModel $owner = intval($data['owner']); if ($row->userid != $owner) { if (empty($this->useridInTheProject($owner))) { - return Base::retError('请选择正确的负责人'); + throw new ApiException('请选择正确的负责人'); } $row->owner = 0; $row->save(); @@ -460,8 +456,8 @@ class ProjectTask extends AbstractModel $this->save(); if ($this->start_at instanceof \DateTimeInterface) $this->start_at = $this->start_at->format('Y-m-d H:i:s'); if ($this->end_at instanceof \DateTimeInterface) $this->end_at = $this->end_at->format('Y-m-d H:i:s'); - return Base::retSuccess('修改成功'); }); + return true; } /** @@ -536,11 +532,11 @@ class ProjectTask extends AbstractModel /** * 标记已完成、未完成 * @param Carbon|null $complete_at 完成时间 - * @return array|bool + * @return bool */ public function completeTask($complete_at) { - return AbstractModel::transaction(function () use ($complete_at) { + AbstractModel::transaction(function () use ($complete_at) { if ($complete_at === null) { // 标记未完成 $this->complete_at = null; @@ -549,25 +545,25 @@ class ProjectTask extends AbstractModel // 标记已完成 if ($this->parent_id == 0) { if (self::whereParentId($this->id)->whereCompleteAt(null)->exists()) { - return Base::retError('子任务未完成'); + throw new ApiException('子任务未完成'); } } $this->complete_at = $complete_at; $this->addLog("{任务}标记已完成:" . $this->name); } $this->save(); - return Base::retSuccess('修改成功'); }); + return true; } /** * 归档任务、取消归档 * @param Carbon|null $archived_at 归档时间 - * @return array + * @return bool */ public function archivedTask($archived_at) { - return AbstractModel::transaction(function () use ($archived_at) { + AbstractModel::transaction(function () use ($archived_at) { if ($archived_at === null) { // 取消归档 $this->archived_at = null; @@ -579,28 +575,28 @@ class ProjectTask extends AbstractModel $this->pushMsg('archived'); } $this->save(); - return Base::retSuccess('保存成功', $this->toArray()); }); + return true; } /** * 删除任务 * @param bool $pushMsg 是否推送 - * @return array + * @return bool */ public function deleteTask($pushMsg = true) { - return AbstractModel::transaction(function () use ($pushMsg) { + AbstractModel::transaction(function () { if ($this->dialog_id) { WebSocketDialog::whereId($this->dialog_id)->delete(); } $this->delete(); $this->addLog("删除{任务}:" . $this->name); - if ($pushMsg) { - $this->pushMsg('delete'); - } - return Base::retSuccess('删除成功', $this->toArray()); }); + if ($pushMsg) { + $this->pushMsg('delete'); + } + return true; } /** diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index d15a5592..70972eea 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -120,7 +120,7 @@ class WebSocketDialog extends AbstractModel */ public static function createGroup($name, $userid, $group_type = '') { - $result = AbstractModel::transaction(function () use ($userid, $group_type, $name) { + return AbstractModel::transaction(function () use ($userid, $group_type, $name) { $dialog = self::createInstance([ 'type' => 'group', 'name' => $name ?: '', @@ -135,9 +135,8 @@ class WebSocketDialog extends AbstractModel ])->save(); } } - return Base::retSuccess('success', $dialog); + return $dialog; }); - return Base::isSuccess($result) ? $result['data'] : null; } /** @@ -152,7 +151,7 @@ class WebSocketDialog extends AbstractModel if (empty($dialog)) { return false; } - $result = AbstractModel::transaction(function () use ($dialog, $userid) { + AbstractModel::transaction(function () use ($dialog, $userid) { foreach (is_array($userid) ? $userid : [$userid] as $value) { if ($value > 0) { WebSocketDialogUser::createInstance([ @@ -162,7 +161,7 @@ class WebSocketDialog extends AbstractModel } } }); - return Base::isSuccess($result); + return true; } /** @@ -197,7 +196,7 @@ class WebSocketDialog extends AbstractModel if ($dialogUser->count() >= 2) { return $dialogUser[0]; } - $result = AbstractModel::transaction(function () use ($userid2, $userid) { + return AbstractModel::transaction(function () use ($userid2, $userid) { $dialog = self::createInstance([ 'type' => 'user', ]); @@ -210,9 +209,8 @@ class WebSocketDialog extends AbstractModel 'dialog_id' => $dialog->id, 'userid' => $userid2, ])->save(); - return Base::retSuccess('success', $dialog); + return $dialog; }); - return Base::isSuccess($result) ? $result['data'] : null; } } diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index 1e2011be..f07f5c1d 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Exceptions\ApiException; use App\Module\Base; use App\Tasks\PushTask; use App\Tasks\WebSocketDialogMsgTask; @@ -91,7 +92,7 @@ class WebSocketDialogMsg extends AbstractModel if (empty($userid)) { return false; } - $result = self::transaction(function() use ($userid) { + self::transaction(function() use ($userid) { $msgRead = WebSocketDialogMsgRead::whereMsgId($this->id)->whereUserid($userid)->lockForUpdate()->first(); if (empty($msgRead)) { $msgRead = WebSocketDialogMsgRead::createInstance([ @@ -121,7 +122,7 @@ class WebSocketDialogMsg extends AbstractModel ]); } }); - return Base::isSuccess($result); + return true; } /** @@ -140,22 +141,18 @@ class WebSocketDialogMsg extends AbstractModel 'msg' => $msg, 'read' => 0, ]); - $result = AbstractModel::transaction(function () use ($dialog_id, $msg, $dialogMsg) { + AbstractModel::transaction(function () use ($dialog_id, $msg, $dialogMsg) { $dialog = WebSocketDialog::find($dialog_id); if (empty($dialog)) { - return Base::retError('获取会话失败'); + throw new ApiException('获取会话失败'); } $dialog->last_at = Carbon::now(); $dialog->save(); $dialogMsg->send = 1; $dialogMsg->dialog_id = $dialog->id; $dialogMsg->save(); - // - return Base::retSuccess('发送成功', $dialogMsg->toArray()); }); - if (Base::isSuccess($result)) { - Task::deliver(new WebSocketDialogMsgTask($dialogMsg->id)); - } - return $result; + Task::deliver(new WebSocketDialogMsgTask($dialogMsg->id)); + return Base::retSuccess('发送成功', $dialogMsg); } }