80 lines
2.3 KiB
Plaintext
Executable File
80 lines
2.3 KiB
Plaintext
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Services\UserFun;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Arr;
|
|
use Illuminate\Support\Str;
|
|
class tg_Msg extends Model
|
|
{
|
|
protected $table = 'tg_msg';
|
|
|
|
protected $fillable = [
|
|
'update_id',
|
|
'message_message_id',
|
|
'message_from_id',
|
|
'message_from_is_bot',
|
|
'message_from_first_name',
|
|
'message_from_last_name',
|
|
'message_from_username',
|
|
'message_from_language_code',
|
|
'message_chat_id',
|
|
'message_chat_title',
|
|
'message_chat_type',
|
|
'message_chat_all_members_are_administrators',
|
|
'message_date',
|
|
'message_text',
|
|
'message_entities_0_offset',
|
|
'message_entities_0_length',
|
|
'message_entities_0_type',
|
|
'raw',
|
|
'token',
|
|
];
|
|
|
|
protected $casts = [
|
|
'message_date' => 'datetime',
|
|
'created_at' => 'datetime',
|
|
'updated_at' => 'datetime',
|
|
'raw' => 'array',
|
|
];
|
|
|
|
public static function storeFromWebhookJson(string|array $json): self
|
|
{
|
|
// 當$json是 string 時才做 Json2Arr,否則直接當成已展平的資料用
|
|
$data = is_array($json) ? $json : UserFun::Json2Arr($json);
|
|
// 要儲存的欄位清單
|
|
$fields = collect($data)->only([
|
|
'message_message_id',
|
|
'message_from_id',
|
|
'message_from_is_bot',
|
|
'message_from_first_name',
|
|
'message_from_last_name',
|
|
'message_from_username',
|
|
'message_from_language_code',
|
|
'message_chat_id',
|
|
'message_chat_title',
|
|
'message_chat_type',
|
|
'message_chat_all_members_are_administrators',
|
|
'message_text',
|
|
'message_entities_0_offset',
|
|
'message_entities_0_length',
|
|
'message_entities_0_type',
|
|
'token',
|
|
])->toArray();
|
|
|
|
// 處理 message_date (timestamp -> datetime)
|
|
if (isset($data['message_date'])) {
|
|
$fields['message_date'] = date('Y-m-d H:i:s', $data['message_date']);
|
|
}
|
|
|
|
// 原始扁平化資料存入 raw 欄位
|
|
$fields['raw'] = $data;
|
|
|
|
return self::updateOrCreate(
|
|
['update_id' => $data['update_id']],
|
|
$fields
|
|
);
|
|
}
|
|
}
|