username; } public function getMobileAttribute($value) { // 如果url中包含admin字符串,则所有的手机号显示中间4位星号代替 if (strpos(request()->url(), 'admin') !== false && env('APP_ENV') == 'local') { return substr_replace($value, '****', 3, 4); } return $value; } public function getAppointmentTotalAttribute($value) { $now = date('Y-m-d H:i:s'); $courseAppointmentTotals = CourseAppointmentTotal::where('user_id', $this->id) //->where('start_time', '<=', $now) ->where('end_time', '>=', $now) ->sum('total'); return $courseAppointmentTotals; } protected function serializeDate(DateTimeInterface $date) { return $date->format(Carbon::parse($date)->toDateTimeString()); } public function getIsVipTextAttribute($value) { return self::$intToString['is_vip'][$this->is_vip] ?? ''; } public function getIsSchoolmateTextAttribute($value) { return self::$intToString['is_schoolmate'][$this->is_schoolmate] ?? ''; } /** * 数据类型转换,数字转字符串。 * 值是id则是数据字典的顶级id,或者是枚举型数组 * @var array[] */ public static $intToString = [ 'company_position' => 1, 'company_area' => 1, 'company_industry' => 1, 'company_type' => 1, 'is_vip' => ['普通学员', 'VIP学员'], 'is_schoolmate' => ['否', '是'], ]; public function courses() { return $this->belongsToMany(Course::class, 'course_signs', 'user_id', 'course_id'); } public function courseSigns() { return $this->hasMany(CourseSign::class, 'user_id', 'id'); } public function companyAreaDetail() { return $this->hasOne(ParameterDetail::class, 'id', 'company_area'); } public function companyPositionDetail() { return $this->hasOne(ParameterDetail::class, 'id', 'company_position'); } public function companyIndustryDetail() { return $this->hasOne(ParameterDetail::class, 'id', 'company_industry'); } public function companyTypeDetail() { return $this->hasOne(ParameterDetail::class, 'id', 'company_type'); } public function appointments() { return $this->hasMany(Appointment::class, 'user_id', 'id'); } public function company() { return $this->hasOne(Company::class, 'id', 'company_id'); } /** * 获取预约剩余次数 */ public static function getHasAppointment($userId) { $user = self::find($userId); // 已预约次数 todo::已使用的次数应该存在有效期统计 $useTotal = Appointment::where('user_id', $userId) ->where('status', 1) ->count(); return $user->appointment_total - $useTotal >= 0 ? $user->appointment_total - $useTotal : 0; } }