0, 'xcx_wx_payment' => 0, 'xcx_member_payment' => 0, 'xcx_amount_total' => 0, 'xcx_wx_refund' => 0, 'xcx_member_refund' => 0, 'xcx_amount_refund_total' => 0, 'xcx_wx_actual_received' => 0, 'xcx_member_actual_received' => 0, 'xcx_amount_actual_received_total' => 0 ]; return $result; } if (!empty($param['start_time']) && !empty($param['end_time'])) { $where['add_time'] = ['between', [$param['start_time'], $param['end_time']]]; } $where['pay_state'] = 1; //已支付 $where['store_id'] = $param['store_id']; $where['type'] = 1; //商城 $where['pay_type'] = ['in', '5,6,8']; //商城的支付方式会员支付微信支付组合支付 $billOrderModel = new RetailBillOrderModel(); $list = $billOrderModel->getSelect($where, "", 'id asc'); $place_count = 0; //下单总笔数不包含退款 $xcx_wx_payment = 0; //微信支付 $xcx_member_payment = 0; //会员支付 $xcx_wx_refund = 0; //微信退款 $xcx_member_refund = 0; //会员退款 $xcx_amount_total = 0; //下单总金额不减退款金额 $xcx_wx_actual_received = 0; //微信支付金额减去退款金额的剩余金额 $xcx_member_actual_received = 0; //会员支付金额减去退款金额的剩余金额 $xcx_amount_payment_total = 0; //减去退款的总金额 $xcx_amount_refund_total = 0; //退款的总金额 $sub_card_total = 0; //次卡销售金额 $combined_id = []; //组合支付的订单id集合 if (!empty($list)) { foreach ($list as $val) { switch ($val['order_type']) { case 1: //购买订单 switch ($val['pay_type']) { case 5: //会员支付 $xcx_member_payment += $val['all_money']; break; case 6: //微信支付 $xcx_wx_payment += $val['all_money']; break; case 8: //组合支付 $combined_id[] = $val['id']; break; } $place_count++; break; case 2: //退款订单 switch ($val['pay_type']) { case 5: //会员支付 $xcx_member_refund += $val['refund_money']; break; case 6: //微信支付 $xcx_wx_refund += $val['refund_money']; break; case 8: //组合支付 $combined_id[] = $val['id']; break; } break; } } $PayOrderModel = new RetailPayOrderModel(); if (!empty($combined_id)) { //查询组合支付的支付详情 $map = array( 'order_state' => array('in', 'SUCCESS,REFUND'), 'bill_id' => array('in', $combined_id) ); $payList = $PayOrderModel->getSelect($map, "trade_amount,pay_type,order_state"); if (!empty($payList)) { foreach ($payList as $value) { switch ($value['order_state']) { case 'SUCCESS': switch ($value['pay_type']) { case 4: //微信支付 $xcx_wx_payment += $value['trade_amount']; break; case 6: //会员支付 $xcx_member_payment += $value['trade_amount']; break; } break; case 'REFUND': switch ($value['pay_type']) { case 4: //微信退款 $xcx_wx_refund += $value['trade_amount']; break; case 6: //会员退款 $xcx_member_refund += $value['trade_amount']; break; } break; } } } } $xcx_amount_total = round($xcx_wx_payment + $xcx_wx_refund, 2); $xcx_wx_actual_received = round($xcx_wx_payment - $xcx_wx_refund, 2); $xcx_member_actual_received = round($xcx_member_payment - $xcx_member_refund, 2); $xcx_amount_payment_total = round($xcx_wx_actual_received + $xcx_member_actual_received, 2); $xcx_amount_refund_total = round($xcx_wx_refund + $xcx_member_refund, 2); if ($param['need_sub_card']) { // 次卡销售金额统计 $subCardMap = [ 'store_id' => $param['store_id'], 'scene_type' => 1, //付款订单 'order_type' => 7, //购买次卡 'pay_type' => 4, //小程序微信支付 'trade_date' => ['between', [$param['start_time'], $param['end_time']]], ]; $sub_card_total = $PayOrderModel->getSum($subCardMap, 'trade_amount'); //次卡没有退款 $xcx_amount_total += $sub_card_total; //下单总金额不减退款金额 加上次卡销售金额 $xcx_amount_payment_total += $sub_card_total; //减去退款的总金额 加上次卡销售金额 } } $RechargeOrderModel = new RetailRechargeOrderModel(); //会员充值金额 $rMap = [ 'store_id' => $param['store_id'], 'status' => 1, 'type' => 1, 'scene_type' => 4, 'refund_status' => 1, ]; if (!empty($param['start_time']) && !empty($param['end_time'])) { $rMap['add_time'] = ['between', [$param['start_time'], $param['end_time']]]; } $recharge_total = $RechargeOrderModel->getSum($rMap,'money'); $result = [ 'place_count' => $place_count, 'xcx_wx_payment' => $xcx_wx_payment, 'xcx_member_payment' => $xcx_member_payment, 'xcx_amount_total' => $xcx_amount_total, 'xcx_wx_refund' => $xcx_wx_refund, 'xcx_member_refund' => $xcx_member_refund, 'xcx_amount_refund_total' => $xcx_amount_refund_total, 'xcx_wx_actual_received' => $xcx_wx_actual_received, 'xcx_member_actual_received' => $xcx_member_actual_received, 'xcx_amount_actual_received_total' => $xcx_amount_payment_total, 'sub_card_total' => $sub_card_total, 'recharge_total' => $recharge_total, ]; return $result; } }