145 lines
3.9 KiB
PHP
145 lines
3.9 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace app\model;
|
||
|
|
||
|
use app\exception\BusinessException;
|
||
|
use app\util\SessionUtil;
|
||
|
use think\facade\Request;
|
||
|
use think\Model;
|
||
|
use think\model\concern\SoftDelete;
|
||
|
|
||
|
class BaseModel extends Model
|
||
|
{
|
||
|
const STATE_ENABLED = 1; //业务状态 -正常
|
||
|
const STATE_DISABLED = 2;//业务状态 -禁用
|
||
|
|
||
|
const STATE_DESC = [
|
||
|
self::STATE_ENABLED => '启用',
|
||
|
self::STATE_DISABLED => '禁用',
|
||
|
];
|
||
|
|
||
|
public static function findById($id): object
|
||
|
{
|
||
|
return self::findOrEmpty($id);
|
||
|
}
|
||
|
|
||
|
public static function getInfoAndCheck(array $where)
|
||
|
{
|
||
|
$info = self::getInfoByWhere($where);
|
||
|
if (empty($info)) {
|
||
|
throw new BusinessException("无权限操作此数据.");
|
||
|
}
|
||
|
return $info;
|
||
|
}
|
||
|
|
||
|
public static function onAfterRead(Model $model): void
|
||
|
{
|
||
|
$model->hidden(['delete_time']);
|
||
|
if (!empty($model->status)) {
|
||
|
$model->statusDesc = self::STATE_DESC[$model->status];
|
||
|
}
|
||
|
if (!empty($model->state)) {
|
||
|
$model->statusDesc = self::STATE_DESC[$model->state];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static function getListPage($where, $page, $order = ''): array
|
||
|
{
|
||
|
$model = self::where($where);
|
||
|
if ($order) {
|
||
|
$model->order($order);
|
||
|
}
|
||
|
return $model->paginate($page)->toArray();
|
||
|
}
|
||
|
|
||
|
public static function insertOne($data)
|
||
|
{
|
||
|
$data['create_time'] = date("Y-m-d H:i:s");
|
||
|
$data['update_time'] = date("Y-m-d H:i:s");
|
||
|
return self::create($data)->getKey();
|
||
|
}
|
||
|
|
||
|
public static function updateOne($where, $data)
|
||
|
{
|
||
|
$data['update_time'] = date("Y-m-d H:i:s");
|
||
|
self::update($data, $where);
|
||
|
}
|
||
|
|
||
|
public static function getOne($id): array
|
||
|
{
|
||
|
return self::findOrEmpty($id)->toArray();
|
||
|
}
|
||
|
|
||
|
public static function getInfoByWhere($where, $order = '', $field = '*'): array
|
||
|
{
|
||
|
$model = self::where($where);
|
||
|
if ($order) {
|
||
|
$model->order($order);
|
||
|
}
|
||
|
return $model->field($field)->findOrEmpty()->toArray();
|
||
|
}
|
||
|
|
||
|
public static function getList($where, $field = '*', $order = ''): array
|
||
|
{
|
||
|
$model = self::where($where)->field($field);
|
||
|
if ($order) {
|
||
|
$model->order($order);
|
||
|
}
|
||
|
return $model->select()->toArray();
|
||
|
}
|
||
|
|
||
|
public static function getCounts($where, $field = 'create_time', $times = [])
|
||
|
{
|
||
|
$model = self::where($where);
|
||
|
if (!empty($times)) {
|
||
|
$model->whereBetweenTime($field, $times[0], $times[1]);
|
||
|
}
|
||
|
return $model->count('id');
|
||
|
}
|
||
|
|
||
|
public static function getPageInfo(): array
|
||
|
{
|
||
|
return [
|
||
|
'list_rows' => Request::param("pageSize", 10),
|
||
|
'var_page' => 'page',
|
||
|
'page' => Request::param("page", 1),
|
||
|
];
|
||
|
}
|
||
|
|
||
|
public static function orderBy()
|
||
|
{
|
||
|
return Request::param("orderBy", "id desc");
|
||
|
}
|
||
|
|
||
|
public function searchPages($search = [], $data = [], $field = '*'): \think\Paginator
|
||
|
{
|
||
|
$model = self::where(self::appendBaseWhere([]));
|
||
|
if (!empty($search)) {
|
||
|
$model = $model->withSearch($search, $data);
|
||
|
}
|
||
|
return $model->order(self::orderBy())->field($field)->paginate(self::getPageInfo());
|
||
|
}
|
||
|
|
||
|
public function detailById($id, $field = ['*']): array
|
||
|
{
|
||
|
return self::field($field)->findOrEmpty($id)->toArray();
|
||
|
}
|
||
|
|
||
|
public function deleteById($id)
|
||
|
{
|
||
|
self::destroy($id);
|
||
|
}
|
||
|
|
||
|
public function getLists($where = [], $field = [], $order = [])
|
||
|
{
|
||
|
return (new static)->where($where)->field($field)->order($order)->select();
|
||
|
}
|
||
|
|
||
|
private static function appendBaseWhere($where = [])
|
||
|
{
|
||
|
if (!isset($where['site_id']) && !empty(self::getModel()->autoSiteId) && self::getModel()->autoSiteId) {
|
||
|
$where['site_id'] = SessionUtil::getSiteId();
|
||
|
}
|
||
|
return $where;
|
||
|
}
|
||
|
}
|