<?php
namespace app\common\model;
use think\Model;
class User Extends Model
{
protected $autoWriteTimestamp = 'int';
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
protected $append = [
'url',
];
public function getUrlAttr($value, $data)
{
return "/u/" . $data['id'];
}
public function getAvatarAttr($value, $data)
{
return $value ? $value : '/assets/img/avatar.png';
}
public function getGroupAttr($value, $data)
{
return UserGroup::get($data['group_id']);
}
public function getVerificationAttr($value, $data)
{
$value = array_filter((array) json_decode($value, TRUE));
$value = array_merge(['email' => 0, 'mobile' => 0], $value);
return (object) $value;
}
public function setVerificationAttr($value)
{
$value = is_object($value) || is_array($value) ? json_encode($value) : $value;
return $value;
}
public static function score($score, $user_id, $memo)
{
$user = self::get($user_id);
if ($user)
{
$before = $user->score;
$after = $user->score + $score;
$level = self::nextlevel($after);
$user->save(['score' => $after, 'level' => $level]);
ScoreLog::create(['user_id' => $user_id, 'score' => $score, 'before' => $before, 'after' => $after, 'memo' => $memo]);
}
}
public static function nextlevel($score = 0)
{
$lv = array(1 => 0, 2 => 30, 3 => 100, 4 => 500, 5 => 1000, 6 => 2000, 7 => 3000, 8 => 5000, 9 => 8000, 10 => 10000);
$level = 1;
foreach ($lv as $key => $value)
{
if ($score >= $value)
{
$level = $key;
}
}
return $level;
}
}