diff --git a/app/Service/v3/Implementations/OrderListService.php b/app/Service/v3/Implementations/OrderListService.php index 9c4fc14..2ee3e6d 100644 --- a/app/Service/v3/Implementations/OrderListService.php +++ b/app/Service/v3/Implementations/OrderListService.php @@ -4,11 +4,14 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\OrderState; use App\Constants\v3\OrderType; +use App\Constants\v3\SsdbKeys; use App\Model\v3\OrderMain; use App\Model\v3\Order; use App\Model\v3\ShoppingCart; use App\Service\v3\Interfaces\OrderListServiceInterface; +use App\TaskWorker\SSDBTask; use Hyperf\Paginator\Paginator; +use Hyperf\Utils\ApplicationContext; class OrderListService implements OrderListServiceInterface { @@ -30,23 +33,31 @@ class OrderListService implements OrderListServiceInterface public function onlineByUser($userId, $tab, $page=1, $pagesize=10) { + // 记录badge + $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); + $builder = OrderMain::query() ->with(['orderGoods', 'market']) ->where(['user_id' => $userId, 'type' => OrderType::ONLINE]); switch ($tab) { case 'all': + $ssdb->exec('hclear', SsdbKeys::USER_ORDER_BADGE.$userId); break; case 'completed': + $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'completed', 0); $builder->whereIn('state', OrderState::FINISH); break; case 'unpaid': + $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'unpaid', 0); $builder->where(['state' => OrderState::UNPAID]); break; case 'receiving': $builder->whereIn('state', OrderState::RECEIVING); + $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'receiving', 0); break; case 'refund': $builder->whereIn('state', OrderState::REFUND); + $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'refund', 0); break; } diff --git a/app/Service/v3/Implementations/OrderOnlineService.php b/app/Service/v3/Implementations/OrderOnlineService.php index cdc2e36..444c64b 100644 --- a/app/Service/v3/Implementations/OrderOnlineService.php +++ b/app/Service/v3/Implementations/OrderOnlineService.php @@ -332,6 +332,10 @@ class OrderOnlineService implements OrderOnlineServiceInterface // 清除购物车 $this->shopCartUpdateService->doClear($userId, $marketId); + // 记录用户中心的badge + $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); + $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$userId, 'unpaid', 1); + // 支付 return $this->paymentService->do($globalOrderId, $totalAmount, $userId, config('wechat.notify_url.online')); } catch (Exception $e) { @@ -488,6 +492,10 @@ class OrderOnlineService implements OrderOnlineServiceInterface } Db::commit(); + + // 记录用户中心的badge + $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'receiving', 1); + return true; } catch (Exception $e) { @@ -537,6 +545,10 @@ class OrderOnlineService implements OrderOnlineServiceInterface if (!$orderMain->save()) { throw new ErrorCodeException(ErrorCode::ORDER_APPLY_REFUND_FAIL); } + // 记录badge + $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); + $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'refund', 1); + return true; } @@ -550,6 +562,9 @@ class OrderOnlineService implements OrderOnlineServiceInterface if (!$orderMain->save()) { throw new ErrorCodeException(ErrorCode::ORDER_COMPLETE_FAIL); } + // 记录badge + $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); + $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'completed', 1); return true; } } \ No newline at end of file