JsonArray::class, 'is_push'=>'bool', ]; protected $fillable = [ 'title', 'content', 'type', 'ext', 'jump_type', 'jump_link', 'user_id', 'is_push', ]; public function logs() { return $this->hasMany(MessageReadLog::class); } 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); }); } public static function createOrderMessage(Order $order) { $message = self::create([ 'type' => 1, 'title' => '订单编号:'.$order->sn, 'user_id' => $order->user_id, 'content' => implode(',', $order->products()->pluck('name')->toArray()).'|共'.$order->products()->count().'件商品,合计'.bcdiv($order->total_amount, 100, 2).'元', 'ext' => [ 'consignee_name' => $order->consignee_name, 'consignee_telephone' => $order->consignee_telephone, 'consignee_address' => $order->consignee_zone.$order->consignee_address, ], 'jump_type'=> self::JUMP_MIINE, 'jump_link'=> '/pages/order_details/index?id='.$order->id, '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, ]); } }