文件
mashangyoujiu/Application/Terminalapi/Controller/Statistics.class.php

245 行
9.8 KiB
PHP
可执行文件

<?php
namespace Terminalapi\Business;
use Common\Business\Plug;
use Common\Business\ShoppingMall;
use Common\Model\RechargeOrderModel;
use Common\Model\RetailBillOrderModel;
use Common\Model\RetailCashierModel;
use Common\Model\RetailPayOrderModel;
//[1.8.33]
/**
* 数据统计
* Class Statistics
* [
* getTerminalShopTotal 助手商城收款统计
* getTerminalCashierTotal 收银员收款统计
* ]
* @package Common\Business
*/
class Statistics
{
/**
* 2021年1月9日11:13:26
* 助手商城收款统计
* @param $param
* $param['store_id'] 门店ID
* $param['start_time'] 开始日期
* $param['end_time'] 结束日期
* @return array
*/
public function getTerminalShopTotal($param)
{
if (!$param['store_id'] || !$param['start_time'] || !$param['end_time']) {
return ['status' => 0, 'msg' => '参数错误'];
}
if ($param['start_time']) {
$start_time = strtotime($param['start_time']);
} else {
$start_time = strtotime(date('Y-m-d 00:00:00'));
}
if ($param['end_time']) {
$end_time = strtotime($param['end_time']);
} else {
$end_time = strtotime(date('Y-m-d 23:59:59'));
}
$param = [
'store_id' => $param['store_id'],
'start_time' => $start_time,
'end_time' => $end_time,
];
$shoppingMall = new ShoppingMall();
$shoppingMallInfo = $shoppingMall->getShopAmountTotal($param);
return callBack(statusCode()['success'], '获取成功', [
'list' => [
[
'sell_info' => [
'xj' => 0,
'wx' => 0,
'zfb' => 0,
'other_pay' => 0,
'xcx' => $shoppingMallInfo['xcx_wx_actual_received'],//微信支付金额减去退款金额的剩余金额
'refund' => $shoppingMallInfo['xcx_amount_refund_total'],//退款的总金额
'vip_card' => $shoppingMallInfo['xcx_member_actual_received'],//会员支付金额减去退款金额的剩余金额
'all_money' => $shoppingMallInfo['xcx_amount_actual_received_total'],//减去退款的总金额
'sub_card_total' => $shoppingMallInfo['sub_card_total'],//次卡销售金额
'count' => $shoppingMallInfo['place_count'], //下单总笔数不包含退款
'recharge_total' => $shoppingMallInfo['recharge_total'],//充值
],
'id' => 0,
'name' => '商城订单收银统计',
]
],
'start_time' => date('Y-m-d', $start_time),
'end_time' => date('Y-m-d', $end_time),
]);
}
/**
* 2021年1月11日09:43:04
* 收银员收款统计
* @param $param
* $param['store_id'] 门店ID
* $param['merchant_id'] 商户ID
* $param['cashier_id'] 收银员ID
* $param['user_type'] 用户类型 1商户 2门店 3收银员
* $param['start_time'] 开始日期
* $param['end_time'] 结束日期
* @return array
*/
public function getTerminalCashierTotal($param)
{
$store_id = $param['store_id'];
$cashier_id = $param['cashier_id'];
$user_type = $param['user_type'];
if (!$store_id || !$param['user_type'] || $param['user_type'] == 3 && !$param['cashier_id']) {
return ['status' => 0, 'msg' => '参数错误'];
}
$PayOrderModel = new RetailPayOrderModel(); //支付流水模型
$CashierModel = new RetailCashierModel();
if ($user_type == 3) {
$cashier_show_other_sell = $CashierModel->getFindField(['id' => $cashier_id], 'cashier_show_other_sell');
}
$where_cashier = [
'status' => 1,
'storeid' => $store_id,
];
if ($cashier_show_other_sell == 2) {
$where_cashier['id'] = $cashier_id;
}
//实例化插件类
$PlugApi = new Plug();
//获取付费插件列表及状态
$plug_result = $PlugApi->PlugPermissions(array(
'merchant_id' => $param['merchant_id'],
'identification_arr' => ['credit']
));
if ($param['start_time']) {
$start_time = strtotime($param['start_time']);
} else {
$start_time = strtotime(date('Y-m-d 00:00:00'));
}
if ($param['end_time']) {
$end_time = strtotime($param['end_time']);
} else {
$end_time = strtotime(date('Y-m-d 23:59:59'));
}
//商户是否存在赊账插件
$isCredit = $plug_result['data']['plug']['credit'] && $plug_result['data']['plug']['credit'] > 0 ? 1 : 0;
$list = $CashierModel->getSelect($where_cashier, 'id,name');
$list = $list ? $list : [];
if ($list) {
$list = $list ? $list : [];
if ($isCredit) {
$CreditArrearageModel = new \Credit\Model\CreditArrearageModel(); // 赊账
$CreditRepaymentModel = new \Credit\Model\CreditRepaymentModel(); // 还款
}
$RetailBillOrderModel = new RetailBillOrderModel();
$RechargeOrderModel = new RechargeOrderModel();
$SellDataController = new \PayApi\Controller\SellDataController();
foreach ($list as &$v) {
$where = [
'cashier_id' => $v['id'],
'add_time' => ['between', [$start_time, $end_time]],
'pay_state' => 1,
'store_id' => $store_id,
'order_type' => 1,
'type' => 2,
'pay_type' => ['neq', '0'],
];
$count = $RetailBillOrderModel->getCount($where);//下单总笔数
$where['order_type'] = 2;
$refund_store = $RetailBillOrderModel->getSum($where, 'refund_money'); //退款金额
$payData = $SellDataController->getPayData_v2($start_time, $end_time, $store_id, $v['id'], [
'need_other_list' => true, // 是否需要统计其他支付信息
]);
//赊账数据统计
$arrearageMoney = 0;
$repaymentMoney = 0;
if ($isCredit) {
$arrearage_map = [
'cashier_id' => $v['id'],
'add_time' => ['between', [$start_time, $end_time]],
'store_id' => $store_id,
];
$arrearageMoney = $CreditArrearageModel->getSum($arrearage_map, 'total_money');
$repayment_map = [
'operate_type' => 1, //确保是收银员
'operate_id' => $v['id'],
'store_id' => $store_id,
'add_time' => ['between', [$start_time, $end_time]],
];
$repaymentMoney = $CreditRepaymentModel->getSum($repayment_map, 'money');
$payData['all_amount'] = bcadd($payData['all_amount'], $repaymentMoney, 2);
}
//快捷收银
$map = [
'cashier_id' => $v['id'],
'order_type' => 6,
'order_state' => 'SUCCESS',
'trade_date' => ['between', [$start_time, $end_time]],
];
$q_count = $PayOrderModel->getCount($map);//快速收款笔数
$count = round($count + $q_count);
$map['order_state'] = 'REFUND';
$q_refund_money = $PayOrderModel->getSum($map, 'trade_amount'); //快捷下单退款金额
$refund_store = round($refund_store + $q_refund_money, 2);
//充值退款
$rechargeMap = [
'store_id' => $store_id,
'type' => 1,
'add_time' => ['between', [$start_time, $end_time]],
'cashier_id' => $v['id'],
'status' => 1,
'type' => 9,
];
$vipRefund = $RechargeOrderModel->getSum($rechargeMap, 'money');
$info = [
'id' => $v['id'],
'xj' => $payData['cash_amount'], //现金
'wx' => $payData['weChat_amount'], //微信
'zfb' => $payData['ali_amount'], //支付宝
'xcx' => 0,
'refund' => $refund_store,
'vip_card' => $payData['vip_amount'], //会员余额
'recharge_total' => $payData['recharge_all_amount'],//会员充值金额
'vip_refund' => round($vipRefund, 2),//会员充值退款金额
'all_money' => round($payData['all_amount'], 2),
'other_pay' => $payData['other_amount'], //其他支付
'sub_card_money' => $payData['sub_card_money'],//次卡金额
'count' => $count,
'arrearageMoney' => $arrearageMoney, //赊账金额
'repaymentMoney' => $repaymentMoney, //赊账还款
];
$v['sell_info'] = $info;
}
return callBack(statusCode()['success'], '查询成功', [
'list' => $list,
'start_time' => date('Y-m-d', $start_time),
'end_time' => date('Y-m-d', $end_time),
]);
} else {
return callBack(statusCode()['error'], '暂无收银员', [
'list' => [],
'start_time' => date('Y-m-d', $start_time),
'end_time' => date('Y-m-d', $end_time),
]);
}
}
}