Initial commit

This commit is contained in:
18338781771
2025-05-14 13:19:23 +08:00
commit 1ab607f65a
313 changed files with 27595 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
<?php
namespace app\mzl\modules\permission\model;
use support\Model;
use support\Redis;
/**
* User
*/
class User extends Model
{
/**
* The connection name for the model.
*
* @var string|null
*/
protected $connection = 'mysql';
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'wzh_user';
/**
* The primary key associated with the table.
*
* @var string
*/
protected $primaryKey = 'id';
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = true;
/**
* 模型的数据字段的保存格式。
*
* @var string
*/
protected $dateFormat = 'U';
/**
* 允许自动填充模型字段
*/
protected $fillable = ['id', 'password', 'realname', 'idcard', 'gzh_openid', 'identity', 'role_id', 'sex', 'phone', 'created_at', 'updated_at', 'deleted_at'];
/**
* 不允许自动填充模型字段
*/
protected $guarded = [];
public function roles()
{
return $this->belongsToMany(Role::class, 'role_user');
}
public function hasPermission2(string $permission): bool
{
// 加载角色和每个角色的权限
$roles = $this->roles()->with('permissions')->get();
// 判断是否有某个权限
return $roles->pluck('permissions')->flatten()->pluck('name')->contains($permission);
}
public function hasPermission(string $permission, int $ttl = 24 * 60 * 60): bool
{
$cacheKey = 'user_permissions_' . $this->id;
$permissions = Redis::get($cacheKey);
if (!$permissions) {
$roles = $this->roles()->with('permissions')->get();
$permissions = $roles->pluck('permissions')->flatten()->pluck('name')->toArray();
Redis::setEx($cacheKey, $ttl, json_encode($permissions));
} else {
$permissions = json_decode($permissions, true);
}
return in_array($permission, $permissions);
}
}