'json', 'fee_file_ids' => 'json', 'data' => 'json', 'change_data' => 'json']; protected $appends = ['files', 'fee_files', 'status_text', 'fee_status_text']; public static $intToString = [ 'status' => [ 0 => '待审核', 1 => '审核通过', 2 => '审核不通过', 3 => '备选', 4 => '已取消', 5 => '主动放弃', 6 => '黑名单' ], 'fee_status' => [ 0 => '未缴费', 1 => '缴费成功', 2 => '缴费失败', 3 => '待确认' ], ]; public function getStatusTextAttribute($value) { return self::$intToString['status'][$this->status] ?? ''; } public function getFeeStatusTextAttribute($value) { return self::$intToString['fee_status'][$this->fee_status] ?? ''; } public function getFilesAttribute($value) { if (empty($this->file_ids)) return []; return Upload::whereIn('id', $this->file_ids)->get(); } public function getFeeFilesAttribute($value) { if (empty($this->fee_file_ids)) return []; return Upload::whereIn('id', $this->fee_file_ids)->get(); } public function course() { return $this->hasOne(Course::class, 'id', 'course_id'); } public function user() { return $this->hasOne(User::class, 'id', 'user_id'); } /** * 第三方日志记录 * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function thirdAppointmentLogs() { return $this->hasMany(ThirdAppointmentLog::class, 'course_sign_id', 'id'); } /** * 指定时间内的报名信息(未去重) */ public static function courseSignsTotal($start_date, $end_date, $status = null, $course_ids = null) { $total = CourseSign::whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) ->where(function ($query) use ($status, $course_ids) { if (isset($status)) { $query->where('status', $status); } if (isset($course_ids)) { $query->whereIn('course_id', $course_ids); } })->whereNotIn('status', [4, 5]) ->count(); return $total; } /** * 指定时间内的报名信息(去重) */ public static function courseSignsTotalByUnique($start_date, $end_date, $status = null, $course_ids = null) { $courseSignByType = CourseSign::whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) ->where(function ($query) use ($status, $course_ids) { if (isset($status)) { $query->where('status', $status); } if (isset($course_ids)) { $query->whereIn('course_id', $course_ids); } })->whereNotIn('status', [4, 5]) ->get(); return User::whereIn('id', $courseSignByType->pluck('user_id'))->distinct('mobile')->count(); } /** * 指定时间内的被投企业 */ public static function yhInvested($start_date, $end_date, $status = null, $course_ids = null) { $courseSignByType = CourseSign::whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) ->where(function ($query) use ($status, $course_ids) { if (isset($status)) { $query->where('status', $status); } if (isset($course_ids)) { $query->whereIn('course_id', $course_ids); } })->whereNotIn('status', [4, 5]) ->get(); return Company::whereHas('users', function ($query) use ($courseSignByType) { $query->whereIn('id', $courseSignByType->pluck('user_id')); })->count(); } }