limit($limit) ->select() ->toArray(); } //获取栏目下最新记录 public static function getLatestByCategory($categoryId, $limit = 5) { if (empty($categoryId)) { return []; } if ($limit <= 0) { $limit = 5; } return self::where('category_id', $categoryId) ->order('create_time', 'desc') ->limit($limit) ->select() ->toArray(); } //根据文章ID和栏目ID获取下一篇文章 public static function getNextArticleByIdAndCategoryId($id, $categoryId) { return self::where('id', '<', $id) ->where('category_id', $categoryId) ->where('status', 1) ->order('sort desc') ->findOrEmpty() ->toArray(); } //根据文章ID和栏目ID获取上一篇文章 public static function getPrevArticleByIdAndCategoryId($id, $categoryId) { return self::where('id', '>', $id) ->where('category_id', $categoryId) ->where('status', 1) ->order('sort asc') ->findOrEmpty() ->toArray(); } //根据栏目ID获取文章列表 public static function getListByCategory($categoryId, $limit = 10) { return self::where('category_id', $categoryId) ->where('status', 1) ->order("sort desc") ->limit($limit) ->select() ->toArray(); } //根据栏目ID获取文章列表 public static function getListByCategoryTop($categoryId, $limit = 10) { $where = [ ["category_id", "=", $categoryId], ["status", "=", 1], ["top", "=", 1], ]; return self::where($where) ->order("sort desc") ->limit($limit) ->select() ->toArray(); } public static function getNewsAllList($pageSize) { $where = [ ["category_id", "in", self::newsChildrenIds] ]; return self::where($where) ->order("sort desc") ->paginate($pageSize, false); } //根据栏目ID获取文章分页列表 public static function getListPageByCategory($categoryId, $per = 20, $keyword = '') { $where = [ ['category_id', '=', $categoryId], ['status', '=', 1], ]; $param['category_id'] = $categoryId; if ($keyword != '') { $where[] = ['title', 'like', '%' . $keyword . '%']; $param['keyword'] = $keyword; } $paginate = [ 'list_rows' => $per, 'query' => $param ]; return self::where($where) ->order("sort desc") ->paginate($paginate, false); } //根据栏目ID获取文章分页列表 public static function getListCount($categoryId) { $where = [ ['category_id', '=', $categoryId], ['status', '=', 1], ]; $param['category_id'] = $categoryId; return self::where($where) ->order("sort desc") ->count(); } public static function onAfterInsert($article) { $article->sort = $article->id; $article->create_time = $article->update_time = time(); $auth = session('auth'); $article->created = $article->updated = $auth['userName']; $article->save(); } /** * 获取文章列表 * @param $categoryId 分类ID * @param int $per 每页数量 * @param string $keyword 关键词 * @param array $param 文章类型:置顶、热门、推荐 ['top','hot','recommend'] * @param int $status 文章状态,-1表示不限制 * @return \think\Paginator * @throws \think\db\exception\DbException */ public static function getList($categoryId, $per = 20, $keyword = '', $param = [], $recommend_flag = '') { $whereMap = []; $pageParam = []; if (is_numeric($categoryId) && $categoryId > 0) { $whereMap[] = ['category_id', '=', $categoryId]; $pageParam['category_id'] = $categoryId; } if (!empty($keyword)) { $whereMap[] = ['title', 'like', '%' . $keyword . '%']; $pageParam['keyword'] = $keyword; } if (!empty($recommend_flag)) { $whereMap[] = ['recommend_flag', '=', $recommend_flag]; $pageParam['recommend_flag'] = $recommend_flag; } if (is_array($param) && count($param) > 0) { $pageParam['param'] = $param; foreach ($param as $vo) { if (in_array($vo, ['top', 'hot', 'recommend'], true)) { $whereMap[] = ["{$vo}", '=', 1]; } } } $paginate = [ 'list_rows' => $per, 'query' => $pageParam ]; return self::when(count($whereMap) > 0, function ($query) use ($whereMap) { $query->where($whereMap); }) ->order("sort desc") ->paginate($paginate, false); } //获取文章涉及到的图片 public static function getFilesInUse() { $items = self::select()->toArray(); $data = []; foreach ($items as $item) { $src = trim($item['src']); if (!empty($src)) { $key = getKeyByPath($src); $data[$key] = $src; } $imgs = getImageUrlFromText($item['content']); if (!empty($imgs)) { $data = array_merge($data, $imgs); } $videos = getVideoUrlFromText($item['content']); if (!empty($videos)) { $data = array_merge($data, $videos); } } return $data; } //获取文章 public static function getFinancingArticle($category_id = 0, $recommend_flag = '', $limit = 2) { $where = [ ["category_id", "=", $category_id], ["hot", "=", 1], ["status", "=", "1"], ]; if (!empty($recommend_flag)) { $where[] = ["recommend_flag", "=", $recommend_flag]; } return self::where($where)->limit($limit)->order("sort desc")->select()->toArray(); } public static function getTopArticle($categoryId, $limit = 1) { $where = [ ["top", "=", 1], ["status", "=", "1"], ]; if (is_array($categoryId)) { $where[] = ["category_id", "in", $categoryId]; } else { $where[] = ["category_id", "=", $categoryId]; } return self::where($where)->limit($limit)->order("sort desc")->select()->toArray(); } public function setImgsAttr($value) { return json_encode($value); } // ----------页面函数 }