EMPTY_OWNER_TYPE]; } if ($ownerId < 1) { return ["code" => EMPTY_OWNER_ID]; } // 删除所有ownerType 和 ownerId $this->where("owner_type", $ownerType)->where("owner_id", $ownerId)->where("is_del", false) ->update(["is_del" => true]); // 重新添加ownerType 和 ownerId的数据 if (count($barIds) < 1) { return ["code" => SUCCESS, "data" => []]; } $data = []; foreach ($barIds as $barId) { array_push($data, array("owner_type" => $ownerType, "owner_id" => $ownerId, "bar_id" => $barId, "is_del" => false)); } $this->insert($data); // 查出批量插入的数据,并返回给前端 $new_data = $this->select("id", "owner_type", "owner_id", "bar_id", "status") ->where("owner_type", $ownerType)->where("owner_id", $ownerId)->where("is_del", false)->get(); return ["code" => SUCCESS, "data" => $new_data]; } /** * 根据多个类型,和多个id,加载菜单栏信息 * * @param array $ownerTypes * @param array $ownerIds * @return array */ public function ListActionBarIds(array $ownerTypes, array $ownerIds) { $opera = $this->select("owner_type", "owner_id", "bar_id"); if (count($ownerTypes) > 0) { $opera = $opera->whereIn("owner_type", $ownerTypes); } if (count($ownerIds) > 0) { $opera = $opera->whereIn("owner_id", $ownerIds); } $userBars = $opera->where("is_del", false)->get(); if (count($userBars) == 0) { return []; } return $userBars; } /** * 列出actionBars,并且根据parent组合成分层次的数据结构 * * @param array $ownerTypes * @param array $ownerIds * @return array */ public function ListActionBarIds_Format(array $ownerTypes, array $ownerIds) { // 先收集所有的actionBars,并且根据角色分类 $userBars = $this->ListActionBarIds($ownerTypes, $ownerIds); if (count($userBars) < 1) { return ["userBars" => (object)[]]; } // 收集所有的bar id $barIds = []; foreach ($userBars as $bar) { array_push($barIds, $bar["bar_id"]); } // 加载actionBar 的信息 $bar = new ActionBar(); $barInfo = $bar->ListActionBar_KV([], true, ["id", "parent", "name", "description", "icon", "link_type", "link"]); // 根据角色分类收集各自的action bar $roleActionBars = []; foreach ($userBars as $userBar) { $key = strval($userBar["owner_id"]); $barId = $userBar["bar_id"]; if (!key_exists($key, $roleActionBars)) { $roleActionBars[$key] = []; } $actionBars = $roleActionBars[$key]; if (key_exists($barId, $barInfo)) { array_push($actionBars, $barInfo[$barId]); } $roleActionBars[$key] = $actionBars; } // 处理每个角色有用的actionBar,并分层 $result = []; foreach ($roleActionBars as $key => $value) { $assembleValue = $bar->AssembleBars($value); $result[$key] = (object)$assembleValue; } return $result; } }