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.
206 lines
5.8 KiB
PHTML
206 lines
5.8 KiB
PHTML
2 years ago
|
<?php
|
||
|
namespace App\Libs;
|
||
|
|
||
|
use App\Models\Setting;
|
||
|
|
||
|
use Carbon\Carbon;
|
||
|
use Illuminate\Http\Request;
|
||
|
use Illuminate\Support\Facades\DB;
|
||
|
|
||
|
trait TraitSetting
|
||
|
{
|
||
|
/**
|
||
|
* 설정목록 가져오기
|
||
|
*
|
||
|
* @param Request $request
|
||
|
* @return array
|
||
|
*/
|
||
|
protected function getSettingList(Request $request)
|
||
|
{
|
||
|
$list = Setting::query()
|
||
|
->with('user')
|
||
|
->where(function ($query) use ($request) {
|
||
|
if ($request->filled('word')) {
|
||
|
if ($request->filled('field') && $request->field != 'all') {
|
||
|
$query->where($request->field, 'like', '%' . $request->word . '%');
|
||
|
} else {
|
||
|
$query->orWhere('name', 'like', '%'. $request->word .'%')
|
||
|
->orWhere('key', 'like', '%'. $request->word .'%')
|
||
|
->orWhere('value', 'like', '%'. $request->word .'%');
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
->orderBy('key')
|
||
|
->latest()
|
||
|
->get();
|
||
|
|
||
|
$search = $request->all();
|
||
|
|
||
|
$searchs = [
|
||
|
'all' => '통합검색',
|
||
|
'name' => '변수명',
|
||
|
'key' => '변수키',
|
||
|
'value' => '변수값'
|
||
|
];
|
||
|
|
||
|
$data = [
|
||
|
'mode' => 'list',
|
||
|
'data' => $list,
|
||
|
'search' => $search,
|
||
|
'searchs' => $searchs
|
||
|
];
|
||
|
|
||
|
return $data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 설정변수 가져오기
|
||
|
*
|
||
|
* @param int $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
protected function getSettingInfo($id = 0)
|
||
|
{
|
||
|
$data = Setting::query()
|
||
|
->with('user')
|
||
|
->where('id', $id)
|
||
|
->first();
|
||
|
|
||
|
return $data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 설정변수 등록
|
||
|
*
|
||
|
* @param Request $request
|
||
|
* @return array
|
||
|
*/
|
||
|
protected function createSetting(Request $request)
|
||
|
{
|
||
|
$id = $request->get('id', 0);
|
||
|
if ($id) {
|
||
|
$data = $this->getSettingInfo($id);
|
||
|
$data->mode = 'modify';
|
||
|
} else {
|
||
|
$data = new Setting;
|
||
|
$data->mode = 'add';
|
||
|
$data->system = 1;
|
||
|
}
|
||
|
|
||
|
return $data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 설정변수 저장
|
||
|
*
|
||
|
* @param Request $request
|
||
|
* @return mixed
|
||
|
*/
|
||
|
protected function storeSetting(Request $request)
|
||
|
{
|
||
|
return DB::transaction(function() use ($request) {
|
||
|
$rules = [
|
||
|
'name' => 'required|string|max:100',
|
||
|
'key' => 'required|string|max:30',
|
||
|
'value' => 'string',
|
||
|
'system' => 'integer'
|
||
|
];
|
||
|
|
||
|
$validator = $this->validation($request, $rules);
|
||
|
if ($validator !== true) {
|
||
|
return $this->sendResult($validator);
|
||
|
}
|
||
|
|
||
|
$mode = $request->get('mode', 'add');
|
||
|
|
||
|
$id = $request->get('id', 0);
|
||
|
$data = $this->getSettingInfo($id);
|
||
|
|
||
|
$postData = $request->only([
|
||
|
'name', 'key', 'value'
|
||
|
]);
|
||
|
$postData = array_map('setDefault', $postData);
|
||
|
|
||
|
$postData['system'] = $request->get('system', 0);
|
||
|
|
||
|
// 수정
|
||
|
if ($mode == 'modify') {
|
||
|
if (!$data) {
|
||
|
return $this->sendResult('해당 변수가 존재하지 않습니다.');
|
||
|
}
|
||
|
|
||
|
// 시스템 변수는 key값 수정 불가
|
||
|
if ($data->system && $data->key != $postData['key']) {
|
||
|
return $this->sendResult('시스템 변수는 변수키를 수정할 수 없습니다.');
|
||
|
}
|
||
|
|
||
|
$exist = Setting::query()->whereNotIn('id', [$id])->where('key', $postData['key'])->first();
|
||
|
if ($exist) {
|
||
|
return $this->sendResult('이미 등록된 변수키입니다.');
|
||
|
}
|
||
|
|
||
|
$appends = [
|
||
|
'updated_id' => auth()->user()->id,
|
||
|
'updated_at' => (string)Carbon::now()
|
||
|
];
|
||
|
$postData = array_merge($postData, $appends);
|
||
|
|
||
|
$data->fill($postData);
|
||
|
$data->save();
|
||
|
} else {
|
||
|
$exist = Setting::query()->where('key', $postData['key'])->first();
|
||
|
if ($exist) {
|
||
|
return $this->sendResult('이미 등록된 변수키입니다.');
|
||
|
}
|
||
|
|
||
|
$appends = [
|
||
|
'created_id' => auth()->user()->id,
|
||
|
'created_at' => (string)Carbon::now()
|
||
|
];
|
||
|
$postData = array_merge($postData, $appends);
|
||
|
|
||
|
$data = Setting::query()->create($postData);
|
||
|
|
||
|
if (!$data) {
|
||
|
return $this->sendResult('변수 등록에 실패했습니다.');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($mode == 'add') {
|
||
|
$message = '변수가 등록되었습니다.';
|
||
|
} else {
|
||
|
$message = '변수정보가 수정되었습니다.';
|
||
|
}
|
||
|
|
||
|
return $this->sendResult($message, 'success');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 변수 삭제
|
||
|
*
|
||
|
* @param Request $request
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function deleteSetting(Request $request)
|
||
|
{
|
||
|
return DB::transaction(function() use ($request) {
|
||
|
$id = $request->get('id', 0);
|
||
|
$data = $this->getSettingInfo($id);
|
||
|
|
||
|
// 시스템 변수 삭제 불가
|
||
|
if ($data->system) {
|
||
|
return $this->sendResult('시스템 변수는 삭제할 수 없습니다.');
|
||
|
}
|
||
|
|
||
|
if (!$data) {
|
||
|
return $this->sendResult('해당 변수가 존재하지 않습니다.');
|
||
|
}
|
||
|
|
||
|
$data->delete();
|
||
|
|
||
|
return $this->sendResult('변수가 삭제되었습니다.', 'success');
|
||
|
});
|
||
|
}
|
||
|
}
|