From 13edea34491e7e69dca140dd3f75a59fdd294180 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Fri, 31 May 2024 08:54:39 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=A6=BB=E8=81=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=A7=BB=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/ProjectController.php | 2 +- app/Http/Controllers/Api/UsersController.php | 16 +++++- app/Models/ProjectLog.php | 3 + app/Models/ProjectTask.php | 5 +- app/Models/ProjectTaskUser.php | 4 +- ...4_04_24_145504_create_complaints_table.php | 3 + ...5_31_084503_project_logs_add_task_only.php | 56 +++++++++++++++++++ docker/mysql/conf.d/docker.cnf | 2 +- 8 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 database/migrations/2024_05_31_084503_project_logs_add_task_only.php diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 58b3f5c8c..debee3174 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -2492,7 +2492,7 @@ class ProjectController extends AbstractController $builder->whereTaskId($task->id); } else { $project = Project::userProject($project_id); - $builder->with(['projectTask:id,parent_id,name'])->whereProjectId($project->id); + $builder->with(['projectTask:id,parent_id,name'])->whereProjectId($project->id)->whereTaskOnly(0); } // $list = $builder->orderByDesc('created_at')->paginate(Base::getPaginate(100, 20)); diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 5ce991a12..09a52dd53 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -28,6 +28,7 @@ use App\Models\WebSocketDialogMsg; use Illuminate\Support\Facades\DB; use App\Models\UserEmailVerification; use App\Module\AgoraIO\AgoraTokenGenerator; +use Swoole\Coroutine; /** * @apiDefine users @@ -826,25 +827,30 @@ class UsersController extends AbstractController } $userInfo->checkSystem(1); // + $msg = '修改成功'; $upArray = []; $upLdap = []; $transferUser = null; switch ($type) { case 'setadmin': + $msg = '设置成功'; $upArray['identity'] = array_diff($userInfo->identity, ['admin']); $upArray['identity'][] = 'admin'; break; case 'clearadmin': + $msg = '取消成功'; $upArray['identity'] = array_diff($userInfo->identity, ['admin']); break; case 'settemp': + $msg = '设置成功'; $upArray['identity'] = array_diff($userInfo->identity, ['temp']); $upArray['identity'][] = 'temp'; break; case 'cleartemp': + $msg = '取消成功'; $upArray['identity'] = array_diff($userInfo->identity, ['temp']); break; @@ -878,6 +884,7 @@ class UsersController extends AbstractController break; case 'setdisable': + $msg = '操作成功'; if ($userInfo->userid === $user->userid) { return Base::retError('不能操作自己离职'); } @@ -898,11 +905,13 @@ class UsersController extends AbstractController break; case 'cleardisable': + $msg = '操作成功'; $upArray['identity'] = array_diff($userInfo->identity, ['disable']); $upArray['disable_at'] = null; break; case 'delete': + $msg = '删除成功'; if ($userInfo->userid === $user->userid) { return Base::retError('不能删除自己'); } @@ -1004,7 +1013,10 @@ class UsersController extends AbstractController 'new_userid' => $transferUser->userid, ]); $userTransfer->save(); - $userTransfer->start(); + go(function () use ($userTransfer) { + Coroutine::sleep(0.1); + $userTransfer->start(); + }); } elseif ($type === 'cleardisable') { // 取消离职重新加入全员群组 if (Base::settingFind('system', 'all_group_autoin', 'yes') === 'yes') { @@ -1015,7 +1027,7 @@ class UsersController extends AbstractController }); } // - return Base::retSuccess('修改成功', $userInfo); + return Base::retSuccess($msg, $userInfo); } /** diff --git a/app/Models/ProjectLog.php b/app/Models/ProjectLog.php index b44e1ec7e..cddcb5a48 100644 --- a/app/Models/ProjectLog.php +++ b/app/Models/ProjectLog.php @@ -40,6 +40,9 @@ use App\Module\Base; */ class ProjectLog extends AbstractModel { + protected $hidden = [ + 'task_only', + ]; /** * @param $value diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index bba4dd9ba..118e1cbc0 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1413,7 +1413,7 @@ class ProjectTask extends AbstractModel * @param int $userid * @return ProjectLog */ - public function addLog($detail, $record = [], $userid = 0) + public function addLog($detail, $record = [], $userid = 0, $taskOnly = 0) { $detail = str_replace("{任务}", $this->parent_id ? "子任务" : "任务", $detail); $array = [ @@ -1429,6 +1429,9 @@ class ProjectTask extends AbstractModel if ($record) { $array['record'] = $record; } + if ($taskOnly) { + $array['task_only'] = $taskOnly; + } $log = ProjectLog::createInstance($array); $log->save(); return $log; diff --git a/app/Models/ProjectTaskUser.php b/app/Models/ProjectTaskUser.php index 26a9875eb..a7afb9de4 100644 --- a/app/Models/ProjectTaskUser.php +++ b/app/Models/ProjectTaskUser.php @@ -52,7 +52,7 @@ class ProjectTaskUser extends AbstractModel */ public static function transfer($originalUserid, $newUserid) { - self::whereUserid($originalUserid)->chunk(100, function ($list) use ($originalUserid, $newUserid) { + self::whereUserid($originalUserid)->chunkById(100, function ($list) use ($originalUserid, $newUserid) { $tastIds = []; /** @var self $item */ foreach ($list as $item) { @@ -68,7 +68,7 @@ class ProjectTaskUser extends AbstractModel $item->save(); } if ($item->projectTask) { - $item->projectTask->addLog("移交{任务}身份", ['userid' => [$originalUserid, ' => ', $newUserid]]); + $item->projectTask->addLog("移交{任务}身份", ['userid' => [$originalUserid, ' => ', $newUserid]], 0, 1); if (!in_array($item->task_pid, $tastIds)) { $tastIds[] = $item->task_pid; $item->projectTask->syncDialogUser(); diff --git a/database/migrations/2024_04_24_145504_create_complaints_table.php b/database/migrations/2024_04_24_145504_create_complaints_table.php index 5d3d254b5..cecdc5c2a 100644 --- a/database/migrations/2024_04_24_145504_create_complaints_table.php +++ b/database/migrations/2024_04_24_145504_create_complaints_table.php @@ -13,6 +13,9 @@ class CreateComplaintsTable extends Migration */ public function up() { + if (Schema::hasTable('complaints')) + return; + Schema::create('complaints', function (Blueprint $table) { $table->bigIncrements('id'); $table->bigInteger('dialog_id')->nullable()->default(0)->comment('对话ID'); diff --git a/database/migrations/2024_05_31_084503_project_logs_add_task_only.php b/database/migrations/2024_05_31_084503_project_logs_add_task_only.php new file mode 100644 index 000000000..a346440c9 --- /dev/null +++ b/database/migrations/2024_05_31_084503_project_logs_add_task_only.php @@ -0,0 +1,56 @@ +index('project_id'); + $table->index('task_id'); + $table->integer('task_only')->index()->nullable()->default(0)->after('task_id')->comment('仅任务日志:0否,1是'); + } + }); + if ($isAdd) { + // 更新数据 + go(function () { + Coroutine::sleep(0.1); + ProjectLog::whereDetail('移交子任务身份')->update(['task_only' => 1]); + ProjectLog::whereDetail('移交任务身份')->update(['task_only' => 1]); + UserTransfer::chunkById(100, function ($lists) { + /** @var UserTransfer $item */ + foreach ($lists as $item) { + ProjectTaskUser::transfer($item->original_userid, $item->new_userid); + } + }); + }); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('project_logs', function (Blueprint $table) { + $table->dropColumn("task_only"); + }); + } +} diff --git a/docker/mysql/conf.d/docker.cnf b/docker/mysql/conf.d/docker.cnf index a395359c8..2fde942d3 100644 --- a/docker/mysql/conf.d/docker.cnf +++ b/docker/mysql/conf.d/docker.cnf @@ -47,7 +47,7 @@ innodb_write_io_threads = 2 [mysqldump] quick -max_allowed_packet = 8192M +max_allowed_packet = 2048M [mysql] no-auto-rehash