<?php<web88@qq.com>
namespace app\common\model;
use think\facade\Request;
use think\Model;
class Base extends Model
{
protected $readonly = ['id','tenant_id'];
protected $tenant_id = 0; protected $uid = 0;
protected $globalScope = ['TenantId'];
protected $type = [
'id' => 'integer'
];
protected static function init()
{
self::afterInsert(function ($model){
});
}
public function __construct($data = [])
{
parent::__construct($data);
if ($data && is_array($data)){
$this->setConfig($data);
}
if (!$this->tenant_id && session('?tenant_id')){
$this->setTenantId(session('tenant_id'));
}
}
public function setConfig($data=[]){
if ($data){
if ($data && isset($data['tenant_id'])){
$this->setTenantId($data['tenant_id']);
}
if ($data && isset($data['uid'])){
$this->setUid($data['uid']);
}
}
}
public function setTenantId($value){
if ($value && is_numeric($value)){
$this->tenant_id = $value;
session('tenant_id',$value);
}
}
public function getTenantId(){
return $this->tenant_id;
}
public function setUid($value){
if ($value && is_numeric($value)){
$this->uid = $value;
}
}
protected function mapBuild($field,$condition,$op=null){
$map=[];
if (empty($field) || empty($condition)){
return $map;
}
if (!empty($op)){
if ($op == strtolower('like')){
$condition='%'.$condition.'%';
}
}
if (is_array($condition)){
$map=[$field,$op ? $op:'in',$condition];
}elseif (is_string($condition) && strpos($condition,',')==true){
$map=[$field,$op ? $op:'in',explode(',',$condition)];
}elseif (is_numeric($condition)){
$map=[$field,$op ? $op:'=',$condition];
}elseif (is_string($condition)){
$map=[$field,$op ? $op:'=',$condition];
}
return $map;
}
public function scopeTenantId($query)
{
$query->where('tenant_id',$this->tenant_id);
}
}