51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Mini;
|
|
|
|
use App\Models\HomeBannerModel;
|
|
use App\Models\HomeNavModel;
|
|
use App\Models\HomePromoModel;
|
|
use App\Services\CartService;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Modules\AnnoRoute\Attribute\GetRoute;
|
|
use Modules\AnnoRoute\Attribute\RequestAttribute;
|
|
|
|
/**
|
|
* 小程序首页配置(轮播图 + 宫格导航 + 促销推荐卡片,仅返回启用项)
|
|
* 登录门店附加 cart 购物车悬浮球汇总(未登录返回零值结构)
|
|
*/
|
|
#[RequestAttribute('/mini', 'mini', authGuard: 'users')]
|
|
class HomeController extends BaseMiniController
|
|
{
|
|
/** 首页配置聚合:banners / navs / promos,按 sort 升序 */
|
|
#[GetRoute('/home', authorize: false)]
|
|
public function index(Request $request): JsonResponse
|
|
{
|
|
$banners = HomeBannerModel::query()
|
|
->where('status', HomeBannerModel::STATUS_NORMAL)
|
|
->orderBy('sort')
|
|
->orderBy('id')
|
|
->get(['id', 'title', 'image_id', 'link', 'sort']);
|
|
|
|
$navs = HomeNavModel::query()
|
|
->where('status', HomeNavModel::STATUS_NORMAL)
|
|
->orderBy('sort')
|
|
->orderBy('id')
|
|
->get(['id', 'name', 'image_id', 'link', 'sort']);
|
|
|
|
$promos = HomePromoModel::query()
|
|
->where('status', HomePromoModel::STATUS_NORMAL)
|
|
->orderBy('sort')
|
|
->orderBy('id')
|
|
->get(['id', 'title', 'sub_title', 'image_id', 'link', 'sort']);
|
|
|
|
return $this->success([
|
|
'banners' => $banners,
|
|
'navs' => $navs,
|
|
'promos' => $promos,
|
|
'cart' => app(CartService::class)->summary($this->optionalStore($request)),
|
|
]);
|
|
}
|
|
}
|