init: import production code mss.nahaichuan.com (exclude Runtime/Uploads/backups/logs)
这个提交包含在:
@@ -0,0 +1,244 @@
|
||||
<?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),
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户