189 行
8.4 KiB
PHP
可执行文件
189 行
8.4 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Common\Business;
|
|
//商城公共类
|
|
use Common\Model\RetailBillOrderModel;
|
|
use Common\Model\RetailPayOrderModel;
|
|
use Common\Model\RetailRechargeOrderModel;
|
|
|
|
//[1.9.14]
|
|
class ShoppingMall
|
|
{
|
|
/**
|
|
* 门店商城销售金额统计
|
|
* @param $param
|
|
* $param['store_id'] 门店ID
|
|
* $param['start_time'] 统计的开始时间戳
|
|
* $param['end_time'] 统计的结束时间戳
|
|
* $param['need_sub_card'] 是否需要统计次卡的金额
|
|
* @return array
|
|
*/
|
|
public function getShopAmountTotal($param)
|
|
{
|
|
if (empty($param) || empty($param['store_id'])) {
|
|
$result = [
|
|
'place_count' => 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;
|
|
}
|
|
}
|