Browse Source

wesmiler 报恩寺项目提交

wesmiler 4 years ago
parent
commit
458f4b9efb

+ 61 - 0
app/Http/Controllers/Api/v1/AdviceController.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Http\Controllers\Api\v1;
+
+use App\Http\Controllers\Api\BaseController;
+use App\Http\Validator\AdviceValidator;
+use App\Http\Validator\ArticleValidator;
+use App\Services\AdvicesService;
+use App\Services\ArticleBooksService;
+use App\Services\ArticleCatesService;
+use App\Services\ArticleService;
+use App\Services\ConfigService;
+use Illuminate\Http\Request;
+
+/**
+ * 反馈建议控制器类
+ * @author wesmiler
+ * @since 2020/11/10
+ * Class AdviceController
+ * @package App\Http\Controllers
+ */
+class AdviceController extends BaseController
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * AdviceController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+
+        $this->service = new AdvicesService();
+    }
+
+    /**
+     * 列表
+     * @return array
+     */
+    public function index(){
+        $params = request()->all();
+        $params['user_id'] = $this->userId;
+        return $this->service->getDataList($params);
+    }
+
+    /**
+     * 发布
+     * @param Request $request
+     * @param ArticleValidator $validate
+     * @return array
+     */
+    public function send(Request $request, AdviceValidator $validator){
+        $params = $validator->check($request->all(),'send');
+        if(!is_array($params)){
+            return message($params, false);
+        }
+        $params['user_id'] = $this->userId;
+        return $this->service->saveData($params);
+    }
+}

+ 47 - 0
app/Http/Validator/AdviceValidator.php

@@ -0,0 +1,47 @@
+<?php
+namespace App\Http\Validator;
+class AdviceValidator extends BaseValidator
+{
+    // 当前模型所有验证规则
+    public static $rules = [
+        'id' => 'required',
+        'title' => 'required|string|min:1|max:100',
+        'description' => 'required|string|min:2|max:150',
+        'thumb' => 'nullable|string|min:2|max:250',
+    ];
+
+    // 当前模型所有错误提示信息
+    public static $msgs = [
+        'required' => ':attribute不能为空',
+        'string' => ':attribute必须是字符串',
+        'min' => ':attribute长度不能小于:min位',
+        'max' => ':attribute长度不能大于:max位',
+        'exists' => ':attribute不存在',
+        'rule' => ':attribute格式不正确',
+    ];
+
+    // 当前模型所有验证字段
+    public static $fields = [
+        'id' => 'ID',
+        'title' => '标题',
+        'description' => '反馈内容',
+        'thumb' => '图片',
+    ];
+
+    // 当前模型所有验证场景
+    public static $scenes = [
+        'info'=> ['id'],
+        'send'=> ['title','description','thumb'],
+    ];
+
+    /**
+     * 验证
+     * @param $request
+     * @param string $scene
+     * @return int|mixed
+     */
+    public static function check($request, $scene=''){
+        $validator = new BaseValidator(self::$rules, self::$msgs, self::$fields, self::$scenes);
+        return $validator->checkParams($request, $scene);
+    }
+}

+ 54 - 0
app/Services/AdvicesService.php

@@ -86,6 +86,41 @@ class AdvicesService extends BaseService
         ];
     }
 
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getDataList($params)
+    {
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+        $userId = isset($params['user_id'])? $params['user_id'] : 0;
+        $dataList = $this->model::from('advices as a')
+            ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
+            ->where(['a.mark'=>1,'a.status'=> 1,'a.user_id'=> $userId])
+            ->select(['a.id', 'a.user_id', 'a.title', 'm.nickname', 'a.thumb', 'a.status', 'a.create_time', 'a.update_time', 'a.description'])
+            ->orderBy('a.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
 
     /**
      * 添加或编辑
@@ -100,4 +135,23 @@ class AdvicesService extends BaseService
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
 
+    /**
+     * 保存用户提交数据
+     * @param $params
+     * @return array
+     */
+    public function saveData($params){
+        $params = request()->all();
+        $data = [
+            'user_id'=> isset($params['user_id'])? $params['user_id'] : 0,
+            'thumb'=> isset($params['thumb'])? $params['thumb'] : '',
+            'title'=> isset($params['title'])? $params['title'] : '',
+            'description'=> isset($params['description'])? $params['description'] : '',
+            'update_time'=> time(),
+            'create_time'=> time(),
+            'status'=> 1,
+        ];
+
+        return parent::edit($data);
+    }
 }

+ 1 - 1
app/Services/ArticleService.php

@@ -255,7 +255,7 @@ class ArticleService extends BaseService
 
         $data['update_time'] = time();
         $data['publish_at'] = isset($data['publish_at']) && $data['publish_at']? $data['publish_at'] : date('Y-m-d H:i:s');
-      
+
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
 

+ 5 - 0
routes/api.php

@@ -175,6 +175,11 @@ Route::post('/enshrine/order', [\App\Http\Controllers\Api\v1\EnshrineController:
 // 修行项目
 Route::post('/practices/list', [\App\Http\Controllers\Api\v1\PracticesController::class, 'index']);
 
+// 反馈建议
+Route::post('/advices/list', [\App\Http\Controllers\Api\v1\AdviceController::class, 'index']);
+Route::post('/advices/info', [\App\Http\Controllers\Api\v1\AdviceController::class, 'info']);
+Route::post('/advices/send', [\App\Http\Controllers\Api\v1\AdviceController::class, 'send']);
+