mall_id; $addons = Addons::getOne([['name' => $name], ['is_online' => 1]], true, ['mallAddons' => function ($query) use ($mall_id) { $query->where(['mall_id' => $mall_id])->andWhere(['<>', 'status', StatusEnum::DELETE]); }]); if (empty($addons)) { return $this->error('插件不存在'); } // 当前置顶插件 $top_addons = Yii::$app->services->setting->mall->get($this->mall_id, 'top_addons.addons_name'); $top_addons = empty($top_addons) ? [] : Json::decode($top_addons); if (in_array($addons['name'], $top_addons)) { return $this->error('当前插件已置顶'); } // 合并插件 $top_addons = array_merge([$addons['name']], $top_addons); $top_addons = Yii::$app->services->setting->mall->set( $this->mall_id, [ 'top_addons' => [ 'addons_name' => Json::encode($top_addons), ], ] ); $mallAddons = $addons['mallAddons'] ?? []; MallAddons::addonsIntoCache($this->mall_id,$name,$mallAddons); return true; } /** * 取消应用置顶 * * @param string $name * @return boolean */ public function setBottomAddons($name) { $addons = Addons::find()->where(['name' => $name])->one(); if (empty($addons)) { return $this->error('插件不存在'); } // 当前置顶插件 $top_addons = Yii::$app->services->setting->mall->get($this->mall_id, 'top_addons.addons_name'); $top_addons = empty($top_addons) ? [] : Json::decode($top_addons); // 删除取消置顶的插件 $top_addons = array_diff($top_addons, [$name]); Yii::$app->services->setting->mall->set( $this->mall_id, [ 'top_addons' => [ 'addons_name' => Json::encode($top_addons), ], ] ); return true; } /** * 获取顶部插件navs * * @return array */ public function getAddonsNavs() { // 获取所有置顶插件 $top_addons = Yii::$app->services->setting->mall->get($this->mall_id, 'top_addons.addons_name'); $top_addons = empty($top_addons) ? [] : Json::decode($top_addons); if (empty($top_addons)) { return []; } // 获取用户拥有的应用列表 $list = Addons::find() ->where(['name' => $top_addons]) ->select('id, title, name, cover, course_url') ->asArray() ->all(); $cache = Yii::$app->cache; $attachurl = Yii::getAlias('@attachurl'); //获取商城现有的插件 $valid_addons = MallAddons::getValidAddons($this->mall_id); //获取用户所有权限 $authList = Auth::getAuth(); foreach ($list as $k => $v) { if(!in_array($v['name'],$valid_addons)){ unset($list[$k]); continue; } // 获取首页链接 $cache_key = RedisKeyEnum::suffix(RedisKeyEnum::BACKEND_MENU, $v['name'], true); $cacheData = $cache->get($cache_key); $list[$k]['url'] = $cacheData[0]['url'] ?? ''; if(empty($v['cover'])){ $list[$k]['cover'] = $attachurl.'/static/addons/icon/'.$v['name'].'.png'; } //没有权限就删除该插件的显示 if (!Yii::$app->services->auth->isSuperAdmin()) { if(!empty($list[$k]['url']) && !in_array($list[$k]['url'],$authList)){ unset($list[$k]); continue; } } } return array_values($list); } /** * 错误返回 * * @param string $msg * @return false */ private function error($msg = '') { $this->error = $msg; return false; } }