获取商品数据-分页

This commit is contained in:
wucongxing 2023-08-07 17:32:04 +08:00
parent 397db7dfa1
commit 00937e9154
5 changed files with 107 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -31,6 +31,9 @@ class BasicDataRequest extends FormRequest
'getDetectionDiseaseList' => [ // 获取检测疾病分类列表
'detection_project_id',
],
'getProductPage' => [ // 获取商品数据-分页
'keyword',
],
];
/**

View File

@ -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);
}
}

View File

@ -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']);
});
// 获取民族数据