From f4459464a2458c4d920dc51702cb55e3e3f7ba34 Mon Sep 17 00:00:00 2001 From: weigang Date: Sun, 27 Sep 2020 18:23:54 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=95=86=E6=88=B7=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/v3/HomeController.php | 37 ++++++++++++------- app/JsonRpc/OrdersService.php | 4 +- .../FinancialRecordService.php | 30 +++++++++++++++ .../OrderStatisticsService.php | 12 ++++-- .../FinancialRecordServiceInterface.php | 17 +++++++++ 5 files changed, 82 insertions(+), 18 deletions(-) diff --git a/app/Controller/v3/HomeController.php b/app/Controller/v3/HomeController.php index 1b39366..97127be 100644 --- a/app/Controller/v3/HomeController.php +++ b/app/Controller/v3/HomeController.php @@ -8,6 +8,7 @@ use App\Constants\v3\OrderState; use App\Constants\v3\OrderType; use App\Constants\v3\SsdbKeys; use App\Constants\v3\Tabs; +use App\Constants\v3\UserType; use App\Controller\BaseController; use App\Model\v3\FinancialRecord; use App\Model\v3\Market; @@ -20,6 +21,7 @@ use App\Service\v3\Interfaces\BannerServiceInterface; use App\Service\v3\Interfaces\CategoryServiceInterface; use App\Service\v3\Interfaces\CollectStoreServiceInterface; use App\Service\v3\Interfaces\CouponRecServiceInterface; +use App\Service\v3\Interfaces\FinancialRecordServiceInterface; use App\Service\v3\Interfaces\OrderOnlineServiceInterface; use App\Service\v3\Interfaces\OrderStatisticsServiceInterface; use App\Service\v3\Interfaces\RevenueListServiceInterface; @@ -113,6 +115,12 @@ class HomeController extends BaseController */ protected $badgeService; + /** + * @Inject + * @var FinancialRecordServiceInterface + */ + protected $financialRecordService; + /** * 小程序首页,根据market_id * 1.banner数据 @@ -211,20 +219,23 @@ class HomeController extends BaseController //统计订单金额 $type = [ FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_COMP, - FinancialRecord::MONEY_TYPE_STORE_OFL_ORDER_COMP + FinancialRecord::MONEY_TYPE_STORE_OFL_ORDER_COMP, + FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_DIRECT_REFUND, ]; - $data['order_online']['total'] = 0; - $data['order_offline']['total'] = 0; - $revenueByOrder = $this->revenueListService->getRevenueByUser($userId,$type,$dayStartTime,$dayEndTime); - foreach ($revenueByOrder as $order){ - if($order['money_type'] == FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_COMP){ - //线上订单 - $data['order_online']['total'] = bcadd($data['order_online']['total'],$order['money'],2); - }else if($order['money_type'] == FinancialRecord::MONEY_TYPE_STORE_OFL_ORDER_COMP){ - //线下订单 - $data['order_offline']['total'] = bcadd($data['order_offline']['total'],$order['money'],2); - } - } + + $sumAmounts = $this->financialRecordService->sumAmountGroup($userId, UserType::STORE, $type, $dayStartTime, $dayEndTime); + $data['order_online']['total'] = bcsub($sumAmounts[FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_COMP],$sumAmounts[FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_DIRECT_REFUND], 2); + $data['order_offline']['total'] = $sumAmounts[FinancialRecord::MONEY_TYPE_STORE_OFL_ORDER_COMP]; + // $revenueByOrder = $this->revenueListService->getRevenueByUser($userId,$type,$dayStartTime,$dayEndTime); + // foreach ($revenueByOrder as $order){ + // if($order['money_type'] == FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_COMP){ + // //线上订单 + // $data['order_online']['total'] = bcadd($data['order_online']['total'],$order['money'],2); + // }else if($order['money_type'] == FinancialRecord::MONEY_TYPE_STORE_OFL_ORDER_COMP){ + // //线下订单 + // $data['order_offline']['total'] = bcadd($data['order_offline']['total'],$order['money'],2); + // } + // } //统计新增用户 无法筛选时间 所以和订单分开查询 $revenueByNewUsers = $this->revenueListService->getRevenueByUser($userId,[FinancialRecord::MONEY_TYPE_STORE_PLAT_NEW_USER]); $data['new_user'] = [ diff --git a/app/JsonRpc/OrdersService.php b/app/JsonRpc/OrdersService.php index c0329c0..ef24441 100644 --- a/app/JsonRpc/OrdersService.php +++ b/app/JsonRpc/OrdersService.php @@ -182,7 +182,9 @@ class OrdersService implements OrdersServiceInterface throw new ErrorCodeException(ErrorCode::ORDER_REFUND_FAIL); } - $orderGoods = OrderGoods::query()->where(['order_id' => $orderChild->id, 'id' => $order_goods_id])->first(); + $orderGoods = OrderGoods::query() + ->where(['order_id' => $orderChild->id, 'id' => $order_goods_id, 'status' => 1]) + ->first(); if (is_null($orderGoods)) { $this->log->event(LogLabel::ORDER_REFUND_LOG, [ diff --git a/app/Service/v3/Implementations/FinancialRecordService.php b/app/Service/v3/Implementations/FinancialRecordService.php index 74c23f0..c055aaf 100644 --- a/app/Service/v3/Implementations/FinancialRecordService.php +++ b/app/Service/v3/Implementations/FinancialRecordService.php @@ -317,6 +317,36 @@ class FinancialRecordService implements FinancialRecordServiceInterface return bcadd($sumAmount, '0', 2); } + /** + * @inheritDoc + */ + public function sumAmountGroup($user_id, $user_type, $money_type = [], $startTime = 0, $endTime = 0) + { + $financialRecord = new FinancialRecord(); + + if ($user_id != FinancialRecord::ACCOUNT_LEDGER) { + $mod = bcmod((string)$user_id, '5', 0); + $financialRecord->suffix($mod); + } + + $builder = $financialRecord->selectRaw('SUM(money) AS total, money_type') + ->where([ + 'user_id' => $user_id, + 'user_type' => $user_type + ]) + ->whereIn('money_type', $money_type); + + if ($startTime) { + $builder = $builder->where('created_at', '>=', $startTime); + } + + if ($endTime) { + $builder = $builder->where('created_at', '<', $endTime); + } + + return $builder->groupBy('money_type')->pluck('total', 'money_type'); + } + /** * @inheritDoc */ diff --git a/app/Service/v3/Implementations/OrderStatisticsService.php b/app/Service/v3/Implementations/OrderStatisticsService.php index ae586b2..ca39f5f 100644 --- a/app/Service/v3/Implementations/OrderStatisticsService.php +++ b/app/Service/v3/Implementations/OrderStatisticsService.php @@ -3,6 +3,7 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\OrderState; +use App\Constants\v3\OrderType; use App\Model\v3\Order; use App\Model\v3\OrderGoods; use App\Model\v3\OrderMain; @@ -35,10 +36,13 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface $builder = OrderMain::query() ->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id') - ->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id') ->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type]) - ->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED,OrderState::REFUND_REFUSE])) - ->whereIn(''.$goodsTable.'.status', [1,2]); + ->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED,OrderState::REFUND_REFUSE])); + + if ($type == OrderType::ONLINE) { + $builder = $builder->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id') + ->whereIn(''.$goodsTable.'.status', [1,2]); + } if ($startTime) { $builder = $builder->where(''.$mainTable.'.created_at', '>=', $startTime); @@ -48,7 +52,7 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface $builder = $builder->where(''.$mainTable.'.created_at', '<=', $endTime); } - return $builder->groupBy(''.$mainTable.'.id')->count(); + return $builder->count(); // $builder = Order::join('lanzu_order_main','lanzu_order_main.global_order_id','lanzu_order.order_main_id') // ->where('lanzu_order.store_id',$storeId); diff --git a/app/Service/v3/Interfaces/FinancialRecordServiceInterface.php b/app/Service/v3/Interfaces/FinancialRecordServiceInterface.php index 1d48085..fdfe0cb 100644 --- a/app/Service/v3/Interfaces/FinancialRecordServiceInterface.php +++ b/app/Service/v3/Interfaces/FinancialRecordServiceInterface.php @@ -266,6 +266,23 @@ interface FinancialRecordServiceInterface $money_type = [] ); + /** + * 统计用户金额,按money_type分组 + * @param $user_id + * @param $user_type + * @param array $money_type + * @param int $startTime + * @param int $endTime + * @return mixed + */ + public function sumAmountGroup( + $user_id, + $user_type, + $money_type = [], + $startTime = 0, + $endTime = 0 + ); + /** * 商户微信提现流水 * @param $user_id From 8c6fbd939c0f3abc071657c3fccdc2649ee65f08 Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 28 Sep 2020 09:26:19 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/v3/HomeController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controller/v3/HomeController.php b/app/Controller/v3/HomeController.php index 97127be..f329596 100644 --- a/app/Controller/v3/HomeController.php +++ b/app/Controller/v3/HomeController.php @@ -225,7 +225,7 @@ class HomeController extends BaseController $sumAmounts = $this->financialRecordService->sumAmountGroup($userId, UserType::STORE, $type, $dayStartTime, $dayEndTime); $data['order_online']['total'] = bcsub($sumAmounts[FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_COMP],$sumAmounts[FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_DIRECT_REFUND], 2); - $data['order_offline']['total'] = $sumAmounts[FinancialRecord::MONEY_TYPE_STORE_OFL_ORDER_COMP]; + $data['order_offline']['total'] = bcadd($sumAmounts[FinancialRecord::MONEY_TYPE_STORE_OFL_ORDER_COMP],'0',2); // $revenueByOrder = $this->revenueListService->getRevenueByUser($userId,$type,$dayStartTime,$dayEndTime); // foreach ($revenueByOrder as $order){ // if($order['money_type'] == FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_COMP){ From 21868650522ccad57ddbfcf08a7969b55e3aa9ad Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 28 Sep 2020 09:51:49 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Service/v3/Implementations/OrderStatisticsService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Service/v3/Implementations/OrderStatisticsService.php b/app/Service/v3/Implementations/OrderStatisticsService.php index ca39f5f..e235e9e 100644 --- a/app/Service/v3/Implementations/OrderStatisticsService.php +++ b/app/Service/v3/Implementations/OrderStatisticsService.php @@ -35,6 +35,7 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface $goodsTable = ApplicationContext::getContainer()->get(OrderGoods::class)->getTable(); $builder = OrderMain::query() + ->selectRaw('COUNT(DISTINCT '.$mainTable.'.id) AS count') ->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id') ->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type]) ->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED,OrderState::REFUND_REFUSE])); @@ -52,7 +53,7 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface $builder = $builder->where(''.$mainTable.'.created_at', '<=', $endTime); } - return $builder->count(); + return $builder->first()->count; // $builder = Order::join('lanzu_order_main','lanzu_order_main.global_order_id','lanzu_order.order_main_id') // ->where('lanzu_order.store_id',$storeId); From e5b20219644b4f6209cddaa96aeb7e619e74362d Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 28 Sep 2020 10:50:44 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E7=9A=84=E7=8A=B6=E6=80=81=E6=96=B0=E5=A2=9E=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=EF=BC=8C=E7=84=B6=E5=90=8E=E8=BF=98=E8=A6=81=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=92=8C=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Constants/v3/OrderState.php | 7 ++++++- app/JsonRpc/OrdersService.php | 2 +- app/Service/v3/Implementations/OrderStatisticsService.php | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/Constants/v3/OrderState.php b/app/Constants/v3/OrderState.php index af1ff7c..fb7cfb5 100644 --- a/app/Constants/v3/OrderState.php +++ b/app/Constants/v3/OrderState.php @@ -60,6 +60,11 @@ class OrderState extends AbstractConstants */ const REFUND_REFUSE = 10; + /** + * @Message("部分直接退款") + */ + const REFUNDED_DIRECT= 11; + /** * @Message("待送达") */ @@ -73,7 +78,7 @@ class OrderState extends AbstractConstants /** * @Message("售后/退款") */ - const REFUND = [self::REFUNDING, self::REFUNDED, self::REFUND_REFUSE]; + const REFUND = [self::REFUNDING, self::REFUNDED, self::REFUND_REFUSE, self::REFUNDED_DIRECT]; /** * @Message("可删除") diff --git a/app/JsonRpc/OrdersService.php b/app/JsonRpc/OrdersService.php index ef24441..81ac54b 100644 --- a/app/JsonRpc/OrdersService.php +++ b/app/JsonRpc/OrdersService.php @@ -274,7 +274,7 @@ class OrdersService implements OrdersServiceInterface $currentTime = time(); // 处理订单状态 - $orderMain->state = OrderState::REFUNDED; + $orderMain->state = OrderState::REFUNDED_DIRECT; $orderMain->total_refund_note = $note; $orderMain->refund_time = $currentTime; $orderMain->save(); diff --git a/app/Service/v3/Implementations/OrderStatisticsService.php b/app/Service/v3/Implementations/OrderStatisticsService.php index e235e9e..3c7e88b 100644 --- a/app/Service/v3/Implementations/OrderStatisticsService.php +++ b/app/Service/v3/Implementations/OrderStatisticsService.php @@ -38,7 +38,7 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface ->selectRaw('COUNT(DISTINCT '.$mainTable.'.id) AS count') ->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id') ->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type]) - ->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED,OrderState::REFUND_REFUSE])); + ->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED_DIRECT,OrderState::REFUND_REFUSE])); if ($type == OrderType::ONLINE) { $builder = $builder->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id') From 6c4622536f795bea19e014c217a556b47bc47922 Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 28 Sep 2020 11:49:28 +0800 Subject: [PATCH 5/8] =?UTF-8?q?RPC=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/JsonRpc/OrdersService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/JsonRpc/OrdersService.php b/app/JsonRpc/OrdersService.php index 81ac54b..d1382a0 100644 --- a/app/JsonRpc/OrdersService.php +++ b/app/JsonRpc/OrdersService.php @@ -154,7 +154,7 @@ class OrdersService implements OrdersServiceInterface // 主订单 $orderMain = OrderMain::query() ->where(['global_order_id' => $global_order_id, 'user_id' => $user_id]) - ->whereIn('state', array_merge(OrderState::CAN_REFUND_DIRECT, [OrderState::REFUNDED])) + ->whereIn('state', array_merge(OrderState::CAN_REFUND_DIRECT, [OrderState::REFUNDED_DIRECT])) ->first(); if (is_null($orderMain)) { From 410afad105e5c9c180591292ef17b1577dcc4a0f Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 28 Sep 2020 12:12:13 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/v3/OrderOnlineController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controller/v3/OrderOnlineController.php b/app/Controller/v3/OrderOnlineController.php index 5a5b89e..379b198 100644 --- a/app/Controller/v3/OrderOnlineController.php +++ b/app/Controller/v3/OrderOnlineController.php @@ -138,7 +138,7 @@ class OrderOnlineController extends BaseController $res['store_list'] = $this->shopCartService->getGoodsByShopcartId($shopcartIds); //获取用户优惠券 - $coupons = $this->couponRecService->allForOnlineOrderAvailable($userId, $marketId, explode(',', $shopcartIds)); + $coupons = $this->couponRecService->allForOnlineOrderAvailable( $userId, $marketId, explode(',', $shopcartIds) ); $res['coupon'] = [ 'available' => [], 'not_available' => [], From b041fd0c7158dbd678471fbe8da689747a1f4757 Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 28 Sep 2020 14:42:52 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E7=AE=97=E4=B8=8A=E7=94=A8=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E7=9A=84=E8=AE=A2=E5=8D=95=EF=BC=88=E5=9B=A0=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E9=80=80=E6=AC=BE=E6=97=B6=E6=98=AF=E6=8C=89=E6=AF=94?= =?UTF-8?q?=E4=BE=8B=E9=80=80=E7=9A=84=EF=BC=8C=E5=95=86=E6=88=B7=E4=BC=9A?= =?UTF-8?q?=E6=9C=89=E5=89=A9=E4=BD=99=E4=BC=98=E6=83=A0=E5=88=B8=E7=9A=84?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E5=9C=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/Implementations/OrderStatisticsService.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/Service/v3/Implementations/OrderStatisticsService.php b/app/Service/v3/Implementations/OrderStatisticsService.php index 3c7e88b..8f7eff1 100644 --- a/app/Service/v3/Implementations/OrderStatisticsService.php +++ b/app/Service/v3/Implementations/OrderStatisticsService.php @@ -37,13 +37,17 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface $builder = OrderMain::query() ->selectRaw('COUNT(DISTINCT '.$mainTable.'.id) AS count') ->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id') + ->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id') ->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type]) - ->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED_DIRECT,OrderState::REFUND_REFUSE])); + ->where(function ($query) use ($mainTable, $goodsTable, $type) { + $query->where(function ($q) use ($mainTable, $goodsTable, $type) { + $q->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED_DIRECT,OrderState::REFUND_REFUSE])); + if ($type == OrderType::ONLINE) { + $q->whereIn(''.$goodsTable.'.status', [1,2]); + } - if ($type == OrderType::ONLINE) { - $builder = $builder->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id') - ->whereIn(''.$goodsTable.'.status', [1,2]); - } + })->orWhere(''.$mainTable.'.coupon_money', '>', 0); + }); if ($startTime) { $builder = $builder->where(''.$mainTable.'.created_at', '>=', $startTime); From c60d5b095d557a093be45800889f4ef8fcc4c7a5 Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 28 Sep 2020 15:28:28 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E5=BD=93=E9=9D=A2=E4=BB=98=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/Implementations/OrderStatisticsService.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Service/v3/Implementations/OrderStatisticsService.php b/app/Service/v3/Implementations/OrderStatisticsService.php index 8f7eff1..567c86c 100644 --- a/app/Service/v3/Implementations/OrderStatisticsService.php +++ b/app/Service/v3/Implementations/OrderStatisticsService.php @@ -36,9 +36,13 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface $builder = OrderMain::query() ->selectRaw('COUNT(DISTINCT '.$mainTable.'.id) AS count') - ->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id') - ->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id') - ->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type]) + ->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id'); + + if ($type == OrderType::ONLINE) { + $builder = $builder->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id'); + } + + $builder = $builder->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type]) ->where(function ($query) use ($mainTable, $goodsTable, $type) { $query->where(function ($q) use ($mainTable, $goodsTable, $type) { $q->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED_DIRECT,OrderState::REFUND_REFUSE]));