name)) { return 'xxx'; } $lastStr = mb_substr($this->name, 0, 1, 'utf-8'); $hiddenStr = str_repeat('*', mb_strlen($this->name, 'utf-8') - 1); return $lastStr . $hiddenStr; } public function coupons() { return $this->hasMany(UserHasCoupon::class, 'user_id'); } public function scoreLogs() { return $this->hasMany(ScoreLog::class, 'user_id'); } public function addresses() { return $this->hasMany(Address::class); } public function subscribe() { return $this->hasOne(Subscribe::class); } public function cars() { return $this->hasMany(Car::class); } public function orders() { return $this->hasMany(Order::class); } /** * 获取订单明细用以评论 */ public function orderDetails() { return $this->hasManyThrough(OrderDetail::class, Order::class); } public function products() { return $this->belongsToMany(Product::class, 'likes_products'); } /** * rewrite send reset password email * @param string $token */ public function sendPasswordResetNotification($token) { Mail::to($this->email) ->queue(new ResetPassword($token)); } /** * 初始化头像 */ public static function boot() { parent::boot(); static::creating(function ($model) { if (! isset($model->attributes['avatar'])) { $model->attributes['avatar'] = 'avatars/default/' . array_random(User::DEFAULT_AVATARS); } if (! isset($model->attributes['password'])) { $setting = new SettingKeyEnum(SettingKeyEnum::USER_INIT_PASSWORD); $model->attributes['password'] = bcrypt(setting($setting, '123456')); } }); static::created(function ($model) { // 用户注册之后,得到注册的来源 // 存入 redis 缓存,每日更新到统计表 $source = UserSourceEnum::search($model->source) ?: UserSourceEnum::search(UserSourceEnum::MOON); $registerKey = SiteCountCacheEnum::MOON_REGISTER_COUNT; switch ($source) { case 'qq': $registerKey = SiteCountCacheEnum::QQ_REGISTER_COUNT; break; case 'weibo': $registerKey = SiteCountCacheEnum::WEIBO_REGISTER_COUNT; break; case 'github': $registerKey = SiteCountCacheEnum::GITHUB_REGISTERED_COUNT; break; default: break; } Cache::increment($registerKey); Cache::increment(SiteCountCacheEnum::REGISTERED_COUNT); }); } public function getJWTCustomClaims() { return []; } public function getJWTIdentifier() { return $this->getKey(); } }