You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.1 KiB
PHP
106 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Request\EditConfig;
|
|
use App\Models\Config;
|
|
use Illuminate\Http\Request;
|
|
use Login;
|
|
use Yo;
|
|
|
|
class ConfigController extends Controller
|
|
{
|
|
public function create(EditConfig $request)
|
|
{
|
|
Login::admin(['config-config']);
|
|
$config = new Config();
|
|
$config->name = $request->post('name');
|
|
$config->value = $request->post('value') ?? '';
|
|
$config->type = $request->post('type');
|
|
$config->client = $request->post('client');
|
|
$config->login = $request->post('login');
|
|
$config->remark = $request->post('remark') ?? '';
|
|
$config->save();
|
|
$config = Config::find($config->id);
|
|
if (in_array($config->type, [3, 4, 5])) $config->value = json_decode($config->value, true);
|
|
return Yo::echo([
|
|
'info' => $config
|
|
]);
|
|
}
|
|
|
|
public function update(EditConfig $request)
|
|
{
|
|
Login::admin(['config-config']);
|
|
$config = Config::where('id', $request->post('id'))->first();
|
|
if (!$config) Yo::error_echo(100001, ['配置']);
|
|
$config->name = $request->post('name');
|
|
$config->value = $request->post('value');
|
|
$config->type = $request->post('type');
|
|
$config->client = $request->post('client');
|
|
$config->login = $request->post('login');
|
|
$config->remark = $request->post('remark') ?? '';
|
|
$config->save();
|
|
if (in_array($config->type, [3, 4, 5])) $config->value = json_decode($config->value, true);
|
|
return Yo::echo([
|
|
'info' => $config
|
|
]);
|
|
}
|
|
|
|
public function delete(Request $request)
|
|
{
|
|
Login::admin(['config-config']);
|
|
$config = Config::where('id', $request->post('id'))->first();
|
|
if (!$config) Yo::error_echo(100001, ['配置']);
|
|
$config->delete();
|
|
if (in_array($config->type, [3, 4, 5])) $config->value = json_decode($config->value, true);
|
|
return Yo::delete_echo($config->id);
|
|
}
|
|
|
|
public function list()
|
|
{
|
|
Login::admin(['config-config']);
|
|
$config = Config::get();
|
|
foreach ($config as $item) {
|
|
if (in_array($item->type, [3, 4, 5])) $item->value = json_decode($item->value, true);
|
|
}
|
|
return Yo::echo([
|
|
'list' => $config
|
|
]);
|
|
}
|
|
|
|
public function get(Request $request)
|
|
{
|
|
$client = $request->get('client');
|
|
if (!$client) $client = 'public';
|
|
$client_number = 0;
|
|
switch ($client) {
|
|
case 'admin':
|
|
$client_number = 1;
|
|
Login::admin_check();
|
|
break;
|
|
}
|
|
$config_arr = $request->post('config_arr');
|
|
if (!$config_arr) $config_arr = [];
|
|
$configs = $this->getConfigList($config_arr, $client_number);
|
|
return Yo::echo($configs);
|
|
}
|
|
|
|
public function getConfigList($arr, $client)
|
|
{
|
|
$config_arr = [];
|
|
foreach ($arr as $item) $config_arr[$item] = '';
|
|
$config_db = Config::whereIn('name', $arr);
|
|
if (!Login::$info) $config_db->where('login', 2);
|
|
if ($client != 0) $config_db->whereIn('client', [0, $client]);
|
|
$config = $config_db->get();
|
|
foreach ($config as $item) {
|
|
$value = $item->value;
|
|
if (in_array($item->type, [3, 4, 5])) {
|
|
$value = json_decode($value, true);
|
|
}
|
|
$config_arr[$item->name] = $value;
|
|
}
|
|
return $config_arr;
|
|
}
|
|
}
|