CodeEnum::CODE_ERROR, 'errmsg' => '页面未找到']; } $page = Page::findOne(['slug' => $slug]); if (empty($page)) { return ['errcode' => CodeEnum::CODE_ERROR, 'errmsg' => '页面未找到']; } return ['data' => $page]; } /** * @return array * @api {get} /v1/common/configs 平台配置 * @apiGroup 通用接口 * @apiVersion 1.0.0 * * @apiSuccess {Number} errcode 状态码,0:请求成功 * @apiSuccess {String} errmsg 提示信息 * @apiSuccess {Object} data 配置信息 * * @apiError {Number} errcode 状态码,500:请求失败 * @apiError {String} errmsg 提示信息 * * @apiSuccessExample {json} 成功响应: * {"errcode":0,"errmsg":"ok","data":{}} * * @apiErrorExample {json} 失败响应: * {"errcode":500,"errmsg":"请求失败"} * * @author nodelog */ public function actionConfig() { $config = ArrayHelper::map(Config::find()->where(['group' => ['site', 'mobile', 'pc']])->select(['name', 'value'])->all(), 'name', 'value'); //自动判断数组 $config['hot_search'] = Yii::$app->config->get('hot_search'); return ['data' => $config]; } /** * @return array * @throws \yii\db\Exception * @api {post} /v1/common/upload 上传文件 * @apiGroup 通用接口 * @apiVersion 1.0.0 * * @apiHeader {String} Content-Type 内容类型. * @apiHeader {String} accept 传输方式. * @apiHeaderExample {json} Header-Example: * { * "Content-Type": "multipart/form-data", * 'accept': 'application/json', * } * * @apiParam {String} file 上传文件表单名 * * @apiSuccess {Number} errcode 状态码,0:请求成功 * @apiSuccess {String} errmsg 提示信息 * @apiSuccess {Object} data 服务器上文件信息 * * @apiError {Number} errcode 状态码,500:请求失败 * @apiError {String} errmsg 提示信息 * * @apiSuccessExample {json} 成功响应: * {"errcode":0,"errmsg":"ok","data":{}} * * @apiErrorExample {json} 失败响应: * {"errcode":500,"errmsg":"请求失败"} * * @author nodelog */ public function actionUpload() { $transaction = Yii::$app->db->beginTransaction(); try { $files = UploadedFile::getInstancesByName('file'); $attachment = Attachment::uploadFromPost(date('Ymd'), $files[0]); $transaction->commit(); return ['data' => $attachment]; } catch (\Exception $e) { $transaction->rollback(); return ['errcode' => CodeEnum::CODE_ERROR, 'errmsg' => $e->getMessage()]; } } /** * 平台版本号 * @return array|mixed * @author nodelog */ public function actionVersion() { return ['data' => Yii::$app->config->get('version')]; } /** * @return array * @throws \yii\web\ServerErrorHttpException * @author nodelog */ public function actionTest() { $list = \common\models\Category::find()->where([])->select('title')->column(); Yii::$app->response->format = Response::FORMAT_JSON; return ['data' => $list]; //分类 /* @var $cateList \common\models\Category[] */ $cateList = Category::find()->where(['like', 'title', '表%', false])->orderBy(['id' => SORT_ASC])->all(); /* 读取excel */ $fileName = \Yii::getAlias('@storagePath/upload/data.xlsx');//path $inputFileType = IOFactory::identify($fileName); $reader = IOFactory::createReader($inputFileType); $spreadsheet = $reader->load($fileName); $reader->setReadDataOnly(true); // 设置后无法获取excel中的图片 $worksheetList = $spreadsheet->getAllSheets(); $excelData = []; foreach ($worksheetList as $index => $worksheet) { $highestRow = $worksheet->getHighestRow(); // 取得总行数 $highestColumn = $worksheet->getHighestColumn(); // 取得总列数 $highestColumnIndex = Coordinate::columnIndexFromString($highestColumn); // 取得总列数 $category = $cateList[$index]; for ($row = 1; $row <= $highestRow; $row++) { //一行一条数据 $data = []; for ($col = 1; $col <= $highestColumnIndex; $col++) { $val = (string)$worksheet->getCellByColumnAndRow($col, $row)->getValue(); //第一行初始化 if ($row == 1 && $col == 1) { $attr = []; } if ($row == 1) { $attr[$col] = $this->getAttrByTitle($val); } else { if (!$data[$attr[$col]]) { $data[$attr[$col]] = $val; } else { $data[$attr[$col]] = $data[$attr[$col]] . $val; } } } //一行完整数据取完 if ($row != 1) { if ($data['sort'] != "") { $excelData[] = [ 'sort' => $data['sort'], 'title' => $data['title'], 'company' => $data['company'] ? $data['company'] : '', 'position' => $data['position'] ? $data['position'] : '', 'chain' => $data['chain'] ? $data['chain'] : '', 'principal' => $data['principal'] ? $data['principal'] : '', 'intro' => $data['intro'] ? $data['intro'] : '', 'description' => $this->generateDesc($data['intro']), 'city' => $data['city'] ? $data['city'] : '', 'address' => $data['address'] ? $data['address'] : '', 'tel' => $data['tel'] ? $data['tel'] : '', 'category_id' => $category->id, 'category' => $category->title, 'module' => $category->module, ]; } else { //合并数据 foreach ($data as $key => $value) { $excelData[count($excelData) - 1][$key] .= $value; } } } } } Yii::$app->db->createCommand()->batchInsert(Article::tableName(), ['sort', 'title', 'company', 'position', 'chain', 'principal', 'intro', 'description', 'city', 'address', 'tel', 'category_id', 'category', 'module'], $excelData)->execute(); return ['data' => ['count' => count($excelData), 'list' => $excelData]]; } private function getAttrByTitle($title) { switch ($title) { //基本信息 case '序号': return 'sort'; case '姓名': case '名称': case '基地名称': case '产业集群': case '企业名称': case '商会名称': return 'title'; case '城市': case '区域': case '国内城市分布': case '常住地': return 'city'; case '地址': return 'address'; case '联系方式': case '商会电话': return 'tel'; //扩展信息 case '公司': case '企业': case '单位': case '单位名称': return 'company'; case '职务': return 'position'; case '专长方向': case '研究领域': case '研究方向': case '简介': case '基地特色': case '科室/研究方向': case '专长方向/荣誉': case '投资产业领域': case '主要产品': case '个人简介': return 'intro'; case '产业领域': case '产业类别': case '产业链': case '细分方向': case '细分领域': case '重点投资行业/研究领域': return 'chain'; case '负责人': case '秘书长': case '法人': return 'principal'; } } // 摘要生成方式 private function generateDesc($intro) { if (empty($intro)) { return ''; } return StringHelper::truncate(preg_replace('/\s+/', ' ', strip_tags($intro)), 150); } }