owner_userid) { $oldUser = User::find($this->owner_userid); $newUser = User::find($data['owner_userid']); } $this->updateInstance($data); // if ($this->dialog_id > 0) { $dialog = WebSocketDialog::find($this->dialog_id); if ($dialog) { $dialog->name = $this->name; $dialog->owner_id = $this->owner_userid; $dialog->save(); } } else { $dialog = WebSocketDialog::createGroup($this->name, [$this->owner_userid], 'department', $this->owner_userid); if (empty($dialog)) { throw new ApiException("创建群组失败"); } $this->dialog_id = $dialog->id; } $this->save(); // if ($oldUser) { $oldUser->department = array_diff($oldUser->department, [$this->id]); $oldUser->department = "," . implode(",", $oldUser->department) . ","; $oldUser->save(); } if ($newUser) { $newUser->department = array_diff($newUser->department, [$this->id]); $newUser->department = array_merge($newUser->department, [$this->id]); $newUser->department = "," . implode(",", $newUser->department) . ","; $newUser->save(); } }); } /** * 删除部门 * @return void */ public function deleteDepartment() { // 删除子部门 $list = self::whereParentId($this->id)->get(); foreach ($list as $item) { $item->deleteDepartment(); } // 移出成员 User::where("department", "like", "%,{$this->id},%")->chunk(100, function($items) { /** @var User $user */ foreach ($items as $user) { $user->department = array_diff($user->department, [$this->id]); $user->department = "," . implode(",", $user->department) . ","; $user->save(); } }); // 解散群组 $dialog = WebSocketDialog::find($this->dialog_id); if ($dialog) { $dialog->deleteDialog(); $dialog->pushMsg("groupDelete"); } // $this->delete(); } }