test_lgq/niucloud/core/base/BaseService.php

135 lines
3.7 KiB
PHP
Raw Normal View History

2024-01-24 17:36:08 +08:00
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud-admin.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace core\base;
use app\validate\sys\Page;
use think\db\exception\DbException;
use think\Model;
/**
* 基础服务层
* Class BaseService
* @package app\service
*/
abstract class BaseService
{
/**
* Model 实例
* @var BaseModel
*/
protected $model;
protected $request;
public function __construct()
{
$this->request = request();
}
/**
* 分页列表参数(页码和每页多少条)
* @return mixed
*/
public function getPageParam()
{
$page = request()->params([
['page', 1],
['limit', 15]
]);
validate(Page::class)
->check($page);
return $page;
}
/**
* 分页列表
* @param Model $model
* @param array $where
* @param string $field
* @param string $order
* @param array $append
* @return array
* @throws DbException
*/
public function getPageList(Model $model, array $where, string $field = '*', string $order = '', array $append = [], $with = null, $each = null)
{
$page_params = $this->getPageParam();
$page = $page_params['page'];
$limit = $page_params['limit'];
$list = $model->where($where)->when($append, function ($query) use ($append) {
$query->append($append);
})->when($with, function ($query) use ($with) {
$query->with($with);
})->field($field)->order($order)->paginate([
'list_rows' => $limit,
'page' => $page,
]);
if (!empty($each)) {
$list = $list->each($each);
}
return $list->toArray();
}
/**
* 分页数据查询传入model查询后结果
* @param $model BaseModel
* @return array
* @throws DbException
*/
public function pageQuery($model, $each = null)
{
$page_params = $this->getPageParam();
$page = $page_params['page'];
$limit = $page_params['limit'];
$list = $model->paginate([
'list_rows' => $limit,
'page' => $page,
]);
if (!empty($each)) {
$list = $list->each($each);
}
return $list->toArray();
}
/**
* 分页视图列表查询
* @param Model $model
* @param array $where
* @param string $field
* @param string $order
* @param array $append
* @return array
* @throws DbException
*/
public function getPageViewList(Model $model, array $where, string $field = '*', string $order = '', array $append = [], $with = null, $each = null)
{
$page_params = $this->getPageParam();
$page = $page_params['page'];
$limit = $page_params['limit'];
$list = $model->where($where)->when($append, function ($query) use ($append) {
$query->append($append);
})->when($with, function ($query) use ($with) {
$query->withJoin($with);
})->field($field)->order($order)->paginate([
'list_rows' => $limit,
'page' => $page,
]);
if (!empty($each)) {
$list = $list->each($each);
}
return $list->toArray();
}
}