Переглянути джерело

wesmiler 报恩寺项目提交

wesmiler 4 роки тому
батько
коміт
279516018e

+ 9 - 0
app/Http/Controllers/Api/v1/ArticleController.php

@@ -44,6 +44,15 @@ class ArticleController extends BaseController
     }
     }
 
 
     /**
     /**
+     * 列表
+     * @return array
+     */
+    public function relaction(){
+        $params = request()->all();
+        return $this->service->getRelactionList($params);
+    }
+
+    /**
      * 详情
      * 详情
      * @return array|mixed
      * @return array|mixed
      */
      */

+ 107 - 0
app/Http/Controllers/Api/v1/DonatesController.php

@@ -0,0 +1,107 @@
+<?php
+
+namespace App\Http\Controllers\Api\v1;
+
+use App\Http\Controllers\Api\BaseController;
+use App\Http\Validator\ArticleValidator;
+use App\Services\ArticleBooksService;
+use App\Services\ArticleCatesService;
+use App\Services\ArticleService;
+use App\Services\ConfigService;
+use App\Services\DonateService;
+use Illuminate\Http\Request;
+
+/**
+ * 行善控制器类
+ * @author wesmiler
+ * @since 2020/11/10
+ * Class DonatesController
+ * @package App\Http\Controllers
+ */
+class DonatesController extends BaseController
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * DonatesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+
+        $this->service = new DonateService();
+        $this->recordService = new Me();
+    }
+
+    /**
+     * 列表
+     * @return array
+     */
+    public function index(){
+        $params = request()->all();
+        return $this->service->getDataList($params);
+    }
+
+    /**
+     * 详情
+     * @return array|mixed
+     */
+    public function info(){
+        $id = request()->get('id',0);
+        if($id<=0){
+            return message(1006, false);
+        }
+
+        $this->service->updateVisit($this->userId);
+        $info = $this->service->getDetail($id, $this->userId);
+        return message(1005, true, $info);
+    }
+
+    /**
+     * 报名
+     * @param Request $request
+     * @param ArticleValidator $validate
+     * @return array
+     */
+    public function books(Request $request, ArticleValidator $validator){
+        $params = $validator->check($request->all(),'books');
+        if(!is_array($params)){
+            return message($params, false);
+        }
+        $params['user_id'] = $this->userId;
+        return $this->bookService->books($params);
+    }
+
+    /**
+     * 获取文章分类
+     * @return mixed
+     */
+    public function cates(){
+        return $this->cateService->getOptions();
+    }
+
+    /**
+     * 单页文章内容
+     * @return array
+     */
+    public function page(){
+        $code = request()->get('code', '');
+        if(empty($code)){
+            return message('参数错误', false);
+        }
+
+        $pageId = ConfigService::make()->getConfigByCode($code);
+        if($pageId<=0){
+            return message(1006, false);
+        }
+
+        $info = ArticleService::make()->getDetail($pageId);
+        if($info){
+            return message(1005, true, $info);
+        }else{
+            return message(1006, false);
+        }
+
+    }
+}

+ 73 - 0
app/Services/ArticleService.php

@@ -198,6 +198,79 @@ class ArticleService extends BaseService
     }
     }
 
 
     /**
     /**
+     * 相关推荐列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getRelactionList($params)
+    {
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+        $id = isset($params['id']) ? intval($params['id']) : PERPAGE;
+
+        $info = $this->model::from('article as a')
+            ->leftJoin('article_cates as c', 'a.cate_id', '=', 'c.id')
+            ->where(['a.id'=> $id,'makr'=> 1,'status'=> 1])
+            ->select(['a.id','a.cate_id','a.type'])
+            ->first();
+
+        $dataList = $this->model::from('article as a')
+            ->leftJoin('article_cates as c', 'a.cate_id', '=', 'c.id')
+            ->where(function ($query) use ($params, $info) {
+                $query->where(['a.mark'=>1,'a.status'=> 1]);
+                $cateId = isset($info['cate_id']) ? intval($info['cate_id']) : 0;
+                if ($cateId > 0) {
+                    $query->where('a.cate_id', $cateId);
+                }
+
+                $type = isset($info['type']) ? intval($info['type']) : 0;
+                if ($type > 0) {
+                    $query->where('a.type', $type);
+                }
+            })
+            ->where(function($query) use($params){
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('a.title', 'like', "%{$keyword}%")->orWhere('c.name','like',"%{$keyword}%");
+                }
+            })
+            ->select(['a.id', 'a.cate_id', 'c.name as cate_name', 'a.title', 'a.is_form', 'a.is_recommand', 'a.view_num', 'a.thumb', 'a.status', 'a.create_time', 'a.update_time', 'a.description', 'a.sort','a.publish_at'])
+            ->orderBy('a.sort', 'desc')
+            ->orderBy('a.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if(empty($dataList)){
+            $dataList = $this->model::from('article as a')
+                ->leftJoin('article_cates as c', 'a.cate_id', '=', 'c.id')
+                ->where(['a.mark'=>1,'a.status'=> 1])
+                ->select(['a.id', 'a.cate_id', 'c.name as cate_name', 'a.title', 'a.is_form', 'a.is_recommand', 'a.view_num', 'a.thumb', 'a.status', 'a.create_time', 'a.update_time', 'a.description', 'a.sort','a.publish_at'])
+                ->orderBy(\DB::raw('rand()'))
+                ->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') : '';
+                $item['publish_at'] = $item['publish_at'] ? $item['publish_at'] : $item['create_at'];
+
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
      * 获取详情
      * 获取详情
      * @param $id
      * @param $id
      */
      */

+ 1 - 0
routes/api.php

@@ -113,6 +113,7 @@ Route::post('/article/list', [\App\Http\Controllers\Api\v1\ArticleController::cl
 Route::post('/article/info', [\App\Http\Controllers\Api\v1\ArticleController::class, 'info']);
 Route::post('/article/info', [\App\Http\Controllers\Api\v1\ArticleController::class, 'info']);
 Route::post('/article/books', [\App\Http\Controllers\Api\v1\ArticleController::class, 'books']);
 Route::post('/article/books', [\App\Http\Controllers\Api\v1\ArticleController::class, 'books']);
 Route::post('/article/cates', [\App\Http\Controllers\Api\v1\ArticleController::class, 'cates']);
 Route::post('/article/cates', [\App\Http\Controllers\Api\v1\ArticleController::class, 'cates']);
+Route::post('/article/relaction', [\App\Http\Controllers\Api\v1\ArticleController::class, 'relaction']);
 Route::post('/article/page', [\App\Http\Controllers\Api\v1\ArticleController::class, 'page']);
 Route::post('/article/page', [\App\Http\Controllers\Api\v1\ArticleController::class, 'page']);
 
 
 // 工作招聘
 // 工作招聘