From 845466174ea94c761f50e021ca18ba39295d05ef Mon Sep 17 00:00:00 2001 From: weigang Date: Thu, 3 Sep 2020 09:54:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=A2=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=92=8C=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Constants/v3/OrderState.php | 12 +++- app/Controller/v3/HomeController.php | 9 +++ app/Controller/v3/OrderListController.php | 40 +++++++++++++ app/Model/v3/Market.php | 10 ++++ app/Model/v3/Order.php | 10 ++++ app/Model/v3/OrderGoods.php | 10 ++++ app/Model/v3/OrderMain.php | 37 ++++++++++++ app/Request/v3/UserOrderListRequest.php | 39 ++++++++++++ .../v3/Implementations/OrderListService.php | 60 +++++++++++++++++++ .../UserCenterBlockService.php | 41 +++++++++++++ .../Interfaces/OrderListServiceInterface.php | 11 ++++ .../UserCenterBlockServiceInterface.php | 13 ++++ config/autoload/dependencies.php | 2 + config/routes.php | 3 +- 14 files changed, 295 insertions(+), 2 deletions(-) create mode 100644 app/Controller/v3/OrderListController.php create mode 100644 app/Model/v3/Market.php create mode 100644 app/Model/v3/Order.php create mode 100644 app/Model/v3/OrderGoods.php create mode 100644 app/Model/v3/OrderMain.php create mode 100644 app/Request/v3/UserOrderListRequest.php create mode 100644 app/Service/v3/Implementations/OrderListService.php create mode 100644 app/Service/v3/Implementations/UserCenterBlockService.php create mode 100644 app/Service/v3/Interfaces/OrderListServiceInterface.php create mode 100644 app/Service/v3/Interfaces/UserCenterBlockServiceInterface.php diff --git a/app/Constants/v3/OrderState.php b/app/Constants/v3/OrderState.php index d0c6fb8..0631422 100644 --- a/app/Constants/v3/OrderState.php +++ b/app/Constants/v3/OrderState.php @@ -60,10 +60,20 @@ class OrderState extends AbstractConstants */ const REFUND_REFUSE = 10; + /** + * @Message("待送达") + */ + const RECEIVING = [self::DELIVERY, self::PAID]; + /** * @Message("订单完成") */ - const FINISH = [self::COMPLETED, self::EVALUATED, self::REFUND_REFUSE]; + const FINISH = [self::COMPLETED, self::EVALUATED]; + + /** + * @Message("售后/退款") + */ + const REFUND = [self::REFUNDING, self::REFUNDED, self::REFUND_REFUSE]; /** * @Message("已删除") diff --git a/app/Controller/v3/HomeController.php b/app/Controller/v3/HomeController.php index 700dac0..02f3c68 100644 --- a/app/Controller/v3/HomeController.php +++ b/app/Controller/v3/HomeController.php @@ -9,6 +9,7 @@ use App\Controller\BaseController; use App\Request\v3\UserIndexRequest; use App\Service\v3\Interfaces\CollectStoreServiceInterface; use App\Service\v3\Interfaces\CouponServiceInterface; +use App\Service\v3\Interfaces\UserCenterBlockServiceInterface; use App\Service\v3\Interfaces\UserInfoServiceInterface; use App\TaskWorker\SSDBTask; use Hyperf\Di\Annotation\Inject; @@ -40,6 +41,12 @@ class HomeController extends BaseController */ protected $couponService; + /** + * @Inject + * @var UserCenterBlockServiceInterface + */ + protected $userCenterBlockService; + /** * 小程序首页,根据market_id * 1.banner数据 @@ -209,6 +216,8 @@ class HomeController extends BaseController $data['badge'] = array_merge($data['badge'], $badge); } + $data['block'] = $this->userCenterBlockService->all(); + return $this->success($data); } } \ No newline at end of file diff --git a/app/Controller/v3/OrderListController.php b/app/Controller/v3/OrderListController.php new file mode 100644 index 0000000..18c30f0 --- /dev/null +++ b/app/Controller/v3/OrderListController.php @@ -0,0 +1,40 @@ +validated(); + $list = $this->orderListService->onlineByUser($params['user_id'], $params['tab'], $params['page'], $params['pagesize']); + return $this->success($list); + } +} \ No newline at end of file diff --git a/app/Model/v3/Market.php b/app/Model/v3/Market.php new file mode 100644 index 0000000..5fffc33 --- /dev/null +++ b/app/Model/v3/Market.php @@ -0,0 +1,10 @@ +attributes['created_at']); + } + + public function market() + { + return $this->belongsTo(Market::class, 'market_id', 'id'); + } + + public function orderGoods() + { + // firstKey是中间表联当前表的列,secondKey是远程表对应中间表的列,localKey是当前表关联中间表的列,secondLocalKey是中间表关联远程表的列 + return $this->hasManyThrough( + OrderGoods::class, + Order::class, + 'order_main_id', + 'order_id', + 'id', + 'id' + ); + } +} \ No newline at end of file diff --git a/app/Request/v3/UserOrderListRequest.php b/app/Request/v3/UserOrderListRequest.php new file mode 100644 index 0000000..a7401ae --- /dev/null +++ b/app/Request/v3/UserOrderListRequest.php @@ -0,0 +1,39 @@ + 'required|nonempty|integer', + 'tab' => 'nonempty', + 'page' => 'required|nonempty', + 'pagesize' => 'required|nonempty', + ]; + } + + /** + * @return array + */ + public function messages(): array + { + return [ + '*.*' => ':attribute无效', + ]; + } + + public function attributes(): array + { + return parent::attributes(); + } +} diff --git a/app/Service/v3/Implementations/OrderListService.php b/app/Service/v3/Implementations/OrderListService.php new file mode 100644 index 0000000..267ba57 --- /dev/null +++ b/app/Service/v3/Implementations/OrderListService.php @@ -0,0 +1,60 @@ +select('id', 'global_order_id', 'money', 'state', 'market_id', 'created_at') + ->with(['orderGoods' => function($query) { + $query->select(['lanzu_order_goods.id', 'lanzu_order_goods.name', 'lanzu_order_goods.cover_img']); + }]) + ->with(['market' => function($query) { + $query->select(['lanzu_market.id', 'lanzu_market.name', 'lanzu_market.tel']); + }]) + ->where(['user_id' => $userId]); + switch ($tab) { + case 'all': + break; + case 'completed': + $builder->whereIn('state', OrderState::FINISH); + break; + case 'unpaid': + $builder->where(['state' => OrderState::UNPAID]); + break; + case 'receiving': + $builder->whereIn('state', OrderState::RECEIVING); + break; + case 'refund': + $builder->whereIn('state', OrderState::REFUND); + break; + } + + $paginate = $builder->paginate($pagesize); + $orders = $paginate->toArray(); + return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']]; + } +} \ No newline at end of file diff --git a/app/Service/v3/Implementations/UserCenterBlockService.php b/app/Service/v3/Implementations/UserCenterBlockService.php new file mode 100644 index 0000000..f3944d8 --- /dev/null +++ b/app/Service/v3/Implementations/UserCenterBlockService.php @@ -0,0 +1,41 @@ + 'user', + 'title' => '我的', + 'items' => [ + ['name' => '收货地址', 'icon' => '', 'type' => 'page', 'path' => ''], + ['name' => '商家入口', 'icon' => '', 'type' => 'page', 'path' => ''], + ['name' => '在线客服', 'icon' => '', 'type' => 'page', 'path' => ''], + ['name' => '当面付订单查询', 'icon' => '', 'type' => 'page', 'path' => ''], + ] + ] + ]; + } + +} \ No newline at end of file diff --git a/app/Service/v3/Interfaces/OrderListServiceInterface.php b/app/Service/v3/Interfaces/OrderListServiceInterface.php new file mode 100644 index 0000000..312b3ae --- /dev/null +++ b/app/Service/v3/Interfaces/OrderListServiceInterface.php @@ -0,0 +1,11 @@ + \App\Service\v3\Implementations\StoreService::class, \App\Service\v3\Interfaces\CollectStoreServiceInterface::class => \App\Service\v3\Implementations\CollectStoreService::class, \App\Service\v3\Interfaces\CouponServiceInterface::class => \App\Service\v3\Implementations\CouponService::class, + \App\Service\v3\Interfaces\OrderListServiceInterface::class => \App\Service\v3\Implementations\OrderListService::class, + \App\Service\v3\Interfaces\UserCenterBlockServiceInterface::class => \App\Service\v3\Implementations\UserCenterBlockService::class, ]; diff --git a/config/routes.php b/config/routes.php index f930395..d5a09ac 100644 --- a/config/routes.php +++ b/config/routes.php @@ -97,7 +97,6 @@ Router::addGroup('/v3/', function () { Router::post('search/stores', 'App\Controller\v3\SearchController@stores'); Router::post('goodsRecommend/getByTab', 'App\Controller\v3\GoodsRecommendController@getByTab'); Router::post('store/index', 'App\Controller\v3\StoreController@index'); - Router::post('home/userIndex', 'App\Controller\v3\HomeController@userIndex'); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class]]); // 需要登录的路由 @@ -105,4 +104,6 @@ Router::addGroup('/v3/', function () { Router::post('sms/getVerifyCode', 'App\Controller\v3\SmsController@getVerifyCode'); Router::post('user/bindTel', 'App\Controller\v3\UserController@bindTel'); Router::post('user/updateInfo', 'App\Controller\v3\UserController@updateInfo'); + Router::post('home/userIndex', 'App\Controller\v3\HomeController@userIndex'); + Router::post('user/olOrders', 'App\Controller\v3\OrderListController@onlineForUser'); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]); \ No newline at end of file