|
@@ -47,7 +47,15 @@ class PayDetailController extends Curd
|
|
|
$where['pay_addtimes'][1] = !empty($where['pay_addtimes'][1]) ? strtotime($where['pay_addtimes'][1]) : '';
|
|
|
}
|
|
|
if (!empty($request->get('premises_id'))) {
|
|
|
- $payIds = PayDetail::whereJsonContains('pay_extend_json->remark->premises_id', intval($request->get('premises_id')))
|
|
|
+ $orderIds = Order::whereJsonContains('order_extend_json->dept_id', intval($request->get('premises_id')))
|
|
|
+ ->whereIn('order_classify', ['RECHARGE', 'COMBINE', 'PARTNER', 'RECHARGE'])
|
|
|
+ ->where('order_status_payment', 'SUCCESS')
|
|
|
+ ->orWhereJsonContains('order_extend_json->referee_dept_id', intval($request->get('premises_id')))
|
|
|
+ ->pluck('order_id')
|
|
|
+ ->toArray();
|
|
|
+ $orderIdsStr = "'" . implode("','", $orderIds) . "'";
|
|
|
+ $payIds = PayDetail::whereRaw("JSON_UNQUOTE(JSON_EXTRACT(join_pay_object_json,'$.order_id')) in ({$orderIdsStr})")
|
|
|
+ ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(join_pay_object_json,'$.recharge_order_id')) in ({$orderIdsStr})")
|
|
|
->pluck('pay_id')
|
|
|
->toArray();
|
|
|
$where['pay_id'] = '';
|
|
@@ -55,12 +63,6 @@ class PayDetailController extends Curd
|
|
|
$where['pay_id'] = ['in', $payIds];
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // else if ($where['pay_category'] == 'RECHARGE') {
|
|
|
- // $where['pay_status'] = 'SUCCESS';
|
|
|
- // $where['pay_category'] = 'RECHARGE';
|
|
|
- // $where['pay_prepayid'] = ['in','WXPAY,ALIPAY'];
|
|
|
- // }
|
|
|
$query = $this->doSelect($where, $field, $order, $request->get());
|
|
|
return $this->doFormat($query, $format, $limit);
|
|
|
}
|
|
@@ -288,6 +290,89 @@ class PayDetailController extends Curd
|
|
|
return $items;
|
|
|
}
|
|
|
|
|
|
+ public function statistics(Request $request)
|
|
|
+ {
|
|
|
+ $type = $request->get('type');
|
|
|
+ $orderType = $request->get('order_type');
|
|
|
+ $premisesId = $request->get('premises_id');
|
|
|
+ $memberId = $request->get('join_pay_member_id');
|
|
|
+ $payAddtimes = $request->get('pay_addtimes');
|
|
|
+
|
|
|
+ if (!empty($payAddtimes)) {
|
|
|
+ $payAddtimes[0] = strtotime($payAddtimes[0]);
|
|
|
+ $payAddtimes[1] = strtotime($payAddtimes[1]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $payDetailModel = PayDetail::where('pay_status', 'SUCCESS')
|
|
|
+ ->where('pay_category', 'RECHARGE')
|
|
|
+ ->select(Db::raw("SUM(CASE WHEN join_pay_order_id='COMBINE' THEN 1000 ELSE pay_amount END) as amount, COUNT(pay_id) as total"));
|
|
|
+// ->when(!empty($type), function ($query) use ($type) {
|
|
|
+// if ($type == 'NORMAL') {
|
|
|
+// $query->whereIn('pay_prepayid', ['ALIPAY', 'WXPAY', 'OFFLINE_WXPAY', 'OFFLINE_ALIPAY', 'MONEY'])
|
|
|
+// ->orWhere('pay_prepayid', 'like', '%CASH%');
|
|
|
+// } else if ($type == 'VIP') {
|
|
|
+// $query->where('pay_category', 'VIP');
|
|
|
+// } else {
|
|
|
+// $query->where('pay_prepayid', 'like', '%WELFARE%');
|
|
|
+// }
|
|
|
+// })->when(!empty($orderType), function ($query) use ($orderType) {
|
|
|
+// if (in_array($orderType, ['COMBINE', 'PARTNER'])) {
|
|
|
+// $query->where('join_pay_order_id', $orderType);
|
|
|
+// } elseif ($orderType == 'VIP') {
|
|
|
+// $query->where('pay_category', 'VIP');
|
|
|
+// } elseif ($orderType == 'RECHARGE') {
|
|
|
+// $query->where('join_pay_order_id', '<>', 'PARTNER')
|
|
|
+// ->where('join_pay_order_id', '<>', 'COMBINE')
|
|
|
+// ->where('pay_category', '<>', 'VIP');
|
|
|
+// }
|
|
|
+// })->when(!empty($premisesId), function ($query) use ($premisesId) {
|
|
|
+// $orderIds = Order::whereJsonContains('order_extend_json->dept_id', intval($premisesId))
|
|
|
+// ->whereIn('order_classify', ['RECHARGE', 'COMBINE', 'PARTNER', 'RECHARGE'])
|
|
|
+// ->where('order_status_payment', 'SUCCESS')
|
|
|
+// ->orWhereJsonContains('order_extend_json->referee_dept_id', intval($premisesId))
|
|
|
+// ->pluck('order_id')
|
|
|
+// ->toArray();
|
|
|
+// $orderIdsStr = "'" . implode("','", $orderIds) . "'";
|
|
|
+// $payIds = PayDetail::whereRaw("JSON_UNQUOTE(JSON_EXTRACT(join_pay_object_json,'$.order_id')) in ({$orderIdsStr})")
|
|
|
+// ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(join_pay_object_json,'$.recharge_order_id')) in ({$orderIdsStr})")
|
|
|
+// ->pluck('pay_id')
|
|
|
+// ->toArray();
|
|
|
+// $query->whereIn('pay_id', $payIds);
|
|
|
+// })->when(!empty($memberId), function ($query) use ($memberId) {
|
|
|
+// $query->where('join_pay_member_id', $memberId);
|
|
|
+// })->when(!empty($payAddtimes),function ($query) use ($payAddtimes){
|
|
|
+// $query->whereBetween('pay_addtimes',$payAddtimes);
|
|
|
+// });
|
|
|
+ $totalModel = clone $payDetailModel;
|
|
|
+ $total = $totalModel->first()->toArray();
|
|
|
+ $todayUnixStart = strtotime(date('Y-m-d'));
|
|
|
+ $todayUnixEnd = strtotime(date('Y-m-d 23:59:59'));
|
|
|
+ $todayTotalModel = clone $payDetailModel;
|
|
|
+ $todayTotal = $todayTotalModel->whereBetween('pay_addtimes', [$todayUnixStart, $todayUnixEnd])
|
|
|
+ ->first()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ $yesterdayStart = strtotime(date('Y-m-d', strtotime("-1 days")));
|
|
|
+ $yesterdayEnd = strtotime(date('Y-m-d 23:59:59', strtotime("-1 days")));
|
|
|
+ $yesterdayTotalModel = clone $payDetailModel;
|
|
|
+ $yesterdayTotal = $yesterdayTotalModel->whereBetween('pay_addtimes', [$yesterdayStart, $yesterdayEnd])
|
|
|
+ ->first()
|
|
|
+ ->toArray();
|
|
|
+ $monthStart = strtotime(date('Y-m-01'));
|
|
|
+ $monthEnd = strtotime(date('Y-m-t 23:59:59'));
|
|
|
+ $monthTotalModel = clone $payDetailModel;
|
|
|
+ $monthTotal = $monthTotalModel->whereBetween('pay_addtimes', [$monthStart, $monthEnd])
|
|
|
+ ->first()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ return json_success('success', [
|
|
|
+ 'total' => $total,
|
|
|
+ 'todayTotal' => $todayTotal,
|
|
|
+ 'yesterdayTotal' => $yesterdayTotal,
|
|
|
+ 'monthTotal' => $monthTotal
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @Desc 产品订单
|
|
|
* @Author Gorden
|
|
@@ -376,7 +461,7 @@ class PayDetailController extends Curd
|
|
|
if ($detail['join_pay_order_id'] == 'PARTNER') {
|
|
|
$order['added_amount'] = sprintf('%.2f', $payObjectJson['recharge_config']['nbr']);
|
|
|
} else {
|
|
|
- $order['added_amount'] = sprintf('%.2f', round($detail['pay_amount'] * $payObjectJson['recharge_config']['nbr'],2));
|
|
|
+ $order['added_amount'] = sprintf('%.2f', round($detail['pay_amount'] * $payObjectJson['recharge_config']['nbr'], 2));
|
|
|
}
|
|
|
// $order['added_amount'] = sprintf('%.2f',round($detail['pay_amount'] * $payObjectJson['recharge_config']['nbr'], 2));
|
|
|
}
|