Browse Source

商户badge,线上订单统计

master
weigang 5 years ago
parent
commit
29d1cca38d
  1. 7
      app/JsonRpc/OrdersService.php
  2. 40
      app/Service/v3/Implementations/OrderStatisticsService.php

7
app/JsonRpc/OrdersService.php

@ -290,6 +290,7 @@ class OrdersService implements OrdersServiceInterface
}
// 处理用户和商户流水
$orderChildren = [];
if ($refundType == 'main') { # 整单退的话还得处理所有子订单的商户
$orderChildren = Order::query()->with('store:user_id')->where(['order_main_id' => $orderMain->global_order_id])->get();
@ -304,12 +305,18 @@ class OrdersService implements OrdersServiceInterface
}
} elseif ($refundType == 'sub'||$refundType == 'goods') { # 退子订单或者退单品的话,商户只有一个
$orderChildren = Order::query()->with('store:user_id')->where(['id' => $order_child_id])->get();
$this->financialRecordService->storeRefundDirect($orderChild->store->user_id, $orderChild->id, $refundAmount);
}
$this->financialRecordService->userRefundDirect($orderMain->user_id, $orderMain->global_order_id, $refundAmount);
Db::commit();
// 记录badge
$orderChildIds = array_values(array_column($orderChildren, 'store_id'));
$this->badgeService->doByOrder($orderMain->user_id, $orderChildIds, $orderMain->global_order_id, OrderState::REFUNDED);
return [
"status" => 200,
"code" => 0,

40
app/Service/v3/Implementations/OrderStatisticsService.php

@ -4,7 +4,10 @@
namespace App\Service\v3\Implementations;
use App\Constants\v3\OrderState;
use App\Model\v3\Order;
use App\Model\v3\OrderGoods;
use App\Model\v3\OrderMain;
use \App\Service\v3\Interfaces\OrderStatisticsServiceInterface;
use Hyperf\Utils\ApplicationContext;
class OrderStatisticsService implements OrderStatisticsServiceInterface
{
@ -26,14 +29,35 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface
public function countOrder($storeId,$type,$startTime = '',$endTime = '')
{
$builder = Order::join('lanzu_order_main','lanzu_order_main.global_order_id','lanzu_order.order_main_id')
->where('lanzu_order.store_id',$storeId);
if(!empty($startTime) && !empty($endTime)){
$builder->whereBetween('lanzu_order_main.created_at',[$startTime,$endTime]);
$childTable = ApplicationContext::getContainer()->get(Order::class)->getTable();
$mainTable = ApplicationContext::getContainer()->get(OrderMain::class)->getTable();
$goodsTable = ApplicationContext::getContainer()->get(OrderGoods::class)->getTable();
$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]);
if ($startTime) {
$builder = $builder->where(''.$mainTable.'.created_at', '>=', $startTime);
}
if ($endTime) {
$builder = $builder->where(''.$mainTable.'.created_at', '<=', $endTime);
}
$count = $builder->whereIn('lanzu_order_main.state', OrderState::FINISH)
->where('type',$type)
->count();
return $count;
return $builder->groupBy(''.$mainTable.'.id')->count();
// $builder = Order::join('lanzu_order_main','lanzu_order_main.global_order_id','lanzu_order.order_main_id')
// ->where('lanzu_order.store_id',$storeId);
// if(!empty($startTime) && !empty($endTime)){
// $builder->whereBetween('lanzu_order_main.created_at',[$startTime,$endTime]);
// }
// $count = $builder->whereIn('lanzu_order_main.state', OrderState::FINISH)
// ->where('type',$type)
// ->count();
// return $count;
}
}
Loading…
Cancel
Save