From 28b8fd85cfbd967e5ddb72810cd0b4bb41db020a Mon Sep 17 00:00:00 2001 From: lanzu_qsy <334039090@qq.com> Date: Tue, 8 Sep 2020 09:31:12 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=86=E8=B4=A6RPC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Constants/v3/OrderState.php | 2 +- .../SeparateAccountsServiceInterface.php | 10 +++++++ app/JsonRpc/SeparateaccountsService.php | 28 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 app/JsonRpc/SeparateAccountsServiceInterface.php create mode 100644 app/JsonRpc/SeparateaccountsService.php diff --git a/app/Constants/v3/OrderState.php b/app/Constants/v3/OrderState.php index f6848f5..718dffc 100644 --- a/app/Constants/v3/OrderState.php +++ b/app/Constants/v3/OrderState.php @@ -68,7 +68,7 @@ class OrderState extends AbstractConstants /** * @Message("订单完成") */ - const FINISH = [self::COMPLETED, self::EVALUATED, self::CANCELED]; + const FINISH = [self::COMPLETED, self::EVALUATED]; /** * @Message("售后/退款") diff --git a/app/JsonRpc/SeparateAccountsServiceInterface.php b/app/JsonRpc/SeparateAccountsServiceInterface.php new file mode 100644 index 0000000..28a8174 --- /dev/null +++ b/app/JsonRpc/SeparateAccountsServiceInterface.php @@ -0,0 +1,10 @@ +separateaccountsService->orderOnlineCompleted($orderMainId, $userId); + + } +} \ No newline at end of file From 070bdc56788f054da201b28ffea2be7c4989f479 Mon Sep 17 00:00:00 2001 From: weigang Date: Tue, 8 Sep 2020 10:41:21 +0800 Subject: [PATCH 2/4] =?UTF-8?q?user=20token=E7=9A=84=E9=9B=8F=E5=BD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Middleware/Auth/UserMiddleware.php | 18 ++++++++++++++++++ .../v3/Implementations/WxLoginService.php | 12 ++++++++---- config/autoload/auth.php | 8 ++++++-- config/config.php | 1 - 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/app/Middleware/Auth/UserMiddleware.php b/app/Middleware/Auth/UserMiddleware.php index 2341ceb..6d3da25 100644 --- a/app/Middleware/Auth/UserMiddleware.php +++ b/app/Middleware/Auth/UserMiddleware.php @@ -2,8 +2,12 @@ namespace App\Middleware\Auth; +use App\Model\v3\User; +use App\TaskWorker\SSDBTask; +use Hashids\Hashids; use Hyperf\HttpServer\Contract\RequestInterface as HttpRequest; use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse; +use Hyperf\Utils\ApplicationContext; use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -33,6 +37,7 @@ class UserMiddleware implements MiddlewareInterface $this->container = $container; $this->response = $response; $this->request = $request; + make(Hashids::class, ['secret' => config('auth.user.hash_ids_secret')]); } /** @@ -63,5 +68,18 @@ class UserMiddleware implements MiddlewareInterface private function checkLogin() { return true; + + $userToken = $this->request->input('user_token', ''); + $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); + $exists = $ssdb->exec('exists', $userToken); + if (!$userToken || !$exists) { + return false; + } + + $hashIds = ApplicationContext::getContainer()->get(Hashids::class); + $user = $hashIds->decode($userToken); + $this->request->user = User::find($user[0]); + + return true; } } \ No newline at end of file diff --git a/app/Service/v3/Implementations/WxLoginService.php b/app/Service/v3/Implementations/WxLoginService.php index 11f8e69..97a0e3a 100644 --- a/app/Service/v3/Implementations/WxLoginService.php +++ b/app/Service/v3/Implementations/WxLoginService.php @@ -35,20 +35,24 @@ class WxLoginService implements \App\Service\v3\Interfaces\WxLoginServiceInterfa )->toArray(); // 登录成功 - $hash = new Hashids(config('hash_ids_secret')); - $hashIds = $hash->encode((int)$user['id']); + $hash = ApplicationContext::getContainer()->get(Hashids::class); + $hashIds = $hash->encode((int)$user['id'], time()); $user['user_token'] = $hashIds; + $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); + $ssdb->exec('setnx', $hashIds, 1); + $ssdb->exec('expire', $hashIds, config('auth.user.expire_time')); + $return = array_merge($user, $result); + $kvs = []; foreach ($return as $k => $v) { $kvs[] = $k; $kvs[] = $v; } - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); $ssdb->exec('multi_hset', SsdbKeys::USER_INFO.$user['id'], $kvs); - return $user; + return $return; } public function check($userId) diff --git a/config/autoload/auth.php b/config/autoload/auth.php index 89bafcf..c98bf87 100644 --- a/config/autoload/auth.php +++ b/config/autoload/auth.php @@ -7,8 +7,12 @@ declare(strict_types=1); return [ 'api' => [ 'sign' => [ - 'secret_key' => 'lanzu@123', - 'expire_time' => 200 + 'secret_key' => env('API_AUTH_SECRET'), + 'expire_time' => env('API_AUTH_EXPIRE_TIME') ] ], + 'user' => [ + 'hash_ids_secret' => env('HASH_IDS_SECRET'), + 'expire_time' => env('HASH_IDS_EXPIRE_TIME') + ] ]; \ No newline at end of file diff --git a/config/config.php b/config/config.php index 26b4014..ad49d28 100644 --- a/config/config.php +++ b/config/config.php @@ -52,5 +52,4 @@ return [ 'alioss' => [ 'img_host' => env('OSS_IMG_HOST', ''), ], - 'hash_ids_secret' => env('HASH_IDS_SECRET'), ]; From a60cc268db6c06d498a05c6abe24058dcb9e4902 Mon Sep 17 00:00:00 2001 From: weigang Date: Tue, 8 Sep 2020 11:29:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=BD=93=E9=9D=A2?= =?UTF-8?q?=E4=BB=98=E8=AE=A2=E5=8D=95=EF=BC=8C=E6=90=9C=E7=B4=A2=E5=95=86?= =?UTF-8?q?=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/v3/OrderListController.php | 7 +++++++ app/Request/v3/UserOrderListRequest.php | 2 +- .../v3/Implementations/OrderListService.php | 20 +++++++++++++++---- .../Implementations/OrderOfflineService.php | 9 ++++++++- .../v3/Implementations/OrderOnlineService.php | 2 +- .../v3/Implementations/SearchService.php | 4 ++-- .../Interfaces/OrderListServiceInterface.php | 1 + config/routes.php | 1 + 8 files changed, 37 insertions(+), 9 deletions(-) diff --git a/app/Controller/v3/OrderListController.php b/app/Controller/v3/OrderListController.php index 5aceb5b..08928c7 100644 --- a/app/Controller/v3/OrderListController.php +++ b/app/Controller/v3/OrderListController.php @@ -51,4 +51,11 @@ class OrderListController extends BaseController $list = $this->orderListService->offlineByStore($params['store_id'], $params['tab'], $params['page'], $params['pagesize'],$params['start_time'],$params['end_time']); return $this->success($list); } + + public function offlineForUser(UserOrderListRequest $request) + { + $params = $request->validated(); + $list = $this->orderListService->offlineByUser($params['user_id'], $params['page'], $params['pagesize']); + return $this->success($list); + } } \ No newline at end of file diff --git a/app/Request/v3/UserOrderListRequest.php b/app/Request/v3/UserOrderListRequest.php index a7401ae..3ac1eae 100644 --- a/app/Request/v3/UserOrderListRequest.php +++ b/app/Request/v3/UserOrderListRequest.php @@ -16,7 +16,7 @@ class UserOrderListRequest extends BaseFormRequest { return [ 'user_id' => 'required|nonempty|integer', - 'tab' => 'nonempty', + 'tab' => '', 'page' => 'required|nonempty', 'pagesize' => 'required|nonempty', ]; diff --git a/app/Service/v3/Implementations/OrderListService.php b/app/Service/v3/Implementations/OrderListService.php index 7bc5b17..3d7fded 100644 --- a/app/Service/v3/Implementations/OrderListService.php +++ b/app/Service/v3/Implementations/OrderListService.php @@ -3,8 +3,10 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\OrderState; +use App\Constants\v3\OrderType; use App\Model\v3\OrderMain; use App\Model\v3\Order; +use App\Model\v3\ShoppingCart; use App\Service\v3\Interfaces\OrderListServiceInterface; use Hyperf\Paginator\Paginator; @@ -30,10 +32,7 @@ class OrderListService implements OrderListServiceInterface { $builder = OrderMain::query() ->with(['orderGoods', 'market']) - ->where([ - ['user_id','=',$userId], - ['type','=',1] - ]); + ->where(['user_id' => $userId, 'type' => OrderType::ONLINE]); switch ($tab) { case 'all': break; @@ -143,4 +142,17 @@ class OrderListService implements OrderListServiceInterface $orders = $paginate->toArray(); return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']]; } + + public function offlineByUser($userId, $page=1, $pagesize=10) + { + $builder = OrderMain::query() + ->with(['orders' => function($query) { + $query->with('store'); + }]) + ->where(['user_id' => $userId, 'type' => OrderType::OFFLINE]); + + $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/OrderOfflineService.php b/app/Service/v3/Implementations/OrderOfflineService.php index 8ebdaf3..4fdc741 100644 --- a/app/Service/v3/Implementations/OrderOfflineService.php +++ b/app/Service/v3/Implementations/OrderOfflineService.php @@ -60,6 +60,12 @@ class OrderOfflineService implements OrderOfflineServiceInterface $orderMain = OrderMain::query()->create($dataMain); $orderMainId = $orderMain->id; + // 店铺今天的订单数 + $count = Order::query() + ->where(['store_id' => $storeId, 'type' => OrderType::OFFLINE]) + ->whereBetween('created_at', [strtotime(date('Y-m-d 00:00:00')), strtotime(date('Y-m-d 23:59:59'))]) + ->count(); + // 子订单数据 $dataChildren = [ 'order_main_id' => $orderMainId, @@ -67,7 +73,8 @@ class OrderOfflineService implements OrderOfflineServiceInterface 'store_id' => $storeId, 'money' => $money, 'order_num' => date('YmdHis').mt_rand(1000, 9999), - 'note' => '' + 'note' => '', + 'oid' => $count + 1 ]; $orderChild = Order::query()->create($dataChildren); diff --git a/app/Service/v3/Implementations/OrderOnlineService.php b/app/Service/v3/Implementations/OrderOnlineService.php index 8c36c40..3bcca12 100644 --- a/app/Service/v3/Implementations/OrderOnlineService.php +++ b/app/Service/v3/Implementations/OrderOnlineService.php @@ -129,7 +129,7 @@ class OrderOnlineService implements OrderOnlineServiceInterface $storeTypeIds[] = (string)$storeType; // 店铺今天的订单数 $count = Order::query() - ->where(['store_id' => $storeId]) + ->where(['store_id' => $storeId, 'type' => OrderType::ONLINE]) ->whereBetween('created_at', [strtotime(date('Y-m-d 00:00:00')), strtotime(date('Y-m-d 23:59:59'))]) ->count(); diff --git a/app/Service/v3/Implementations/SearchService.php b/app/Service/v3/Implementations/SearchService.php index 4ce8b47..660d9dd 100644 --- a/app/Service/v3/Implementations/SearchService.php +++ b/app/Service/v3/Implementations/SearchService.php @@ -47,7 +47,7 @@ class SearchService implements \App\Service\v3\Interfaces\SearchServiceInterface $builder->select(['id', 'store_id', 'cover_img', 'name', 'spec', 'tags', 'original_price', 'price', 'inventory', 'sales as total_sales']); $paginate = $builder->paginate($params['pagesize']); $goods = $paginate->toArray(); - return ['has_more_pages' => $paginate->hasMorePages(), 'goods' => $goods]; + return ['has_more_pages' => $paginate->hasMorePages(), 'goods' => $goods['data']]; } public function doForStores($params) @@ -86,7 +86,7 @@ class SearchService implements \App\Service\v3\Interfaces\SearchServiceInterface $builder->select(['id', 'logo', 'name']); $paginate = $builder->paginate($params['pagesize']); $stores = $paginate->toArray(); - return ['has_more_pages' => $paginate->hasMorePages(), 'stores' => $stores]; + return ['has_more_pages' => $paginate->hasMorePages(), 'stores' => $stores['data']]; } public function getHotKeywords($type) diff --git a/app/Service/v3/Interfaces/OrderListServiceInterface.php b/app/Service/v3/Interfaces/OrderListServiceInterface.php index 3a7f204..a3feb77 100644 --- a/app/Service/v3/Interfaces/OrderListServiceInterface.php +++ b/app/Service/v3/Interfaces/OrderListServiceInterface.php @@ -10,4 +10,5 @@ interface OrderListServiceInterface public function onlineByUser($userId, $tab, $page=1, $pagesize=10); public function onlineByStore($userId, $tab, $page, $pagesize); public function offlineByStore($userId, $tab, $page, $pagesize,$start_time = '',$end_time = ''); + public function offlineByUser($userId, $page=1, $pagesize=10); } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 11a8405..f8babb9 100644 --- a/config/routes.php +++ b/config/routes.php @@ -134,6 +134,7 @@ Router::addGroup('/v3/', function () { Router::post('orderOnline/del', 'App\Controller\v3\OrderOnlineController@del'); Router::post('orderOnline/applyRefund', 'App\Controller\v3\OrderOnlineController@applyRefund'); Router::post('orderOnline/complete', 'App\Controller\v3\OrderOnlineController@complete'); + Router::post('user/oflOrders', 'App\Controller\v3\OrderListController@offlineForUser'); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]); // 微信支付回调 From d5ce0b20213fe4dc6b0c0430a6091e74e710ce56 Mon Sep 17 00:00:00 2001 From: weigang Date: Tue, 8 Sep 2020 12:08:16 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=85=B3=E4=BA=8E=E6=87=92=E6=97=8F?= =?UTF-8?q?=EF=BC=8C=E4=B8=8B=E5=8D=95=E6=B8=85=E7=A9=BA=E8=B4=AD=E7=89=A9?= =?UTF-8?q?=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/v3/HomeController.php | 26 +++++++++++++++++++ .../v3/Implementations/OrderOnlineService.php | 10 +++++++ .../Implementations/ShopCartUpdateService.php | 10 +++++++ .../ShopCartUpdateServiceInterface.php | 2 ++ config/routes.php | 1 + 5 files changed, 49 insertions(+) diff --git a/app/Controller/v3/HomeController.php b/app/Controller/v3/HomeController.php index 5a0bc2f..8811f33 100644 --- a/app/Controller/v3/HomeController.php +++ b/app/Controller/v3/HomeController.php @@ -173,4 +173,30 @@ class HomeController extends BaseController return $this->success($data); } + + /** + * 关于懒族 + * about lanzu + */ + public function aboutLanzu() + { + $data = [ + [ + 'id' => 1, + 'title' => '关于懒族', + 'sub_title' => '懒族生活678', + 'path' => 'https://www.baidu.com/s?wd=%E6%87%92%E6%97%8F%E7%94%9F%E6%B4%BB', + 'path_type' => 'webview' + ], + [ + 'id' => 1, + 'title' => '隐私政策', + 'sub_title' => '隐私政策123', + 'path' => 'https://www.baidu.com/s?wd=%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96', + 'path_type' => 'webview' + ] + ]; + + return $this->success(['data' => $data]); + } } \ No newline at end of file diff --git a/app/Service/v3/Implementations/OrderOnlineService.php b/app/Service/v3/Implementations/OrderOnlineService.php index 3bcca12..b6be44c 100644 --- a/app/Service/v3/Implementations/OrderOnlineService.php +++ b/app/Service/v3/Implementations/OrderOnlineService.php @@ -28,6 +28,7 @@ use App\Service\v3\Interfaces\DeliveryMoneyServiceInterface; use App\Service\v3\Interfaces\GoodsActivityServiceInterface; use App\Service\v3\Interfaces\GoodsServiceInterface; use App\Service\v3\Interfaces\PaymentServiceInterface; +use App\Service\v3\Interfaces\ShopCartUpdateServiceInterface; use App\TaskWorker\SSDBTask; use Exception; use Hyperf\Database\Model\Model; @@ -82,6 +83,12 @@ class OrderOnlineService implements OrderOnlineServiceInterface */ protected $paymentService; + /** + * @Inject + * @var ShopCartUpdateServiceInterface + */ + protected $shopCartUpdateService; + /** * 下单 * @param $marketId @@ -320,6 +327,9 @@ class OrderOnlineService implements OrderOnlineServiceInterface Db::commit(); + // 清除购物车 + $this->shopCartUpdateService->doClear($userId, $marketId); + // 支付 return $this->paymentService->do($globalOrderId, $totalAmount, $userId, config('wechat.notify_url.online')); } catch (Exception $e) { diff --git a/app/Service/v3/Implementations/ShopCartUpdateService.php b/app/Service/v3/Implementations/ShopCartUpdateService.php index 7ce4e95..c032150 100644 --- a/app/Service/v3/Implementations/ShopCartUpdateService.php +++ b/app/Service/v3/Implementations/ShopCartUpdateService.php @@ -46,4 +46,14 @@ class ShopCartUpdateService implements ShopCartUpdateServiceInterface { return true; } + + /** + * 清空购物车 + * @param $userId + * @param $marketId + */ + public function doClear($userId, $marketId) + { + + } } \ No newline at end of file diff --git a/app/Service/v3/Interfaces/ShopCartUpdateServiceInterface.php b/app/Service/v3/Interfaces/ShopCartUpdateServiceInterface.php index dcd4893..0ee3195 100644 --- a/app/Service/v3/Interfaces/ShopCartUpdateServiceInterface.php +++ b/app/Service/v3/Interfaces/ShopCartUpdateServiceInterface.php @@ -9,4 +9,6 @@ interface ShopCartUpdateServiceInterface public function check(); public function undo($params); + + public function doClear($userId, $marketId); } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index f8babb9..152691b 100644 --- a/config/routes.php +++ b/config/routes.php @@ -92,6 +92,7 @@ Router::addGroup('/v3/', function () { Router::post('store/index', 'App\Controller\v3\StoreController@index'); Router::post('Search/market', 'App\Controller\v3\SearchController@market'); Router::post('market/services', 'App\Controller\v3\LocationController@getMarketsInfo'); + Router::post('home/aboutLanzu', 'App\Controller\v3\HomeController@aboutLanzu'); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class]]); // 需要登录的路由