gorden пре 11 месеци
родитељ
комит
0373427668

+ 6 - 0
app/admin/controller/order/AppointmentController.php

@@ -22,4 +22,10 @@ class AppointmentController
 
         return AppointmentService::select($request);
     }
+
+
+    public function confirm($id): Response
+    {
+        return AppointmentService::confirm($id);
+    }
 }

+ 52 - 4
app/admin/controller/sys_manage/ConfigController.php

@@ -114,10 +114,10 @@ class ConfigController
     public function bottomMenuSave(Request $request)
     {
         try {
-            SysConfig::where('config_name', 'APP底部菜单')->update(['config_value_json'=>json_encode($request->post())]);
+            SysConfig::where('config_name', 'APP底部菜单')->update(['config_value_json' => json_encode($request->post())]);
 
             return json_success('success');
-        }catch (\Exception $e){
+        } catch (\Exception $e) {
             return json_fail('APP底部菜单保存失败');
         }
     }
@@ -132,11 +132,59 @@ class ConfigController
     public function navMenuSave(Request $request)
     {
         try {
-            SysConfig::where('config_name', 'APP导航菜单')->update(['config_value_json'=>json_encode($request->post())]);
+            SysConfig::where('config_name', 'APP导航菜单')->update(['config_value_json' => json_encode($request->post())]);
 
             return json_success('success');
-        }catch (\Exception $e){
+        } catch (\Exception $e) {
             return json_fail('APP底部菜单保存失败');
         }
     }
+
+    public function paramsList(Request $request)
+    {
+        $type = $request->get('type', '');
+
+        return ConfigService::getParams($this->getType($type));
+    }
+
+    public function paramsSave(Request $request)
+    {
+        return ConfigService::paramsSave($request, $this->getType($request->post('type', '')));
+    }
+
+    private function getType($type)
+    {
+        switch ($type) {
+            case 'sys':
+                return 'sys';
+                break;
+            case 'pay':
+                return 'app-pay-allinpay';
+                break;
+            case 'msg':
+                return 'app-sms-aliyun';
+                break;
+            case 'face':
+                return 'app-face-aliyun';
+                break;
+            case 'ocr':
+                return 'app-cert-ocr-aliyun';
+                break;
+            case 'ws':
+                return 'app-websocket';
+                break;
+            case 'shortcutMenu':
+                return 'app-menu-shortcut';
+                break;
+            case 'navigationMenu':
+                return 'app-menu-navigation';
+                break;
+            case 'footerMenu':
+                return 'app-menu-footer';
+                break;
+            default:
+                return '';
+                break;
+        }
+    }
 }

+ 6 - 5
app/admin/controller/sys_manage/MenuController.php

@@ -65,7 +65,7 @@ class MenuController extends Curd
 
             try {
                 $data = $this->inputFilter($data);
-                $this->doInsert($data);
+                $id = $this->doInsert($data);
             } catch (BusinessException $customException) {
                 return json_fail($customException->getMessage());
             } catch (\Exception $exception) {
@@ -73,7 +73,7 @@ class MenuController extends Curd
             }
             // 写操作日志
             _syslog("添加菜单", "添加菜单【" . $data['menu_name'] . '】', $data);
-            return json_success('success');
+            return json_success('success', ['id' => $id]);
         } else if ($operate == 'update') {
             $data['goods_id'] = $params['id'];
             $goodsId = $data['goods_id'];
@@ -92,7 +92,7 @@ class MenuController extends Curd
             // 记录日志
             _syslog("修改菜单", "修改菜单【" . $data['menu_title'] . '】', $data);
 
-            return json_success('success');
+            return json_success('success', ['id' => $params['id']]);
         }
 
         return json_fail('请求失败~');
@@ -104,7 +104,6 @@ class MenuController extends Curd
      * @Date 2024/3/12 14:15
      *
      * @param array $data
-     * @return void
      * @throws BusinessException\
      */
     protected function doInsert(array $data)
@@ -127,6 +126,8 @@ class MenuController extends Curd
             $model->menu_path = $prePath . $model->menu_id . '/';
             $model->save();
             Db::commit();
+
+            return $model->menu_id;
         } catch (\Exception $e) {
             Db::rollBack();
             throw new BusinessException('数据写入失败~');
@@ -145,7 +146,7 @@ class MenuController extends Curd
         foreach ($data as $key => $val) {
             $model->{$key} = $val;
         }
-        if ($model->menu_pid != $data['menu_pid']){
+        if ($model->menu_pid != $data['menu_pid']) {
             $parentMenu = SysMenu::getParent($data['menu_pid']);
             $prePath = $parentMenu->menu_path;
             $model->menu_path = $prePath . $model->menu_id . '/';

+ 132 - 0
app/admin/controller/sys_manage/QuestionController.php

@@ -0,0 +1,132 @@
+<?php
+
+namespace app\admin\controller\sys_manage;
+
+use app\admin\validate\sys_manage\AdvValidate;
+use app\admin\validate\sys_manage\ArticleValidate;
+use app\admin\validate\sys_manage\ContentValidate;
+use app\controller\Curd;
+use app\model\Adv;
+use app\model\Article;
+use app\model\Content;
+use support\exception\BusinessException;
+use support\Request;
+use support\Response;
+
+class QuestionController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new Content();
+        $this->validate = true;
+        $this->validateClass = new ContentValidate();
+    }
+
+    /** 列表
+     * @Desc
+     * @Author Gorden
+     * @Date 2024/3/5 10:00
+     *
+     * @param Request $request
+     * @return Response
+     * @throws \support\exception\BusinessException
+     */
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $where['content_category'] = 'WELLNESSQUESTION';
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'content_sort';
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    public function afterQuery($items)
+    {
+        foreach ($items as &$item) {
+            if (!empty($item->content_config_json)) {
+                $contentConfigJson = json_decode($item->content_config_json, true);
+                $questionArray = [];
+                foreach ($contentConfigJson as $question) {
+                    $questionArray[] = [
+                        [
+                            'label' => '序号',
+                            'value' => $question['field'],
+                        ],
+                        [
+                            'label' => '题目',
+                            'value' => $question['question'],
+                        ]
+                    ];
+                }
+                $item->content_config_json = $questionArray;
+            }else{
+                $item->content_config_json = [];
+            }
+        }
+
+        return $items;
+    }
+
+    /**
+     * @Desc
+     * @Author Gorden
+     * @Date 2024/3/27 10:24
+     *
+     * @param Request $request
+     * @return array
+     * @throws \support\exception\BusinessException
+     */
+    protected function insertInput(Request $request): array
+    {
+        $data = $this->inputFilter($request->post());
+        $data['content_category'] = 'WELLNESSQUESTION';
+        $contentConfigJson = [];
+        if (!empty($request->post('question'))) {
+            $questions = $request->post('question');
+            foreach ($questions as $question) {
+                if (!empty($question[1]['value'])){
+                    $contentConfigJson[] = [
+                        'field' => $question[0]['value'],
+                        'question' => $question[1]['value'],
+                    ];
+                }
+            }
+            usort($question, function ($a, $b) {
+                return $a['field'] - $b['field'];
+            });
+
+            $data['content_config_json'] = json_encode($contentConfigJson);
+        }
+
+        return $data;
+    }
+
+    protected function updateInput(Request $request): array
+    {
+        $primary_key = $this->model->getKeyName();
+        $id = $request->post($primary_key);
+        $data = $this->inputFilter($request->post());
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        $contentConfigJson = [];
+        if (!empty($request->post('question'))) {
+            $questions = $request->post('question');
+            foreach ($questions as $question) {
+                $contentConfigJson[] = [
+                    'field' => $question[0]['value'],
+                    'question' => $question[1]['value'],
+                ];
+            }
+            usort($contentConfigJson, function ($a, $b) {
+                return $a['field'] - $b['field'];
+            });
+
+            $data['content_config_json'] = json_encode($contentConfigJson);
+        }
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+}

+ 19 - 0
app/admin/service/order/AppointmentService.php

@@ -39,8 +39,27 @@ class AppointmentService
         foreach ($rows as &$row) {
             $row->goods_cover = getenv('STORAGE_DOMAIN') . $row->goods_cover;
             $row->goods_sku_specs_json = !empty($row->goods_sku_specs_json) ? json_decode($row->goods_sku_specs_json, true) : [];
+            $row->appointment_addtimes = date('Y-m-d H:i:s', $row->appointment_addtimes);
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
     }
+
+    public static function confirm($id)
+    {
+        $appointment = Appointment::where('appointment_id', $id)->where('appointment_status', 'WAITING')->first();
+        if (!$appointment) {
+            return json_fail('数据异常');
+        }
+
+        try {
+            $appointment->appointment_status = 'PENDING';
+            $appointment->save();
+
+            return json_success('操作成功');
+        } catch (\Exception $e) {
+            dump($e->getMessage());
+            return json_fail("操作失败");
+        }
+    }
 }

+ 79 - 0
app/admin/service/sys_manage/ConfigService.php

@@ -3,6 +3,7 @@
 namespace app\admin\service\sys_manage;
 
 use app\model\SysConfig;
+use support\Db;
 use support\Request;
 
 class ConfigService
@@ -151,4 +152,82 @@ class ConfigService
 
         return json_success('配置删除成功');
     }
+
+    /**
+     * @Desc APP 参数读取
+     * @Author Gorden
+     * @Date 2024/4/15 13:54
+     *
+     * @param $type
+     * @return \support\Response|void
+     */
+    public static function getParams($type)
+    {
+        if ($type == 'sys') {
+            $res = SysConfig::where('config_key', 'app-name')
+                ->orWhere('config_key', 'app-version')
+                ->orWhere('config_key', 'app-common-css')
+                ->get()
+                ->toArray();
+            $data = [];
+            foreach ($res as $item) {
+                $key = str_replace('-', '_', $item['config_key']);
+                $data[$key] = $item['config_value'];
+            }
+            return json_success('', $data);
+        } else {
+            $res = SysConfig::where('config_key', $type)->select('config_status', 'config_value_json', 'config_key', 'config_value')->first();
+            if (!empty($res)) {
+                $res = $res->toArray();
+                $valueJson = json_decode($res['config_value_json'], true);
+                if (!in_array($res['config_key'], ['app-menu-shortcut', 'app-menu-navigation', 'app-menu-footer'])) {
+                    $data['status'] = $res['config_status'];
+                    $data['config_name'] = $res['config_value'];
+                    foreach ($valueJson as $key => $item) {
+                        $key = str_replace('-', '_', $key);
+                        $data[$key] = $item;
+                    }
+                } else {
+                    $data = $valueJson;
+                }
+
+                return json_success('', $data);
+            }
+        }
+    }
+
+    public static function paramsSave(Request $request, $type)
+    {
+        $params = $request->post();
+        try {
+            Db::beginTransaction();
+            if ($params['type'] == 'sys') {
+                SysConfig::where('config_key', 'app-name')->update(['config_value' => $params['app_name']]);
+                SysConfig::where('config_key', 'app-version')->update(['config_value' => $params['app_version']]);
+                SysConfig::where('config_key', 'app-common-css')->update(['config_value' => $params['app_common_css']]);
+            } else if (!in_array($params['type'], ['shortcutMenu', 'navigationMenu', 'footerMenu'])) {
+                $data = [
+                    'config_status' => $params['status'],
+                    'config_value' => $params['config_name'],
+                ];
+                unset($params['status'], $params['type'], $params['config_name']);
+                $data['config_value_json'] = json_encode($params);
+
+                SysConfig::where('config_key', $type)->update($data);
+            } else {
+                foreach ($params['config_value_json'] as $item) {
+                    unset($item['isSet']);
+                    $data['config_value_json'][] = $item;
+                }
+                SysConfig::where('config_key', $type)->update($data);
+            }
+
+            Db::commit();
+
+            return json_success('success');
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return json_fail('保存失败');
+        }
+    }
 }

+ 16 - 6
app/admin/service/sys_manage/FieldService.php

@@ -45,6 +45,10 @@ class FieldService
             $query->where('field_table', 'like', '%' . $tableName . '%');
         })->count();
 
+        foreach ($rows as &$row){
+            $row['field_refer_json'] = json_decode($row['field_refer_json']);
+        }
+
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
     }
 
@@ -76,6 +80,9 @@ class FieldService
      */
     public static function addField($params)
     {
+        if (!empty($params['field_refer_json']['key'])){
+            $params['field_refer_json']['val'] = $params['field_refer_json']['key'];
+        }
         Db::beginTransaction();
         try {
             $data = [
@@ -89,9 +96,9 @@ class FieldService
                 'field_form_key' => $params['field_form_key'] ?? '',
                 'field_form_type' => $params['field_form_type'] ?? '',
                 'field_form_default' => $params['field_form_default'] ?? '',
-                'field_refer_json' => !empty($params['field_refer_json']) ? $params['field_refer_json'] : '{}',
+                'field_refer_json' => !empty($params['field_refer_json']) ? json_encode($params['field_refer_json']) : [],
                 'field_remark' => $params['field_remark'] ?? '',
-                'field_extend_json' => !empty($params['field_extend_json']) ? $params['field_extend_json'] : '{}',
+                'field_extend_json' => !empty($params['field_extend_json']) ? $params['field_extend_json'] : [],
                 'field_addtimes' => time()
             ];
             // 入库
@@ -148,9 +155,9 @@ class FieldService
                 'field_form_key' => $params['field_form_key'],
                 'field_form_type' => $params['field_form_type'],
                 'field_form_default' => $params['field_form_default'],
-                'field_refer_json' => !empty($params['field_refer_json']) ? $params['field_refer_json'] : '{}',
+                'field_refer_json' => !empty($params['field_refer_json']) ? $params['field_refer_json'] : [],
                 'field_remark' => $params['field_remark'],
-                'field_extend_json' => !empty($params['field_extend_json']) ? $params['field_extend_json'] : '{}'
+                'field_extend_json' => !empty($params['field_extend_json']) ? $params['field_extend_json'] : []
             ];
             // 更新
             SysField::where('field_id', $id)->update($data);
@@ -173,8 +180,10 @@ class FieldService
             }
             // 表变动
             if ($field->field_table != $params['field_table']) {
-                // 删原表字段
-                Util::db()->statement("ALTER TABLE " . getenv('DB_PREFIX') . $field->field_table . " DROP COLUMN `$field->field_column_key`");
+                if (!empty($field->field_table)){
+                    // 删原表字段
+                    Util::db()->statement("ALTER TABLE " . getenv('DB_PREFIX') . $field->field_table . " DROP COLUMN `$field->field_column_key`");
+                }
                 // 在新表创建
                 Util::schema()->table($params['field_table'], function (Blueprint $table) use ($column) {
                     self::createColumn($table, $column);
@@ -186,6 +195,7 @@ class FieldService
             Db::commit();
         } catch (\Exception $e) {
             Db::rollBack();
+//            dump($e->getTrace());
             return json_fail('修改字段失败');
         }
 

+ 3 - 3
app/admin/validate/sys_manage/FieldValidate.php

@@ -8,16 +8,16 @@ class FieldValidate extends Validate
 {
     protected $rule = [
         'field_status' => 'require|in:ACTIVED,DISABLED',
-        'field_category' => 'in:NORMAL,OTHER',
+        'field_category' => 'in:NORMAL,PAGE,OTHER',
         'field_name' => 'require|chsDash',
         'field_table' => 'require|alphaDash',
         'field_column_key' => 'alphaDash',
         'field_column_datatype' => 'in:string,decimal,text,dateTime',
         'field_column_default' => 'checkDefault',
-        'field_form_key' => 'in:id,name',
+//        'field_form_key' => 'in:id,name',
         'field_form_type' => 'alphaDash',
 //        'field_form_default' => 'chsDash',
-        'field_refer_json' => 'isJson',
+//        'field_refer_json' => 'isJson',
 //        'field_remark' => 'chsDash',
         'field_extend_json' => 'isJson'
     ];

+ 1 - 0
app/controller/Curd.php

@@ -426,6 +426,7 @@ class Curd
                 $data[$col] = null;
             }
             if (is_array($item)) {
+                dump($col,$item);
                 $data[$col] = implode(',', $item);
             }
             if ($item != '' && (strpos(strtolower($columns[$col]), 'varchar') || strpos(strtolower($columns[$col]), 'text'))) {

+ 1 - 1
app/model/Appointment.php

@@ -18,7 +18,7 @@ class Appointment extends Model
 
     const CREATED_AT = 'appointment_addtimes';
 
-    const UPDATED_AT = 'null';
+    const UPDATED_AT = null;
 
     protected function serializeDate(DateTimeInterface $date)
     {

+ 20 - 6
route/admin.php

@@ -133,13 +133,18 @@ Route::group('/admin', function () {
             Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\ConfigController::class, 'updateConfig']);
             Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\ConfigController::class, 'updateStatus']);
             Route::delete('/delete', [\app\admin\controller\sys_manage\ConfigController::class, 'delConfig']);
+//
+//            // 底部菜单
+//            Route::get('/bottomMenuList', [\app\admin\controller\sys_manage\ConfigController::class, 'bottomMenuList']);
+//            Route::post('/bottomMenuSave', [\app\admin\controller\sys_manage\ConfigController::class, 'bottomMenuSave']);
+//            // 导航菜单
+//            Route::get('/navMenuList', [\app\admin\controller\sys_manage\ConfigController::class, 'navMenuList']);
+//            Route::post('/navMenuSave', [\app\admin\controller\sys_manage\ConfigController::class, 'navMenuSave']);
+
+            // 参数配置
+            Route::get('/paramsList', [\app\admin\controller\sys_manage\ConfigController::class, 'paramsList']);
+            Route::post('/paramsSave', [\app\admin\controller\sys_manage\ConfigController::class, 'paramsSave']);
 
-            // 底部菜单
-            Route::get('/bottomMenuList', [\app\admin\controller\sys_manage\ConfigController::class, 'bottomMenuList']);
-            Route::post('/bottomMenuSave', [\app\admin\controller\sys_manage\ConfigController::class, 'bottomMenuSave']);
-            // 导航菜单
-            Route::get('/navMenuList', [\app\admin\controller\sys_manage\ConfigController::class, 'navMenuList']);
-            Route::post('/navMenuSave', [\app\admin\controller\sys_manage\ConfigController::class, 'navMenuSave']);
         });
         /* 运费模板管理 */
         Route::group('/postageTemplate', function () {
@@ -181,6 +186,14 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+        Route::group('/question', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\QuestionController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\sys_manage\QuestionController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\sys_manage\QuestionController::class, 'update']);
+            Route::delete('/delete', [\app\admin\controller\sys_manage\QuestionController::class, 'delete']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
         Route::group('/menu', function () {
             Route::get('/my', [\app\admin\controller\sys_manage\MenuController::class, 'myMenu']);
             Route::get('/list', [\app\admin\controller\sys_manage\MenuController::class, 'select']);
@@ -620,6 +633,7 @@ Route::group('/admin', function () {
         // 预约订单
         Route::group('/appointment', function () {
             Route::get('/list', [\app\admin\controller\order\AppointmentController::class, 'select']);
+            Route::post('/confirm/{id:[0-9a-zA-Z]+}', [\app\admin\controller\order\AppointmentController::class, 'confirm']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);