JsonArray::class, 'is_push'=>'bool', ]; protected $fillable = [ 'title', 'content', 'type', 'ext', 'jump_type', 'jump_link', 'user_id', 'is_push', ]; public function user() { return $this->belongsTo(User::class); } /** * 此消息的推送任务 */ public function pushTasks() { return $this->morphMany(PushMessageTask::class, 'message'); } public static function userMessages(User $user) { return self::where('created_at', '>=', $user->created_at->subDays(7))->where(function ($q) use ($user) { $q->where('user_id', $user->id)->orWhere('user_id', 0); }); } /** * 发送预收益消息 * * @return void */ public static function createDistributionMessage($userId, $params) { $message = self::create([ 'type' => 1, 'title' => $params['title'], 'user_id' => $userId, 'content' => $params['content'], 'jump_type'=> self::JUMP_NO, 'is_push' => 1, ]); if ($message && $message->needPush()) { $message->pushMessage(); } return $message; } public function needPush() { return $this->is_push; } public function pushMessage() { //填入推送内容 PushMessageTask::create([ 'sn' => serial_number(), 'message_id' => $this->id, 'message_type' => $this::class, ]); } }