tapi/app/controller/admin/system/ConfigController.php
2025-08-26 13:48:41 +08:00

155 lines
4.5 KiB
PHP

<?php
namespace app\controller\admin\system;
use app\BaseController;
use app\entity\SysConfig;
use app\service\CurdService;
use think\db\exception\DataNotFoundException;
use think\db\exception\ModelNotFoundException;
use think\facade\Cache;
use think\response\Json;
class ConfigController extends BaseController
{
public function list(): Json
{
$model = SysConfig::with([])
->withSearch(['group'], [
'group'=> $this->request->get('group/s','')
]);
$data = CurdService::getList($this->request, $model)->toArray();
// $data = list_build_tree($list);
return $this->writeSuccess('success', $data);
}
public function data(string $name)
{
$config = SysConfig::where('name', $name)->findOrEmpty();
return $this->writeSuccess('success', $config->toArray());
}
public function existence()
{
$id = $this->request->get('id/d',0);
$field = $this->request->get('field/s', '');
$value = $this->request->get('value/s', '');
try {
$model = SysConfig::field('id');
if($id > 0) {
$model = $model->where('id', '<>', $id);
}
$model->where([$field => $value])->findOrFail();
} catch (ModelNotFoundException|DataNotFoundException) {
return $this->writeError("配置不存在");
}
return $this->writeSuccess('配置已存在');
}
public function add()
{
$data = $this->request->post([
'pid' => 0,
'title' => '',
'value' => '',
'tips' => '',
'type' => '',
'option' => '',
'name' => '',
'comments' => '',
'group'=> ''
]);
$data['item_bind'] = $this->request->post('itemBind','{}');
$data['item_style'] = $this->request->post('itemStyle','');
$data['item_class'] = $this->request->post('itemClass','');
$user = new SysConfig();
$user->save($data);
return $this->writeSuccess('添加成功');
}
public function update()
{
$data = $this->request->put([
'id' => 0,
'pid' => 0,
'title' => '',
'value' => '',
'type' => '',
'tips' => '',
'option' => '',
'name' => '',
'comments' => '',
'group'=> '',
]);
$data['item_bind'] = $this->request->post('itemBind');
$data['item_style'] = $this->request->post('itemStyle');
$data['item_class'] = $this->request->post('itemClass');
$user = SysConfig::findOrFail($data['id']);
$user->save($data);
return $this->writeSuccess('修改成功');
}
public function updateStatus()
{
$id = $this->request->put('id');
$status = $this->request->put('status');
$user = SysConfig::findOrFail($id);
$user->save(['status'=>$status]);
return $this->writeSuccess('修改成功');
}
public function batchDelete()
{
$data = $this->request->delete();
SysConfig::destroy($data);
return $this->writeSuccess('删除成功');
}
public function sync()
{
$lists = SysConfig::where(['status'=>1])->order(['name'=>'asc'])
->select();
$version = md5($lists->toJson());
Cache::set('sysConfigInfo', $lists->column('value','name'));
Cache::set('sysConfigVersion', $version);// 最后的配置版本号
return $this->writeSuccess('同步成功');
}
public function updateData()
{
$data = $this->request->put();
foreach ($data as $name=>$value) {
if($name) {
$config = SysConfig::where('name', $name)->find();
$config && $config->save(['value'=> (string)$value]);
}
}
return $this->writeSuccess('同步成功');
}
public function info()
{
$table_php = SysConfig::where(['status'=>1])->order(['name'=>'asc'])
->select();
$table_version = md5($table_php->toJson());
$cache_php = Cache::get('sysConfigInfo');
$cache_version = Cache::get('sysConfigVersion');
return $this->writeSuccess('success', [
// 表版本
'table_version'=> $table_version,
'table_php' => var_export($table_php->column('value','name'), true),
// 缓存版本
'cache_version'=> $cache_version,
'cache_php' => var_export($cache_php, true),
]);
}
}