123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- <?php
- namespace App\Admin\Controllers\Config;
- use App\Model\BaseArea;
- use App\Model\Communities;
- use App\Models\SystemConfig;
- use App\Http\Controllers\Controller;
- use Encore\Admin\Form\Tab;
- use Encore\Admin\Grid;
- use Encore\Admin\Layout\Content;
- use Encore\Admin\Widgets\Form;
- use Encore\Admin\Widgets\Table;
- /**
- * @author pxwei
- * Class ConfigController
- * @package App\Admin\Controllers\Form
- */
- class FormController extends Controller
- {
- public function form()
- {
- $dbs = SystemConfig::orderby('sort','desc')->orderby('created_at','asc')->get(['id','group','key','value','comment','chinese','fieldType'])->toArray();
- $configs = [];
- foreach ($dbs as $db){
- $configs[$db['group']][] = $db;
- }
- $tab = new \Encore\Admin\Widgets\Tab();
- foreach ($configs as $k => $config){
- $form = new Form();
- $form->action("/admin/setting_form_save");
- foreach ($config as $value){
- switch ($value['fieldType']){
- case SystemConfig::Field_textarea:
- $form->textarea($value['group'].'____'.$value['key'],$value['chinese'])->help($value['comment'])->rows(1)->default($value['value']);
- break;
- case SystemConfig::Filed_richText:
- $form->editor($value['group'].'____'.$value['key'],$value['chinese'])->default($value['value']);
- break;
- case SystemConfig::Field_Time:
- $form->time($value['group'].'____'.$value['key'],$value['chinese'])->default($value['value'])->format('HH:mm');
- break;
- case SystemConfig::Field_File:
- $form->file($value['group'].'____'.$value['key'],$value['chinese'])->help('当前文件:'.$value['value']);
- break;
- case SystemConfig::Field_Switch:
- $states = [
- 'on' => ['value' => 1, 'text' => '开', 'color' => 'success'],
- 'off' => ['value' => 0, 'text' => '关', 'color' => 'danger'],
- ];
- $s = $value['value'];
- if ($value['key']=='use_personal')
- {
- $s = $s==0?1:0;
- }
- $form->switch($value['group'].'____'.$value['key'].'____Switch',$value['chinese'])->help($value['comment'])->default($s)->states($states);
- break;
- case SystemConfig::Field_Checkbox:
- $data = [];
- $default = [];
- foreach (json_decode($value['value'],true) as $v){
- $data[$v['key']] =$v['text'];
- if ($v['value'] == 1)
- $default[] = $v['key'];
- }
- $form->checkbox($value['group'].'____'.$value['key'].'____checkbox',$value['chinese'])->options($data)->default($default)->help($value['comment'])->canCheckAll();
- break;
- case SystemConfig::Field_Json:
- $json = json_decode($value['value'],true);
- if (!$json)
- $form->display('json',$value['chinese'])->default('字段JSON解析失败');
- else{
- $form->fieldset($value['chinese'].'_配置组', function (Form $form)use ($json,$value) {
- foreach ($json as $kk=> $v){
- $form->text($value['group'].'____'.$value['key'].'____J____'.$kk,$kk)->default($v);
- }
- });
- }
- break;
- case SystemConfig::Field_Json_Array:
- $json = json_decode($value['value'],true);
- if (!$json)
- $form->display('json',$value['chinese'])->default('数组JSON解析失败');
- else{
- $form->fieldset($value['chinese'].'_配置组', function (Form $form)use ($json,$value) {
- foreach ($json as $kk=> $v){
- $form->text($value['group'].'____'.$value['key'].'____JA____'.$kk,$v['text'])->default($v['value']);
- }
- });
- }
- break;
- case SystemConfig::Field_Image:
- $form->image($value['group'].'____'.$value['key'],$value['chinese'])->default($value['value']);
- }
- }
- $tab->add(SystemConfig::$groups[$k]??$k,$form->render());
- $form = null;
- }
- $c = new Content();
- return $c->title("配置")->description('设置')->row($tab->render());
- }
- public function setting_form_save()
- {
- $inputs = request()->input();
- unset($inputs['_token']);
- $data = [];
- $json = [];
- $jsonArr = [];
- foreach ($inputs as $k => $v){
- $groups = explode('____',$k);
- $num = count($groups);
- if ($num< 1)
- continue;
- else if ($num === 2){
- //普通字段配置
- SystemConfig::where(['group'=>$groups[0],'key'=>$groups[1]])->update(['value'=>$v]);
- }else if ($num === 3){
- if ($groups[2] == "Switch"){
- if ($v=="on")
- $v = 1;
- else
- $v = 0;
- if ($groups[1] =='use_personal')
- {
- $v = $v==0?1:0;
- }
- SystemConfig::where(['group'=>$groups[0],'key'=>$groups[1]])->update(['value'=>$v]);
- }else if ($groups[2] == "checkbox"){
- $origin_data = SystemConfig::get($groups[0],$groups[1]);
- $origin_data = json_decode($origin_data,true);
- foreach ($origin_data as $kk => $datum){
- $origin_data[$kk]['value'] =0;
- foreach ($v as $vv){
- if ($datum['key'] == $vv)
- $origin_data[$kk]['value'] =1;
- }
- }
- SystemConfig::where(['group'=>$groups[0],'key'=>$groups[1]])->update(['value'=>json_encode($origin_data)]);
- }
- }else if ($num == 4){
- if ($groups[2]=="JA"){
- $jsonArr[$groups[0]][$groups[1]][$groups[3]] = $v;
- }else{
- //JSON字段配置
- $json[$groups[0]][$groups[1]][$groups[3]] = $v;
- }
- }
- }
- if (count($json)>0){
- foreach ($json as $k =>$value){
- foreach ($value as $kk => $item){
- SystemConfig::where(['group'=>$k,'key'=>$kk])->update(['value'=>json_encode($item)]);
- }
- }
- }
- if (count($jsonArr)>0){
- foreach ($jsonArr as $k =>$value){
- foreach ($value as $kk => $item){
- $res = SystemConfig::where(['group'=>$k,'key'=>$kk])->first();
- if (!$res)
- continue;
- $json = json_decode($res['value'],true);
- foreach ($item as $kkk => $item2){
- $json[$kkk]['value'] = $item2;
- $res->update(['value'=>json_encode($json)]);
- }
- }
- }
- }
- $files = request()->file();
- foreach ($files as $key => $file){
- $groups = explode('____',$key);
- $file_name ='upload/SystemFiles/'.uniqid().'.'.$file->getClientOriginalExtension();
- file_put_contents(public_path($file_name),file_get_contents($file->getRealPath()));
- SystemConfig::where(['group'=>$groups[0],'key'=>$groups[1]])->update(['value'=>$file_name]);
- }
- admin_info('保存成功');
- return back();
- }
- public function setCommunity()
- {
- $id = request('pid')?:'1';
- $grid = new Grid(new BaseArea());
- $grid->model()->where('pid',$id);
- $c = new Content();
- return $c->title("配置")->description('设置')->body($grid->render());
- }
- public function setAreaById()
- {
- $id = request('id');
- $type = request('t');
- $m = request('m');
- if ($m == "0")
- {
- $rs = Communities::where('id',$id)->update(['is_door'=>$type]);
- if ($rs)
- {
- admin_toastr('设置成功','info');
- return back();
- }
- admin_toastr('设置失败','error');
- return back();
- }
- $rs = BaseArea::where('relation','like',"%{$id}%")->orwhere('id',$id)->update(['is_door'=>intval($type)]);
- $rs = BaseArea::where(['grade'=>5])->where('relation','like',"%{$id}%")->get(['id']);
- $ds = [];
- foreach ($rs as $r){
- $ds[] = $r['id'];
- }
- $rs = Communities::whereIn('area_id',$ds)->update(['is_door'=>intval($type)]);
- admin_toastr('设置成功','info');
- return back();
- }
- public function setPrice()
- {
- $id = request('pid');
- $key = request('key');
- $p = request('price');
- $m = request('m');
- $text = request('text');
- if ($m == "1")
- {
- $rs = Communities::where('id',$id)->update([$key=>($p/10)]);
- if ($rs)
- {
- return response()->json(['status'=>'ok']);
- }
- return response()->json(['status'=>'error']);
- }
- $rs = BaseArea::where('merger_name','like',"%{$text}%")->update([$key=>$p/10]);
- if(!$rs) return response()->json(['status'=>'error']);
- $rs = BaseArea::where('merger_name','like',"%{$text}%")->get(['id']);
- $ds = [];
- foreach ($rs as $r){
- $ds[] = $r['id'];
- }
- $rs = Communities::whereIn('area_id',$ds)->update([$key=>$p/10]);
- if ($rs)
- {
- return response()->json(['status'=>'ok']);
- }
- return response()->json(['status'=>'error']);
- }
- }
|