request; if($request->isAjax){ if($request->isGet){ // 查询参数 $title = $request->get('title',''); $name = $request->get('name',''); $where[] = ['status'=>[0,1]]; (!empty(trim($title))) && $where[] = ['LIKE', 'title', $title]; (!empty(trim($title))) && $where[] = ['LIKE', 'name', $title]; $keyword = $request->get('keyword',''); $addons_group_name = $request->get('addons_group_name',''); (!empty(trim($keyword))) && $where[] = ['or',['LIKE', 'title', $keyword],['LIKE', 'name', $keyword]]; (!empty($addons_group_name)) && $where[] = ['group'=>trim($addons_group_name)]; $limit = $request->get('limit')??$this->pageSize; $select = 'title,name,author,cover,group,status,is_online,version,brief_introduction'; $params = array('select' => $select,'where' => $where, 'order'=>'id desc','limit' => $limit); $page_data = Addons::listPage($params,false); if($page_data === false) return $this->error(Addons::getStaticError()); // 检查插件是否有需要额外设置 foreach ($page_data['list'] as &$item) { $item['is_extra_setting'] = (file_exists(Yii::getAlias('@addons')."/{$item['name']}/backend/views/extra-setting/index.php")) ? 1 : 0; } $page_data['addons_group'] = Yii::$app->params['addonsGroup']; $addons_group_arr = Yii::$app->params['addonsGroup']; sort($addons_group_arr); $page_data['addons_group_arr'] =$addons_group_arr; return $this->success('ok',$page_data); }else{ // 操作插件 $post = $request->post(); $res = self::checkRequireParam($post, ['name', 'type']); if ($res === false) return $this->error(self::getStaticError()); switch($post['type']){ case 'uninstall': $res = Addons::uninstall($post['name']); break; case 'disable': $res = Addons::disable($post['name']); break; case 'reload': $res = Addons::install($post['name']); break; case 'upgrade': $res = Addons::upgrade($post['name']); break; case 'online': case 'offline': $res = Addons::online($post['name']); break; default : return $this->error('不支持的操作类型'); } if($res === false) return $this->error(Addons::getStaticError()); return $this->success('操作成功'); } }else{ return $this->render($this->action->id); } } /** * 应用设计 * @Author bing * @DateTime 2021-08-16 13:21:03 * @copyright: Copyright (c) 2020 广东七件事集团 * @return void */ public function actionCreate() { $request = Yii::$app->request; if (\Yii::$app->request->isAjax) { if ($request->isPost) { $post = $request->post(); $res = self::checkRequireParam($post, ['title', 'name', 'group', 'author', 'version', 'install', 'uninstall', 'upgrade']); if ($res === false) return $this->error(self::getStaticError()); $res = Addons::createAddons($post); if ($res === false) return $this->error(Addons::getStaticError()); return $this->success(); } else { $data['addons_group'] = Yii::$app->params['addonsGroup']; return $this->success('ok',$data); } } return $this->render($this->action->id); } public function actionEdit() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $get = \Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($get, [[['name'], 'string']]); if ($res === false) { return $this->error(self::getStaticError()); } $addons_info = Addons::findOne(['name' => $get['name']])->toArray(); $addons_info['addons_group'] = Yii::$app->params['addonsGroup']; return $this->success('操作成功', $addons_info); } elseif (\Yii::$app->request->isPost) { $post = \Yii::$app->request->post(); // dd($post); $rules = [ [['name', 'title', 'cover', 'group', 'brief_introduction','course_url', 'description'], 'string'], [['cover'], 'url'] ]; $res = Yii::$app->services->validate->validate($post, $rules); if ($res === false) { return $this->error(self::getStaticError()); } $model = Addons::findOne(['name' => $post['name']]); $model->title = $post['title']; $model->cover = $post['cover']; $model->group = $post['group']; $model->course_url = $post['course_url']; $model->brief_introduction = $post['brief_introduction']; $model->description = $post['description']; if ($model->save()) { return $this->success('修改成功'); } else { return $this->error('修改失败'); } } else { return $this->error('请求方式错误'); } } else { return $this->render($this->action->id); } } /** * 本地插件 * @Author bing * @DateTime 2021-08-17 11:18:04 * @copyright: Copyright (c) 2020 广东七件事集团 * @return void */ public function actionLocal() { $request = Yii::$app->request; if($request->isAjax){ if($request->isGet){ // 未安装插件列表 $addons_group = Yii::$app->params['addonsGroup']; $list = Yii::$app->services->addons->getLocalList(); $list = array_values($list); $this->success('ok',compact('list','addons_group')); }else{ // 安装插件 $post = $request->post(); $res = self::checkRequireParam($post, ['name']); if ($res === false) return $this->error(self::getStaticError()); $res = Addons::install($post['name'],true); if ($res === false) return $this->error(Addons::getStaticError()); $this->success('安装成功'); } }else{ return $this->render($this->action->id); } } /** * @Author: ltm 应用付费列表 * @DateTime: 2022/2/26 0026 11:02 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $data * @return string */ public function actionPaySetting() { $request = Yii::$app->request; if($request->isAjax){ if($request->isGet){ // 查询参数 $where[] = ['status'=>[0,1]]; $limit = $request->get('limit')??$this->pageSize; $select = 'title,name,author,cover,group,status,is_online,version,brief_introduction,id,price_setting'; $keyword = $request->get('keyword',''); (!empty(trim($keyword))) && $where[] = ['or',['LIKE', 'title', $keyword],['LIKE', 'name', $keyword]]; $params = array('select' => $select,'where' => $where, 'order'=>'id desc','limit' => $limit); $page_data = Addons::listPage($params,false); if($page_data['list']){ foreach ($page_data['list'] as $k => $v){ $page_data['list'][$k]['setting'] = !empty($v['price_setting']) ? json_decode($v['price_setting']) : ''; } } if($page_data === false) return $this->error(Addons::getStaticError()); return $this->success('ok',$page_data); } }else{ return $this->render($this->action->id); } } /** * @Author: ltm 应用付费 * @DateTime: 2022/2/26 0026 10:58 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $data * @return string */ public function actionPaySettingEdit() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $get = \Yii::$app->request->get(); $addons_info = Addons::findOne(['name' => $get['name']])->toArray(); $addons_info['setting'] = !empty($addons_info['price_setting']) ? json_encode($addons_info['price_setting']) : ''; $addons_info['payment_type'] = json_decode($addons_info['payment_type']); return $this->success('操作成功', $addons_info); } elseif (\Yii::$app->request->isPost) { $post = \Yii::$app->request->post(); $rules = [ [['price_setting', 'name', 'payment_type'], 'safe'], ]; $res = Yii::$app->services->validate->validate($post, $rules); if ($res === false) { return $this->error(self::getStaticError()); } $model = Addons::findOne(['name' => $post['name']]); $model->price_setting = $post['price_setting']; $model->payment_type = json_encode($post['payment_type'],true); if ($model->save()) { return $this->success('修改成功'); } else { return $this->error('修改失败'); } } else { return $this->error('请求方式错误'); } } else { return $this->render($this->action->id); } } /** * 应用付费套餐 * @Author: lun * @DateTime: 2022/3/29 0029 10:34 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionCombo() { $request = Yii::$app->request; if($request->isAjax){ if($request->isPost){ $params = Yii::$app->request->post(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params,[ [['page', 'limit'], 'safe'], [['title'], 'string'], [['datetime'], 'safe'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params = AddonsCombo::exceptNullVal($params); $where = []; isset($params['title']) && $where[] = ['like', 'title', $params['title']]; if (isset($params['datetime'])) { $start_time = strtotime($params['datetime'][0]); $end_time = strtotime($params['datetime'][1]); $where[] = ['between','created_at',$start_time,$end_time]; } $where[] = ['=', 'status', StatusEnum::ENABLED]; $order = 'id desc,created_at desc'; $params = array('where' => $where, 'order'=>$order, 'limit' => $params['limit']); $list = AddonsCombo::listPage($params, false, true); $this->success('获取成功', $list); } }else{ return $this->render($this->action->id); } } /** * 付费套餐编辑 * @Author: lun * @DateTime: 2022/3/29 0029 14:40 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionComboEdit() { $request = Yii::$app->request; if($request->isAjax){ if($request->isPost){ $params = Yii::$app->request->post('detail'); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params,[ [['id'], 'integer'], [['title','description','addons','expire'], 'string'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params = AddonsCombo::exceptNullVal($params); $res = AddonsCombo::setData($params); if ($res == false) return $this->error("保存失败:" . AddonsCombo::getStaticError()); $this->success('保存成功'); } else { $params = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params,[ [['id'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params = AddonsCombo::exceptNullVal($params); $data = []; if (!empty($params['id'])) { $detail = AddonsCombo::find()->where(['id' => $params['id'], 'status' => StatusEnum::ENABLED])->asArray()->one(); if (empty($detail)) return $this->error("获取失败:" . AddonsCombo::getStaticError()); $data['detail'] = $detail; } $cate = Yii::$app->params['addonsGroup'];// 获取应用分类 $field = 'title,name,group'; $list = Addons::getAddons([['is_online' => 1]], [], true, $field);// 获取已上架的应用列表 $addons_list = []; foreach ($list as $value) { $k = $value['group']; $addons_list[$k]['title'] = $cate[$k]['title']; $addons_list[$k]['list'][] = [ 'title' => $value['title'], 'name' => $value['name'], ]; } $data['addons_list'] = $addons_list; $this->success('获取成功', $data); } }else{ return $this->render($this->action->id); } } /** * 套餐操作 * @Author: lun * @DateTime: 2022/3/29 0029 14:28 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionHandleCombo() { $request = Yii::$app->request; if($request->isAjax && $request->isPost){ $params = Yii::$app->request->post(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params,[ [['id','status'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params = AddonsCombo::exceptNullVal($params); $res = AddonsCombo::setData($params); if ($res == false) return $this->error("操作失败:" . AddonsCombo::getStaticError()); $this->success('操作成功'); } } /** * 本地应用批量安装 * @Author: lun * @DateTime: 2023/1/10 0010 14:30 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionBatchLocalInstall() { $request = Yii::$app->request; if($request->isAjax && $request->isPost){ $params = Yii::$app->request->post(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params,[ [['addons_names'], 'required'], [['is_online', 'is_set_price'], 'integer'], [['addons_names', 'payment_type', 'price_setting'], 'safe'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); if (empty($params['addons_names'])) return $this->error('安装的应用不能为空'); // 批量安装 foreach ($params['addons_names'] as $addons_name) { $res = Addons::install($addons_name,true); if ($res === false) return $this->error($addons_name.'安装失败:'.Addons::getStaticError()); $res = Addons::install($addons_name); if ($res === false) return $this->error($addons_name.'配置更新失败:'.Addons::getStaticError()); } // 更改上架状态、价格设置 Addons::installAfterUpdate($params); $this->success('操作成功'); } } /** * 获取应用 * @Author: lun * @DateTime: 2023/2/1 0001 11:53 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionGetMallAddons() { $request = Yii::$app->request; if($request->isAjax && $request->isGet){ $params = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params,[ [['mall_id'], 'required'], [['mall_id'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $data = AddonsCombo::getNoInstallAddons($params['mall_id'], Yii::$app->params['addonsGroup']); $this->success('获取成功', $data); } } /** * 插件额外设置 * @Author: lun * @DateTime: 2023/3/23 0023 11:19 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionExtraSetting() { $retuest = Yii::$app->request; $get = Yii::$app->request->get(); if ($retuest->isAjax) { if (empty($get['addons'])) return $this->error('请求地址请带上应用标识'); $group = 'addonsSetting' . $get['addons'];// 命名格式:addonsSetting . 插件标识 if ($retuest->isPost) { $params = Yii::$app->request->post(); if (isset($params['_csrf'])) unset($params['_csrf']); // 保存配置 $config = Yii::$app->services->setting->platform->set([$group => $params]); $this->success('保存成功', $config); } else { // 获取配置 $config = Yii::$app->services->setting->platform->get($group); $this->success('获取成功', $config); } } return $this->render("@addons/{$get['addons']}/backend/views/extra-setting/index.php"); } }