id) && empty($floder->pid)) return true; // 2 如果是修改,且文件夹位置变更, 则将后续位置信息减2 if (!empty($floder->id) && !empty($floder->pid)) { if ($floder->fld_type == 1) { $conditionLeft = [['lft', '>', $floder->rgt], ['fld_type', '=', 1], ['create_user', '=', $floder->create_user]]; $conditionRight = [['rgt', '>', $floder->rgt], ['fld_type', '=', 1], ['create_user', '=', $floder->create_user]]; } else { $conditionLeft = [['lft', '>', $floder->rgt], ['fld_type', '=', 2], ['root_id', '=', $floder->root_id]]; $conditionRight = [['rgt', '>', $floder->rgt], ['fld_type', '=', 2], ['root_id', '=', $floder->root_id]]; } VrFloder::where($conditionLeft)->update(['lft' => Db::raw('lft-2')]); VrFloder::where($conditionRight)->update(['rgt' => Db::raw('rgt-2')]); } // 3 如果是在根下添加文件夹 if (empty($floder->id) && empty($floder->pid)) { if ($floder->fld_type == 1) { // 个人 $parent = VrFloder::where(['fld_type' => 1, 'create_user' => $floder->create_user, 'lft' => 1, 'depth' => 0])->find(); } else { // 团队根 $parent = VrFloder::where(['fld_type' => 2, 'root_id' => $floder->root_id, 'lft' => 1, 'depth' => 0])->find(); } if (empty($parent)) { $parentId = VrFloder::insertGetId([ 'fld_name' => '全部', 'createtime' => time(), 'vr_num' => 0, 'fld_type' => $floder->fld_type, 'create_user' => $floder->create_user, 'lft' => 1, 'rgt' => 2, 'depth' => 0, 'root_id' => $floder->root_id ?? null ]); $parent = VrFloder::find($parentId); } } // 4 添加子文件夹 if (empty($floder->id) && !empty($floder->pid)) $parent = VrFloder::find($floder->pid); $conditionLeft = [['lft', '>', $parent->rgt], ['fld_type', '=', $parent->fld_type], ['create_user', '=', $floder->create_user]]; $conditionRight = [['rgt', '>=', $parent->rgt], ['fld_type', '=', $parent->fld_type], ['create_user', '=', $floder->create_user]]; VrFloder::where($conditionLeft)->update(['lft' => Db::raw('lft+2')]); VrFloder::where($conditionRight)->update(['rgt' => Db::raw('rgt+2')]); $floder->lft = $parent->rgt; $floder->rgt = $parent->rgt + 1; $floder->depth = $parent->depth + 1; return true; } public function group() { return $this->hasmany(VrGroup::class, 'floder_id', 'id'); } /** * 处理 */ public function getCreatetimeAttr($value){ if (empty($value)) return $value; return date('Y-m-d H:i:s',(int)$value); } }