wzq лет назад: 5
Родитель
Сommit
cf43e844e8

+ 40 - 26
app/Http/Controllers/V3/StartupController.php

@@ -3,10 +3,9 @@
 namespace App\Http\Controllers\V3;
 
 use App\Http\Controllers\Controller;
-use App\Repositories\NoticeRuleRepository;
-use App\Transformers\MessageRuleDetailTransformer;
-use App\Transformers\NoticeRuleDetailTransformer;
-use App\Transformers\NoticeRuleListTransformer;
+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;
@@ -17,9 +16,9 @@ use League\Fractal\Resource\Item;
 
 class StartupController extends Controller
 {
-    public function __construct(NoticeRuleRepository $noticeRuleRepository)
+    public function __construct(StartupRepository $startupRepository)
     {
-        $this->noticeRuleRepository = $noticeRuleRepository;
+        $this->startupRepository = $startupRepository;
     }
 
     /**
@@ -27,23 +26,20 @@ class StartupController extends Controller
      */
     public function index(Request $request)
     {
-        $productList = $this->noticeRuleRepository->lists($request->all());
+        $startupList = $this->startupRepository->lists($request->all());
         $fractal = new Manager();
-        $resource = new Collection($productList, new NoticeRuleListTransformer());
-        $resource->setPaginator(new IlluminatePaginatorAdapter($productList));
+        $resource = new Collection($startupList, new StartupListTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($startupList));
         $data = $fractal->createData($resource)->toArray();
         $data['extra'] = [
             'filters' => [
-                'title',
+                'keyword'
             ],
             'columns' => [
                 'id',
                 'title',
-                'cover',
-                'updated_at',
-                'send_count',
-                'notice_user_type',
-                'notice_status'
+                'img',
+                'is_open'
             ]
         ];
         return $data;
@@ -57,11 +53,29 @@ class StartupController extends Controller
         $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->noticeRuleRepository->create($request->all());
+        return  $this->startupRepository->update($request->all());
     }
 
 
@@ -71,41 +85,41 @@ class StartupController extends Controller
     public function detail(Request $request)
     {
         $validator = Validator::make($request->all(), [
-            'id' => 'required|exists:notice_rule'
+            'id' => 'required|exists:startup'
         ]);
         if ($validator->fails()) {
             return $this->response->error($validator->errors()->first(), 500);
         }
 
-        $post = $this->noticeRuleRepository->detail($request->all());
-        return $this->response->item($post, new NoticeRuleDetailTransformer());
+        $startup = $this->startupRepository->detail($request->all());
+        return $this->response->item($startup, new StartupDetailTransformer());
     }
 
     /**
-     * 发送启动页
+     * 修改启动页状态
      */
-    public function send(Request $request)
+    public function updateStatus(Request $request)
     {
         $validator = Validator::make($request->all(), [
-            'id' => 'required|exists:notice_rule'
+            'id' => 'required|integer'
         ]);
         if ($validator->fails()) {
             return $this->response->error($validator->errors()->first(), 500);
         }
-        return  $this->noticeRuleRepository->send($request->all());
+        return  $this->startupRepository->updateStatus($request->all());
     }
 
     /**
-     * 删除通知
+     * 删除启动页
      */
     public function delete(Request $request)
     {
         $validator = Validator::make($request->all(), [
-            'id' => 'required|exists:notice_rule'
+            'id' => 'required|integer'
         ]);
         if ($validator->fails()) {
             return $this->response->error($validator->errors()->first(), 500);
         }
-        return  $this->noticeRuleRepository->delete($request->all());
+        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']
+        ];
+    }
+}

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

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

+ 1 - 1
routes/api.php

@@ -154,7 +154,7 @@ $api->version('v1', [
     ], function ($api) {
         $api->group(['middleware' => 'jwt.chxq_auth'], function ($api) {
             //启动页列表
-            $api->get('startup', 'StartupController@lists');
+            $api->get('startup', 'StartupController@index');
             //新增启动页
             $api->post('startup', 'StartupController@create');
             //编辑启动页