完善资讯和首页接口

main
liutk 2024-05-19 10:52:53 +08:00
parent c83110984a
commit afc887b4f2
13 changed files with 194 additions and 11 deletions

View File

@ -162,7 +162,7 @@ class ActivityController extends AdminController
amis()->TableColumn('home_logo', __('admin.activity_games.home_logo'))->type('image')->height('30px')->width('30px'),
amis()->TableColumn('away', __('admin.activity_games.away')),
amis()->TableColumn('away_logo', __('admin.activity_games.away_logo'))->type('image')->height('30px')->width('30px'),
amis()->TableColumn('game_at', __('admin.activity_games.game_at')),
amis()->TableColumn('game_at', __('admin.activity_games.game_at'))->type('datetime'),
amis()->TableColumn('mark', __('admin.activity_games.mark')),
amis()->TableColumn('score', __('admin.activity_games.score')),
amisMake()->Operation()->label(__('admin.actions'))->buttons([

View File

@ -35,6 +35,6 @@ class ActivityGameController extends ApiController
return ActivityGameResource::make($game);
}
return $this->success(null);
return $this->success();
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Http\Controllers\Api;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Arr;
use App\Models\Ad;
use App\Models\Keyword;
use App\Http\Resources\Api\AdResource;
class AdController extends ApiController
{
public function index(Request $request)
{
$address = $request->input('address', '');
$ads = Ad::where('address', $address)->show()->sort()->get();
return $this->success(['ads'=>AdResource::collection($ads)->resolve()]);
}
}

View File

@ -0,0 +1,52 @@
<?php
namespace App\Http\Controllers\Api;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Arr;
use App\Models\Article;
use App\Models\Keyword;
use App\Http\Resources\Api\ArticleResource;
use App\Http\Resources\Api\ArticleCategoryResource;
class ArticleController extends ApiController
{
public function recommend(Request $request)
{
$articles = Article::show()->where('is_recommend', 1)->sort()
->simplePaginate($request->query('per_page', 20));
return $this->success(['articles'=>ArticleResource::collection($articles)->resolve()]);
}
public function category(Request $request)
{
$categories = Keyword::allChildrenOfKey('article_category')->orderBy('sort', 'asc')->get();
return $this->success(['categories'=>ArticleCategoryResource::collection($categories)->resolve()]);
}
public function index(Request $request)
{
$categoryId = $request->input('category_key', 0);
$query = Article::query();
if($categoryId > 0){
$query->where('category', $categoryId);
}
$articles = $query->show()->sort()
->simplePaginate($request->query('per_page', 20));
return $this->success(['articles'=>ArticleResource::collection($articles)->resolve()]);
}
public function show(Article $article)
{
return ArticleResource::make($article);
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace App\Http\Resources\Api;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Response;
class AdResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'resource' => $this->resource->resource,
'jump_type' => $this->jump_type,
'jump_config' => $this->jump_config ?? []
];
}
public function with($request)
{
return ['code' => Response::HTTP_OK, 'message' => ''];
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace App\Http\Resources\Api;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Response;
class ArticleCategoryResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'key' => $this->key,
];
}
public function with($request)
{
return ['code' => Response::HTTP_OK, 'message' => ''];
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Resources\Api;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Response;
class ArticleResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'cover' => $this->cover ?? '',
'published_at' => $this->published_at->format('Y-m-d H:i'),
'source' => $this->source ?? '',
'content' => $this->content ?? '',
];
}
public function with($request)
{
return ['code' => Response::HTTP_OK, 'message' => ''];
}
}

View File

@ -72,8 +72,8 @@ class Ad extends Model
];
}
public function scopeShow(){
$q->where('is_enable', true)->where('published_at', '>=', now());
public function scopeShow($q){
$q->where('is_enable', true)->where('published_at', '<=', now());
}
public function scopeSort($q)

View File

@ -21,9 +21,7 @@ class Article extends Model
protected $appends = ['tags'];
protected $casts = [
'created_at' => 'datetime:Y-m-d H:i:s',
'updated_at' => 'datetime:Y-m-d H:i:s',
'published_at' => 'datetime:Y-m-d H:i:s',
'published_at' => 'datetime',
'is_enable' => 'boolean',
'is_recommend' => 'boolean',
'appendixes' => 'array',
@ -43,8 +41,8 @@ class Article extends Model
'source'
];
public function scopeShow(){
$q->where('is_enable', true)->where('published_at', '>=', now());
public function scopeShow($q){
$q->where('is_enable', true)->where('published_at', '<=', now());
}
public function scopeSort($q)

View File

@ -26,7 +26,7 @@ class AdService extends BaseService
$columns = $this->getTableColumns();
$model = $this->getModel();
$isEnable = Arr::get($data, 'is_enabled');
$isEnable = Arr::get($data, 'is_enable');
$publishedAt = Arr::get($data, 'published_at');
if ($isEnable && empty($publishedAt)) {
$data['published_at'] = now();

View File

@ -26,7 +26,7 @@ class ArticleService extends BaseService
$columns = $this->getTableColumns();
$model = $this->getModel();
$isEnable = Arr::get($data, 'is_enabled');
$isEnable = Arr::get($data, 'is_enable');
$publishedAt = Arr::get($data, 'published_at');
if ($isEnable && empty($publishedAt)) {
$data['published_at'] = now();

View File

@ -265,6 +265,19 @@ return [
'selected_rows_no_data' => '请选择要导出的数据',
'please_install_laravel_excel' => '请先安装 laravel-excel 扩展',
],
'components' => [
'parent_select' => '父级',
'order' => '排序',
'decimal' => '金额',
'content' => '内容',
'status' => '状态',
'status_map' => [
'enabled' => '开启',
'disabled' => '关闭'
],
'files' => '文件',
'tag' => "标签"
],
'keywords' => [
'search_name' => '名称/KEY',
'parent_keyword' => '父级关键字',

View File

@ -23,6 +23,13 @@ Route::group(['prefix' => 'miniprogram', 'namespace' => 'Api\Miniprogram'], func
Route::post('refresh-token', [App\Http\Controllers\Api\AuthController::class, 'refreshToken']);
// 首页接口
Route::get('latest-game', [App\Http\Controllers\Api\ActivityGameController::class, 'latestGame']);
Route::get('recommend-articles', [App\Http\Controllers\Api\ArticleController::class, 'recommend']);
Route::get('ads', [App\Http\Controllers\Api\AdController::class, 'index']);
// 资讯接口
Route::get('categories', [App\Http\Controllers\Api\ArticleController::class, 'category']);
Route::get('articles', [App\Http\Controllers\Api\ArticleController::class, 'index']);
Route::get('articles/{article}', [App\Http\Controllers\Api\ArticleController::class, 'show']);
// 已授权绑定手机号
Route::middleware([HasBindPhone::class])->group(function(){