You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
7.5 KiB
196 lines
7.5 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Article;
|
|
use App\Models\ArticleCategory;
|
|
use Illuminate\Http\Request;
|
|
|
|
class ArticleController extends ApiController
|
|
{
|
|
|
|
//文章列表
|
|
public function article_list(Request $request)
|
|
{
|
|
if ($res = $this->verifyField($request->all(), [
|
|
'type' => 'required|string',
|
|
])) return $res;
|
|
|
|
$category_id = ArticleCategory::$typeMap[$request->type];
|
|
if (blank($category_id)) return $this->error(4001, '参数错误');
|
|
|
|
$articles = Article::query()->where(['category_id' => $category_id])->where('status', 1)->orderBy('order', 'desc')->orderByDesc('created_at')->paginate();
|
|
$data = $articles->makeHidden('translations');
|
|
$articles->data = $data;
|
|
|
|
return $this->successWithData($articles);
|
|
}
|
|
|
|
//文章详情
|
|
public function article_detail(Request $request)
|
|
{
|
|
if ($res = $this->verifyField($request->all(), [
|
|
'id' => 'required|integer',
|
|
])) return $res;
|
|
|
|
$article = Article::query()->findOrFail($request->id);
|
|
$article = $article->makeHidden('translations');
|
|
|
|
$article->increment('view_count');
|
|
|
|
return $this->successWithData($article);
|
|
}
|
|
|
|
//服务详情
|
|
public function service_detail(Request $request)
|
|
{
|
|
if ($res = $this->verifyField($request->all(), [
|
|
'id' => 'required|integer',
|
|
])) return $res;
|
|
|
|
$article = Article::query()->where("category_id", $request->id)->first();
|
|
$article = $article->makeHidden('translations');
|
|
|
|
$article->increment('view_count');
|
|
|
|
return $this->successWithData($article);
|
|
}
|
|
|
|
private static function set_cate($cate)
|
|
{
|
|
|
|
$tit = [
|
|
'新手教程' => "The guidebook for beginners",
|
|
'交易策略' => "Trading strategy",
|
|
'行业研究' => "Industry research",
|
|
'市场动态' => "Market dynamics"
|
|
];
|
|
|
|
$content = [
|
|
'如何购买比特币' => "How to buy bitcoin?",
|
|
'什么是区块链?' => "What is Blockchain?",
|
|
'什么是比特币?' => "What is Bitcoin?",
|
|
'什么是KYC验证?如何完成KYC验证?' => "What is KYC validation? How do I complete KYC validation?",
|
|
'零基础学习币市分析| 4 看跌K线组合' => "Zero based learning currency market analysis | 4 put K line combination",
|
|
'零基础学币市分析|1 从价格到K线' => "Zero based learning currency market analysis | 1 K line from the price",
|
|
'零基础学币市分析|3 看涨K线组合' => 'Zero based learning currency market analysis | 3 bullish K line combination',
|
|
'零基础学习币市分析| 2 单根K线的演变及寓意' => 'Zero based learning c, analysis the evolution of the single root | 2 K line and implication',
|
|
'比特币BTC减半套利策略:交易“减半”' => 'Bitcoin BTC Halve Arbitrage Strategy: Trading Halved',
|
|
'区块链如何改变商业价值?唯有颠覆!' => 'How does blockchain change business value? Only subversion!',
|
|
'莱特币(LTC)现状调查研究' => 'Investigation on the status quo of Litecoin (LTC)',
|
|
'简单易实操的币市绝对收益策略——中低频网格套利' => 'Simple and easy to operate absolute return strategy of currency market -- medium and low frequency grid arbitrage',
|
|
'比特币看起来超买,但分析师淡化了对下跌的恐惧' => 'Bitcoin looks overbought, but analysts play down fears of a fall',
|
|
'预期进一步的比特币收益将使期货合约清算蒙上阴影' => 'Further bitcoin gains are expected to cast a shadow over futures contract clearing',
|
|
'市场裹足:比特币的价格和以太的主导地位坐在2020年的高点' => 'Market Wrap: Bitcoins price and Ethereums dominance sit at 2020 highs',
|
|
'黄金达到历史新高,因为比特币突破$ 11k' => 'Gold hits an all-time high as Bitcoin breaks through $11k ',
|
|
];
|
|
|
|
foreach ($cate as &$item) {
|
|
|
|
if (array_key_exists($item['name'], $tit)) {
|
|
|
|
$item['name'] = $tit[$item['name']];
|
|
}
|
|
|
|
// var_dump($item['article'])
|
|
// for ($i = 0; $i < count($cate['article']); $i++) {
|
|
// // code...
|
|
// }
|
|
|
|
foreach ($item['article'] as &$bar) {
|
|
|
|
if (array_key_exists($bar['title'], $content)) {
|
|
|
|
$bar['title'] = $content[$bar['title']];
|
|
}
|
|
}
|
|
}
|
|
|
|
return $cate;
|
|
}
|
|
|
|
#获取当前分类下所有文章
|
|
public function kindDown()
|
|
{
|
|
|
|
/* $all = ArticleCategory::query()->get();
|
|
$all = $all->makeHidden("translations")->toArray();
|
|
$mark = "";
|
|
foreach ($all as $items ){
|
|
if( $items["name"] == "学院" || $items["name"] == "College" || $items["name"] == "學院"){
|
|
$mark = $items["id"];
|
|
}
|
|
}*/
|
|
|
|
$category = ArticleCategory::query()->where("id", 5)->value("id");
|
|
|
|
if (!$category) return $this->successWithData($category);
|
|
$categorys = ArticleCategory::query()->where("pid", $category)->get();
|
|
$categorys = $categorys->makeHidden("translations")->toArray();
|
|
|
|
$k = 0;
|
|
$arr = array();
|
|
foreach ($categorys as $key => $val) {
|
|
|
|
if ($val["id"] == "23" || $val["id"] == "24" || $val["id"] == "25" || $val["id"] == "26") {
|
|
|
|
$articles = Article::query()->where("category_id", $val["id"])->first();
|
|
if(!$articles){
|
|
continue;
|
|
}
|
|
$articles = $articles->makeHidden("translations")->toArray();
|
|
$arr[$k]["id"] = $articles["id"];
|
|
$arr[$k]["name"] = $articles["title"];
|
|
$arr[$k]["poster"] = $articles["cover"];
|
|
$arr[$k]["url"] = $articles["excerpt"];
|
|
$k++;
|
|
} else {
|
|
$cate[$key]["id"] = $val["id"];
|
|
$cate[$key]["name"] = $val["name"];
|
|
$article = Article::query()->where("category_id", $val["id"])->orderByDesc("order")->limit(4)->get();
|
|
$cate[$key]["article"] = $article->makeHidden('translations')->toArray();
|
|
}
|
|
}
|
|
$array["bannerList"] = $arr;
|
|
$array["categoryList"] = self::set_cate($cate);
|
|
|
|
return $this->successWithData($array);
|
|
}
|
|
|
|
#文章列表
|
|
public function articleList(Request $request)
|
|
{
|
|
|
|
if ($res = $this->verifyField($request->all(), [
|
|
'id' => 'required|string',
|
|
])) return $res;
|
|
|
|
// $categorys = ArticleCategory::query()->where("pid",$request->id)->get();
|
|
$article = Article::query()->where("category_id", $request->id)->orderByDesc("created_at")->get();
|
|
if (!$article) return $this->successWithData("", "fail");
|
|
|
|
$categorys = $article->makeHidden("translations")->toArray();
|
|
|
|
return $this->successWithData($categorys);
|
|
}
|
|
|
|
|
|
#推荐文章
|
|
public function recommend()
|
|
{
|
|
|
|
$article = Article::query()->where("is_recommend", 1)->orderByDesc("created_at")->limit(4)->get();
|
|
|
|
$article = $article->makeHidden("translations");
|
|
return $this->successWithData($article);
|
|
}
|
|
|
|
|
|
public function notice()
|
|
{
|
|
$notice = Article::query()->where("category_id", 4)->get();
|
|
$notice = Article::query()->makeHidden("translations");
|
|
return $this->successWithData($notice);
|
|
}
|
|
}
|
|
|