Lae/app/Models/UserGroup.php

64 lines
1.5 KiB
PHP
Raw Normal View History

2022-11-26 13:52:30 +00:00
<?php
namespace App\Models;
use Carbon\Carbon;
2023-01-10 14:27:03 +00:00
use GeneaLabs\LaravelModelCaching\Traits\Cachable;
2022-11-26 13:52:30 +00:00
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Facades\Cache;
2022-11-26 13:52:30 +00:00
class UserGroup extends Model
{
2023-01-10 14:27:03 +00:00
use Cachable;
2022-11-26 13:52:30 +00:00
public $fillable = [
'name',
'color',
'discount',
'exempt',
];
public $casts = [
'discount' => 'integer',
'exempt' => 'boolean',
];
public function users(): HasMany
{
return $this->hasMany(User::class);
}
/**
* 设置临时用户组
*
2023-02-07 09:04:11 +00:00
* @param User $user
* @param UserGroup $group
* @param Carbon $expired_at
* @return User
*/
public function setTempGroup(User $user, self $group, Carbon $expired_at): User
{
$temp_groups = Cache::get('users_temp_groups', []);
// 检测是否存在,存在则更新(更新过期时间,但是不更新 user_group_id
if (isset($temp_groups[$user->id])) {
$temp_groups[$user->id]['expired_at'] = $expired_at;
} else {
$temp_groups[$user->id] = [
'user_group_id' => $user->user_group_id,
'expired_at' => $expired_at,
];
}
// 保存到缓存
Cache::forever('users_temp_groups', $temp_groups);
// 设置新的用户组
$user->user_group_id = $group->id;
$user->save();
return $user;
}
2022-11-26 13:52:30 +00:00
}