作者 liyuhang

gx

... ... @@ -16,7 +16,6 @@ class BaseController extends Controller
protected $param = [];//所有请求参数
protected $token = ''; //token
protected $request = [];//助手函数
protected $allCount = 0;//总条数
protected $p = 1;//当前页
protected $row = 20;//每页条数
protected $header = [];//设置请求头参数
... ... @@ -137,29 +136,6 @@ class BaseController extends Controller
$response = response($result,$result_code,$this->header);;
throw new HttpResponseException($response);
}
/**
* 方法请求输出数据(带分页参数)
* @param $data
* @return
*/
protected function result($lists) {
$data['data'] = $lists;
$data['page'] = $this->setPages();
$this->response('success', 200, $data);
}
/**
* 设置分页返回参数()
*/
protected function setPages() {
$page_count = $this->allCount > $this->row ? ceil($this->allCount / $this->row) : 1;
$this->header['Total-Count'] = $this->allCount; //总条数
$this->header['Page-Count'] = $page_count; //总页数
$this->header['Current-Page'] = $this->p; //当前页数
$this->header['Per-Page'] = $this->row; //每页条数
return $this->header;
}
/**
* @name :上传图片
... ...
<?php
namespace App\Http\Controllers\Bside;
/**
* @name:用户组相关
*/
class ProjectGroupController extends BaseController
{
/**
* @name :用户组列表
* @return json
* @author :liyuhang
* @method
*/
public function lists()
{
}
}
... ...
... ... @@ -2,6 +2,7 @@
namespace App\Http;
use App\Http\Middleware\AccessToken;
use App\Http\Middleware\Aside\BlackListMiddleware as AsideBlackListMiddleware;
use App\Http\Middleware\Aside\ParamMiddleware as AsideParamMiddleware;
use App\Http\Middleware\Bside\BlackListMiddleware as BsideBlackListMiddleware;
... ... @@ -91,6 +92,7 @@ class Kernel extends HttpKernel
//A端登录验证中间件
'aloginauth'=>AsideLoginAuthMiddleware::class,
//B端登录验证中间件
'bloginauth'=>BsideLoginAuthMiddleware::class
'bloginauth'=>BsideLoginAuthMiddleware::class,
'accesstoken'=>AccessToken::class,
];
}
... ...
<?php
namespace App\Http\Middleware;
use App\Enums\Common\Code;
use App\Models\ProjectMenu;
use App\Models\ProjectRole as ProjectRoleModel;
class AccessToken
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
session_start();
// 指定允许其他域名访问
$http_origin = "*";
if(isset($_SERVER['HTTP_ORIGIN'])){
$http_origin = $_SERVER['HTTP_ORIGIN'];
}
header("Access-Control-Allow-Origin:".$http_origin);
header('Access-Control-Allow-Methods:POST,GET'); //支持的http 动作
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept, Authorization, token'); //响应头 请按照自己需求添加。
if (strtolower($_SERVER['REQUEST_METHOD']) == 'options') {
exit;
}
return $next($request);
}
}
... ...
... ... @@ -8,28 +8,15 @@ use Illuminate\Support\Facades\DB;
class Base extends Model
{
protected $table = '';
public $allCount = 0;
//自动维护create_at创建时间 updated_at修改时间
public $timestamps = true;
//统一设置
//统一设置返回时间格式
protected $casts = [
'created_at' => 'datetime:Y-m-d H:i:s',
'updated_at' => 'datetime:Y-m-d H:i:s',
];
/**
* 日期序列化
* @param \DateTimeInterface $date
* @return string
* @author zbj
* @date 2023/4/13
*/
protected function serializeDate(\DateTimeInterface $date): string
{
return $date->format('Y-m-d H:i:s');
}
/**
* @name 列表数据
* @return void
* @author :liyuhang
... ... @@ -37,12 +24,11 @@ class Base extends Model
*/
public function lists($map, $p, $row, $order = 'id', $fields = ['*']){
//TODO::where(['id'=>'','name'=>''])
$lists = DB::table($this->table)->select($fields)->where($map)->orderBy($order)->paginate($row, ['*'], 'page', $p);
$lists = $this->select($fields)->wheres($map)->orderBy($order)->paginate($row, ['*'], 'page', $p);
if (empty($lists)) {
return false;
}
$lists = $lists->toArray();
$this->allCount = $this->where($map)->count();
return $lists;
}
... ... @@ -57,7 +43,7 @@ class Base extends Model
* @method
*/
public function list($map,$order = 'id',$fields = ['*']){
$lists = $this->select($fields)->where($map)->orderBy($order)->get();
$lists = $this->select($fields)->wheres($map)->orderBy($order)->get();
if (empty($lists)) {
return false;
}
... ... @@ -73,7 +59,7 @@ class Base extends Model
*/
public function read($condition,$files = ['*'])
{
$info = $this->select($files)->where($condition)->first();
$info = $this->select($files)->wheres($condition)->first();
if (empty($info)) {
return false;
}
... ... @@ -102,7 +88,7 @@ class Base extends Model
*/
public function edit($data,$condition){
$data['updated_at'] = date('Y-m-d H:i:s');
return $this->where($condition)->update($data);
return $this->wheres($condition)->update($data);
}
/**
... ... @@ -112,6 +98,102 @@ class Base extends Model
* @method
*/
public function del($condition){
return $this->where($condition)->delete();
return $this->wheres($condition)->delete();
}
public function wheres($map,$val = ''){
$query = $this;
$query->where(function ($query) use ($map,$val){
//拼接数据
if(is_array($map)){
foreach ($map as $v){
switch ($v){
case 'like':
// like查询 ['name|title', 'like', '%a%']
if (strpos($v[0], '|') !== false) {
$query->where(function ($query) use ($v) {
$item = explode('|', $v[0]);
foreach ($item as $vo) {
$query->orWhere($vo, $v[1], $v[2]);
}
});
} else {
$query->where($v[0], $v[1], $v[2]);
}
break;
case 'in':
// in查询 ['id', 'in', [1,2,3]]
if (!is_array($v[2])) {
$v[2] = explode(',', $v[2]);
}
$query->whereIn($v[0], $v[2]);
break;
case 'not in':
// not in查询 ['id', 'not in', [1,2,3]]
if (!is_array($v[2])) {
$v[2] = explode(',', $v[2]);
}
$query->whereNotIn($v[0], $v[2]);
break;
case 'between':
// between查询 ['created_at', 'between', ['xxx', 'xxx]]
if (!is_array($v[2])) {
$v[2] = explode(',', $v[2]);
}
$query->whereBetween($v[0], $v[2]);
break;
case 'not between':
// not between查询 ['created_at', 'not between', ['xxx', 'xxx]]
if (!is_array($v[2])) {
$v[2] = explode(',', $v[2]);
}
$query->whereNotBetween($v[0], $v[2]);
break;
case 'null':
// null查询 ['deleted_at', 'null']
$query->whereNull($v[0]);
break;
case "not null":
// not null查询 ['deleted_at', 'not null']
$query->whereNotNull($v[0]);
break;
case "or":
// or查询 [[['status'=>1],['status'=>2]], 'or'];
//格式:or (status=1 and status=2)
$where = $v[0];
$query->orWhere(function ($query) use ($where) {
// 递归解析查询条件
$this->formatQuery($where, $query);
});
break;
case 'xor':
// xor查询 [[['status'=>1],['status'=>2]], 'xor'];
// 格式:and (status=1 or status=2)
$where = $v[0];
$query->where(function ($query) use ($where) {
foreach ($where as $w) {
$query->orWhere(function ($query) use ($w) {
// 递归解析查询条件
$this->formatQuery([$w], $query);
});
}
});
break;
default:
// 常规查询
if (count($v) == 2) {
$query->where($v[0], '=', $v[1]);
} else {
$query->where($v[0], $v[1], $v[2]);
}
break;
}
}
}else{
$query->where($map,$val);
}
});
return $query;
}
}
... ...
<?php
namespace App\Models;
class ProjectGroup extends Base
{
//设置关联表名
protected $table = 'gl_project_group';
//自动维护create_at创建时间 updated_at修改时间
public $timestamps = true;
}
... ...