first commit

This commit is contained in:
liu
2026-07-13 15:23:29 +08:00
commit 50885a98c8
473 changed files with 33772 additions and 0 deletions
@@ -0,0 +1,101 @@
<?php
namespace Modules\SystemTool\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Modules\SystemTool\Enum\SiteConfigType;
/**
* Class Setting
*/
class SysSiteConfigItemsModel extends Model
{
protected $table = 'sys_site_config_items';
protected $casts = [
'group_id' => 'int',
'sort' => 'int',
];
protected $fillable = [
'key',
'title',
'describe',
'values',
'type',
'options',
'props',
'group_id',
'sort',
];
protected $appends = ['options_json', 'props_json'];
/**
* 关联设置
* @return BelongsTo
*/
public function group(): BelongsTo
{
return $this->belongsTo(SysSiteConfigGroupModel::class, 'id', 'group_id');
}
protected function values(): Attribute
{
return Attribute::make(
get: function (mixed $value, array $attributes) {
$type_enum = SiteConfigType::tryFrom($attributes['type']);
if($type_enum) {
return $type_enum->castValue($value);
} else {
return $value;
}
},
);
}
public function getOptionsJsonAttribute(): string
{
if(empty($this->options)) {
return "{}";
}
$data = [];
$value = explode("\n", $this->options);
foreach ($value as $item) {
$item = explode('=',$item);
if(count($item) < 2) {
continue;
}
$data[] = [
'label' => $item[1],
'value' => $item[0]
];
}
return json_encode($data);
}
public function getPropsJsonAttribute(): string
{
if(empty($this->props)) {
return "{}";
}
$data = [];
$value = explode("\n",$this->props);
foreach ($value as $item) {
$item = explode('=',$item);
if(count($item) < 2) {
continue;
}
if($item[1] === 'false') {
$data[$item[0]] = false;
}elseif ($item[1] === 'true') {
$data[$item[0]] = true;
}else {
$data[$item[0]] = $item[1];
}
}
return json_encode($data);
}
}