Przeglądaj źródła

新增活动库

zhangchangchun 5 lat temu
rodzic
commit
11f4088f52

+ 78 - 0
app/Http/Controllers/V2/ActivitiesController.php

@@ -0,0 +1,78 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019-06-12
+ * Time: 16:10
+ */
+
+namespace App\Http\Controllers\V2;
+
+
+use App\Http\Controllers\Controller;
+use App\Repositories\ActivitiesRepository;
+use App\Transformers\ActivitiesTansformer;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+use League\Fractal\Manager;
+use League\Fractal\Pagination\IlluminatePaginatorAdapter;
+use League\Fractal\Resource\Collection;
+use League\Fractal\Resource\Item;
+
+class ActivitiesController extends Controller {
+    public function __construct(ActivitiesRepository $activitiesRepository) {
+        $this->activitiesRepository = $activitiesRepository;
+    }
+
+    public function index(Request $request){
+        $activitie = $this->activitiesRepository->index($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($activitie, new ActivitiesTansformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($activitie));
+        $data = $fractal->createData($resource)->toArray();
+        $data['extra'] = [
+            'filters' => [
+                'name',
+            ],
+            'columns' => [
+                'id',
+                'name',
+                'created_at',
+            ]
+        ];
+        return $data;
+    }
+    public function create(Request $request){
+        $validator = Validator::make($request->all(), [
+            'name' => 'required|string|max:20',
+            'content' => 'required|string',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->activitiesRepository->create($request->all());
+    }
+    public function edit(Request $request){
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer|max:20    ',
+            'name' => 'required|string|max:12',
+            'content' => 'required|string',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+
+        return  $this->activitiesRepository->edit($request->all());
+    }
+    public function view(Request $request){
+        $data = $request->only('id');
+        $validator = Validator::make($data, [
+            'id' => 'required|integer|max:12',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        $info = $this->activitiesRepository->view($data);
+        return $this->response->item($info, new ActivitiesTansformer());
+    }
+}

+ 18 - 0
app/Models/Activities.php

@@ -0,0 +1,18 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019-06-12
+ * Time: 16:29
+ */
+
+namespace App\Models;
+
+
+use Illuminate\Database\Eloquent\Model;
+
+class Activities extends Model {
+    protected $guarded = ['id'];
+
+    protected $hidden = ['deleted_at'];
+}

+ 87 - 0
app/Repositories/ActivitiesRepository.php

@@ -0,0 +1,87 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019-06-12
+ * Time: 16:30
+ */
+
+namespace App\Repositories;
+
+
+use App\Models\Activities;
+use Dingo\Api\Http\Response;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Database\QueryException;
+use Illuminate\Support\Facades\Log;
+
+class ActivitiesRepository {
+    public function __construct(Activities $activities) {
+        $this->activities = $activities;
+    }
+    //列表
+    public function index($request){
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+        $where = [];
+        if(isset($request['name'])){
+            $where[] = ['name', 'like', "%{$request['name']}%"];
+        }
+        return $this->activities->where($where)->paginate($perPage);
+    }
+    //详情
+    public function view($request){
+        return $this->activities->where(['id'=>$request['id']])->first();
+    }
+    //创建
+    public function create($request){
+        $activities = $this->activities->where(['name'=>$request['name']])->first();
+        if($activities){
+            return Response::create([
+                'message'  => '该活动已存在',
+                'status_code'   => 500
+            ]);
+        }
+        $data = [
+            'name' => $request['name'],
+            'content' => $request['content'],
+        ];
+        DB::beginTransaction();
+        try{
+            $this->activities->create($data);
+            DB::commit();
+            return Response::create();
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::debug('新增活动:'.$exception->getMessage());
+            return Response::create([
+                'message'  => '新增活动失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
+    }
+    public function edit($request){
+        $activities = $this->activities->where(['id'=>$request['id']])->first();
+        if(!$activities){
+            return Response::create([
+                'message'  => '该活动不存在',
+                'status_code'   => 500
+            ]);
+        }
+        $activities->content = $request['content'];
+        DB::beginTransaction();
+        try{
+            $activities->save();
+            DB::commit();
+            return Response::create();
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::debug('编辑活动:'.$exception->getMessage());
+            return Response::create([
+                'message'  => '编辑活动失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
+    }
+}

+ 24 - 0
app/Transformers/ActivitiesTansformer.php

@@ -0,0 +1,24 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019-06-12
+ * Time: 16:38
+ */
+
+namespace App\Transformers;
+use App\Models\Activities;
+use League\Fractal\TransformerAbstract;
+use Illuminate\Support\Carbon;
+
+class ActivitiesTansformer extends TransformerAbstract{
+    public function transform(Activities $activities)
+    {
+        return [
+            'id'  => $activities['id'],
+            'name'    => $activities['name'],
+            'content'    => $activities['content'],
+            'created_at' => Carbon::parse($activities['created_at'])->toDateTimeString(),
+        ];
+    }
+}

+ 0 - 1
database/migrations/2019_06_05_065619_create_config_banner_table.php

@@ -21,7 +21,6 @@ class CreateConfigBannerTable extends Migration
             $table->tinyInteger('type')->nullable()->comment('社区-banner类型:0.纯展示;1.内容;2.用户;3.活动;4.话题');
             $table->tinyInteger('use_background')->comment('使用后台:0.CMS;1.社区后台');
             $table->tinyInteger('is_open')->nullable()->comment('社区-开关状态:0:关闭;1:开启');
-
             $table->integer('tpl_id')->nullable()->comment('cms-模板ID');
             $table->json('rule')->nullable()->comment('cms-设置项');
             $table->tinyInteger('status')->nullable()->comment('cms-状态:0:草稿;1:发布');

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

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateActivitiesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('activities', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->string('name')->nullable()->comment('名称');
+            $table->text('content')->nullable()->comment('内容');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('activities');
+    }
+}

+ 8 - 0
routes/api.php

@@ -79,6 +79,14 @@ $api->version('v1', [
             $api->delete('/bannerSet/delete', 'BannerController@bannerDelete');
             //修改banner状态
             $api->put('/bannerSet/editStatus', 'BannerController@editStatus');
+            //活动列表
+            $api->get('activitiesIndex', 'ActivitiesController@index');
+            //活动添加
+            $api->post('activitiesCreate', 'ActivitiesController@create');
+            //活动编辑
+            $api->put('activitiesEdit', 'ActivitiesController@edit');
+            //活动详情
+            $api->get('activitiesView', 'ActivitiesController@view');
         });
 
     });