Browse Source

Merge branch 'develop'

wzq 5 years ago
parent
commit
c3df75a8c3

+ 125 - 0
app/Http/Controllers/V3/StartupController.php

@@ -0,0 +1,125 @@
+<?php
+
+namespace App\Http\Controllers\V3;
+
+use App\Http\Controllers\Controller;
+use App\Repositories\StartupRepository;
+use App\Transformers\StartupDetailTransformer;
+use App\Transformers\StartupListTransformer;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+use Illuminate\Validation\Rule;
+use League\Fractal\Manager;
+use League\Fractal\Pagination\IlluminatePaginatorAdapter;
+use League\Fractal\Resource\Collection;
+use League\Fractal\Resource\Item;
+
+class StartupController extends Controller
+{
+    public function __construct(StartupRepository $startupRepository)
+    {
+        $this->startupRepository = $startupRepository;
+    }
+
+    /**
+     * 启动页列表
+     */
+    public function index(Request $request)
+    {
+        $startupList = $this->startupRepository->lists($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($startupList, new StartupListTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($startupList));
+        $data = $fractal->createData($resource)->toArray();
+        $data['extra'] = [
+            'filters' => [
+                'keyword'
+            ],
+            'columns' => [
+                'id',
+                'title',
+                'img',
+                'is_open'
+            ]
+        ];
+        return $data;
+    }
+
+    /**
+     * 创建启动页
+     */
+    public function create(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'title' => 'required|string|max:12',
+            'img' => 'required|url',
+            'url' => 'nullable|url',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->startupRepository->create($request->all());
+    }
+
+    /**
+     * 编辑启动页
+     */
+    public function update(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer',
+            'title' => 'required|string|max:12',
+            'img' => 'required|url',
+            'url' => 'nullable|url',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->startupRepository->update($request->all());
+    }
+
+
+    /**
+     * 启动页详情
+     */
+    public function detail(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|exists:startup'
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+
+        $startup = $this->startupRepository->detail($request->all());
+        return $this->response->item($startup, new StartupDetailTransformer());
+    }
+
+    /**
+     * 修改启动页状态
+     */
+    public function updateStatus(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer'
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->startupRepository->updateStatus($request->all());
+    }
+
+    /**
+     * 删除启动页
+     */
+    public function delete(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer'
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->startupRepository->delete($request->all());
+    }
+}

+ 13 - 0
app/Models/Startup.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class Startup extends Model
+{
+    use SoftDeletes;
+    protected $table = 'startup';
+    protected $guarded = [];
+}

+ 224 - 0
app/Repositories/StartupRepository.php

@@ -0,0 +1,224 @@
+<?php
+
+namespace App\Repositories;
+
+use App\Models\Startup;
+use App\Traits\PostTrait;
+use Illuminate\Database\QueryException;
+use Dingo\Api\Http\Response;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
+
+class StartupRepository
+{
+    use PostTrait;
+    public function __construct(Startup $startup)
+    {
+        $this->startup = $startup;
+    }
+
+    /**
+     * 启动页列表
+     */
+    public function lists($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        return $this->startup
+            ->where(function ($query) use ($request){
+                if(isset($request['keyword']) && $request['keyword']){
+                    $query->where('id', $request['keyword'])
+                        ->orWhere('title', 'like', "%{$request['keyword']}%");
+                }
+            })
+            ->orderBy('is_open','desc')
+            ->orderBy('id','desc')
+            ->paginate($perPage);
+    }
+
+    /**
+     * 创建启动页
+     */
+    public function create($request)
+    {
+        $data = [
+            'title' => $request['title'],
+            'img' => $request['img'],
+            'url' => $request['url']??''
+        ];
+
+        DB::beginTransaction();
+        try{
+            $this->startup->create($data);
+
+            DB::commit();
+            return Response::create();
+
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::error('创建启动页失败:'.$exception->getMessage());
+            return Response::create([
+                'message'  => '添加失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
+    }
+
+    /**
+     * 编辑启动页
+     */
+    public function update($request)
+    {
+        $startup = $this->startup->find($request['id']);
+        if(!$startup){
+            return Response::create([
+                'message'  => '获取启动页信息失败',
+                'status_code'   => 500
+            ]);
+        }
+        if($startup->is_open){
+            return Response::create([
+                'message'  => '开启中不能编辑',
+                'status_code'   => 500
+            ]);
+        }
+        $startup->title = $request['title'];
+        $startup->img = $request['img'];
+        $startup->url = $request['url'] ?? '';
+
+        DB::beginTransaction();
+        try{
+            $startup->save();
+
+            DB::commit();
+            return Response::create();
+
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::error('编辑启动页失败:'.$exception->getMessage());
+            return Response::create([
+                'message'  => '编辑失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
+    }
+
+    /**
+     * 启动页详情
+     */
+    public function detail($request)
+    {
+        return $this->startup->find($request['id']);
+    }
+
+    /**
+     * 发送启动页
+     */
+    public function send($request)
+    {
+        $notice = $this->startup->find($request['id']);
+        if(!$notice || $notice->notice_status != 0){
+            return Response::create([
+                'message'  => '只能发送未发送启动页',
+                'status_code'   => 500
+            ]);
+        }
+
+        $notice->send_time = Carbon::now()->toDateTimeString();
+
+        DB::beginTransaction();
+        try{
+            $notice->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
+            ]);
+        }
+    }
+
+    /**
+     * 删除启动页
+     */
+    public function delete($request)
+    {
+        $startup = $this->startup->find($request['id']);
+        if(!$startup){
+            return Response::create([
+                'message'  => '获取启动页信息失败',
+                'status_code'   => 500
+            ]);
+        }
+        if($startup->is_open){
+            return Response::create([
+                'message'  => '开启中不能删除',
+                'status_code'   => 500
+            ]);
+        }
+
+
+        DB::beginTransaction();
+        try{
+            $startup->delete();
+
+            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 updateStatus($request)
+    {
+        $startup = $this->startup->find($request['id']);
+        if(!$startup){
+            return Response::create([
+                'message'  => '获取启动页信息失败',
+                'status_code'   => 500
+            ]);
+        }
+
+        DB::beginTransaction();
+        try{
+            if($startup->is_open){
+                $startup->is_open = 0;
+            }else{
+                $this->startup->where('is_open', 1)->update(['is_open' => 0]);
+                $startup->is_open = 1;
+            }
+            $startup->save();
+
+            DB::commit();
+            return Response::create();
+
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::error('更新启动页状态:'.$request['id'].$exception->getMessage());
+            return Response::create([
+                'message'  => '修改失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
+    }
+}

+ 20 - 0
app/Transformers/StartupDetailTransformer.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace App\Transformers;
+
+use App\Models\Startup;
+use League\Fractal\TransformerAbstract;
+
+class StartupDetailTransformer extends TransformerAbstract
+{
+    public function transform(Startup $startup)
+    {
+        return [
+            'id' => $startup['id'],
+            'title' => $startup['title'],
+            'img' => $startup['img'],
+            'url' => $startup['url'],
+            'is_open' => $startup['is_open']
+        ];
+    }
+}

+ 19 - 0
app/Transformers/StartupListTransformer.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Transformers;
+
+use App\Models\Startup;
+use League\Fractal\TransformerAbstract;
+
+class StartupListTransformer extends TransformerAbstract
+{
+    public function transform(Startup $startup)
+    {
+        return [
+            'id' => $startup['id'],
+            'title' => $startup['title'],
+            'img' => $startup['img'],
+            'is_open' => $startup['is_open']
+        ];
+    }
+}

+ 50 - 0
database/migrations/2019_09_17_151927_create_table_startup.php

@@ -0,0 +1,50 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateTableStartup extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('startup', function (Blueprint $table) {
+            $table->bigIncrements('id');
+
+            $table->string('title', 32)
+                ->default('')
+                ->comment('标题');
+
+            $table->tinyInteger('is_open')
+                ->default(0)
+                ->comment('是否开启:0否,1是');
+
+            $table->string('img', 255)
+                ->default('')
+                ->comment('图片');
+
+            $table->string('url', 255)
+                ->default('')
+                ->comment('跳转地址');
+            
+            $table->softDeletes();
+
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('startup');
+    }
+}

+ 2 - 0
resources/lang/zh-CN/validation.php

@@ -113,6 +113,8 @@ return [
         'notice_user_type' => '通知用户类型',
         'notice_user_type' => '通知用户类型',
         'action_type' => '跳转内容',
         'action_type' => '跳转内容',
         'action_id' => '跳转id',
         'action_id' => '跳转id',
+        'img' => '图片',
+        'url' => '地址',
     ],
     ],
 
 
 ];
 ];

+ 24 - 0
routes/api.php

@@ -143,4 +143,28 @@ $api->version('v1', [
             $api->get('/complaintSuggestions/lists', 'ComplaintSuggestionsController@index');
             $api->get('/complaintSuggestions/lists', 'ComplaintSuggestionsController@index');
         });
         });
     });
     });
+});
+
+$api->version('v1', [
+    'namespace' => 'App\Http\Controllers\V3',
+], function ($api) {
+
+    $api->group([
+        'prefix' => 'v3'
+    ], function ($api) {
+        $api->group(['middleware' => 'jwt.chxq_auth'], function ($api) {
+            //启动页列表
+            $api->get('startup', 'StartupController@index');
+            //新增启动页
+            $api->post('startup', 'StartupController@create');
+            //编辑启动页
+            $api->put('startup', 'StartupController@update');
+            //删除启动页
+            $api->delete('startup', 'StartupController@delete');
+            //修改启动页状态
+            $api->put('startup/status', 'StartupController@updateStatus');
+            //启动页详情
+            $api->get('startup/detail', 'StartupController@detail');
+        });
+    });
 });
 });