wesmiler 1 ano atrás
pai
commit
1e4496b287

+ 7 - 0
app/Helpers/common.php

@@ -2291,4 +2291,11 @@ if (!function_exists('api_decrypt')) {
         $data = openssl_decrypt(hex2bin(strtolower($data)), 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
         return $type == 'json' ? json_decode($data, true) : $data;
     }
+}
+
+if(!function_exists('create_function')){
+    function create_function($param1,$param2){
+
+        return ($b['weight'] > $a['weight'] ? 1 : -1);
+    };
 }

+ 2 - 3
app/Http/Controllers/Admin/IndexController.php

@@ -105,12 +105,11 @@ class IndexController extends Backend
     public function clearCache()
     {
         RedisService::keyDel("caches:d*");
-        RedisService::keyDel("caches:car*");
         RedisService::keyDel("caches:adm*");
         RedisService::keyDel("caches:inde*");
-        RedisService::keyDel("caches:driver*");
-        RedisService::keyDel("caches:agent*");
+        RedisService::keyDel("caches:goods*");
         RedisService::keyDel("caches:advert*");
+        RedisService::keyDel("caches:counts*");
         RedisService::keyDel("caches:articl*");
         RedisService::keyDel("caches:qrcode*");
         RedisService::keyDel("caches:memb*");

+ 55 - 0
app/Http/Controllers/Api/v1/GoodsCategoryController.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace App\Http\Controllers\Api\v1;
+
+use App\Http\Controllers\Api\webApp;
+use App\Services\Api\GoodsCategoryService;
+use App\Services\Api\GoodsService;
+
+/**
+ * 商品分类管理
+ * @package App\Http\Controllers\Api
+ */
+class GoodsCategoryController extends webApp
+{
+
+    /**
+     * 列表
+     * @return array
+     */
+    public function index()
+    {
+        $params =request()->post();
+        $pageSize = request()->post('pageSize', 12);
+        $datas = GoodsCategoryService::make()->getDataList($params, $pageSize);
+        return message(1010, true, $datas);
+    }
+
+    /**
+     * 历史
+     * @return array
+     */
+    public function history()
+    {
+        $datas = GoodsCategoryService::make()->getHistoryCateList($this->userId);
+        return message(1010, true, $datas);
+    }
+
+    /**
+     * 详情
+     */
+    public function info()
+    {
+        $params = request()->all();
+        $id = isset($params['id'])? intval($params['id']) : 0;
+        if(empty($id)){
+            return message(1036, false);
+        }
+
+        if($info = GoodsService::make()->getInfo($id)){
+            return message(1010, true, $info);
+        }else{
+            return message(1009, false);
+        }
+    }
+}

+ 24 - 52
app/Http/Controllers/Api/v1/GoodsController.php

@@ -3,8 +3,8 @@
 namespace App\Http\Controllers\Api\v1;
 
 use App\Http\Controllers\Api\webApp;
-use App\Services\Api\ArticleService;
-use App\Services\ConfigService;
+use App\Services\Api\GoodsService;
+use App\Services\Api\OrderService;
 
 /**
  * 商品管理
@@ -20,78 +20,50 @@ class GoodsController extends webApp
     public function index()
     {
         $params =request()->post();
-        $pageSize = request()->post('pageSize', 15);
-        $datas = Goods::make()->getDataList($params, $pageSize);
+        $pageSize = request()->post('pageSize', 12);
+        $datas = GoodsService::make()->getDataList($params, $pageSize);
         return message(1010, true, $datas);
     }
 
     /**
-     * 详情
+     * 列表
+     * @return array
      */
-    public function info()
+    public function list()
     {
-        $params = request()->all();
-        $id = isset($params['id'])? intval($params['id']) : 0;
-        if(empty($id)){
-            return message(1036, false);
+        $ids =request()->post('ids');
+        if(empty($ids)){
+            return message(2101,false);
         }
 
-        if($info = ArticleService::make()->getInfo($id)){
-            return message(1010, true, $info);
-        }else{
-            return message(1009, false);
-        }
-    }
-
-
-    /**
-     * 客服推荐数据
-     */
-    public function customRecommend()
-    {
-        $keywords = ConfigService::make()->getConfigByCode('custom_keywords');
-        $keywords = $keywords? explode('、',$keywords) : ['问题','常见问题','账号','账号登录','登录','密码','商家','商家合作','物流','发货'];
-        $datas = [
-            'keywords'=> array_filter($keywords),
-            'site_custom_phone'=> ConfigService::make()->getConfigByCode('site_custom_phone'),
-            'category'=> [
-                ['id'=>9,'name'=>'常见问题','status'=>1],
-                ['id'=>10,'name'=>'账号登录','status'=>1],
-                ['id'=>11,'name'=>'商家合作','status'=>1],
-            ],
-            'recommend'=> ArticleService::make()->getCustomRecommend(),
-        ];
+        $datas = GoodsService::make()->getListByIds($ids, 0);
         return message(1010, true, $datas);
     }
 
     /**
-     * 客服咨询数据
+     * 购买历史
+     * @return array
      */
-    public function custom()
+    public function history()
     {
-        $type = request()->post('type',0);
-        $keyword = request()->post('keyword','');
-        $num = request()->post('num',6);
-        $datas = ArticleService::make()->getCustomRecommend($type, $num, $keyword, $type==0?true:false);
-        if($datas){
-            return message(1010, true, $datas);
-        }else{
-            return message(1009, false);
-        }
+        $params =request()->post();
+        $pageSize = request()->post('pageSize', 12);
+        $datas = OrderService::make()->getHistoryGoods($this->userId, $params, $pageSize);
+        return message(1010, true, $datas);
     }
 
     /**
-     * 单页数据
+     * 详情
      */
-    public function page()
+    public function info()
     {
         $params = request()->all();
-        $type = isset($params['type'])? intval($params['type']) : 0;
-        if(empty($type)){
-            return message(1031, false);
+        $id = isset($params['id'])? intval($params['id']) : 0;
+        if(empty($id)){
+            return message(1036, false);
         }
 
-        if($info = ArticleService::make()->getInfoByType($type)){
+        if($info = GoodsService::make()->getInfo($id)){
             return message(1010, true, $info);
         }else{
             return message(1009, false);

+ 5 - 2
app/Http/Controllers/Api/v1/IndexController.php

@@ -7,6 +7,7 @@ use App\Services\Api\ArticleService;
 use App\Services\Api\CarCategoryService;
 use App\Services\Api\FreightCategoryService;
 use App\Services\Api\FreightPackageService;
+use App\Services\Api\GoodsService;
 use App\Services\Api\MemberBankService;
 use App\Services\Api\NoticeService;
 use App\Services\Api\OrderService;
@@ -54,13 +55,15 @@ class IndexController extends webApp
      */
     public function data()
     {
+        $historyGoods = OrderService::make()->getHistoryGoods($this->userId);
+        $proGoodsList = GoodsService::make()->getDataList(['is_discount'=>1,'type'=>2]);
         $data  = [
             // 首页轮播
             'banners'=> AdService::make()->getListByPosition(1),
             // 历史购买商品
-            'historyGoods'=> OrderService::make()->getHistoryGoods($this->userId),
+            'historyGoods'=> isset($historyGoods['list'])? $historyGoods['list'] : [],
             // 促销商品
-            'proGoodsList'=> Goods::make()->getHistoryGoods($this->userId),
+            'proGoodsList'=> isset($proGoodsList['list'])? $proGoodsList['list'] : [],
         ];
         return showJson(1010, true, $data);
     }

+ 26 - 0
app/Http/Controllers/Api/v1/MemberController.php

@@ -29,6 +29,32 @@ class MemberController extends webApp
     }
 
     /**
+     * 用户账号列表
+     * @return array
+     */
+    public function index()
+    {
+        $params =request()->post();
+        $pageSize = request()->post('pageSize', 12);
+        $datas = MemberService::make()->getDataList($params, $pageSize);
+        return message(1010, true, $datas);
+    }
+
+    /**
+     * 客户列表
+     * @return array
+     */
+    public function supper()
+    {
+        $params =request()->post();
+        $pageSize = request()->post('pageSize', 12);
+        $params['parent_id'] = isset($params['parent_id'])? $params['parent_id'] : $this->userId;
+        $params['user_type'] = 1;
+        $datas = MemberService::make()->getDataList($params, $pageSize);
+        return message(1010, true, $datas);
+    }
+
+    /**
      * 更新修改头像
      * @return array
      */

+ 5 - 55
app/Http/Controllers/Api/v1/OrderController.php

@@ -77,6 +77,7 @@ class OrderController extends webApp
             return showJson($params, false);
         }
 
+        $params['stock_id'] = isset($params['stock_id']) && $params['stock_id']>0? intval($params['stock_id']) : $this->stockId;
         if (!$result = OrderService::make()->createOrder($this->userId, $params)) {
             return showJson(OrderService::make()->getError(), false);
         } else {
@@ -85,70 +86,19 @@ class OrderController extends webApp
     }
 
     /**
-     * 计算价格
-     * @param OrderValidator $validator
+     * 订单统计数据
      * @return array
      */
-    public function count(OrderValidator $validator)
+    public function count()
     {
-        $params = request()->all();
-        $params = $validator->check($params, 'submit');
-        if (!is_array($params)) {
-            return showJson($params, false);
-        }
-
-        if (!$result = OrderService::make()->orderCount($this->userId, $params)) {
-            return showJson(OrderService::make()->getError(), false);
-        } else {
-            return showJson(OrderService::make()->getError(), true, $result);
-        }
-    }
-
-    /**
-     * 计算距离
-     * @param OrderValidator $validator
-     * @return array
-     */
-    public function distance(OrderValidator $validator)
-    {
-        $params = request()->all();
-        $params = $validator->check($params, 'distance');
-        if (!is_array($params)) {
-            return showJson($params, false);
-        }
-
-        $lat = isset($params['lat'])? floatval($params['lat']) : 0;
-        $lng = isset($params['lng'])? floatval($params['lng']) : 0;
-        $departLat = isset($params['depart_lat'])? floatval($params['depart_lat']) : 0;
-        $departLng = isset($params['depart_lng'])? floatval($params['depart_lng']) : 0;
-        if (!$result = MapService::make()->getDrivingDistance($lat, $lng, $departLat, $departLng)) {
-            return showJson(OrderService::make()->getError(), false);
+        if (!$result = OrderService::make()->getCounts($this->userId)) {
+            return showJson(1009, false);
         } else {
             return showJson(1010, true, $result);
         }
     }
 
     /**
-     * 到付订单支付
-     * @param OrderValidator $validator
-     * @return array
-     */
-    public function pay(OrderValidator $validator)
-    {
-        $params = request()->all();
-        $params = $validator->check($params, 'pay');
-        if (!is_array($params)) {
-            return showJson($params, false);
-        }
-
-        if (!$result = OrderService::make()->pay($this->userId, $params)) {
-            return showJson(OrderService::make()->getError(), false);
-        } else {
-            return showJson(OrderService::make()->getError(), true, $result);
-        }
-    }
-
-    /**
      * 完成订单
      * @param OrderValidator $validator
      * @return array

+ 4 - 2
app/Http/Controllers/Api/webApp.php

@@ -35,8 +35,8 @@ class webApp extends BaseController
     // 登录ID
     protected $userId = 0;
 
-    // 司机ID
-    protected $driverId = 0;
+    // 仓库ID
+    protected $stockId = 1;
 
     // 登录信息
     protected $userInfo = [];
@@ -69,6 +69,7 @@ class webApp extends BaseController
                 $this->initLogin($userId);
             }else{
                 $this->userId = $userId;
+                $this->stockId = isset($userInfo['stock_id'])? $userInfo['stock_id'] : 0;
                 $this->userInfo = $userInfo;
             }
 
@@ -108,6 +109,7 @@ class webApp extends BaseController
             $memberModel = new MemberModel();
             $userInfo = $memberModel->getInfo($this->userId);
             $this->userInfo = $userInfo;
+            $this->stockId = isset($userInfo['stock_id'])? $userInfo['stock_id'] : 0;
             RedisService::set("auths:info:{$userId}", $this->userInfo, 7*24*3600);
         }
 

+ 4 - 3
app/Http/Middleware/WebLogin.php

@@ -25,6 +25,7 @@ class WebLogin extends Middleware
         $action = app('request')->route()->getAction();
         $controller = class_basename($action['controller']);
         list($controller, $action) = explode('@', $controller);
+        $noLoginActs = ['LoginController','GoodsController','IndexController','UploadController'];
         $token = $request->headers->get('Authorization');
         if (strpos($token, 'Bearer ') !== false) {
             $token = str_replace("Bearer ", null, $token);
@@ -50,7 +51,7 @@ class WebLogin extends Middleware
         }
 
         $system = isset($params['system']) ? $params['system'] : '';
-        $system = $system? json_decode($system,true) : [];
+        $system = $system && !is_array($system)? json_decode($system,true) : $system;
         $ctime = isset($system['sys_time'])? $system['sys_time'] : 0;
         $uuid = isset($system['uuid'])? $system['uuid'] : 0;
         $url = '/'.ltrim($url,'/');
@@ -59,12 +60,12 @@ class WebLogin extends Middleware
             return response()->json(message(1012, false, null))->setEncodingOptions(256);
         }
 
-        if (empty($sign) || $sign != $checkSign) {
+        if ((empty($sign) || $sign != $checkSign) && !in_array($controller, $noLoginActs)) {
             return response()->json(message(1012, false, null))->setEncodingOptions(256);
         }
 
         // 接口加密验证
-        if ($userId<=0) {
+        if ($userId<=0 && !in_array($controller, $noLoginActs)) {
             // 在这里可以定制你想要的返回格式, 亦或者是 JSON 编码格式
             return response()->json(message(1035, false, [], 403))->setEncodingOptions(256);
         }

+ 11 - 50
app/Http/Validator/OrderValidator.php

@@ -7,30 +7,11 @@ class OrderValidator extends BaseValidator
 
     public static $rules = [
         'id' => 'required',
-        'driver_id' => 'required',
-        'mobile' => 'required|mobile',
-        'real_name' => 'required|max:30',
-        'lat' => 'required',
-        'lng' => 'required',
-        'depart_lat' => 'required',
-        'depart_lng' => 'required',
-        'address' => 'required|max:50',
-        'depart_address' => 'required|max:50',
-        'car_cate_id' => 'required|max:10',
-        'freight_cate_id' => 'required',
-        'type' => 'required',
+        'goods' => 'required',
         'num' => 'required|max:10',
-        'service_type' => 'required',
-        'province' => 'required',
-        'city' => 'required',
-        'district' => 'required',
-        'pay_style' => 'required',
-        'pay_type' => 'required',
-        'coupon_id' => 'required',
-        'delivery_type' => 'required',
-        'cancel_type' => 'required',
-        'appoint_time' => 'required',
-        'exception_remark' => 'required|max:200',
+        'order_type' => 'required',
+        'pre_pay_remark' => 'string|max:200',
+        'after_remark' => 'string|max:200',
     ];
     public static $msgs = [
         'required' => ':attribute不能为空',
@@ -45,41 +26,21 @@ class OrderValidator extends BaseValidator
     // 当前模型所有验证字段
     public static $fields = [
         'id' => 'ID',
-        'driver_id' => '司机',
-        'mobile' => '收货人手机号',
-        'real_name' => '收货人姓名',
-        'lat' => '起始位置信息',
-        'lng' => '起始位置信息',
-        'depart_lat' => '目的地位置信息',
-        'depart_lng' => '目的地位置信息',
-        'address' => '起始详细地址信息',
-        'depart_address' => '目的地详细地址信息',
-        'car_cate_id' => '车型',
-        'freight_cate_id' => '货物分类',
-        'package_id' => '包装分类',
-        'spec_id' => '货物规格',
-        'type' => '订单类型',
-        'service_type' => '订单服务类型',
+        'buy_user_id' => '下单客户',
+        'goods' => '下单商品',
+        'order_type' => '下单类型',
         'num' => '数量',
-        'province' => '下单人位置信息省',
-        'city' => '下单人位置信息市',
-        'district' => '下单人位置信息区',
-        'pay_style' => '付款方式',
-        'pay_type' => '支付方式',
-        'delivery_type' => '配送方式',
-        'cancel_type' => '取消原因类型',
-        'exception_remark' => '异常备注',
+        'pre_pay_remark' => '预付备注',
+        'after_remark' => '售后备注',
     ];
 
     // 当前模型所有验证场景
     public static $scenes = [
         'info'=> ['id'],
         'pay'=> ['id','pay_type'],
-        'driver'=> ['id','driver_id','cancel_type'],
         'cancel'=> ['id','cancel_type'],
-        'exception'=> ['id','exception_remark'],
-        'distance'=> ['lat','lng','depart_lat','depart_lng'],
-        'submit'=> ['lat','lng','address','depart_lat','depart_lng','address','depart_address','province','city','district','num','type','service_type','pay_style','pay_type','delivery_type'],
+        'receive'=> ['id'],
+        'submit'=> ['goods','order_type','num'],
     ];
 
     /**

+ 12 - 0
app/Models/GoodsCategoryModel.php

@@ -23,6 +23,18 @@ class GoodsCategoryModel extends BaseModel
     protected $table = 'goods_categorys';
 
 
+    /**
+     * 子类
+     * @return \Illuminate\Database\Eloquent\Relations\HasMany
+     */
+    public function subList()
+    {
+        return $this->hasMany(GoodsCategoryModel::class, 'pid','cate_id')
+            ->with(['subList'])
+            ->select(['cate_id','cate_name','pid','icon','status']);
+    }
+
+    // 图标
     public function getIconAttribute($value)
     {
         return $value? get_image_url($value) : '';

+ 21 - 1
app/Models/GoodsModel.php

@@ -25,6 +25,26 @@ class GoodsModel extends BaseModel
     // 封面图
     public function getThumbAttribute($value)
     {
-        return $value? get_image_url($value) : '';
+        return $value? get_image_url($value) : get_image_url('/images/goods/goods.jpeg');
+    }
+
+    /**
+     * 分类
+     * @return \Illuminate\Database\Eloquent\Relations\HasOne
+     */
+    public function category()
+    {
+        return $this->hasOne(GoodsCategoryModel::class, 'cate_id','cate_id')
+            ->select(['cate_id','cate_name','pid']);
+    }
+
+    /**
+     * 库存
+     * @return \Illuminate\Database\Eloquent\Relations\HasMany
+     */
+    public function stocks()
+    {
+        return $this->hasMany(GoodsStockModel::class, 'goods_id','goods_id')
+            ->select(['stock_id','goods_sn','floor','stock']);
     }
 }

+ 3 - 4
app/Models/PaymentModel.php

@@ -12,14 +12,13 @@
 namespace App\Models;
 
 /**
- * 支付-模型
+ * 线路管理-模型
  * @author laravel开发员
  * @since 2020/11/11
  * @package App\Models
  */
-class PaymentModel extends BaseModel
+class LineModel extends BaseModel
 {
     // 设置数据表
-    protected $table = 'payments';
-
+    protected $table = 'lines';
 }

+ 16 - 21
app/Models/MemberModel.php

@@ -24,36 +24,38 @@ class MemberModel extends BaseModel
     protected $table = 'member';
 
     /**
-     * 司机
+     * 仓库
      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
      */
-    public function driver()
+    public function stock()
     {
-        return $this->belongsTo(DriverModel::class, 'id','user_id')
+        return $this->belongsTo(StockModel::class, 'stock_id','stock_id')
             ->where(['mark'=>1])
-            ->select(['id','user_id','mobile','balance','realname','status']);
+            ->select(['stock_id','stock_name','status']);
     }
 
     /**
-     * 推荐人
+     * 线路
+     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
      */
-    public function parent()
+    public function line()
     {
-        return $this->hasOne(MemberModel::class, 'id','parent_id')
-            ->where(['status'=>1,'mark'=>1])
-            ->select(['id', 'nickname', 'username', 'mobile', 'status']);
+        return $this->belongsTo(LineModel::class, 'line_id','line_id')
+            ->where(['mark'=>1])
+            ->select(['line_id','line_name','status']);
     }
 
     /**
      * 推荐人
      */
-    public function agent()
+    public function parent()
     {
-        return $this->hasOne(AgentModel::class, 'user_id','id')
-            ->where(['status'=>2,'mark'=>1])
-            ->select(['id', 'realname', 'user_id', 'mobile','bonus_total','province','area','status']);
+        return $this->hasOne(MemberModel::class, 'id','parent_id')
+            ->where(['status'=>1,'mark'=>1])
+            ->select(['id', 'nickname', 'username', 'mobile', 'status']);
     }
 
+
     /**
      * 获取会员信息
      * @param int $id 会员ID
@@ -73,14 +75,7 @@ class MemberModel extends BaseModel
             if ($info['birthday']) {
                 $info['birthday'] = datetime($info['birthday']);
             }
-            // 城市
-            if ($info['province_id'] && $info['city_id'] && $info['district_id']) {
-                $city = [];
-                $city[] = $info['province_id'];
-                $city[] = $info['city_id'];
-                $city[] = $info['district_id'];
-                $info['city'] = $city;
-            }
+
         }
         return $info;
     }

+ 168 - 0
app/Services/Api/GoodsCategoryService.php

@@ -0,0 +1,168 @@
+<?php
+// +----------------------------------------------------------------------
+// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 LARAVEL研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: laravel开发员 <laravel.qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services\Api;
+
+use App\Models\GoodsCategoryModel;
+use App\Services\BaseService;
+use App\Services\ConfigService;
+use App\Services\RedisService;
+
+/**
+ * 商品分类管理-服务类
+ * @author laravel开发员
+ * @since 2020/11/11
+ * @package App\Services\Api
+ */
+class GoodsCategoryService extends BaseService
+{
+    // 静态对象
+    protected static $instance = null;
+
+    /**
+     * 构造函数
+     * @author laravel开发员
+     * @since 2020/11/11
+     */
+    public function __construct()
+    {
+        $this->model = new GoodsCategoryModel();
+    }
+
+    /**
+     * 静态入口
+     */
+    public static function make()
+    {
+        if (!self::$instance) {
+            self::$instance = new static();
+        }
+        return self::$instance;
+    }
+
+    /**
+     * 列表数据
+     * @param $params
+     * @param int $pageSize
+     * @return array
+     */
+    public function getDataList($params, $pageSize = 10)
+    {
+        $cacheKey = "caches:category:index_{$pageSize}_" . ($params ? md5(json_encode($params)) : 0);
+        $datas = RedisService::get($cacheKey);
+        if (empty($datas)) {
+            $query = $this->getQuery($params);
+            $list = $query->select(['a.cate_id', 'a.cate_name', 'a.pid', 'a.icon', 'a.status'])
+                ->paginate($pageSize > 0 ? $pageSize : 9999999);
+            $list = $list ? $list->toArray() : [];
+            if ($list) {
+                foreach ($list['data'] as &$item) {
+                    $item['sub_list'] = isset($item['sub_list']) && $item['sub_list'] ? $item['sub_list'] : [];
+                }
+                $datas = [
+                    'pageSize' => $pageSize,
+                    'total' => isset($list['total']) ? $list['total'] : 0,
+                    'list' => isset($list['data']) ? $list['data'] : [],
+                ];
+
+                RedisService::set($cacheKey, $datas, rand(3, 5));
+            }
+        }
+
+        return $datas;
+    }
+
+    /**
+     * 历史购买分类
+     * @param $userId
+     */
+    public function getHistoryCateList($userId)
+    {
+        $cacheKey = "caches:category:history_{$userId}";
+        $datas = RedisService::get($cacheKey);
+        if (empty($datas)) {
+            $showHistoryCateNum = ConfigService::make()->getConfigByCode('show_history_cate_num', 8);
+            $model = $this->model->with(['subList'])->from('goods_categorys as a')
+                ->leftJoin('orders_goods as b', 'b.cate_id', '=', 'a.cate_id')
+                ->leftJoin('orders as c', 'b.order_no', '=', 'c.order_no')
+                ->whereIn('c.status', [1, 2, 3, 4, 5, 6])
+                ->where(function ($query) use ($userId) {
+                    $query->where('c.user_id', $userId)
+                        ->orWhere('c.buy_user_id', $userId);
+                });
+
+            // 如果没有历史分类
+            if ($model->count('a.cate_id') <= 0) {
+                $model = $this->model->with(['subList'])->from('goods_categorys as a')
+                    ->leftJoin('goods as b', 'b.cate_id', 'a.cate_id')
+                    ->orderBy('b.sales', 'desc')
+                    ->orderBy('b.goods_id', 'desc');
+            }
+            $datas = $model->where(['b.mark' => 1, 'c.mark' => 1])
+                ->select(['a.cate_id', 'a.cate_name', 'a.pid', 'a.icon', 'a.status'])
+                ->limit($showHistoryCateNum)
+                ->groupBy('a.cate_id')
+                ->get();
+            $datas = $datas ? $datas->toArray() : [];
+            if ($datas) {
+                RedisService::set($cacheKey, $datas, rand(5, 10));
+            }
+        }
+
+        return $datas;
+    }
+
+    /**
+     * 查询条件
+     * @param $params
+     * @return mixed
+     */
+    public function getQuery($params)
+    {
+        $where = ['a.status' => 1, 'a.mark' => 1];
+        $status = isset($params['status']) ? $params['status'] : 1;
+        if ($status > 0) {
+            $where['a.status'] = $status;
+        } else {
+            unset($where['a.status']);
+        }
+        $model = $this->model->with(['subList'])->from('goods_categorys as a')
+            ->where($where)
+            ->where(function ($query) use ($params) {
+                // 上级分类
+                $pid = isset($params['pid']) ? intval($params['pid']) : -1;
+                if ($pid >= 0) {
+                    $query->where('a.pid', $pid);
+                }
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? $params['keyword'] : '';
+                if ($keyword) {
+                    $query->where(function ($query) use ($keyword) {
+                        $query->where('a.cate_name', 'like', "%{$keyword}%");
+                    });
+                }
+            });
+
+        return $model;
+    }
+
+    /**
+     * 详情信息
+     * @param $id
+     * @return mixed
+     */
+    public function getInfo($id)
+    {
+        return $this->model->where(['cate__id' => $id])->first();
+
+    }
+}

+ 146 - 111
app/Services/Api/GoodsService.php

@@ -12,10 +12,10 @@
 namespace App\Services\Api;
 
 use App\Models\GoodsModel;
-use App\Models\MemberCouponModel;
-use App\Models\MemberModel;
 use App\Services\BaseService;
-use Illuminate\Support\Facades\DB;
+use App\Services\ConfigService;
+use App\Services\RedisService;
+use wxkxklmyt\Scws;
 
 /**
  * 商品管理-服务类
@@ -55,40 +55,73 @@ class GoodsService extends BaseService
      * @param int $pageSize
      * @return array
      */
-    public function getDataList($params, $pageSize = 15)
+    public function getDataList($params, $pageSize = 0)
     {
-        $query = $this->getQuery($params);
-        $sortType = isset($params['sort_type']) ? $params['sort_type'] : 0;
-        if ($sortType == 1) {
-            $query = $query->orderBy('a.sales', 'desc');
-        } else if ($sortType == 2) {
-            $query = $query->orderBy('a.sales', 'asc');
-        } else if ($sortType == 3) {
-            $query = $query->orderBy('a.price', 'asc');
-        } else if ($sortType == 4) {
-            $query = $query->orderBy('a.price', 'desc');
-        } else {
-            $query = $query->orderBy('a.create_time', 'desc');
-            $query = $query->orderBy('a.goods_id', 'desc');
+        if($pageSize<=0){
+            $pageSize = ConfigService::make()->getConfigByCode('show_goods_num', 4);
         }
+        $cacheKey ="caches:goods:index:{$pageSize}_".($params? md5(json_encode($params)) : 0);
+        $datas = RedisService::get($cacheKey);
+        if(empty($datas)){
+            $query = $this->getQuery($params);
+            $sortType = isset($params['sort_type']) ? $params['sort_type'] : 0;
+            if ($sortType == 1) {
+                $query = $query->orderBy('a.sales', 'desc');
+            } else if ($sortType == 2) {
+                $query = $query->orderBy('a.sales', 'asc');
+            } else if ($sortType == 3) {
+                $query = $query->orderBy('a.price', 'desc');
+            } else if ($sortType == 4) {
+                $query = $query->orderBy('a.price', 'asc');
+            } else {
+                $query = $query->orderBy('a.create_time', 'desc');
+                $query = $query->orderBy('a.goods_id', 'desc');
+            }
+
+            $list = $query->select(['a.*','a.price as real_price'])
+                ->paginate($pageSize > 0 ? $pageSize : 9999999);
+            $list = $list? $list->toArray() :[];
+            if($list){
+                foreach ($list['data'] as &$item){
+                    $item['real_price'] = $this->getRealPrice($item);
+                    $item['discount_start_at'] = $item['discount_start_time']? date('Y-m-d H:i:s', $item['discount_start_time']):'';
+                    $item['discount_end_at'] = $item['discount_end_time']? date('Y-m-d H:i:s', $item['discount_end_time']):'';
+                }
+                $datas = [
+                    'pageSize'=> $pageSize,
+                    'total'=>isset($list['total'])? $list['total'] : 0,
+                    'list'=> isset($list['data'])? $list['data'] : []
+                ];
 
-        $list = $query->select(['a.*'])
-            ->paginate($pageSize > 0 ? $pageSize : 9999999);
-        $list = $list? $list->toArray() :[];
-        if($list){
-            foreach($list['data'] as &$item){
-                $item['thumb'] = $item['thumb']? get_image_url($item['thumb']) : get_image_url('/images/');
-                $item['create_time'] = $item['create_time']? datetime($item['create_time'],'Y-m-d H.i.s') : '';
-                $item['start_time'] = $item['start_time']? datetime($item['start_time'],'Y-m-d') : '';
-                $item['end_time'] = $item['end_time']? datetime($item['end_time'],'Y-m-d') : '';
+                RedisService::set($cacheKey, $datas, rand(3,5));
+            }
+        }
+
+        return $datas;
+    }
+
+    /**
+     * 实际价格
+     * @param $item
+     * @return int
+     */
+    public function getRealPrice(&$item)
+    {
+        $price = isset($item['price'])? $item['price'] : 0;
+        $isDiscount = isset($item['is_discount'])? $item['is_discount'] : 0;
+        $discountPrice = isset($item['discount_price'])? $item['discount_price'] : 0;
+        $discountStartTime = isset($item['discount_start_time'])? $item['discount_start_time'] : 0;
+        $discountEndTime = isset($item['discount_end_time'])? $item['discount_end_time'] : 0;
+        if($isDiscount){
+            if($discountEndTime<=0 || (time() >= $discountStartTime && time() <= $discountEndTime)){
+                $price = $discountPrice;
+                $item['discount_price1'] = $discountPrice;
+            }else{
+                $item['is_discount'] = 0;
             }
         }
 
-        return [
-            'pageSize'=> $pageSize,
-            'total'=>isset($list['total'])? $list['total'] : 0,
-            'list'=> isset($list['data'])? $list['data'] : []
-        ];
+        return $price;
     }
 
     /**
@@ -98,108 +131,110 @@ class GoodsService extends BaseService
      */
     public function getQuery($params)
     {
-        $where = ['mark' => 1];
-        $status = isset($params['status'])? $params['status'] : 0;
+        $where = ['a.status'=>1,'a.mark' => 1];
+        $status = isset($params['status'])? $params['status'] : 1;
         if($status>0){
-            $where['status'] = $status;
+            $where['a.status'] = $status;
+        }else{
+            unset($where['a.status']);
         }
-        return $this->model->where($where)
+        $model = $this->model->with(['category'])->from('goods as a')
+            ->leftJoin('goods_categorys as b','b.cate_id','=','a.cate_id')
+            ->where($where)
             ->where(function($query) use($params){
 
-                // 类型
-                $type = isset($params['type'])? $params['type'] : 0;
-                if($type){
-                    $query->whereIn('type', [0,$type]);
+                // 分类
+                $cateId = isset($params['cate_id'])? $params['cate_id'] : 0;
+                if($cateId){
+                    $query->where(function($query) use($cateId){
+                        $prefix = env('DB_PREFIX','lev_');
+                        $query->where('a.cate_id', $cateId)
+                            ->orWhereRaw("FIND_IN_SET({$cateId},{$prefix}b.pids)");
+                    });
                 }
 
-                // 价格
-                $total = isset($params['total'])? $params['total'] : 0;
-                if($total>0){
-                    $query->where(function($query) use($total){
-                        $query->where('min_price','<=', $total)->orWhere('min_price','=',0);
+                // 品牌
+                $brandId = isset($params['brand_id'])? $params['brand_id'] : 0;
+                if($brandId>0){
+                    $query->where('a.brand_id', $brandId);
+                }
+
+                $type = isset($params['type'])? $params['type'] : 0;
+                if($type==2){
+                    $query->where('a.is_discount', 1)->where(function($query){
+                        $query->where('a.discount_start_time', '<=', time())
+                            ->where('a.discount_end_time', '>=', time())
+                            ->orWhere('a.discount_end_time', '<=', 0);
                     });
                 }
             })
             ->where(function ($query) use($params){
                 $keyword = isset($params['keyword'])? $params['keyword'] : '';
                 if($keyword){
-                    $query->where(function($query) use($keyword){
-                        $query->where('name','like',"%{$keyword}%");
-                    });
+                    $scws = new Scws();
+                    $kws = $scws->scws($keyword,3,false);
+                    if(count($kws) >1){
+                        $query->where(function ($query) use ($kws) {
+                            foreach ($kws as $kw) {
+                                $kw = trim($kw);
+                                $query->where('a.goods_name', 'like', "%{$kw}%")
+                                    ->where('a.keywords', 'like', "%{$kw}%");
+                            }
+                        });
+                    }else{
+                        $query->where(function ($query) use ($keyword){
+                            $query->where('a.goods_name','like',"%{$keyword}%")
+                                ->orWhere('a.goods_pinyin','like',"%{$keyword}%")
+                                ->orWhere('a.keywords', 'like', "%{$keyword}%");
+                        });
+                    }
                 }
             });
+
+        return $model;
     }
 
     /**
-     * 领取优惠券
-     * @param $userId 领取用户
-     * @param $params
-     * @return bool
+     * 详情信息
+     * @param $id
+     * @return mixed
      */
-    public function receive($userId, $params)
+    public function getInfo($id)
     {
-        $id = isset($params['id'])? $params['id'] : 0;
-        $info = $this->model->where(['id'=> $id,'mark'=>1,'status'=>1])
-            ->where('start_time','<=', time())
-            ->where('end_time','>=', time())
-            ->select(['id as coupon_id','name','icon','type','num','received_num','coupon_type','reduce_price','discount','min_price','expire_day','start_time','end_time'])
-            ->first();
-        $info = $info? $info->toArray() : [];
-        $num = isset($info['num'])? $info['num'] : 0;
-        $receivedNum = isset($info['received_num'])? $info['received_num'] : 0;
-        if(empty($info)){
-            $this->error = 2906;
-            return false;
-        }
-
-        if($receivedNum>=$num){
-            $this->error = 2644;
-            return false;
-        }
-
-        $userInfo = MemberModel::where(['id'=> $userId,'mark'=>1,'status'=>1])
-            ->select(['id','status'])
-            ->first();
-        $status = isset($userInfo['status'])? $userInfo['status'] : 0;
-        if(empty($userInfo) || $status != 1){
-            $this->error = 2024;
-            return false;
-        }
-
-        unset($info['num']);
-        unset($info['received_num']);
-        $info['code'] = get_random_code(8, 'RP');
-        $info['user_id'] = $userId;
-        $info['create_time'] = time();
-        $info['update_time'] = time();
-        $info['status'] = 1;
-        $info['mark'] = 1;
-        DB::beginTransaction();
-        if(!MemberCouponModel::insertGetId($info)){
-            DB::rollBack();
-            $this->error = 2907;
-            return false;
-        }
+        return $this->model->where(['goods_id'=> $id])->first();
 
-        // 领取更新
-        $data = [
-            'received_num'=> DB::raw("received_num + 1"),
-            'update_time'=> time(),
-        ];
-
-        if($receivedNum+1>=$num){
-            $data['status'] = 2;
-        }
+    }
 
-        if(!$this->model->where(['id'=> $id,'mark'=>1])->update($data)){
-            DB::rollBack();
-            $this->error = 2907;
-            return false;
+    /**
+     * 获取购买商品列表
+     * @param $goods
+     * @param false $refresh
+     * @return array|mixed
+     */
+    public function getListByIds($goods, $refresh = false)
+    {
+        $ids = array_keys($goods);
+        $cacheKey = "caches:goods:list_".implode('_',$ids).'_'.md5(json_encode($goods,256));
+        $datas = RedisService::get($cacheKey);
+        if(empty($datas) || $refresh){
+            $datas = $this->model->with(['category','stocks'])
+                ->from('goods as a')
+                ->whereIn('a.goods_id', $ids)
+                ->where(['a.status'=>1,'a.mark'=>1])
+                ->select(['a.*','a.price as real_price'])
+                ->get();
+            $datas = $datas? $datas->toArray() : [];
+            if($datas){
+                foreach ($datas as &$item){
+                    $item['real_price'] = $this->getRealPrice($item);
+                    $item['discount_start_at'] = $item['discount_start_time']? date('Y-m-d H:i:s', $item['discount_start_time']):'';
+                    $item['discount_end_at'] = $item['discount_end_time']? date('Y-m-d H:i:s', $item['discount_end_time']):'';
+                    $item['num'] = isset($goods[$item['goods_id']]) && $goods[$item['goods_id']]>0? $goods[$item['goods_id']] : 1;
+                }
+                RedisService::set($cacheKey, $datas, rand(5, 10));
+            }
         }
 
-        DB::commit();
-        $this->error = 2908;
-        return true;
+        return $datas;
     }
-
 }

+ 108 - 38
app/Services/Api/MemberService.php

@@ -12,15 +12,9 @@
 namespace App\Services\Api;
 
 use App\Helpers\Jwt;
-use App\Models\ActionLogModel;
-use App\Models\BalanceLogModel;
-use App\Models\MemberBankModel;
 use App\Models\MemberModel;
 use App\Services\BaseService;
-use App\Services\ConfigService;
 use App\Services\RedisService;
-use App\Services\SmsService;
-use Illuminate\Support\Facades\DB;
 use phpQrcode\QRcode;
 
 /**
@@ -76,7 +70,7 @@ class MemberService extends BaseService
         }
 
         // 验证是否注册,没有则注册
-        $data = $this->model->where(['username' => $username, 'mark' => 1])->select(['id', 'username','user_type','password', 'parent_id','nickname', 'code', 'status'])->first();
+        $data = $this->model->where(['username' => $username, 'mark' => 1])->select(['id', 'username','user_type','password','stock_id', 'parent_id','nickname', 'code', 'status'])->first();
         $data = $data ? $data->toArray() : [];
         $userId = isset($data['id']) ? $data['id'] : 0;
         $status = isset($data['status']) ? $data['status'] : 0;
@@ -123,6 +117,111 @@ class MemberService extends BaseService
     }
 
     /**
+     * 列表数据
+     * @param $params
+     * @param int $pageSize
+     * @return array
+     */
+    public function getDataList($params, $pageSize = 12, $field=[])
+    {
+        $cacheKey ="caches:member:index:{$pageSize}_".($params? md5(json_encode($params)) : 0);
+        $datas = RedisService::get($cacheKey);
+        if(empty($datas)){
+            $query = $this->getQuery($params);
+            $list = $query->select($field?$field:['a.id','a.username','a.realname','a.nickname','a.mobile','a.stock_id','a.parent_id','a.line_id'])
+                ->paginate($pageSize > 0 ? $pageSize : 9999999);
+            $list = $list? $list->toArray() :[];
+            if($list){
+                foreach ($list['data'] as &$item){
+                    $item['username_text'] = format_mobile($item['username']);
+                }
+                $datas = [
+                    'pageSize'=> $pageSize,
+                    'total'=>isset($list['total'])? $list['total'] : 0,
+                    'list'=> isset($list['data'])? $list['data'] : []
+                ];
+
+                RedisService::set($cacheKey, $datas, rand(5,10));
+            }
+        }
+
+        return $datas;
+    }
+
+    /**
+     * 查询条件
+     * @param $params
+     * @return mixed
+     */
+    public function getQuery($params)
+    {
+        $where = ['a.status'=>1,'a.mark' => 1];
+        $status = isset($params['status'])? $params['status'] : 1;
+        if($status>0){
+            $where['a.status'] = $status;
+        }else{
+            unset($where['a.status']);
+        }
+        $model = $this->model->with(['stock','line'])
+            ->from('member as a')
+            ->where($where)
+            ->where(function($query) use($params){
+
+                // 仓库
+                $stockId = isset($params['stock_id'])? $params['stock_id'] : 0;
+                if($stockId){
+                    $query->where('a.stock_id', $stockId);
+                }
+
+                // 线路
+                $lineId = isset($params['line_id'])? $params['line_id'] : 0;
+                if($lineId && is_array($lineId)){
+                    $query->whereIn('a.line_id', $lineId);
+                }else if($lineId>0){
+                    $query->where('a.line_id', $lineId);
+                }
+
+                // 业务员
+                $parentId = isset($params['parent_id'])? $params['parent_id'] : 0;
+                if($parentId>0){
+                    $query->where('a.parent_id', $parentId);
+                }
+
+                $userType = isset($params['user_type'])? $params['user_type'] : 0;
+                if($userType && is_array($userType)){
+                    $query->whereIn('a.user_type', $userType);
+                }else if($userType>0){
+                    $query->where('a.user_type', $userType);
+                }
+            })
+            ->where(function ($query) use($params){
+                $keyword = isset($params['keyword'])? $params['keyword'] : '';
+                if($keyword){
+                    if(preg_match("/^1[0-9]{10}$/", $keyword)){
+                        $query->where(function ($query) use ($keyword){
+                            $query->where('a.username','=',$keyword);
+                        });
+                    }
+                    else if(preg_match("/^1[0-9]{4,10}$/", $keyword)){
+                        $query->where(function ($query) use ($keyword){
+                            $query->where('a.username','=',$keyword)
+                                ->orWhere('a.username','like',"%{$keyword}%")
+                                ->orWhere('a.mobile','like',"%{$keyword}%");
+                        });
+                    }else{
+                        $query->where(function ($query) use ($keyword){
+                            $query->where('a.username','like',"%{$keyword}%")
+                                ->orWhere('a.nickname','like',"%{$keyword}%")
+                                ->orWhere('a.mobile','like',"%{$keyword}%");
+                        });
+                    }
+                }
+            });
+
+        return $model;
+    }
+
+    /**
      * 获取资料详情
      * @param $where
      * @param array $field
@@ -132,9 +231,9 @@ class MemberService extends BaseService
         $defaultField = ['id', 'username','user_type', 'realname','mobile', 'nickname', 'code', 'parent_id', 'openid', 'status', 'avatar'];
         $field = $field ? $field : $defaultField;
         if (is_array($where)) {
-            $info = $this->model->with(['parent'])->where(['mark'=>1])->where($where)->select($field)->first();
+            $info = $this->model->with(['parent','line'])->where(['mark'=>1])->where($where)->select($field)->first();
         } else {
-            $info = $this->model->with(['parent'])->where(['mark'=>1])->where(['id' => (int)$where])->select($field)->first();
+            $info = $this->model->with(['parent','line'])->where(['mark'=>1])->where(['id' => (int)$where])->select($field)->first();
         }
 
         $info = $info ? $info->toArray() : [];
@@ -156,35 +255,6 @@ class MemberService extends BaseService
     }
 
     /**
-     * 获取用户缓存信息
-     * @param $where
-     * @param array $field
-     * @param int $expired
-     * @return array|mixed
-     */
-    public function getCacheInfo($where, $field = [], $expired = 0)
-    {
-        $cacheKey = "caches:member:info:cache_" . md5(json_encode($where, 256) . json_encode($field, 256) . $expired);
-        $info = RedisService::get($cacheKey);
-        if ($info) {
-            return $info;
-        }
-
-        $defaultField = ['id', 'username', 'realname', 'mobile', 'nickname', 'code', 'parent_id', 'openid', 'status', 'avatar'];
-        $field = $field ? $field : $defaultField;
-        $info = $this->model->with(['parent'])->where($where)->where('mark', 1)->select($field)->first();
-        $info = $info ? $info->toArray() : [];
-        if ($info) {
-            if (isset($info['avatar'])) {
-                $info['avatar'] = get_image_url($info['avatar']);
-            }
-            RedisService::set($cacheKey, $info, $expired ? $expired : rand(3, 5));
-        }
-
-        return $info;
-    }
-
-    /**
      * 生成普通参数二维码
      * @param $str 参数
      * @param bool $refresh 是否重新生成

Diferenças do arquivo suprimidas por serem muito extensas
+ 222 - 936
app/Services/Api/OrderService.php


+ 14 - 129
routes/api.php

@@ -18,74 +18,39 @@ use Illuminate\Support\Facades\Route;
 // 用户端路由组
 Route::prefix('v1')->group(function() {
     // 登录注册、验证码
-    Route::post('/login/mobile', [\App\Http\Controllers\Api\v1\LoginController::class, 'loginMobile']);
-    Route::post('/login/wechat', [\App\Http\Controllers\Api\v1\LoginController::class, 'loginWechat']);
+    Route::post('/login', [\App\Http\Controllers\Api\v1\LoginController::class, 'login']);
     Route::post('/logout', [\App\Http\Controllers\Api\v1\LoginController::class, 'logout']);
-    Route::post('/register', [\App\Http\Controllers\Api\v1\LoginController::class, 'register']);
-    Route::post('/sms/send', [\App\Http\Controllers\Api\v1\LoginController::class, 'sendmsm']);
 
     // 上传文件
     Route::post('/upload/image', [\App\Http\Controllers\Api\UploadController::class, 'uploadImage']);
     Route::post('/upload/file', [\App\Http\Controllers\Api\UploadController::class, 'uploadFile']);
 
     // 配置和首页数据
-    Route::get('/app/config', [\App\Http\Controllers\Api\v1\IndexController::class, 'config']);
-    Route::get('/versionCheck', [\App\Http\Controllers\Api\v1\IndexController::class, 'versionCheck']);
-    Route::get('/index/data', [\App\Http\Controllers\Api\v1\IndexController::class, 'data']);
-    Route::get('/index/banner', [\App\Http\Controllers\Api\v1\IndexController::class, 'banner']);
-    Route::get('/index/banks', [\App\Http\Controllers\Api\v1\IndexController::class, 'banks']);
+    Route::get('/config', [\App\Http\Controllers\Api\v1\IndexController::class, 'config']);
+});
+
 
-    // 车参数
-    Route::get('/car/categoryList', [\App\Http\Controllers\Api\v1\IndexController::class, 'carCategorys']);
-    Route::get('/car/brandList', [\App\Http\Controllers\Api\v1\IndexController::class, 'carBrands']);
 
-    // 货物
-    Route::get('/index/freight', [\App\Http\Controllers\Api\v1\IndexController::class, 'freight']);
+// 用户端路由组
+Route::prefix('v1')->middleware('web.login')->group(function() {
+    Route::get('/index/data', [\App\Http\Controllers\Api\v1\IndexController::class, 'data']);
+
+    // 商品、商品分类
+    Route::get('/goods/index', [\App\Http\Controllers\Api\v1\GoodsController::class, 'index']);
+    Route::get('/goods/categoryList', [\App\Http\Controllers\Api\v1\IndexController::class, 'categoryList']);
+    Route::get('/goods/categoryHistory', [\App\Http\Controllers\Api\v1\IndexController::class, 'categoryHistory']);
 
     // 用户信息
     Route::get('/user/info', [\App\Http\Controllers\Api\v1\MemberController::class, 'info']);
     Route::post('/user/setAvatar', [\App\Http\Controllers\Api\v1\MemberController::class, 'setAvatar']);
     Route::post('/user/modify', [\App\Http\Controllers\Api\v1\MemberController::class, 'modify']);
-    Route::post('/user/idcardCheck', [\App\Http\Controllers\Api\v1\MemberController::class, 'idcardCheck']);
-    Route::post('/user/bindAccount', [\App\Http\Controllers\Api\v1\MemberController::class, 'bindAccount']);
-    Route::get('/user/getAccount', [\App\Http\Controllers\Api\v1\MemberController::class, 'getAccount']);
-    Route::post('/user/withdraw', [\App\Http\Controllers\Api\v1\MemberController::class, 'withdraw']);
-    Route::post('/user/package/receive', [\App\Http\Controllers\Api\v1\MemberController::class, 'packageReceive']);
-    Route::post('/user/package/list', [\App\Http\Controllers\Api\v1\MemberController::class, 'packageList']);
-
-    // 银行卡
-    Route::post('/user/banks/index', [\App\Http\Controllers\Api\v1\MemberBankController::class, 'index']);
-    Route::post('/user/banks/save', [\App\Http\Controllers\Api\v1\MemberBankController::class, 'save']);
-    Route::post('/user/banks/delete', [\App\Http\Controllers\Api\v1\MemberBankController::class, 'delete']);
-
-    // 代理
-    Route::post('/agent/apply', [\App\Http\Controllers\Api\v1\AgentController::class, 'apply']);
-    Route::get('/agent/regions', [\App\Http\Controllers\Api\v1\AgentController::class, 'regions']);
-    Route::get('/agent/applyInfo', [\App\Http\Controllers\Api\v1\AgentController::class, 'applyInfo']);
-
-
-    // 司机申请
-    Route::post('/driver/apply', [\App\Http\Controllers\Api\v1\DriverController::class, 'apply']);
-    Route::get('/driver/applyInfo', [\App\Http\Controllers\Api\v1\DriverController::class, 'applyInfo']);
-    Route::post('/driver/lines', [\App\Http\Controllers\Api\v1\DriverController::class, 'lines']);
-
-    // 优惠券
-    Route::post('/coupon/index', [\App\Http\Controllers\Api\v1\CouponController::class, 'index']);
-    Route::post('/coupon/receive', [\App\Http\Controllers\Api\v1\CouponController::class, 'receive']);
-    Route::post('/user/coupon/index', [\App\Http\Controllers\Api\v1\MemberCouponController::class, 'index']);
-    Route::post('/user/coupon/delete', [\App\Http\Controllers\Api\v1\MemberCouponController::class, 'delete']);
-
-    // 消费订单
+
+    // 订单列表
     Route::post('/order/index', [\App\Http\Controllers\Api\v1\OrderController::class, 'index']);
-    Route::post('/order/list', [\App\Http\Controllers\Api\v1\OrderController::class, 'list']);
     Route::get('/order/info', [\App\Http\Controllers\Api\v1\OrderController::class, 'info']);
     Route::post('/order/submit', [\App\Http\Controllers\Api\v1\OrderController::class, 'submit']);
     Route::post('/order/count', [\App\Http\Controllers\Api\v1\OrderController::class, 'count']);
-    Route::post('/order/pay', [\App\Http\Controllers\Api\v1\OrderController::class, 'pay']);
-    Route::post('/order/cancel', [\App\Http\Controllers\Api\v1\OrderController::class, 'cancel']);
-    Route::post('/order/exception', [\App\Http\Controllers\Api\v1\OrderController::class, 'exception']);
     Route::post('/order/complete', [\App\Http\Controllers\Api\v1\OrderController::class, 'complete']);
-    Route::post('/order/distance', [\App\Http\Controllers\Api\v1\OrderController::class, 'distance']);
 
     // 收货地址
     Route::post('/address/index', [\App\Http\Controllers\Api\v1\MemberAddressController::class, 'index']);
@@ -97,91 +62,11 @@ Route::prefix('v1')->group(function() {
     Route::get('/article/info', [\App\Http\Controllers\Api\v1\ArticleController::class, 'info']);
     Route::get('/article/page', [\App\Http\Controllers\Api\v1\ArticleController::class, 'page']);
 
-    // 消息
-    Route::post('/message/index', [\App\Http\Controllers\Api\v1\MessageController::class, 'index']);
-    Route::post('/message/history', [\App\Http\Controllers\Api\v1\MessageController::class, 'history']);
-    Route::get('/message/getSetting', [\App\Http\Controllers\Api\v1\MessageController::class, 'getSetting']);
-    Route::post('/message/setSetting', [\App\Http\Controllers\Api\v1\MessageController::class, 'setSetting']);
-    Route::get('/message/setRead', [\App\Http\Controllers\Api\v1\MessageController::class, 'setRead']);
-
-    // 账单明细
-    Route::post('/account/index', [\App\Http\Controllers\Api\v1\AccountController::class, 'index']);
-    Route::post('/account/counts', [\App\Http\Controllers\Api\v1\AccountController::class, 'counts']);
-    Route::post('/account/balance', [\App\Http\Controllers\Api\v1\AccountController::class, 'balance']);
-
-
     // 投诉建议
     Route::post('/complaint/index', [\App\Http\Controllers\Api\v1\ComplaintController::class, 'index']);
     Route::post('/complaint/submit', [\App\Http\Controllers\Api\v1\ComplaintController::class, 'submit']);
 
-    // 发票
-    Route::post('/ticket/index', [\App\Http\Controllers\Api\v1\TicketController::class, 'index']);
-    Route::post('/ticket/info', [\App\Http\Controllers\Api\v1\TicketController::class, 'info']);
-    Route::post('/ticket/submit', [\App\Http\Controllers\Api\v1\TicketController::class, 'submit']);
-
-    // 客服
-    Route::post('/custom/index', [\App\Http\Controllers\Api\v1\ArticleController::class, 'customRecommend']);
-    Route::post('/custom/search', [\App\Http\Controllers\Api\v1\ArticleController::class, 'custom']);
-
-
-});
-
-
-// 司机端路由组
-Route::prefix('v1')->group(function() {
-    // 登录注册、验证码
-    Route::post('/driver/login/mobile', [\App\Http\Controllers\Api\driver\LoginController::class, 'loginMobile']);
-    Route::post('/driver/logout', [\App\Http\Controllers\Api\driver\LoginController::class, 'logout']);
-
-    // 司机信息
-    Route::get('/driver/info', [\App\Http\Controllers\Api\driver\DriverController::class, 'info']);
-    Route::post('/driver/setAvatar', [\App\Http\Controllers\Api\driver\DriverController::class, 'setAvatar']);
-    Route::post('/driver/modify', [\App\Http\Controllers\Api\driver\DriverController::class, 'modify']);
-    Route::post('/driver/bindAccount', [\App\Http\Controllers\Api\driver\DriverController::class, 'bindAccount']);
-    Route::get('/driver/getAccount', [\App\Http\Controllers\Api\driver\DriverController::class, 'getAccount']);
-    Route::post('/driver/withdraw', [\App\Http\Controllers\Api\driver\DriverController::class, 'withdraw']);
-    Route::post('/driver/onlineWithdraw', [\App\Http\Controllers\Api\driver\DriverController::class, 'onlineWithdraw']);
-    Route::post('/driver/line/list', [\App\Http\Controllers\Api\driver\DriverController::class, 'lines']);
-    Route::post('/driver/line/submit', [\App\Http\Controllers\Api\driver\DriverController::class, 'lineSubmit']);
-    Route::get('/driver/getVipLevel', [\App\Http\Controllers\Api\driver\DriverController::class, 'getVipLevel']);
-    Route::post('/driver/buyVip', [\App\Http\Controllers\Api\driver\DriverController::class, 'buyVip']);
-
-    // 订单
-    Route::post('/driver/order/index', [\App\Http\Controllers\Api\driver\OrderController::class, 'index']);
-    Route::post('/driver/order/list', [\App\Http\Controllers\Api\driver\OrderController::class, 'list']);
-    Route::get('/driver/order/info', [\App\Http\Controllers\Api\driver\OrderController::class, 'info']);
-    Route::get('/driver/order/picker', [\App\Http\Controllers\Api\driver\OrderController::class, 'picker']);
-    Route::get('/driver/order/receive', [\App\Http\Controllers\Api\driver\OrderController::class, 'receive']);
-    Route::post('/driver/order/cancel', [\App\Http\Controllers\Api\driver\OrderController::class, 'cancel']);
-    Route::post('/driver/order/check', [\App\Http\Controllers\Api\driver\OrderController::class, 'check']);
-    Route::post('/driver/order/exception', [\App\Http\Controllers\Api\driver\OrderController::class, 'exception']);
-    Route::post('/driver/order/complete', [\App\Http\Controllers\Api\driver\OrderController::class, 'complete']);
-
-    // 消息
-    Route::post('/driver/message/index', [\App\Http\Controllers\Api\driver\MessageController::class, 'index']);
-    Route::post('/driver/message/history', [\App\Http\Controllers\Api\driver\MessageController::class, 'history']);
-    Route::get('/driver/message/getSetting', [\App\Http\Controllers\Api\driver\MessageController::class, 'getSetting']);
-    Route::post('/driver/message/setSetting', [\App\Http\Controllers\Api\driver\MessageController::class, 'setSetting']);
-    Route::get('/driver/message/setRead', [\App\Http\Controllers\Api\driver\MessageController::class, 'setRead']);
-
-    // 账单明细
-    Route::post('/driver/account/index', [\App\Http\Controllers\Api\driver\AccountController::class, 'index']);
-    Route::post('/driver/account/counts', [\App\Http\Controllers\Api\driver\AccountController::class, 'counts']);
-    Route::post('/driver/account/balance', [\App\Http\Controllers\Api\driver\AccountController::class, 'balance']);
-
-    // 银行卡
-    Route::post('/driver/banks/index', [\App\Http\Controllers\Api\driver\MemberBankController::class, 'index']);
-    Route::post('/driver/banks/save', [\App\Http\Controllers\Api\driver\MemberBankController::class, 'save']);
-    Route::post('/driver/banks/delete', [\App\Http\Controllers\Api\driver\MemberBankController::class, 'delete']);
-
-    // 投诉建议
-    Route::post('/driver/complaint/index', [\App\Http\Controllers\Api\driver\ComplaintController::class, 'index']);
-    Route::post('/driver/complaint/submit', [\App\Http\Controllers\Api\driver\ComplaintController::class, 'submit']);
-
 });
 
 // 回调处理
-Route::match(['get','post'],'/notify/refund/{payType}', [\App\Http\Controllers\Api\v1\NotifyController::class, 'refund']);
-Route::match(['get','post'],'/notify/{scene}/{payType}', [\App\Http\Controllers\Api\v1\NotifyController::class, 'callback']);
 Route::match(['get','post'],'/test/check', [\App\Http\Controllers\Api\v1\TestController::class, 'check']);
-Route::match(['get','post'],'/test/pwd', [\App\Http\Controllers\Api\v1\TestController::class, 'pwd']);