app = $app; $this->request = $this->app->request; // 控制器初始化 $this->initialize(); } // 初始化 protected function initialize() { $this->domain = $this->request->domain() . "/"; } // 添加前缀 protected function addPrefix($value, $domain = "") { if (empty($domain)) { $domain = $this->domain; } if (empty($value)) { return ""; } if (preg_match('/(http:\/\/)|(https:\/\/)/i', $value)) { //判断是否存在 return $value; } else { if (str_starts_with($value, "/")) { $value = substr($value, 1, strlen($value)); } $value = $domain . $value; return $value; } } // 链接查询 protected function getLink($id) { $link = SpJumpLink::field('link as url,sign,column_id')->find($id); return $link; } // 查询模型 protected function getModel($columnId) { if (empty($columnId)) { return ""; } $column = Column::field('column_model')->find($columnId); if ($column) { return $column['column_model']; } return ""; } // 获取当前栏目的id集合 protected function getCurrColumnIds($columnId) { if (empty($columnId)) { return []; } $column = Column::find($columnId); if (!$column) { return []; } $data_limit = $column['data_limit']; $columnIdArr = []; if ($data_limit == 1) { //仅本栏目 array_push($columnIdArr, $columnId); } elseif ($data_limit == 2 || $data_limit == 3) { //本栏目及下级栏目||本栏目及指定子栏目 $columnIdArr = explode(",", $column["limit_column"]); } return $columnIdArr; } // 获取当前栏目 protected function getCurrColumn($columnId) { if (empty($columnId)) { return null; } $column = Column::find($columnId); return $column; } // 查询栏目模型列表 protected function getColumnModelList($columnId, $isLimit = true) { if (empty($columnId)) { return []; } $column = Column::find($columnId); if (!$column) { return []; } $modelList = []; if ($isLimit) { $data_limit = $column['data_limit']; $columnIdArr = []; if ($data_limit == 1) { //仅本栏目 array_push($columnIdArr, $columnId); } elseif ($data_limit == 2 || $data_limit == 3) { //本栏目及下级栏目||本栏目及指定子栏目 $columnIdArr = explode(",", $column["limit_column"]); } $columns = Column::field('id,column_model')->whereIn('id', implode(",", $columnIdArr))->select(); foreach ($columns as $col) { $column_model = $col['column_model']; $isExist = false; foreach ($modelList as $m) { if ($m['column_model'] == $column_model) { $isExist = true; break; } } if (!$isExist) { array_push($modelList, ["column_model" => $column_model]); } } } else { $column_model = $column['column_model']; array_push($modelList, ["column_model" => $column_model]); } return $modelList; } // 查询栏目数据更加文章属性 protected function getColumnDatasByArticleField($columnId, $pageSize, $article_field, $currentPage = 1, $where = []) { $modelList = $this->getColumnModelList($columnId); if (sizeof($modelList) <= 0) { return []; } $tableList = []; foreach ($modelList as $col) { $column_model = $col['column_model']; // $column_model = $model; $modelRecord = ModelRecord::field('reference_model')->where(['nid' => $column_model, 'status' => 1, 'is_delete' => 0])->find(); if ($modelRecord['reference_model'] == 0) { //类似文章 array_push($tableList, config("database.connections.mysql.prefix") . $column_model); } } $tableList = array_unique($tableList); if (sizeof($tableList) <= 0) { return []; } $mmfArr = xn_cfg("list"); $commonFiled = implode(",", $mmfArr); if (sizeof($tableList) > 1) { $sqlArr = []; foreach ($tableList as $key => $table) { if ($key > 0) { array_push($sqlArr, "SELECT {$commonFiled} FROM {$table}"); } } $commonFiledFirst = $commonFiled; $tableName = $tableList[0]['table']; $dataSql = Db::table($tableName)->field($commonFiledFirst)->union($sqlArr)->buildSql(); $sql = "({$dataSql})"; } else { $dataSql = Db::table($tableList[0])->field($commonFiled)->buildSql(); $sql = "({$dataSql})"; } $rpage = Db::table($sql . " as a")->where($where)->whereFindInSet('article_field', $article_field)->paginate(['page' => $currentPage, 'list_rows' => $pageSize])->each(function ($item, $key) { if (!empty($item["breviary_pic_id"])) { $uf = UploadFiles::field("url")->find($item["breviary_pic_id"]); if ($uf) { $item['img_url'] = $this->addPrefix($uf['url']); } } unset($item['breviary_pic_id']); return $item; }); return $rpage; } protected function getColumnDatas($columnId, $pageSize, $currentPage = 1, $where = []) { $modelList = $this->getColumnModelList($columnId); if (sizeof($modelList) <= 0) { return []; } $tableList = []; foreach ($modelList as $col) { $column_model = $col['column_model']; // $column_model = $model; $modelRecord = ModelRecord::field('reference_model')->where(['nid' => $column_model, 'status' => 1, 'is_delete' => 0])->find(); if ($modelRecord['reference_model'] == 0) { //类似文章 array_push($tableList, config("database.connections.mysql.prefix") . $column_model); } } $tableList = array_unique($tableList); if (sizeof($tableList) <= 0) { return []; } $mmfArr = xn_cfg("list"); $commonFiled = implode(",", $mmfArr); if (sizeof($tableList) > 1) { $sqlArr = []; foreach ($tableList as $key => $table) { if ($key > 0) { array_push($sqlArr, "SELECT {$commonFiled} FROM {$table}"); } } $commonFiledFirst = $commonFiled; $tableName = $tableList[0]['table']; $dataSql = Db::table($tableName)->field($commonFiledFirst)->union($sqlArr)->buildSql(); $sql = "({$dataSql})"; } else { $dataSql = Db::table($tableList[0])->field($commonFiled)->buildSql(); $sql = "({$dataSql})"; } $rpage = Db::table($sql . " as a")->where($where)->paginate(['page' => $currentPage, 'list_rows' => $pageSize])->each(function ($item, $key) { if (!empty($item["breviary_pic_id"])) { $uf = UploadFiles::field("url")->find($item["breviary_pic_id"]); if ($uf) { $item['img_url'] = $this->addPrefix($uf['url']); } } unset($item['breviary_pic_id']); return $item; }); return $rpage; } }