购物车悬浮
This commit is contained in:
@@ -6,6 +6,7 @@ use App\Exceptions\RepositoryException;
|
||||
use App\Models\CustomerLevelModel;
|
||||
use App\Models\ProductCategoryModel;
|
||||
use App\Models\ProductModel;
|
||||
use App\Services\CartService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\AnnoRoute\Attribute\GetRoute;
|
||||
@@ -25,7 +26,8 @@ class ProductController extends BaseMiniController
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品列表
|
||||
* 商品列表(登录门店附 cart_id/cart_quantity 供列表直接加减购物车;
|
||||
* data.cart 为购物车悬浮球汇总,未登录返回零值结构)
|
||||
*/
|
||||
#[GetRoute('/product/list', authorize: false)]
|
||||
public function products(Request $request): JsonResponse
|
||||
@@ -50,22 +52,30 @@ class ProductController extends BaseMiniController
|
||||
->orderBy('id')
|
||||
->paginate($pageSize);
|
||||
|
||||
// 当前门店的等级(售价 = 成本价 × (100 + 等级上浮比例) / 100)
|
||||
// 当前门店的等级(售价 = 成本价 × (100 + 等级上浮比例) / 100)与购物车行
|
||||
$store = $this->optionalStore($request);
|
||||
$level = ($store !== null && $store->level_id > 0) ? $store->level : null;
|
||||
$cartService = app(CartService::class);
|
||||
$cartRows = $store !== null ? $cartService->cartRowMap($store->id) : [];
|
||||
|
||||
$paginator->getCollection()->transform(
|
||||
static function (ProductModel $product) use ($level): array {
|
||||
static function (ProductModel $product) use ($level, $cartRows): array {
|
||||
$row = $product->toArray();
|
||||
// 实际价(按等级上浮比例换算;成本价不随序列化输出)
|
||||
$row['price'] = $level !== null
|
||||
? CustomerLevelModel::calcLevelPrice($product->cost_price, $level->percent)
|
||||
: null;
|
||||
// 购物车数量(列表直接加减用;不在购物车为 0/'0.00')
|
||||
$row['cart_id'] = $cartRows[$product->id]['id'] ?? 0;
|
||||
$row['cart_quantity'] = $cartRows[$product->id]['quantity'] ?? '0.00';
|
||||
return $row;
|
||||
}
|
||||
);
|
||||
|
||||
return $this->success($paginator->toArray());
|
||||
$data = $paginator->toArray();
|
||||
$data['cart'] = $cartService->summary($store);
|
||||
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -89,8 +99,12 @@ class ProductController extends BaseMiniController
|
||||
$price = CustomerLevelModel::calcLevelPrice($product->cost_price, $level->percent);
|
||||
}
|
||||
|
||||
$cartRows = $store !== null ? app(CartService::class)->cartRowMap($store->id) : [];
|
||||
|
||||
$data = $product->toArray();
|
||||
$data['price'] = $price;
|
||||
$data['cart_id'] = $cartRows[$product->id]['id'] ?? 0;
|
||||
$data['cart_quantity'] = $cartRows[$product->id]['quantity'] ?? '0.00';
|
||||
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user