243 行
9.8 KiB
PHP
可执行文件
243 行
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.9.20]
|
|
|
|
/**
|
|
* 数据统计
|
|
* 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->merPlugState([
|
|
'merchant_id' => $param['merchant_id'],
|
|
'identification_arr' => ['credit', 'moraleducationcoin'],
|
|
]);
|
|
|
|
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'));
|
|
}
|
|
//商户是否存在赊账插件
|
|
$list = $CashierModel->getSelect($where_cashier, 'id,name');
|
|
$list = $list ? $list : [];
|
|
if ($list) {
|
|
|
|
$list = $list ? $list : [];
|
|
|
|
if ($plug_result['credit']) {
|
|
$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_v1($start_time, $end_time, $store_id, $v['id']);
|
|
//赊账数据统计
|
|
$arrearageMoney = 0;
|
|
$repaymentMoney = 0;
|
|
if ($plug_result['credit']) {
|
|
$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'], //支付宝
|
|
'MoralEducationCoin' => $payData['MoralEducationCoin'], //德育币
|
|
'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),
|
|
]);
|
|
}
|
|
}
|
|
}
|