work/application/common/Model/CommonModel.php
2024-01-03 09:54:57 +08:00

149 lines
4.9 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\common\Model;
use service\FileService;
use service\ToolsService;
use think\Db;
use think\facade\Request;
use think\File;
use think\Model;
class CommonModel extends Model
{
/**
* 返回失败的请求
* @param mixed $msg 消息内容
* @param array $data 返回数据
* @param integer $code 返回代码
*/
protected function error($msg, $data = [], $code = 400)
{
ToolsService::error($msg, $data, $code);
}
public static function limitByQuery($sql, $page = 1, $pageSize = 10)
{
if ($page < 1) {
$page = 1;
}
$offset = ($page - 1) * $pageSize;
$limit = $pageSize;
$total = Db::query($sql);
$total = count($total);
$sql .= " limit {$offset},{$limit}";
$list = Db::query($sql);
return ['total' => $total, 'list' => $list, 'page' => $page];
}
/**
* 分页方法
* @param null $where 可以传入查询对象或模型实例
* @param $order
* @param $field
* @param bool $simple 是否简介模式,简介模式不分页
* @param array $config 分页配置page: 当前页rows: 每页数量
* @return array
* @throws \think\exception\DbException
*/
public function _list($where = null, $order = 'id desc', $field = null, $simple = false, $config = [])
{
$rows = intval(Request::param('pageSize', cookie('pageSize')));
if (!$rows) {
$rows = 10;
}
cookie('pageSize', $rows);
$config['query'] = Request::param();
$whereOr = [];
if (isset($where['or']) and $where['or']) {
//todo 怎么or连贯查询
/*
* whereOr查询形式如
$where['or'][]= ['name','like',"xxx"];
$where['or'][] = ['id','=',"xxx"];
*/
$whereOr = $where['or'];
unset($where['or']);
}
$page = $this->where($where)->whereOr($whereOr)->order($order)->field($field)->paginate($rows, $simple, $config);
$list = $page->all();
$result = ['total' => $simple ? count($list) : $page->total(), 'page' => $page->currentPage(), 'list' => $list];
return $result;
}
public function _listWithTrashed($where = null, $order = null, $field = null, $simple = false, $config = [])
{
$rows = intval(Request::param('rows', cookie('pageSize')));
if (!$rows) {
$rows = 10;
}
cookie('pageSize', $rows);
$config['query'] = Request::param();
$whereOr = [];
if (isset($where['or']) and $where['or']) {
//todo 怎么or连贯查询
/*
* whereOr查询形式如
$where['or'][]= ['name','like',"xxx"];
$where['or'][] = ['id','=',"xxx"];
*/
$whereOr = $where['or'];
unset($where['or']);
}
$class = get_class($this);
$count = $class::withTrashed()->where($where)->whereOr($whereOr)->order($order)->field($field)->count();
$page = $config['query']['page'] ? $config['query']['page'] : 1;
$offset = $rows * ($config['query']['page'] - 1);
$list = $class::withTrashed()->where($where)->whereOr($whereOr)->order($order)->field($field)->limit($offset, $rows)->select();
$result = ['total' => $count, 'page' => $page, 'list' => $list];
return $result;
}
public function _edit($data, $where = [])
{
return $this->isUpdate(true)->save($data, $where);
}
public function _add($data)
{
$obj = $this::create($data);
if ($obj->id) {
return $this::get($obj->id);
}
return false;
}
/**
* @param File $file
* @param $path_name
* @return array|bool
* @throws \OSS\Core\OssException
* @throws \think\Exception
* @throws \think\exception\PDOException
* @throws \Exception
*/
public function _uploadImg(File $file, $path_name = '')
{
if (!$path_name) {
$path_name = config('upload.base_path') . config('default');
}
if (!$file->checkExt(strtolower(sysconf('storage_local_exts')))) {
\exception('文件上传类型受限', 1);
}
$path = $path_name;
$info = $file->move($path);
if ($info) {
$filename = str_replace('\\', '/', $path . '/' . $info->getSaveName());
// $image = \think\Image::open($info->getRealPath());
// $image->thumb($image->width() / 2, $image->height() / 2)->save($filename);//压缩
$site_url = FileService::getFileUrl($filename, 'local');
$fileInfo = FileService::save($filename, file_get_contents($site_url));
if ($fileInfo) {
return ['base_url' => $fileInfo['key'], 'url' => $fileInfo['url'], 'filename' => $file->getInfo('name')];
}
}
return false;
}
}