Browse Source

新增模板列表和新建模板接口

duqinya 6 years ago
parent
commit
527852b2ce

+ 70 - 0
app/Http/Controllers/CmsContentTemplateController.php

@@ -0,0 +1,70 @@
+<?php
+namespace App\Http\Controllers;
+
+use App\Repositories\CmsContentTemplateRepository;
+use App\Transformers\CmsContentTemplateTransformer;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+use League\Fractal\Resource\Collection;
+use League\Fractal\Manager;
+use Illuminate\Validation\Rule;
+use League\Fractal\Pagination\IlluminatePaginatorAdapter;
+/**
+ * Created by PhpStorm.
+ * User: qinyaer
+ * Date: 2019/4/29
+ * Time: 下午15:45
+ */
+
+class CmsContentTemplateController extends BaseController
+{
+    public function __construct(CmsContentTemplateRepository $cmsContentTemplateRepository)
+    {
+        $this->cmsContentTemplate = $cmsContentTemplateRepository;
+    }
+
+    //专题列表
+    public function index(Request $request)
+    {
+        $cmsTemplate = $this->cmsContentTemplate->index($request->all());
+
+        $fractal = new Manager();
+        $resource = new Collection($cmsTemplate, new CmsContentTemplateTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($cmsTemplate));
+        $data = $fractal->createData($resource)->toArray();
+        $data['extra'] = [
+            'filters' => [
+                'id'
+            ],
+            'columns' => [
+                'id',
+                'city_id',
+                'city_name',
+                'title',
+                'apply_type',
+                'is_open',
+            ]
+        ];
+        return $data;
+    }
+
+
+    //新建模板
+    public function create(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'city_id' => 'required|integer',
+            'city_name' => 'required|string',
+            'title' => 'required|string',
+            'apply_type' => ['required', Rule::in(0,1)],
+            'is_open' => ['required', Rule::in(0,1)],
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+
+        return  $this->cmsContentTemplate->create($request->all());
+
+    }
+
+}

+ 22 - 0
app/Models/CmsContentTemplate.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Models;
+
+class CmsContentTemplate extends BaseModel
+{
+    protected  $table = 'cms_content_template';
+
+
+    /**
+     * 可被批量赋值的字段
+     * @var array
+     */
+    protected $fillable = ['city_id','city_name','title','apply_type','is_open'];
+
+    //一对多关联模板内容表
+    public function cmsContentTemplateSet()
+    {
+        return $this->hasMany('App\Models\CmsContentTemplateSet','tpl_id');
+    }
+
+}

+ 22 - 0
app/Models/CmsContentTemplateSet.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Models;
+
+class CmsContentTemplateSet extends BaseModel
+{
+    protected  $table = 'cms_content_template_set';
+
+
+    /**
+     * 可被批量赋值的字段
+     * @var array
+     */
+    protected $fillable = ['rule','tpl_id','area_type'];
+
+    //一对多关联模板内容表
+    public function cmsContentTemplate()
+    {
+        return $this->belongsTo('App\Models\CmsContentTemplate','tpl_id');
+    }
+
+}

+ 51 - 0
app/Repositories/CmsContentTemplateRepository.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Repositories;
+
+
+use App\Models\CmsContentTemplate;
+use Symfony\Component\HttpKernel\Exception\HttpException;
+
+class CmsContentTemplateRepository {
+    public function __construct(CmsContentTemplate $cmsContentTemplate) {
+
+        $this->cmsContentTemplate = $cmsContentTemplate;
+    }
+    //模板列表
+    public function index($request)
+    {
+        $where = [];
+        if(isset($request['id'])){
+            $where[] = ['id', '=', $request['id']];
+        }
+        if (isset($request['is_open'])){
+            $where[] = ['is_open',$request['is_open']];
+        }
+
+        return $this->cmsContentTemplate->where($where)->orderBy('id', 'asc')->paginate(20);
+
+    }
+
+    /**
+     * 新建模板
+     */
+    public function create($request)
+    {
+        if($this->cmsContentTemplate->where('title', trim($request['title']))->exists()){
+            throw new HttpException(500, '该模块已经存在');
+        }
+
+        $subject = [
+            'title' => $request['title'],
+            'city_id' => $request['city_id'],
+            'city_name' => $request['city_name'],
+            'apply_type' => $request['apply_type'],
+            'is_open' => $request['is_open'],
+        ];
+
+        if (!$this->cmsContentTemplate->create($subject)) {
+            throw new HttpException(500, '添加失败');
+        }
+    }
+
+}

+ 22 - 0
app/Transformers/CmsContentTemplateTransformer.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Transformers;
+
+use App\Models\CmsContentTemplate;
+use League\Fractal\TransformerAbstract;
+
+class CmsContentTemplateTransformer extends TransformerAbstract
+{
+
+    public function transform(CmsContentTemplate $cmsTemplate)
+    {
+        return [
+            'id'  => $cmsTemplate['id'],
+            'city_id'  => $cmsTemplate['city_id'],
+            'city_name'    => $cmsTemplate['city_name'],
+            'title'    => $cmsTemplate['title'],
+            'apply_type'    => $cmsTemplate['apply_type'],
+            'is_open'    => $cmsTemplate['is_open'],
+        ];
+    }
+}

+ 33 - 0
database/migrations/2019_04_29_060908_add_template_id_to_cms_content_template_set_table.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class AddTemplateIdToCmsContentTemplateSetTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('cms_content_template_set', function (Blueprint $table) {
+            $table->integer('tpl_id')->comment('模板ID');
+            $table->tinyInteger('area_type')->default(0)->comment('状态:0:banner;1:专题广告;2.商品楼层;3.分类专题(菜市场)');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('cms_content_template_set', function (Blueprint $table) {
+            //
+        });
+    }
+}

+ 5 - 0
routes/api.php

@@ -56,6 +56,11 @@ $api->version('v1', [
         $api->post('/subject/edit', 'CmsSubjectController@edit');
         //删除专题
         $api->post('/subject/delete', 'CmsSubjectController@delete');
+
+        //模板列表
+        $api->get('/template/index', 'CmsContentTemplateController@index');
+        //新建模板
+        $api->post('/template/create', 'CmsContentTemplateController@create');
     });
 
 });