84 lines
2.2 KiB
PHP
84 lines
2.2 KiB
PHP
<?php
|
||
|
||
namespace app\common\model;
|
||
|
||
use support\think\Model;
|
||
|
||
/**
|
||
* ChannelManage
|
||
*/
|
||
class ChannelManage extends Model
|
||
{
|
||
// 表名
|
||
protected $name = 'channel_manage';
|
||
|
||
// 自动写入时间戳字段
|
||
protected $autoWriteTimestamp = true;
|
||
|
||
// 字段类型转换
|
||
protected $type = [
|
||
'create_time' => 'integer',
|
||
'update_time' => 'integer',
|
||
'ip_white' => 'json',
|
||
];
|
||
|
||
|
||
/**
|
||
* 获取 IP 白名单,统一返回字符串数组格式
|
||
* 兼容:["127.0.0.1"]、[{"value":"127.0.0.1"}]、[{"127.0.0.1":""}]
|
||
*/
|
||
public function getipWhiteAttr($value): array
|
||
{
|
||
$arr = is_array($value) ? $value : (!$value ? [] : json_decode($value, true));
|
||
if (!is_array($arr)) {
|
||
return [];
|
||
}
|
||
$result = [];
|
||
foreach ($arr as $item) {
|
||
if (is_string($item)) {
|
||
$result[] = $item;
|
||
} elseif (is_array($item)) {
|
||
if (isset($item['value'])) {
|
||
$result[] = $item['value'];
|
||
} else {
|
||
$key = array_key_first($item);
|
||
if ($key !== null && $key !== '') {
|
||
$result[] = $key;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return array_values(array_filter($result));
|
||
}
|
||
|
||
/**
|
||
* 写入 IP 白名单,存储格式 ["127.0.0.1","192.168.1.1"]
|
||
*/
|
||
public function setipWhiteAttr($value): array
|
||
{
|
||
$arr = is_array($value) ? $value : [];
|
||
$result = [];
|
||
foreach ($arr as $ip) {
|
||
$ip = is_string($ip) ? trim($ip) : '';
|
||
if ($ip !== '') {
|
||
$result[] = $ip;
|
||
}
|
||
}
|
||
return array_values($result);
|
||
}
|
||
|
||
/**
|
||
* 创建时自动生成密钥:strtoupper(md5(name+id))
|
||
*/
|
||
protected static function onAfterInsert($model): void
|
||
{
|
||
$pk = $model->getPk();
|
||
$secret = strtoupper(md5($model->name . $model->$pk));
|
||
$model->where($pk, $model->$pk)->update(['secret' => $secret]);
|
||
}
|
||
|
||
public function admin(): \think\model\relation\BelongsTo
|
||
{
|
||
return $this->belongsTo(\app\admin\model\Admin::class, 'admin_id', 'id');
|
||
}
|
||
} |