gorden 11 hónapja
szülő
commit
38fb3e528f

+ 29 - 6
app/admin/controller/client/MessageController.php

@@ -67,8 +67,8 @@ class MessageController extends Curd
         foreach ($items as &$item) {
             if (!empty($item['client_message_body_json'])) {
                 $bodyJson = json_decode($item['client_message_body_json'], true);
-                if (isset($bodyJson['body'])) {
-                    $item['client_message_body_json'] = $bodyJson['body'];
+                if (isset($bodyJson['content'])) {
+                    $item['client_message_body_json'] = $bodyJson['content'];
                 }
             }
         }
@@ -76,9 +76,32 @@ class MessageController extends Curd
         return $items;
     }
 
-    protected function insertInput(Request $request): array
+    public function insert(Request $request): Response
     {
-        $data = $this->inputFilter($request->post());
+        if ($this->validate && !$this->validateClass->scene('add')->check($request->post())) {
+            return json_fail($this->validateClass->getError());
+        }
+
+        try {
+            $params = $request->post();
+            $memberIds = $params['join_client_message_recv_member_id'];
+            foreach ($memberIds as $memberId){
+                $params['join_client_message_recv_member_id'] = $memberId;
+                $data = $this->insertInput($params);
+                $this->doInsert($data);
+            }
+        } catch (BusinessException $customException) {
+            return json_fail($customException->getMessage());
+        } catch (\Exception $e) {
+            dump($e->getMessage());
+            return json_fail('数据写入失败11');
+        }
+        return json_success('success');
+    }
+
+    protected function insertInput($params): array
+    {
+        $data = $this->inputFilter($params);
 
         if (!empty($data['client_message_sendtime'])) {
             $data['client_message_sendtime'] = date('Y-m-d H:i:s', strtotime($data['client_message_sendtime']));
@@ -87,7 +110,7 @@ class MessageController extends Curd
             $data['client_message_header_json'] = json_encode(['header' => $data['client_message_header_json']]);
         }
         if (!empty($data['client_message_body_json']) && !is_json($data['client_message_body_json'])) {
-            $data['client_message_body_json'] = json_encode(['body' => $data['client_message_body_json']]);
+            $data['client_message_body_json'] = json_encode(['content' => $data['client_message_body_json']]);
         }
         return $data;
     }
@@ -109,7 +132,7 @@ class MessageController extends Curd
             $data['client_message_header_json'] = json_encode(['header' => $data['client_message_header_json']]);
         }
         if (!empty($data['client_message_body_json']) && !is_json($data['client_message_body_json'])) {
-            $data['client_message_body_json'] = json_encode(['body' => $data['client_message_body_json']]);
+            $data['client_message_body_json'] = json_encode(['content' => $data['client_message_body_json']]);
         }
         unset($data[$primary_key]);
         return [$id, $data];

+ 17 - 2
app/admin/controller/sys_manage/FieldController.php

@@ -4,12 +4,20 @@ namespace app\admin\controller\sys_manage;
 
 use app\admin\service\sys_manage\FieldService;
 use app\admin\validate\sys_manage\FieldValidate;
+use app\controller\Curd;
+use app\model\Content;
 use app\model\SysField;
 use Illuminate\Support\Facades\Schema;
 use support\Request;
+use support\Response;
 
-class FieldController
+class FieldController extends Curd
 {
+    public function __construct()
+    {
+        $this->model = new SysField();
+    }
+
     /**
      * @Desc 字段列表
      * @Author Gorden
@@ -24,6 +32,13 @@ class FieldController
         return FieldService::fieldList($request);
     }
 
+    public function selectList(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, 1000);
+    }
+
     /**
      * @Desc 字段详情
      * @Author Gorden
@@ -73,7 +88,7 @@ class FieldController
      * @param Request $request
      * @return \support\Response
      */
-    public function updateField($id, Request $request)
+    public function updateFields($id, Request $request)
     {
         $validate = new FieldValidate();
         if (!$validate->scene('update')->check($request->post())) {

+ 48 - 0
app/admin/controller/sys_manage/FinanceController.php

@@ -0,0 +1,48 @@
+<?php
+
+namespace app\admin\controller\sys_manage;
+
+use app\controller\Curd;
+use app\model\Content;
+use support\exception\BusinessException;
+use support\Request;
+use support\Response;
+
+class FinanceController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new Content();
+    }
+
+    public function info(Request $request): Response
+    {
+        $data = $this->model->where('content_category', 'FINANCE')->first();
+
+        if (!empty($data->content_config_json)){
+            $data->content_config_json = json_decode($data->content_config_json);
+        }
+
+        return json_success('', $data);
+    }
+
+    protected function updateInput(Request $request): array
+    {
+        $primary_key = $this->model->getKeyName();
+        $id = $request->post($primary_key);
+
+        $params = $request->post();
+        if (is_array($params['content_config_json'])){
+            $params['content_config_json'] = json_encode(array_filter($params['content_config_json'],function ($value){
+                return ($value != '' && $value != ' ' && $value != null);
+            }), JSON_UNESCAPED_UNICODE);
+        }
+        $data = $this->inputFilter($params);
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+}

+ 169 - 0
app/admin/controller/sys_manage/HealthyClassroomController.php

@@ -0,0 +1,169 @@
+<?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 HealthyClassroomController 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'] = 'CLASSROOM';
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'content_addtimes';
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    protected function doSelect(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->with('category');
+        foreach ($where as $column => $value) {
+            if (is_array($value)) {
+                if ($value[0] === 'like' || $value[0] === 'not like') {
+                    $model = $model->where($column, $value[0], "%$value[1]%");
+                } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
+                    $model = $model->where($column, $value[0], $value[1]);
+                } elseif ($value[0] == 'in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereIn($column, $valArr);
+                } elseif ($value[0] == 'not in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereNotIn($column, $valArr);
+                } elseif ($value[0] == 'null') {
+                    $model = $model->whereNull($column);
+                } elseif ($value[0] == 'not null') {
+                    $model = $model->whereNotNull($column);
+                } elseif ($value[0] !== '' || $value[1] !== '') {
+                    $model = $model->whereBetween($column, $value);
+                }
+            } else {
+                $model = $model->where($column, $value);
+            }
+        }
+        if ($field) {
+            $model = $model->orderBy($field, $order);
+        }
+        return $model;
+    }
+
+    public function afterQuery($items)
+    {
+        foreach ($items as &$item) {
+            if (!empty($item->content_title_prefix)) {
+                $item->content_title_prefix = ltrim($item->content_title_prefix, '【');
+                $item->content_title_prefix = rtrim($item->content_title_prefix, '】');
+            }
+            if (!empty($item->content_config_json)) {
+                $configJson = json_decode($item->content_config_json, true);
+                foreach ($configJson as $key => $item1) {
+                    if (substr($item1, 0, 4) != 'http') {
+                        $configJson[$key] = getenv('STORAGE_DOMAIN') . $item1;
+                    }
+                }
+                $item->content_config_json = $configJson;
+            }
+        }
+
+        return $items;
+    }
+
+    public function insert(Request $request): Response
+    {
+        if ($this->validate && !$this->validateClass->scene('add')->check($request->post())) {
+            return json_fail($this->validateClass->getError());
+        }
+
+        try {
+            $data = $this->insertInput($request);
+            $this->doInsert($data);
+        } catch (BusinessException $customException) {
+            return json_fail($customException->getMessage());
+        } catch (\Exception $e) {
+            dump($e->getMessage());
+            return json_fail('数据写入失败11');
+        }
+        return json_success('success');
+    }
+
+    /**
+     * @Desc
+     * @Author Gorden
+     * @Date 2024/3/27 10:24
+     *
+     * @param Request $request
+     * @return array
+     * @throws \support\exception\BusinessException
+     */
+    protected function insertInput(Request $request): array
+    {
+        $params = $request->post();
+        if (!empty($params['content_config_json'])){
+            foreach ($params['content_config_json'] as $key => $item){
+                $params['content_config_json'][$key] = str_replace(getenv("STORAGE_DOMAIN"),'',$item);
+            }
+
+            $params['content_config_json'] = json_encode($params['content_config_json'], JSON_UNESCAPED_UNICODE);
+        }
+        $data = $this->inputFilter($params);
+
+        $data['content_title_prefix'] = '【'.$data['content_title_prefix'].'】';
+        $data['content_category'] = 'CLASSROOM';
+
+        return $data;
+    }
+
+    protected function updateInput(Request $request): array
+    {
+        $primary_key = $this->model->getKeyName();
+        $id = $request->post($primary_key);
+        $params = $request->post();
+        if (!empty($params['content_config_json'])){
+            foreach ($params['content_config_json'] as $key => $item){
+                $params['content_config_json'][$key] = str_replace(getenv("STORAGE_DOMAIN"),'',$item);
+            }
+
+            $params['content_config_json'] = json_encode($params['content_config_json'], JSON_UNESCAPED_UNICODE);
+        }
+        $data = $this->inputFilter($params);
+        $data['content_title_prefix'] = '【'.$data['content_title_prefix'].'】';
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+}

+ 23 - 0
app/admin/controller/sys_manage/ProtocolController.php

@@ -9,6 +9,7 @@ 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;
 
@@ -78,6 +79,27 @@ class ProtocolController extends Curd
         return $model;
     }
 
+    public function insert(Request $request): Response
+    {
+        if ($this->validate && !$this->validateClass->scene('add')->check($request->post())) {
+            return json_fail($this->validateClass->getError());
+        }
+        if (Content::where('join_content_category_id',$request->post('join_content_category_id'))->exists()){
+            return json_fail("当前分类已存在,请不要重复添加");
+        }
+
+        try {
+            $data = $this->insertInput($request);
+            $this->doInsert($data);
+        } catch (BusinessException $customException) {
+            return json_fail($customException->getMessage());
+        } catch (\Exception $e) {
+            dump($e->getMessage());
+            return json_fail('数据写入失败11');
+        }
+        return json_success('success');
+    }
+
     /**
      * @Desc
      * @Author Gorden
@@ -91,6 +113,7 @@ class ProtocolController extends Curd
     {
         $data = $this->inputFilter($request->post());
         $data['content_category'] = 'PROTOCOL';
+        $data['content_status'] = 'NOSEARCH';
 
         return $data;
     }

+ 6 - 10
app/admin/controller/sys_manage/QuestionController.php

@@ -92,7 +92,7 @@ class QuestionController extends Curd
                 foreach ($contentConfigJson as $question) {
                     $questionArray[] = [
                         [
-                            'label' => '序号',
+                            'label' => '选项',
                             'value' => $question['field'],
                         ],
                         [
@@ -102,7 +102,7 @@ class QuestionController extends Curd
                     ];
                 }
                 $item->content_config_json = $questionArray;
-            }else{
+            } else {
                 $item->content_config_json = [];
             }
         }
@@ -127,16 +127,14 @@ class QuestionController extends Curd
         if (!empty($request->post('question'))) {
             $questions = $request->post('question');
             foreach ($questions as $question) {
-                if (!empty($question[1]['value'])){
+                if (!empty($question[1]['value'])) {
                     $contentConfigJson[] = [
                         'field' => $question[0]['value'],
                         'question' => $question[1]['value'],
                     ];
                 }
             }
-            usort($contentConfigJson, function ($a, $b) {
-                return $a['field'] - $b['field'];
-            });
+            $contentConfigJson = new \ArrayObject($contentConfigJson);
 
             $data['content_config_json'] = json_encode($contentConfigJson);
         }
@@ -158,13 +156,11 @@ class QuestionController extends Curd
             $questions = $request->post('question');
             foreach ($questions as $question) {
                 $contentConfigJson[] = [
-                    'field' => $question[0]['value'],
                     'question' => $question[1]['value'],
+                    'field' => $question[0]['value'],
                 ];
             }
-            usort($contentConfigJson, function ($a, $b) {
-                return $a['field'] - $b['field'];
-            });
+            $contentConfigJson = new \ArrayObject($contentConfigJson);
 
             $data['content_config_json'] = json_encode($contentConfigJson);
         }

+ 15 - 2
route/admin.php

@@ -126,9 +126,10 @@ Route::group('/admin', function () {
         /* 字段管理 */
         Route::group('/field', function () {
             Route::get('/list', [\app\admin\controller\sys_manage\FieldController::class, 'fieldList']);
+            Route::get('/selectList', [\app\admin\controller\sys_manage\FieldController::class, 'selectList']);
             Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\FieldController::class, 'fieldInfo']);
             Route::post('/add', [\app\admin\controller\sys_manage\FieldController::class, 'addField']);
-            Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\FieldController::class, 'updateField']);
+            Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\FieldController::class, 'updateFields']);
             Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\FieldController::class, 'updateStatus']);
             Route::delete('/delete', [\app\admin\controller\sys_manage\FieldController::class, 'delField']);
         });
@@ -177,6 +178,18 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+        Route::group('/healthyClassroom', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\HealthyClassroomController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\sys_manage\HealthyClassroomController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\sys_manage\HealthyClassroomController::class, 'update']);
+            Route::delete('/delete', [\app\admin\controller\sys_manage\HealthyClassroomController::class, 'delete']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
+        Route::group('/finance', function () {
+            Route::get('/info', [\app\admin\controller\sys_manage\FinanceController::class, 'info']);
+            Route::post('/update', [\app\admin\controller\sys_manage\FinanceController::class, 'update']);
+        });
         Route::group('/banner', function () {
             Route::get('/list', [\app\admin\controller\sys_manage\BannerController::class, 'select']);
             Route::post('/add', [\app\admin\controller\sys_manage\BannerController::class, 'insert']);
@@ -742,6 +755,6 @@ Route::group('/admin', function () {
     });
 
     Route::group('/dashboard', function () {
-        Route::get('/',[\app\admin\controller\dashboard\DashboardController::class,'index']);
+        Route::get('/', [\app\admin\controller\dashboard\DashboardController::class, 'index']);
     });
 });