浏览代码

Repositories新增与自提点列表、新增、修改及查看返回格式统一修改

duqinya 6 年之前
父节点
当前提交
18f2810c48

+ 115 - 216
app/Http/Controllers/ConfigPickupNodeController.php

@@ -1,11 +1,15 @@
 <?php
 namespace App\Http\Controllers;
 use App\Http\ApiHelper;
+use App\Repositories\ConfigPickupNodeRepository;
 use Illuminate\Http\Request;
 use App\Models\ConfigPickupNode;
 use App\Transformers\PickupNodeTransformer;
 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
@@ -15,45 +19,20 @@ use Illuminate\Support\Facades\Validator;
 
 class ConfigPickupNodeController extends BaseController
 {
-    /**
-     * @api {get} /pickupNode/index 自提点列表
-     * @apiVersion 0.1
-     * @apiName ConfigPickupNode index
-     * @apiGroup ConfigPickupNode
-     * @apiPermission none
-     * @apiSuccessExample 成功响应:
-
+    public function __construct(ConfigPickupNodeRepository $configPickupNodeRepository)
     {
-    "data": [],
-    "extra": {
-    "filters": [
-    "筛选字段1",
-    "筛选字段2"
-    ],
-    "columns": [
-    "id",
-    "name"
-    ]
-    },
-    "meta": {
-    "pagination": {
-    "total": 2,
-    "count": 2,
-    "per_page": 15,
-    "current_page": 1,
-    "total_pages": 1,
-    "links": []
+        $this->configPickupNodeRepository = $configPickupNodeRepository;
     }
-    }
-     */
-    public function index()
+
+    //自提点列表
+    public function index(Request $request)
     {
-        $ConfigPickupNode = ConfigPickupNode::orderBy('id', 'desc')
-            ->paginate();
+        $ConfigPickupNode = $this->configPickupNodeRepository->index($request->all());
 
         if (count($ConfigPickupNode)>0) {
 
             foreach ($ConfigPickupNode as $k => $v) {
+
                 $ConfigPickupNode[$k]->receive_type = $v->receive_type == 0 ? '信任交付' : '手动确认接货';
 
                 $ConfigPickupNode[$k]->status = $v->status == 0 ? '启用' : '禁用';
@@ -61,224 +40,144 @@ class ConfigPickupNodeController extends BaseController
                 $ConfigPickupNode[$k]->store_ids = $v->getStoreNameAttribute();//储存方式名称
                 $ConfigPickupNode[$k]->pickup_group_id = $v->getGroupNameAttribute();//自提点分组名称
             }
-
         }
-
-        return $this->response->paginator($ConfigPickupNode, new PickupNodeTransformer());
+        $fractal = new Manager();
+        $resource = new Collection($ConfigPickupNode, new PickupNodeTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($ConfigPickupNode));
+        $data = $fractal->createData($resource)->toArray();
+        $data['extra'] = [
+            'filters' => [
+                'id'
+            ],
+            'columns' => [
+                'id',
+                'city_id',
+                'city_name',
+                'name',
+                'address',
+                'work_time',
+                'manager_name',
+                'manager_mobile',
+                'receive_type',
+                'longitude',
+                'latitude',
+                'store_ids',
+                'pickup_group_id',
+                'status',
+            ]
+        ];
+        return $data;
     }
 
 
-    /**
-     * @api {get} /pickupNode/add 新建自提点
-     * @apiVersion 0.1
-     * @apiName ConfigPickupNode add
-     * @apiGroup ConfigPickupNode
-     * @apiPermission none
-     * @apiSuccessExample 成功响应:
-
+    //新建自提点
+    public function create(Request $request)
     {
-    "meta": {
-    "message": "Success.",
-    "status_code": 200
-    }
-    }
-     */
-
-    public function add(Request $request)
-    {
-        $name = $request->input('name') ? $request->input('name') : '';
-        $pickup_group_id = $request->input('pickup_group_id') ? $request->input('pickup_group_id') : 0;
-        $city_id = $request->input('city_id') ? $request->input('city_id') : 0;
-        $city_name = $request->input('city_name') ? $request->input('city_name') : '';
-        $address = $request->input('address') ? $request->input('address') : '';
-        $longitude = $request->input('longitude') ? $request->input('longitude') : '';
-        $latitude = $request->input('latitude') ? $request->input('latitude') : '';
-        $pickup_code = $request->input('pickup_code') ? $request->input('pickup_code') : '';
-        $work_time = $request->input('work_time') ? $request->input('work_time') : '';
-        $manager_name = $request->input('manager_name') ? $request->input('manager_name') : '';
-        $manager_mobile = $request->input('manager_mobile') ? $request->input('manager_mobile') : '';
-        $store_ids = $request->input('store_ids') ? $request->input('store_ids') : 0;
-        $receive_type = $request->input('receive_type') ? $request->input('receive_type') : '';
-
-        $data = array(
-            'name' => $name,
-            'pickup_group_id' => $pickup_group_id,
-            'city_id' => $city_id,
-            'city_name' => $city_name,
-            'address' => $address,
-            'longitude' => $longitude,
-            'latitude' => $latitude,
-            'pickup_code' => $pickup_code,
-            'work_time' => $work_time,
-            'manager_name' => $manager_name,
-            'manager_mobile' => $manager_mobile,
-            'store_ids' => $store_ids,
-            'receive_type' => $receive_type,
-        );
-
-        $rules = [
-            'name' => 'required|max:20',
+        $validator = Validator::make($request->all(), [
+            'name' => 'required|string|max:20',
             'manager_mobile' => ['required', 'regex:/^1(3[0-9]|4[57]|5[0-35-9]|6[56]|7[0135678]|8[0-9]|9[89])\\d{8}$/'],
-            'address' => 'required|max:200',
-            'pickup_group_id' => 'required',
-            'city_id' => 'required',
-            'city_name' => 'required',
+            'address' => 'required|string|max:200',
+            'pickup_group_id' => 'required|integer',
+            'city_id' => 'required|integer',
+            'city_name' => 'required|string',
             'longitude' => 'required',
             'latitude' => 'required',
             'pickup_code' => 'required',
             'work_time' => 'required',
-        ];
-
-        $massage = [
-            'name.required' => '自提点名称不能为空',
-            'name.max' => '自提点名称不能超过20个字符',
-            'manager_mobile.required' => '负责人电话不能为空',
-            'manager_mobile.regex' => '负责人手机号格式不正确',
-            'address.required' => '自提点详细地址不能为空',
-            'address.max' => '自提点详细地址不能超过200个字符',
-            'pickup_group_id.required' => '自提点分组ID不能为空',
-            'city_id.required' => '城市不能为空',
-            'city_name.required' => '城市名称不能为空',
-            'longitude.required' => '经度不能为空',
-            'latitude.required' => '纬度不能为空',
-            'pickup_code.required' => '自提点编码不能为空',
-            'work_time.required' => '自提时间不能为空',
-        ];
-        $validator = Validator::make($data, $rules, $massage);
-
+            'store_ids' => 'required',
+            'receive_type' => ['required', Rule::in(0,1)],
+        ]);
         if ($validator->fails()) {
-
-            return $this->response->array(ApiHelper::error('请求参数格式不正确!', 412));
+            return $this->response->error($validator->errors()->first(), 500);
         }
-
-        $pickup_node = ConfigPickupNode::create($data);
-        if(!$pickup_node) {
-
-            return $this->response->array(ApiHelper::error('新建自提点失败!', 500));
-        }
-
-        return $this->response->array(ApiHelper::success());
+        return  $this->configPickupNodeRepository->create($request->all());
 
     }
 
-    /**
-     * @api {get} /pickupNode/edit 编辑自提点
-     * @apiVersion 0.1
-     * @apiName ConfigPickupNode edit
-     * @apiGroup ConfigPickupNode
-     * @apiPermission none
-     * @apiSuccessExample 成功响应:
-    {
-    "data": [],
-    "extra": {
-    "filters": [
-    "筛选字段1",
-    "筛选字段2"
-    ],
-    "columns": [
-    "id",
-    "name"
-    ]
-    },
-    "meta": {
-    "pagination": {
-    "total": 2,
-    "count": 2,
-    "per_page": 15,
-    "current_page": 1,
-    "total_pages": 1,
-    "links": []
-    }
-    }
-     */
 
+    //编辑自提点
     public function edit(Request $request)
     {
-        $data = $request->all();
-        $data['id'] = $request->input('id');
-        $pickup_node = ConfigPickupNode::where('id',$data['id'])->first();
-
-        if (!$pickup_node) {
-
-            return $this->response->array(ApiHelper::error('该自提点不存在!', 402));
-        }
-
-
-
-        $rules = [
-            'name' => 'required|max:20',
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|exists:config_pickup_node',
+            'name' => 'required|string|max:20',
             'manager_mobile' => ['required', 'regex:/^1(3[0-9]|4[57]|5[0-35-9]|6[56]|7[0135678]|8[0-9]|9[89])\\d{8}$/'],
-            'address' => 'required|max:200',
-            'pickup_group_id' => 'required',
-            'city_id' => 'required',
-            'city_name' => 'required',
+            'address' => 'required|string|max:200',
+            'pickup_group_id' => 'required|integer',
+            'city_id' => 'required|integer',
+            'city_name' => 'required|string',
             'longitude' => 'required',
             'latitude' => 'required',
             'pickup_code' => 'required',
             'work_time' => 'required',
-        ];
-        $validator = Validator::make($data, $rules);
-        if ($validator->fails()) {
+            'store_ids' => 'required',
+            'receive_type' => ['required', Rule::in(0,1)],
+        ]);
 
-            return $this->response->array(ApiHelper::error('请求参数格式不正确!', 412));
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
         }
-        $pickup_node_update = $pickup_node->update($data);
-        if (!$pickup_node_update){
+        return  $this->configPickupNodeRepository->edit($request->all());
+    }
 
-            return $this->response->array(ApiHelper::error('修改失败,请重试!', 412));
-        }
 
-        return $this->response->array(ApiHelper::success());
+    //查看某自提点
+    public function view(Request $request)
+    {
+        $all = $request->all();
+        $validator = Validator::make($all, [
+            'id' => 'required|integer',
+        ]);
+
+        if($validator->fails()) {
 
-    }
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        $getPickup = $this->configPickupNodeRepository->index($request->all());
 
-    /**
-     * @api {get} /pickupNode/view 查看自提点
-     * @apiVersion 0.1
-     * @apiName ConfigPickupNode view
-     * @apiGroup ConfigPickupNode
-     * @apiPermission none
-     * @apiSuccessExample 成功响应:
+        if (count($getPickup)>0) {
+            foreach ($getPickup as $k => $v) {
 
-    {
-    "data": {
-    "id": 2,
-    "city_id": 1,
-    "city_name": "dd",
-    "name": "ff",
-    "address": "dd",
-    "work_time": "2019-04-24 11:35:00",
-    "manager_name": "4ed",
-    "manager_mobile": "555",
-    "receive_type": "信任交付",
-    "longitude": "2",
-    "latitude": "2",
-    "store_ids": "冷冻",
-    "status": "启用"
-    },
-    "meta": {
-    "message": "Success.",
-    "status_code": 200
-    }
-    }
-     */
+                $getPickup[$k]->receive_type = $v->receive_type == 0 ? '信任交付' : '手动确认接货';
 
-    public function view(Request $request)
-    {
-        $id = $request->input('id');
-        $pickup_node = ConfigPickupNode::where('id',$id)->first();
-        if (!$pickup_node) {
+                $getPickup[$k]->status = $v->status == 0 ? '启用' : '禁用';
 
-            return $this->response->array(ApiHelper::error('没有找到该自提点!', 402));
+                $getPickup[$k]->store_ids = $v->getStoreNameAttribute();//储存方式名称
+                $getPickup[$k]->pickup_group_id = $v->getGroupNameAttribute();//自提点分组名称
+            }
         }
-        $pickup_node->receive_type = $pickup_node->receive_type == 0 ? '信任交付':'手动确认接货';
-        $pickup_node->status = $pickup_node->status == 0 ? '启用':'禁用';
-        $pickup_node->store_ids = $pickup_node->getStoreNameAttribute();
-        $pickup_node->pickup_group_id = $pickup_node->getGroupNameAttribute();
 
-        return $this->response->item($pickup_node, new PickupNodeTransformer)->setMeta(ApiHelper::meta());
+        if(!$getPickup){
 
-    }
+            return $this->response->error($validator->errors()->first(), 500);
+        }
 
+        $fractal = new Manager();
+        $resource = new Collection($getPickup, new PickupNodeTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($getPickup));
+        $data = $fractal->createData($resource)->toArray();
+        $data['extra'] = [
+            'filters' => [
+                'id'
+            ],
+            'columns' => [
+                'id',
+                'city_id',
+                'city_name',
+                'name',
+                'address',
+                'work_time',
+                'manager_name',
+                'manager_mobile',
+                'receive_type',
+                'longitude',
+                'latitude',
+                'store_ids',
+                'pickup_group_id',
+                'status',
+            ]
+        ];
+        return $data;
 
+    }
 }

+ 101 - 0
app/Repositories/ConfigPickupNodeRepository.php

@@ -0,0 +1,101 @@
+<?php
+
+namespace App\Repositories;
+
+
+use Symfony\Component\HttpKernel\Exception\HttpException;
+use App\Models\ConfigPickupNode;
+use Dingo\Api\Http\Response;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Database\QueryException;
+
+class ConfigPickupNodeRepository {
+    public function __construct(ConfigPickupNode $configPickupNode) {
+
+        $this->configPickupNode = $configPickupNode;
+    }
+    //列表
+    public function index($request)
+    {
+        $where = [];
+        if(isset($request['id'])){
+            $where[] = ['id', '=', $request['id']];
+        }
+
+        return $this->configPickupNode->where($where)->orderBy('id', 'asc')->paginate(20);
+
+    }
+
+    /**
+     * 添加自提点
+     */
+    public function create($request)
+    {
+        if($this->configPickupNode->where('name', trim($request['name']))->exists()){
+            throw new HttpException(500, '该自提点已经存在');
+        }
+
+        $data = [
+            'name' => $request['name'],
+            'city_id' => $request['city_id'],
+            'city_name' => $request['city_name'],
+            'address' => $request['address'],
+            'work_time' => $request['work_time'],
+            'manager_name' => $request['manager_name'],
+            'manager_mobile' => $request['manager_mobile'],
+            'receive_type' => $request['receive_type'],
+            'longitude' => $request['longitude'],
+            'latitude' => $request['latitude'],
+            'store_ids' => $request['store_ids'],
+            'pickup_group_id' => $request['pickup_group_id'],
+            'status' => 0
+        ];
+
+        if (!$this->configPickupNode->create($data)) {
+            throw new HttpException(500, '添加失败');
+        }
+    }
+
+    public function edit($request)
+    {
+        $pickupNode = $this->configPickupNode->where('id', $request['id'])->first();
+
+        $pickupNode->name = $request['name'];
+        $pickupNode->city_id = $request['city_id'];
+        $pickupNode->city_name = $request['city_name'];
+        $pickupNode->address = $request['address'];
+        $pickupNode->work_time = $request['work_time'];
+        $pickupNode->manager_name = $request['manager_name'];
+        $pickupNode->manager_mobile = $request['manager_mobile'];
+        $pickupNode->receive_type = $request['receive_type'];
+        $pickupNode->longitude = $request['longitude'];
+        $pickupNode->latitude = $request['latitude'];
+        $pickupNode->store_ids = $request['store_ids'];
+        $pickupNode->pickup_group_id = $request['pickup_group_id'];
+        $pickupNode->status = 0;
+
+        DB::beginTransaction();
+        try{
+            $res = $pickupNode->save();
+
+            if($res){
+                DB::commit();
+                return Response::create();
+            }
+            DB::rollBack();
+            return Response::create([
+                'message'  => '编辑失败,请重试',
+                'status_code'   => 500
+            ]);
+
+        }catch (QueryException $exception){
+            DB::rollBack();
+            return Response::create([
+                'message'  => '编辑失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
+    }
+
+}

+ 24 - 0
app/Repositories/ConfigStoreTypeRepository.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Repositories;
+
+
+
+
+use App\Models\ConfigStoreType;
+
+class ConfigStoreTypeRepository {
+    public function __construct(ConfigStoreType $configStoreType) {
+        $this->configStoreType = $configStoreType;
+    }
+    //列表
+    public function index($request)
+    {
+        $where = [];
+        if(isset($request['id'])){
+            $where[] = ['id', '=', $request['id']];
+        }
+
+        return $this->configStoreType->where($where)->orderBy('id', 'asc')->paginate(20);
+    }
+}