perf: 优化移交个人项目

This commit is contained in:
kuaifan 2022-05-22 23:10:08 +08:00
parent 9c72558878
commit fd52db7f71
5 changed files with 66 additions and 2 deletions

View File

@ -212,6 +212,7 @@ class ProjectController extends AbstractController
* @apiParam {String} [flow] 开启流程 * @apiParam {String} [flow] 开启流程
* - open: 开启 * - open: 开启
* - close: 关闭(默认) * - close: 关闭(默认)
* @apiParam {Number} [personal] 个人项目,注册成功时创建(仅支持创建一个个人项目)
* *
* @apiSuccess {Number} ret 返回状态码1正确、0错误 * @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述) * @apiSuccess {String} msg 返回信息(错误描述)
@ -224,6 +225,7 @@ class ProjectController extends AbstractController
$name = trim(Request::input('name', '')); $name = trim(Request::input('name', ''));
$desc = trim(Request::input('desc', '')); $desc = trim(Request::input('desc', ''));
$flow = trim(Request::input('flow', 'close')); $flow = trim(Request::input('flow', 'close'));
$isPersonal = intval(Request::input('personal'));
if (mb_strlen($name) < 2) { if (mb_strlen($name) < 2) {
return Base::retError('项目名称不可以少于2个字'); return Base::retError('项目名称不可以少于2个字');
} elseif (mb_strlen($name) > 32) { } elseif (mb_strlen($name) > 32) {
@ -260,6 +262,12 @@ class ProjectController extends AbstractController
'desc' => $desc, 'desc' => $desc,
'userid' => $user->userid, 'userid' => $user->userid,
]); ]);
if ($isPersonal) {
if (Project::whereUserid($user->userid)->wherePersonal(1)->exists()) {
return Base::retError('个人项目已存在,无须重复创建');
}
$project->personal = 1;
}
AbstractModel::transaction(function() use ($flow, $insertColumns, $project) { AbstractModel::transaction(function() use ($flow, $insertColumns, $project) {
$project->save(); $project->save();
ProjectUser::createInstance([ ProjectUser::createInstance([

View File

@ -18,6 +18,7 @@ use Request;
* @property string|null $name 名称 * @property string|null $name 名称
* @property string|null $desc 描述、备注 * @property string|null $desc 描述、备注
* @property int|null $userid 创建人 * @property int|null $userid 创建人
* @property int|null $personal 是否个人项目
* @property int|null $dialog_id 聊天会话ID * @property int|null $dialog_id 聊天会话ID
* @property string|null $archived_at 归档时间 * @property string|null $archived_at 归档时间
* @property int|null $archived_userid 归档会员 * @property int|null $archived_userid 归档会员
@ -45,6 +46,7 @@ use Request;
* @method static \Illuminate\Database\Eloquent\Builder|Project whereDialogId($value) * @method static \Illuminate\Database\Eloquent\Builder|Project whereDialogId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Project whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|Project whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project wherePersonal($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Project whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereUserid($value) * @method static \Illuminate\Database\Eloquent\Builder|Project whereUserid($value)
* @method static \Illuminate\Database\Query\Builder|Project withTrashed() * @method static \Illuminate\Database\Query\Builder|Project withTrashed()

View File

@ -61,7 +61,12 @@ class ProjectUser extends AbstractModel
$item->save(); $item->save();
} }
if ($item->project) { if ($item->project) {
$item->project->addLog("移交项目身份", ['userid' => [$originalUserid, ' => ',$newUserid]]); if ($item->project->personal) {
$name = User::userid2nickname($originalUserid) ?: ('ID:' . $originalUserid);
$item->project->name = "{$name}{$item->project->name}";
$item->project->save();
}
$item->project->addLog("移交项目身份", ['userid' => [$originalUserid, ' => ', $newUserid]]);
$item->project->syncDialogUser(); $item->project->syncDialogUser();
} }
} }

View File

@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddProjectsPersonal extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
$isAdd = false;
Schema::table('projects', function (Blueprint $table) use (&$isAdd) {
if (!Schema::hasColumn('projects', 'personal')) {
$isAdd = true;
$table->boolean('personal')->default(0)->after('userid')->nullable()->comment('是否个人项目');
}
});
if ($isAdd) {
// 更新数据
\App\Models\Project::whereName('个人项目')->chunkById(100, function ($lists) {
/** @var \App\Models\Project $item */
foreach ($lists as $item) {
if ($item->desc == '注册时系统自动创建项目,你可以自由删除。') {
$item->personal = 1;
$item->save();
}
}
});
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('projects', function (Blueprint $table) {
$table->dropColumn("personal");
});
}
}

View File

@ -466,8 +466,9 @@ export default {
this.$store.dispatch("call", { this.$store.dispatch("call", {
url: 'project/add', url: 'project/add',
data: { data: {
personal: 1,
name: this.$L('个人项目'), name: this.$L('个人项目'),
desc: this.$L('注册时系统自动创建项目,你可以自由删除。') desc: this.$L('注册时系统自动创建项目,你可以自由删除。'),
}, },
}).then(() => { }).then(() => {
this.goNext2(); this.goNext2();