From aa475ac3fdc986bfb0ced2a1e833854b4924e775 Mon Sep 17 00:00:00 2001 From: Lemon <15040771@qq.com> Date: Thu, 3 Sep 2020 20:19:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=AE=B6=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/v3/GoodsController.php | 3 +- app/Controller/v3/HomeController.php | 39 ++++++++++ app/Controller/v3/OrderListController.php | 14 ++++ app/Controller/v3/StoreLoginController.php | 4 +- app/Model/v3/Order.php | 15 ++++ app/Model/v3/OrderMain.php | 5 ++ .../v3/Implementations/GoodsService.php | 4 +- .../v3/Implementations/OrderListService.php | 72 ++++++++++++++++++- .../v3/Implementations/StoreInfoService.php | 30 ++++++++ .../v3/Implementations/StoreLoginService.php | 4 +- .../v3/Interfaces/GoodsServiceInterface.php | 2 +- .../Interfaces/OrderListServiceInterface.php | 2 + .../Interfaces/StoreInfoServiceInterface.php | 16 +++++ ...ace.php => StoreLoginServiceInterface.php} | 2 +- config/autoload/dependencies.php | 3 +- config/routes.php | 3 + 16 files changed, 206 insertions(+), 12 deletions(-) create mode 100644 app/Service/v3/Implementations/StoreInfoService.php create mode 100644 app/Service/v3/Interfaces/StoreInfoServiceInterface.php rename app/Service/v3/Interfaces/{StoreLoginServicceInterface.php => StoreLoginServiceInterface.php} (79%) diff --git a/app/Controller/v3/GoodsController.php b/app/Controller/v3/GoodsController.php index b5468f3..68c0fc9 100644 --- a/app/Controller/v3/GoodsController.php +++ b/app/Controller/v3/GoodsController.php @@ -22,9 +22,8 @@ class GoodsController extends BaseController public function detail() { $params = $this->request->all(); - $res['detail'] = $this->goodsService->do(); + $res['detail'] = $this->goodsService->do(35); $res['banner'] = $this->goodsService->getBanner(); - $res['store'] = $this->storeService->detail($params['store_id']); return $this->success($res); } } \ No newline at end of file diff --git a/app/Controller/v3/HomeController.php b/app/Controller/v3/HomeController.php index 02f3c68..93d07ec 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\StoreInfoServiceInterface; use App\Service\v3\Interfaces\UserCenterBlockServiceInterface; use App\Service\v3\Interfaces\UserInfoServiceInterface; use App\TaskWorker\SSDBTask; @@ -47,6 +48,12 @@ class HomeController extends BaseController */ protected $userCenterBlockService; + /** + * @Inject + * @var StoreInfoServiceInterface + */ + protected $storeInfoService; + /** * 小程序首页,根据market_id * 1.banner数据 @@ -54,6 +61,7 @@ class HomeController extends BaseController * 3.活动数据(秒杀、团购、新品、无) * 4.tabs数据 */ + public function appletIndex() { $seconds = 25600; @@ -220,4 +228,35 @@ class HomeController extends BaseController return $this->success($data); } + + /** + * 商家入口详情 + */ + + public function storeIndex() + { + $data['detail'] = $this->storeInfoService->detail(); + $data['order_online'] = [ + 'count' => 6549, + 'total' => 12654.12 + ]; + $data['order_offline'] = [ + 'count' => 3639, + 'total' => 89563.12 + ]; + $data['new_user'] = [ + 'day' => 10, + 'week' => 15, + 'month' => 25, + 'all' => 50 + ]; + $data['badge'] = [ + 'unpaid' => 0, + 'receiving' => 0, + 'completed' => 0, + 'refund' => 0, + ]; + + return $this->success($data); + } } \ No newline at end of file diff --git a/app/Controller/v3/OrderListController.php b/app/Controller/v3/OrderListController.php index 18c30f0..4f1e58f 100644 --- a/app/Controller/v3/OrderListController.php +++ b/app/Controller/v3/OrderListController.php @@ -37,4 +37,18 @@ class OrderListController extends BaseController $list = $this->orderListService->onlineByUser($params['user_id'], $params['tab'], $params['page'], $params['pagesize']); return $this->success($list); } + + public function onlineForStore() + { + $params = $this->request->all(); + $list = $this->orderListService->onlineByStore($params['store_id'], $params['tab'], $params['page'], $params['pagesize']); + return $this->success($list); + } + + public function offlineForStore() + { + $params = $this->request->all(); + $list = $this->orderListService->offlineByStore($params['store_id'], $params['tab'], $params['page'], $params['pagesize']); + return $this->success($list); + } } \ No newline at end of file diff --git a/app/Controller/v3/StoreLoginController.php b/app/Controller/v3/StoreLoginController.php index 0a5e185..eb29554 100644 --- a/app/Controller/v3/StoreLoginController.php +++ b/app/Controller/v3/StoreLoginController.php @@ -5,7 +5,7 @@ namespace App\Controller\v3; use App\Controller\BaseController; -use App\Service\v3\Interfaces\StoreLoginServicceInterface; +use App\Service\v3\Interfaces\StoreLoginServiceInterface; use Hyperf\Di\Annotation\Inject; @@ -13,7 +13,7 @@ class StoreLoginController extends BaseController { /** * @Inject - * @var StoreLoginServicceInterface + * @var StoreLoginServiceInterface */ protected $storeLoginServicce; public function login() diff --git a/app/Model/v3/Order.php b/app/Model/v3/Order.php index fee010e..53a6099 100644 --- a/app/Model/v3/Order.php +++ b/app/Model/v3/Order.php @@ -12,4 +12,19 @@ class Order extends Model { return $this->hasMany(OrderGoods::class, 'order_id', 'id'); } + + public function market() + { + return $this->belongsTo(Market::class, 'market_id', 'id'); + } + + public function orderMain() + { + return $this->belongsTo(OrderMain::class, 'order_main_id', 'id'); + } + + public function user() + { + return $this->belongsTo(User::class, 'user_id', 'id'); + } } \ No newline at end of file diff --git a/app/Model/v3/OrderMain.php b/app/Model/v3/OrderMain.php index d2fbc70..91cebd2 100644 --- a/app/Model/v3/OrderMain.php +++ b/app/Model/v3/OrderMain.php @@ -66,4 +66,9 @@ class OrderMain extends Model 'id' ); } + + public function user() + { + return $this->belongsTo(User::class, 'user_id', 'id'); + } } \ No newline at end of file diff --git a/app/Service/v3/Implementations/GoodsService.php b/app/Service/v3/Implementations/GoodsService.php index c59830a..2fda35e 100644 --- a/app/Service/v3/Implementations/GoodsService.php +++ b/app/Service/v3/Implementations/GoodsService.php @@ -8,9 +8,9 @@ use App\Model\v3\Goods; class GoodsService implements GoodsServiceInterface { - public function do() + public function do($goodsId) { - $res = Goods::query()->where('id',35)->get(); + $res = Goods::query()->with('store')->where('id',$goodsId)->first(); return $res; } diff --git a/app/Service/v3/Implementations/OrderListService.php b/app/Service/v3/Implementations/OrderListService.php index 267ba57..c16de9e 100644 --- a/app/Service/v3/Implementations/OrderListService.php +++ b/app/Service/v3/Implementations/OrderListService.php @@ -4,6 +4,7 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\OrderState; use App\Model\v3\OrderMain; +use App\Model\v3\Order; use App\Service\v3\Interfaces\OrderListServiceInterface; use Hyperf\Paginator\Paginator; @@ -35,7 +36,76 @@ class OrderListService implements OrderListServiceInterface ->with(['market' => function($query) { $query->select(['lanzu_market.id', 'lanzu_market.name', 'lanzu_market.tel']); }]) - ->where(['user_id' => $userId]); + ->where([ + ['user_id','=',$userId], + ['type','=',1] + ]); + 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']]; + } + + public function onlineByStore($storeId, $tab, $page=1, $pagesize=10) + { + $builder = OrderMain::query() + ->select('id','global_order_id', 'money', 'state', 'market_id', 'created_at') + ->with(['orders' => function($query) use ($storeId) { + $query->where('store_id',$storeId)->with('orderGoods'); + }]) + ->where([ + 'type' => 1 + ]); + 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']]; + } + + public function offlineByStore($storeId, $tab, $page=1, $pagesize=10) + { + $builder = Order::query() + ->with(['orderMain' => function($query) { + $query->where('lanzu_order_main.type',4); + }]) + ->with(['user' => function($query) { + $query->select(['lanzu_user.id', 'lanzu_user.nick_name']); + }]) + ->where([ + 'store_id' => $storeId + ]); switch ($tab) { case 'all': break; diff --git a/app/Service/v3/Implementations/StoreInfoService.php b/app/Service/v3/Implementations/StoreInfoService.php new file mode 100644 index 0000000..b00b2b6 --- /dev/null +++ b/app/Service/v3/Implementations/StoreInfoService.php @@ -0,0 +1,30 @@ +where('id',1)->first()->toArray(); + } +} \ No newline at end of file diff --git a/app/Service/v3/Implementations/StoreLoginService.php b/app/Service/v3/Implementations/StoreLoginService.php index b94dd7d..244ecef 100644 --- a/app/Service/v3/Implementations/StoreLoginService.php +++ b/app/Service/v3/Implementations/StoreLoginService.php @@ -4,9 +4,9 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\ErrorCode; use App\Exception\ErrorCodeException; -use App\Service\v3\Interfaces\StoreLoginServicceInterface; +use App\Service\v3\Interfaces\StoreLoginServiceInterface; -class StoreLoginService implements StoreLoginServicceInterface +class StoreLoginService implements StoreLoginServiceInterface { public function do($account,$password) { diff --git a/app/Service/v3/Interfaces/GoodsServiceInterface.php b/app/Service/v3/Interfaces/GoodsServiceInterface.php index be308f8..8b6a31c 100644 --- a/app/Service/v3/Interfaces/GoodsServiceInterface.php +++ b/app/Service/v3/Interfaces/GoodsServiceInterface.php @@ -4,7 +4,7 @@ namespace App\Service\v3\Interfaces; interface GoodsServiceInterface { - public function do(); + public function do($goodsId); public function check($goodsId); public function undo(); public function getBanner(); diff --git a/app/Service/v3/Interfaces/OrderListServiceInterface.php b/app/Service/v3/Interfaces/OrderListServiceInterface.php index 312b3ae..8404aa8 100644 --- a/app/Service/v3/Interfaces/OrderListServiceInterface.php +++ b/app/Service/v3/Interfaces/OrderListServiceInterface.php @@ -8,4 +8,6 @@ interface OrderListServiceInterface public function check(); public function undo(); public function onlineByUser($userId, $tab, $page=1, $pagesize=10); + public function onlineByStore($userId, $tab, $page, $pagesize); + public function offlineByStore($userId, $tab, $page, $pagesize); } \ No newline at end of file diff --git a/app/Service/v3/Interfaces/StoreInfoServiceInterface.php b/app/Service/v3/Interfaces/StoreInfoServiceInterface.php new file mode 100644 index 0000000..47a0451 --- /dev/null +++ b/app/Service/v3/Interfaces/StoreInfoServiceInterface.php @@ -0,0 +1,16 @@ + \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, - \App\Service\v3\Interfaces\StoreLoginServicceInterface::class => \App\Service\v3\Implementations\StoreLoginService::class, + \App\Service\v3\Interfaces\StoreLoginServiceInterface::class => \App\Service\v3\Implementations\StoreLoginService::class, + \App\Service\v3\Interfaces\StoreInfoServiceInterface::class => \App\Service\v3\Implementations\StoreInfoService::class, ]; diff --git a/config/routes.php b/config/routes.php index 4714aba..051568a 100644 --- a/config/routes.php +++ b/config/routes.php @@ -109,4 +109,7 @@ Router::addGroup('/v3/', function () { Router::post('shopCart/detail', 'App\Controller\v3\ShopCartController@detail'); Router::post('orderOnline/review', 'App\Controller\v3\OrderOnlineController@review'); Router::post('storeLogin/login', 'App\Controller\v3\StoreLoginController@login'); + Router::post('home/storeIndex', 'App\Controller\v3\HomeController@storeIndex'); + Router::post('orderList/onlineForStore', 'App\Controller\v3\OrderListController@onlineForStore'); + Router::post('orderList/offlineForStore', 'App\Controller\v3\OrderListController@offlineForStore'); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]); \ No newline at end of file