Files
zyt/server/app/common/model/tcm/DiagnosisRevisitDueLog.php
T
2026-10-15 11:03:54 +08:00

102 lines
3.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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 : [];
}
}