Przeglądaj źródła

排版时间段设置

Swdz-WangHaiJun 4 lat temu
rodzic
commit
6a03ebc2e7

+ 118 - 0
app/Admin/Controllers/Config/ConfigController.php

xqd
@@ -0,0 +1,118 @@
+<?php
+
+namespace App\Admin\Controllers\Config;
+
+use App\Base_Area;
+use App\Models\SystemConfig;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+/**
+ * @author pxwei
+ * Class ConfigController
+ * @package App\Admin\Controllers\City
+ */
+class ConfigController extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '配置管理';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new SystemConfig);
+
+        $grid->disableCreateButton(false);
+        $grid->column('id', __('ID'))->sortable();
+        $grid->column('group', __('分组'))->editable();
+        $grid->column('key', __('键'))->editable();
+        $grid->column('value', __('值'))->display(function (){
+            if (strlen($this->value)>30){
+                return mb_substr($this->value,0,20).'...';
+            }
+            return $this->value;
+        })->modal('值',function (){
+            return $this->value;
+        })->copyable();
+
+        $grid->column('chinese', __('中文名'))->editable();
+        $grid->column('fieldType', __('类型'))->editable('select',SystemConfig::getType());
+        $grid->column('comment', __('说明'))->editable();
+        $grid->column('sort', __('排序'))->editable()->sortable();
+        $grid->column('updated_at', __('更新时间'))->sortable();
+
+        $grid->filter(function (Grid\Filter $filter){
+            $filter->disableIdFilter();
+            $filter->column(1/2, function ($filter) {
+                $filter->like('group','分组');
+                $filter->like('key','键');
+
+            });
+            $filter->column(1/2, function ($filter) {
+                $filter->like('value','值');
+
+            });
+
+
+
+        });
+
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed   $id
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        $show = new Show(SystemConfig::findOrFail($id));
+
+        $show->field('id', __('ID'));
+        $show->field('group', __('分组'));
+        $show->field('key', __('key'));
+        $show->field('value', __('value'));
+        $show->field('fieldType', __('类型'))->using(SystemConfig::getType());
+        $show->field('chinese', __('标签名称'));
+        $show->field('comment', __('说明'));
+        $show->field('created_at', __('Created at'));
+        $show->field('updated_at', __('Updated at'));
+
+        return $show;
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        $form = new Form(new SystemConfig);
+        $form->display('id', __('ID'));
+        $form->text('group', __('group/分组'));
+//        $form->select('group', __('group/分组'))->options(SystemConfig::getGroup());
+        $form->text('key', __('key/键'));
+        $form->text('chinese', __('Label/标签名词'))->help('中文标签名词,方便用户查看');
+        $form->number('sort', __('Sort/排序'))->help('排序,越大越前')->default(0);
+        $form->select('fieldType', __('Type/字段类型'))->options(SystemConfig::getType());
+        $form->text('comment', __('comment/配置描述'));
+        $form->textarea('value', __('value/内容'));
+        $form->display('created_at', __('Created At'));
+        $form->display('updated_at', __('Updated At'));
+
+        return $form;
+    }
+}

+ 307 - 0
app/Admin/Controllers/Config/FormController.php

xqd
@@ -0,0 +1,307 @@
+<?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']);
+    }
+
+}

+ 4 - 1
app/Admin/routes.php

xqd
@@ -26,9 +26,12 @@ Route::group([
     $router->resource('docters_management', DoctorManagementController::class);
     $router->resource('users', UserListController::class);
     $router->resource('user_patients', UserPatientsController::class);
-
     $router->resource('service_applys',ServiceapplysController::class);
 
+    $router->resource('/setting', 'Config\ConfigController');
+    $router->get('/setting_form', 'Config\FormController@form');
+    $router->post('/setting_form_save', 'Config\FormController@setting_form_save');
+
     $router->resource('user_orders', UserServiceController::class);
     $router->resource('user_balance_logs', UserBalanceLogController::class);
 

+ 70 - 1
app/Http/Controllers/ScheDuleController.php

xqd xqd xqd
@@ -8,7 +8,9 @@ namespace App\Http\Controllers;
 use App\Models\CommunitySchedule;
 use App\Models\Schedule;
 use App\Models\SchedulePeriod;
+use App\Models\SystemConfig;
 use App\Models\TimePeriod;
+use Encore\Admin\Admin;
 use Illuminate\Support\Facades\DB;
 
 class ScheDuleController  extends Controller
@@ -18,9 +20,75 @@ class ScheDuleController  extends Controller
     {
 
         $time  = TimePeriod::get(['id','start_time_period','end_time_period']);
-        $arrays = [1,3,4,12,16,10,20];
+
+        $set_time = request('Schedulingtime');//时间
+        $org_id = request('mechanism');//机构
+        $docter_id = request('docter_id');//医生
+
+
+        $set_time = '2020-11-10至2020-11-16';
         $org_id = 1;
         $docter_id = 1;
+
+        if(empty($set_time) || empty($org_id) || empty($docter_id)){
+            return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
+        } else{
+            echo 'what happend';
+        }
+
+
+        $all_time = explode('至',$set_time);
+        if(count($all_time) <2){
+            return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
+        }
+        $sche_dule = Schedule::where('organization_id','!=','')
+                               ->where(['docter_id'=>$docter_id,'schedule_date'=>$all_time[0]])
+                               ->pluck('id');
+        $sche_dule_arr = [
+            [
+                'date'=>"上午",
+                'mondy'=>true,
+                'tuesday'=>true,
+                'wednesday'=>true,
+                'thursday'=>true,
+                'friday'=>true,
+                'saturday'=>true,
+                'sunday'=>true,
+            ],
+            [
+                'date'=>"下午",
+                'mondy'=>true,
+                'tuesday'=>true,
+                'wednesday'=>true,
+                'thursday'=>true,
+                'friday'=>true,
+                'saturday'=>true,
+                'sunday'=>true,
+            ],
+            [
+                'date'=>"晚上",
+                'mondy'=>true,
+                'tuesday'=>true,
+                'wednesday'=>true,
+                'thursday'=>true,
+                'friday'=>true,
+                'saturday'=>true,
+                'sunday'=>true,
+            ]
+        ];
+
+        if(empty($sche_dule)){
+            return ['status'=>200,'msg'=>'ok','data'=>['schedule'=>$sche_dule_arr,'org_id'=>$org_id,'docter_id'=>$docter_id]];
+        }
+        foreach ($sche_dule as
+        ){
+            $org_schdule = SchedulePeriod::where(['schedule_id'=>$org_id,''])->get()->GroupBy('organization_id');
+        }
+        $schedule_config = SystemConfig::get('docter_config');
+        dd($schedule_config);
+
+
+
         $community = CommunitySchedule::where('org_id',$org_id)->orderBy('day_type')->pluck('times_id','day_type');
         $time_array = [[],[],[],[],[],[],[]];
         foreach ($community as $key => $ids){
@@ -48,6 +116,7 @@ class ScheDuleController  extends Controller
             }
         }
         $data['docter'] = $docter_schedule;
+        $data['role'] = 1;
         return  (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
     }
 

+ 17 - 0
app/Models/CommunitySchedule.php

xqd
@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class CommunitySchedule extends Model
+{
+    //
+
+    public function getTimesIdAttribute($value)
+    {
+        return explode(',', $value);
+    }
+
+
+}

+ 78 - 0
app/Models/SystemConfig.php

xqd
@@ -0,0 +1,78 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * Class System_Config
+ * @package App
+ */
+
+class SystemConfig extends Model
+{
+    //
+    protected $table = "system_config";
+    protected $guarded = [];
+    static $groups = [
+        'ali_config'=>'阿里云',
+        'docter_config'=>'医生',
+        'user_config'=>'用户',
+        'schedule_config'=>'排班'
+    ];
+    const Field_textarea = 0,Filed_richText = 1,Field_Json = 2,
+        Field_Switch = 3,Field_Time = 4,Field_File = 5,
+        Field_Checkbox = 6,Field_Json_Array = 7,Field_Image = 8;
+
+    private static $_fieldType = [
+        self::Field_textarea =>'纯文本',
+        self::Filed_richText =>'富文本',
+        self::Field_Json =>'JSON',
+        self::Field_Switch =>'开关',
+        self::Field_Time =>'时间',
+        self::Field_File =>'文件',
+        self::Field_Checkbox =>'选择框',
+        self::Field_Json_Array =>'数组JSON',
+        self::Field_Image =>'图片',
+    ];
+
+    protected static function getType(){
+        return self::$_fieldType;
+    }
+    protected static function getGroup(){
+        return self::$groups;
+    }
+
+    /**
+     * @param String $group
+     * @param String $key
+     * @param String $default
+     * @return array|String
+     */
+    public static function get(string $group, string $key = '', string $default = "")
+    {
+        $query = self::where('group', $group);
+        if ($key) {
+            $res = $query->where('key', $key)->first(['value'])->value ?? $default;
+            return $res;
+        } else {
+            $res =  $query->get(['key', 'value']);
+            $arr = [];
+            foreach ($res as $index => $item) {
+                $arr[$item['key']] = $item['value'];
+            }
+            return $arr;
+        }
+    }
+
+    /**
+     * @param String $group
+     * @param String $key
+     * @param String $value
+     * @return int
+     */
+    public static function set(string $group, string $key, string $value)
+    {
+        return self::where([['group', $group], ['key', $key]])->update(['value' => $value]);
+    }
+}