更新
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\common\model\tcm;
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
|
||||
/**
|
||||
* 诊单复诊到期事件流水模型(审计与「越点越上心」统计)
|
||||
*
|
||||
* 注意:弹窗轮询不写流水(只更新 first/last_shown_at),避免日志膨胀。
|
||||
*
|
||||
* @package app\common\model\tcm
|
||||
*/
|
||||
class DiagnosisRevisitDueLog extends BaseModel
|
||||
{
|
||||
protected $name = 'tcm_diagnosis_revisit_due_log';
|
||||
|
||||
// 仅有 create_time,整型时间戳
|
||||
protected $autoWriteTimestamp = true;
|
||||
protected $createTime = 'create_time';
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
protected $dateFormat = false;
|
||||
|
||||
/** 事件:延迟 */
|
||||
public const EVENT_SNOOZE = 1;
|
||||
/** 事件:已联系(填承诺日) */
|
||||
public const EVENT_CONTACT = 2;
|
||||
/** 事件:人工关闭 */
|
||||
public const EVENT_MANUAL_CLOSE = 3;
|
||||
/** 事件:自动关闭-已挂号 */
|
||||
public const EVENT_AUTO_CLOSE_BOOKED = 4;
|
||||
/** 事件:自动关闭-已面诊 */
|
||||
public const EVENT_AUTO_CLOSE_VISITED = 5;
|
||||
/** 事件:周期重置(新有效订单成为锚点) */
|
||||
public const EVENT_CYCLE_RESET = 6;
|
||||
/** 事件:重新打开(挂号取消/过号) */
|
||||
public const EVENT_REOPEN = 7;
|
||||
/** 事件:企微推送 */
|
||||
public const EVENT_WECOM_PUSH = 8;
|
||||
/** 事件:医助变更(含继承),延迟字段清零 */
|
||||
public const EVENT_ASSISTANT_CHANGED = 9;
|
||||
/** 事件:形态升级(escalation_level 变化) */
|
||||
public const EVENT_ESCALATED = 10;
|
||||
/** 事件:首次弹出 */
|
||||
public const EVENT_FIRST_SHOWN = 11;
|
||||
|
||||
/** @var array<int,string> */
|
||||
public const EVENT_TEXT_MAP = [
|
||||
self::EVENT_SNOOZE => '延迟',
|
||||
self::EVENT_CONTACT => '已联系',
|
||||
self::EVENT_MANUAL_CLOSE => '人工关闭',
|
||||
self::EVENT_AUTO_CLOSE_BOOKED => '自动关闭-已挂号',
|
||||
self::EVENT_AUTO_CLOSE_VISITED => '自动关闭-已面诊',
|
||||
self::EVENT_CYCLE_RESET => '周期重置',
|
||||
self::EVENT_REOPEN => '重新打开',
|
||||
self::EVENT_WECOM_PUSH => '企微推送',
|
||||
self::EVENT_ASSISTANT_CHANGED => '医助变更',
|
||||
self::EVENT_ESCALATED => '形态升级',
|
||||
self::EVENT_FIRST_SHOWN => '首次弹出',
|
||||
];
|
||||
|
||||
/**
|
||||
* @notes 事件文本
|
||||
*/
|
||||
public function getEventTextAttr($value, $data): string
|
||||
{
|
||||
$v = (int) ($data['event'] ?? 0);
|
||||
|
||||
return self::EVENT_TEXT_MAP[$v] ?? '未知';
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 事件时间格式化(Y-m-d H:i:s)
|
||||
*/
|
||||
public function getCreateTimeTextAttr($value, $data): string
|
||||
{
|
||||
$ts = (int) ($data['create_time'] ?? 0);
|
||||
|
||||
return $ts > 0 ? date('Y-m-d H:i:s', $ts) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes payload JSON 解码为数组(解码失败返回空数组)
|
||||
*
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
public function getPayloadArrAttr($value, $data): array
|
||||
{
|
||||
$raw = (string) ($data['payload'] ?? '');
|
||||
if ($raw === '') {
|
||||
return [];
|
||||
}
|
||||
$decoded = json_decode($raw, true);
|
||||
|
||||
return is_array($decoded) ? $decoded : [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user