Lae/app/Models/UserGroup.php

64 lines
1.5 KiB
PHP
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\Models;
use Carbon\Carbon;
use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Facades\Cache;
class UserGroup extends Model
{
use Cachable;
public $fillable = [
'name',
'color',
'discount',
'exempt',
];
public $casts = [
'discount' => 'integer',
'exempt' => 'boolean',
];
public function users(): HasMany
{
return $this->hasMany(User::class);
}
/**
* 设置临时用户组
*
* @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;
}
}