首次提交 Laravel 專案
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
||||
bootstrap="vendor/autoload.php"
|
||||
colors="true"
|
||||
>
|
||||
<testsuites>
|
||||
<testsuite name="Unit">
|
||||
<directory>tests/Unit</directory>
|
||||
</testsuite>
|
||||
<testsuite name="Feature">
|
||||
<directory>tests/Feature</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<source>
|
||||
<include>
|
||||
<directory>app</directory>
|
||||
</include>
|
||||
</source>
|
||||
<php>
|
||||
<env name="APP_ENV" value="testing"/>
|
||||
<env name="APP_MAINTENANCE_DRIVER" value="file"/>
|
||||
<env name="BCRYPT_ROUNDS" value="4"/>
|
||||
<env name="CACHE_STORE" value="array"/>
|
||||
<env name="DB_CONNECTION" value="sqlite"/>
|
||||
<env name="DB_DATABASE" value=":memory:"/>
|
||||
<env name="MAIL_MAILER" value="array"/>
|
||||
<env name="PULSE_ENABLED" value="false"/>
|
||||
<env name="QUEUE_CONNECTION" value="sync"/>
|
||||
<env name="SESSION_DRIVER" value="array"/>
|
||||
<env name="TELESCOPE_ENABLED" value="false"/>
|
||||
</php>
|
||||
</phpunit>
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Services\UserFun;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Str;
|
||||
class TgMsg extends Model
|
||||
{
|
||||
protected $table = 'tg_msg';
|
||||
|
||||
protected $guarded = ['id'];
|
||||
|
||||
protected $casts = [
|
||||
'message_date' => '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
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user