更新
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\common\enum;
|
||||
|
||||
/** 挂号的问诊方式,与诊单的初诊/复诊类型无关。 */
|
||||
class AppointmentTypeEnum
|
||||
{
|
||||
public const VIDEO = 'video';
|
||||
public const TEXT = 'text';
|
||||
|
||||
public static function isWritable($value): bool
|
||||
{
|
||||
return is_string($value) && in_array($value, [self::VIDEO, self::TEXT], true);
|
||||
}
|
||||
|
||||
/** 只给未传字段的新客户端请求补默认值;显式传入空值仍需校验。 */
|
||||
public static function withDefault(array $params): array
|
||||
{
|
||||
if (!array_key_exists('appointment_type', $params)) {
|
||||
$params['appointment_type'] = self::VIDEO;
|
||||
}
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
/** 旧记录未填写类型时按视频展示,已记录的历史类型保持原值。 */
|
||||
public static function normalizeStored($value): string
|
||||
{
|
||||
return $value === null || (is_string($value) && trim($value) === '')
|
||||
? self::VIDEO
|
||||
: (string) $value;
|
||||
}
|
||||
|
||||
public static function description($value): string
|
||||
{
|
||||
return [
|
||||
self::VIDEO => '视频问诊',
|
||||
self::TEXT => '图文问诊',
|
||||
'phone' => '电话问诊', // 仅兼容已存在的历史记录,不允许新写入。
|
||||
][self::normalizeStored($value)] ?? '未知';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user