From 00937e915412c2bbc6285be4d99fd5225e396e50 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 7 Aug 2023 17:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=95=86=E5=93=81=E6=95=B0?= =?UTF-8?q?=E6=8D=AE-=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/BasicDataController.php | 16 ++++++++ app/Model/Product.php | 33 +++++++++++++++++ app/Request/BasicDataRequest.php | 3 ++ app/Services/BasicDataService.php | 51 ++++++++++++++++++++++++++ config/routes.php | 5 ++- 5 files changed, 107 insertions(+), 1 deletion(-) diff --git a/app/Controller/BasicDataController.php b/app/Controller/BasicDataController.php index 52bf0ea..c30d142 100644 --- a/app/Controller/BasicDataController.php +++ b/app/Controller/BasicDataController.php @@ -129,6 +129,22 @@ class BasicDataController extends AbstractController return $this->response->json($data); } + /** + * 获取商品数据-分页 + * @return ResponseInterface + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function getProductPage(): ResponseInterface + { + $request = $this->container->get(BasicDataRequest::class); + $request->scene('getProductPage')->validateResolved(); + + $BasicDataService = new BasicDataService(); + $data = $BasicDataService->getProductPage(); + return $this->response->json($data); + } + /** * 搜索平台疾病分类 * @return ResponseInterface diff --git a/app/Model/Product.php b/app/Model/Product.php index 2f4b1b7..7059df5 100644 --- a/app/Model/Product.php +++ b/app/Model/Product.php @@ -159,6 +159,39 @@ class Product extends Model return $data; } + /** + * 获取列表-分页 + * @param array $params 条件 + * @param string $keyword 搜索条件 + * @param array $fields 字段 + * @param int|null $page 页码 + * @param int|null $per_page 每页个数 + * @return array + */ + public static function getWithAmountPage(array $params,string $keyword, array $fields = ["*"], int $page = null, ?int $per_page = 10): array + { + $raw = self::with([ + 'ProductPlatformAmount:amount_id,product_platform_id,stock' + ]) + ->when($keyword, function ($query, $keyword) { + $query->where(function ($query) use ($keyword) { + $query->orwhere("product_name", 'like', '%' . $keyword . '%'); + $query->orwhere("common_name", 'like', '%' . $keyword . '%'); + $query->orwhere("mnemonic_code", 'like', '%' . $keyword . '%'); + }); + }) + ->where($params)->paginate($per_page, $fields, "page", $page); + + $data = array(); + $data['current_page'] = $raw->currentPage();// 当前页码 + $data['total'] = $raw->total();//数据总数 + $data['data'] = $raw->items();//数据 + $data['per_page'] = $raw->perPage();//每页个数 + $data['last_page'] = $raw->lastPage();//最后一页 + + return $data; + } + /** * 新增 * @param array $data diff --git a/app/Request/BasicDataRequest.php b/app/Request/BasicDataRequest.php index 513a55c..9fc11d8 100644 --- a/app/Request/BasicDataRequest.php +++ b/app/Request/BasicDataRequest.php @@ -31,6 +31,9 @@ class BasicDataRequest extends FormRequest 'getDetectionDiseaseList' => [ // 获取检测疾病分类列表 'detection_project_id', ], + 'getProductPage' => [ // 获取商品数据-分页 + 'keyword', + ], ]; /** diff --git a/app/Services/BasicDataService.php b/app/Services/BasicDataService.php index 74bd041..06c4ce0 100644 --- a/app/Services/BasicDataService.php +++ b/app/Services/BasicDataService.php @@ -415,4 +415,55 @@ class BasicDataService extends BaseService return success($disease_class_detections->toArray()); } + + /** + * 获取商品数据-分页 + * @return array + */ + public function getProductPage(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + + $keyword = $this->request->input('keyword',""); + + $page = $this->request->input('page', 1); + $per_page = $this->request->input('per_page', 10); + + $fields = [ + 'product_id', + 'product_platform_id', + 'product_name', + 'product_price', + 'product_cover_img', + 'product_spec', + 'manufacturer', + 'single_unit', + 'single_use', + 'packaging_unit', + 'frequency_use', + 'available_days', + ]; + + $params = array(); + + + $product = Product::getWithAmountPage($params, $keyword,$fields, $page, $per_page); + if (empty($product['data'])) { + return success($product); + } + + foreach ($product['data'] as &$item) { + $item['product_cover_img'] = addAliyunOssWebsite($item['product_cover_img']); + + $item['product_name'] = $item['product_name'] . ' ' . $item['product_spec']; + $item['stock'] = 0; + if (!empty($item['ProductPlatformAmount'])){ + $item['stock'] = $item['ProductPlatformAmount']['stock']; + } + + unset($item['ProductPlatformAmount']); + } + + return success($product); + } } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 0ebea34..5988a4c 100644 --- a/config/routes.php +++ b/config/routes.php @@ -585,10 +585,13 @@ Router::addGroup('/basic', function () { Router::get('/search', [BasicDataController::class, 'getDiseaseIcdSearch']); }); - // 搜索商品 + // 商品 Router::addGroup('/product', function () { // 搜索商品 Router::get('/search', [BasicDataController::class, 'getProductSearch']); + + // 获取商品数据-分页 + Router::get('', [BasicDataController::class, 'getProductPage']); }); // 获取民族数据