Explorar o código

首页内容预览接口

duqinya %!s(int64=6) %!d(string=hai) anos
pai
achega
e9a6deea83

+ 37 - 0
app/Http/Controllers/CmsContentTemplateSetController.php

@@ -0,0 +1,37 @@
+<?php
+namespace App\Http\Controllers;
+
+use App\Repositories\CmsContentTemplateSetRepository;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+/**
+ * Created by PhpStorm.
+ * User: qinyaer
+ * Date: 2019/5/5
+ * Time: 上午9:30
+ */
+
+class CmsContentTemplateSetController extends BaseController
+{
+    public function __construct(CmsContentTemplateSetRepository $cmsContentTemplateSetRepository)
+    {
+        $this->cmsContentSetTemplate = $cmsContentTemplateSetRepository;
+    }
+
+    //内容预览
+    public function preview(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'tpl_id' => 'required|integer',
+            'type' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+
+        return  $this->cmsContentSetTemplate->preview($request->all());
+
+    }
+
+
+}

+ 102 - 0
app/Http/Repositories/CmsContentTemplateSetRepository.php

@@ -0,0 +1,102 @@
+<?php
+
+namespace App\Repositories;
+
+use App\Models\CmsContentTemplate;
+use App\Models\CmsContentTemplateSet;
+use App\Models\CmsSubjectProduct;
+use App\Models\CmsSubject;
+
+class CmsContentTemplateSetRepository {
+    public function __construct(CmsContentTemplateSet $cmsContentTemplateSet,CmsContentTemplate $cmsContentTemplate,CmsSubjectProduct $cmsSubjectProduct,CmsSubject $cmsSubject) {
+
+        $this->cmsContentTemplateSet = $cmsContentTemplateSet;
+        $this->cmsContentTemplate = $cmsContentTemplate;
+        $this->cmsSubjectProduct = $cmsSubjectProduct;
+        $this->cmsSubject = $cmsSubject;
+    }
+
+    /**
+     * 内容预览
+     */
+    public function preview($request)
+    {
+        //团购首页
+        $group_array = [];
+        if ($request['type'] == 0){
+            $group_array['apply_type'] ="group";
+            $group_array['title'] ="今日团购";
+            $group_array['content'] =[];
+        }else{//菜市场首页
+            $group_array['apply_type'] ="market";
+            $group_array['title'] ="菜市场";
+            $group_array['content'] =[];
+        }
+
+        $group_array['content'][0]['area_type'] ="banner";
+        $banner_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>0])->first();
+        $decode_banner = json_decode($banner_rule['rule'],true);
+        foreach ($decode_banner as &$v) {
+            $product = $this->cmsSubjectProduct->where('subject_id', $v['link_url'])->orderBy('sort', 'asc')->get();
+            $pro_array = $product->toArray();
+            $res_id = implode(",", array_column($pro_array, 'id'));
+            if ($res_id){
+                $v['product_id'] = $res_id;
+            }
+        }
+        $group_array['content'][0]['rule'] = json_encode($decode_banner,JSON_UNESCAPED_UNICODE);
+
+        $group_array['content'][1]['area_type'] ="special";
+        $subject_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>1])->first();
+        $decode_subject = json_decode($subject_rule['rule'],true);
+        foreach ($decode_subject as &$v) {
+            $product = $this->cmsSubjectProduct->where('subject_id', $v['link_url'])->orderBy('sort', 'asc')->get();
+            $pro_array = $product->toArray();
+            $res_id = implode(",", array_column($pro_array, 'id'));
+            if ($res_id){
+                $v['product_id'] = $res_id;
+            }
+        }
+        $group_array['content'][1]['rule'] = json_encode($decode_subject,JSON_UNESCAPED_UNICODE);
+
+        $group_array['content'][2]['area_type'] ="floor";
+        $floor_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>2])->first();
+
+        $decode_floor = json_decode($floor_rule['rule'],true);
+        foreach ($decode_floor as &$v){
+            $show_type = $this->cmsSubject->select('show_type')->where('id',$v['link_url'])->first();
+            $product = $this->cmsSubjectProduct->where('subject_id',$v['link_url'])->orderBy('sort','asc')->get();
+            $pro_array = $product->toArray();
+            $res_id = implode(",",array_column($pro_array,'id'));
+            $v['product_id'] = $res_id;
+            $v['subject_id'] = $v['link_url'];
+            $v['show_type'] = $show_type->show_type;
+            unset($v['url']);
+            unset($v['show_num']);
+            unset($v['link_url']);
+            unset($v['link_type']);
+        }
+        $group_array['content'][2]['rule'] = json_encode($decode_floor,JSON_UNESCAPED_UNICODE);
+        if ($request['type'] == 1){
+            $group_array['content'][3]['area_type'] ="category";
+            $category_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>3])->first();
+            $decode_category = json_decode($category_rule['rule'],true);
+            foreach ($decode_category as &$v) {
+                $product = $this->cmsSubjectProduct->where('subject_id', $v['link_url'])->orderBy('sort', 'asc')->get();
+                $pro_array = $product->toArray();
+                $res_id = implode(",", array_column($pro_array, 'id'));
+                if ($res_id){
+                    $v['product_id'] = $res_id;
+                }
+            }
+            $group_array['content'][3]['rule'] = json_encode($decode_floor,JSON_UNESCAPED_UNICODE);
+        }
+
+        foreach ($group_array['content'] as $key=>$value){
+            $rule = json_decode($value['rule'],true);
+            $group_array['content'][$key]['rule'] = $rule;
+        }
+        $json = json_encode($group_array,JSON_UNESCAPED_UNICODE);
+        return $json;
+    }
+}

+ 3 - 1
routes/api.php

@@ -14,7 +14,7 @@
 $api = app('Dingo\Api\Routing\Router');
 $api = app('Dingo\Api\Routing\Router');
 
 
 $api->version('v1', [
 $api->version('v1', [
-    'namespace' => 'App\Http\Controllers\V1',
+    'namespace' => 'App\Http\Controllers',
 ], function ($api) {
 ], function ($api) {
     //登录
     //登录
     $api->post('login', 'AuthController@authenticate');
     $api->post('login', 'AuthController@authenticate');
@@ -83,4 +83,6 @@ $api->version('v1', [
     $api->group(['middleware' => 'chxq_sign'], function ($api) {
     $api->group(['middleware' => 'chxq_sign'], function ($api) {
 
 
     });
     });
+    //内容预览
+    $api->post('/templateSet/preview', 'CmsContentTemplateSetController@preview');
 });
 });