mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-10 18:02:55 +00:00
perf: 优化离职数据移交
This commit is contained in:
parent
6cdcd4e0dc
commit
13edea3449
@ -2492,7 +2492,7 @@ class ProjectController extends AbstractController
|
|||||||
$builder->whereTaskId($task->id);
|
$builder->whereTaskId($task->id);
|
||||||
} else {
|
} else {
|
||||||
$project = Project::userProject($project_id);
|
$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));
|
$list = $builder->orderByDesc('created_at')->paginate(Base::getPaginate(100, 20));
|
||||||
|
|||||||
@ -28,6 +28,7 @@ use App\Models\WebSocketDialogMsg;
|
|||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Models\UserEmailVerification;
|
use App\Models\UserEmailVerification;
|
||||||
use App\Module\AgoraIO\AgoraTokenGenerator;
|
use App\Module\AgoraIO\AgoraTokenGenerator;
|
||||||
|
use Swoole\Coroutine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @apiDefine users
|
* @apiDefine users
|
||||||
@ -826,25 +827,30 @@ class UsersController extends AbstractController
|
|||||||
}
|
}
|
||||||
$userInfo->checkSystem(1);
|
$userInfo->checkSystem(1);
|
||||||
//
|
//
|
||||||
|
$msg = '修改成功';
|
||||||
$upArray = [];
|
$upArray = [];
|
||||||
$upLdap = [];
|
$upLdap = [];
|
||||||
$transferUser = null;
|
$transferUser = null;
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'setadmin':
|
case 'setadmin':
|
||||||
|
$msg = '设置成功';
|
||||||
$upArray['identity'] = array_diff($userInfo->identity, ['admin']);
|
$upArray['identity'] = array_diff($userInfo->identity, ['admin']);
|
||||||
$upArray['identity'][] = 'admin';
|
$upArray['identity'][] = 'admin';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'clearadmin':
|
case 'clearadmin':
|
||||||
|
$msg = '取消成功';
|
||||||
$upArray['identity'] = array_diff($userInfo->identity, ['admin']);
|
$upArray['identity'] = array_diff($userInfo->identity, ['admin']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'settemp':
|
case 'settemp':
|
||||||
|
$msg = '设置成功';
|
||||||
$upArray['identity'] = array_diff($userInfo->identity, ['temp']);
|
$upArray['identity'] = array_diff($userInfo->identity, ['temp']);
|
||||||
$upArray['identity'][] = 'temp';
|
$upArray['identity'][] = 'temp';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'cleartemp':
|
case 'cleartemp':
|
||||||
|
$msg = '取消成功';
|
||||||
$upArray['identity'] = array_diff($userInfo->identity, ['temp']);
|
$upArray['identity'] = array_diff($userInfo->identity, ['temp']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -878,6 +884,7 @@ class UsersController extends AbstractController
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'setdisable':
|
case 'setdisable':
|
||||||
|
$msg = '操作成功';
|
||||||
if ($userInfo->userid === $user->userid) {
|
if ($userInfo->userid === $user->userid) {
|
||||||
return Base::retError('不能操作自己离职');
|
return Base::retError('不能操作自己离职');
|
||||||
}
|
}
|
||||||
@ -898,11 +905,13 @@ class UsersController extends AbstractController
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'cleardisable':
|
case 'cleardisable':
|
||||||
|
$msg = '操作成功';
|
||||||
$upArray['identity'] = array_diff($userInfo->identity, ['disable']);
|
$upArray['identity'] = array_diff($userInfo->identity, ['disable']);
|
||||||
$upArray['disable_at'] = null;
|
$upArray['disable_at'] = null;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete':
|
case 'delete':
|
||||||
|
$msg = '删除成功';
|
||||||
if ($userInfo->userid === $user->userid) {
|
if ($userInfo->userid === $user->userid) {
|
||||||
return Base::retError('不能删除自己');
|
return Base::retError('不能删除自己');
|
||||||
}
|
}
|
||||||
@ -1004,7 +1013,10 @@ class UsersController extends AbstractController
|
|||||||
'new_userid' => $transferUser->userid,
|
'new_userid' => $transferUser->userid,
|
||||||
]);
|
]);
|
||||||
$userTransfer->save();
|
$userTransfer->save();
|
||||||
$userTransfer->start();
|
go(function () use ($userTransfer) {
|
||||||
|
Coroutine::sleep(0.1);
|
||||||
|
$userTransfer->start();
|
||||||
|
});
|
||||||
} elseif ($type === 'cleardisable') {
|
} elseif ($type === 'cleardisable') {
|
||||||
// 取消离职重新加入全员群组
|
// 取消离职重新加入全员群组
|
||||||
if (Base::settingFind('system', 'all_group_autoin', 'yes') === 'yes') {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -40,6 +40,9 @@ use App\Module\Base;
|
|||||||
*/
|
*/
|
||||||
class ProjectLog extends AbstractModel
|
class ProjectLog extends AbstractModel
|
||||||
{
|
{
|
||||||
|
protected $hidden = [
|
||||||
|
'task_only',
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $value
|
* @param $value
|
||||||
|
|||||||
@ -1413,7 +1413,7 @@ class ProjectTask extends AbstractModel
|
|||||||
* @param int $userid
|
* @param int $userid
|
||||||
* @return ProjectLog
|
* @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);
|
$detail = str_replace("{任务}", $this->parent_id ? "子任务" : "任务", $detail);
|
||||||
$array = [
|
$array = [
|
||||||
@ -1429,6 +1429,9 @@ class ProjectTask extends AbstractModel
|
|||||||
if ($record) {
|
if ($record) {
|
||||||
$array['record'] = $record;
|
$array['record'] = $record;
|
||||||
}
|
}
|
||||||
|
if ($taskOnly) {
|
||||||
|
$array['task_only'] = $taskOnly;
|
||||||
|
}
|
||||||
$log = ProjectLog::createInstance($array);
|
$log = ProjectLog::createInstance($array);
|
||||||
$log->save();
|
$log->save();
|
||||||
return $log;
|
return $log;
|
||||||
|
|||||||
@ -52,7 +52,7 @@ class ProjectTaskUser extends AbstractModel
|
|||||||
*/
|
*/
|
||||||
public static function transfer($originalUserid, $newUserid)
|
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 = [];
|
$tastIds = [];
|
||||||
/** @var self $item */
|
/** @var self $item */
|
||||||
foreach ($list as $item) {
|
foreach ($list as $item) {
|
||||||
@ -68,7 +68,7 @@ class ProjectTaskUser extends AbstractModel
|
|||||||
$item->save();
|
$item->save();
|
||||||
}
|
}
|
||||||
if ($item->projectTask) {
|
if ($item->projectTask) {
|
||||||
$item->projectTask->addLog("移交{任务}身份", ['userid' => [$originalUserid, ' => ', $newUserid]]);
|
$item->projectTask->addLog("移交{任务}身份", ['userid' => [$originalUserid, ' => ', $newUserid]], 0, 1);
|
||||||
if (!in_array($item->task_pid, $tastIds)) {
|
if (!in_array($item->task_pid, $tastIds)) {
|
||||||
$tastIds[] = $item->task_pid;
|
$tastIds[] = $item->task_pid;
|
||||||
$item->projectTask->syncDialogUser();
|
$item->projectTask->syncDialogUser();
|
||||||
|
|||||||
@ -13,6 +13,9 @@ class CreateComplaintsTable extends Migration
|
|||||||
*/
|
*/
|
||||||
public function up()
|
public function up()
|
||||||
{
|
{
|
||||||
|
if (Schema::hasTable('complaints'))
|
||||||
|
return;
|
||||||
|
|
||||||
Schema::create('complaints', function (Blueprint $table) {
|
Schema::create('complaints', function (Blueprint $table) {
|
||||||
$table->bigIncrements('id');
|
$table->bigIncrements('id');
|
||||||
$table->bigInteger('dialog_id')->nullable()->default(0)->comment('对话ID');
|
$table->bigInteger('dialog_id')->nullable()->default(0)->comment('对话ID');
|
||||||
|
|||||||
@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\ProjectLog;
|
||||||
|
use App\Models\ProjectTaskUser;
|
||||||
|
use App\Models\UserTransfer;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Swoole\Coroutine;
|
||||||
|
|
||||||
|
class ProjectLogsAddTaskOnly extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$isAdd = false;
|
||||||
|
Schema::table('project_logs', function (Blueprint $table) use (&$isAdd) {
|
||||||
|
if (!Schema::hasColumn('project_logs', 'task_only')) {
|
||||||
|
$isAdd = true;
|
||||||
|
$table->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");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -47,7 +47,7 @@ innodb_write_io_threads = 2
|
|||||||
|
|
||||||
[mysqldump]
|
[mysqldump]
|
||||||
quick
|
quick
|
||||||
max_allowed_packet = 8192M
|
max_allowed_packet = 2048M
|
||||||
|
|
||||||
[mysql]
|
[mysql]
|
||||||
no-auto-rehash
|
no-auto-rehash
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user