Files
webman-buildadmin-mall/app/common/model/ChannelManage.php

84 lines
2.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
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');
}
}