文件
mashangyoujiu/Application/Common/Order/Statistics.class.php

1582 行
68 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Common\Order;
use Common\Business\Plug;
use Common\Model\RetailVipModel;
use Common\Model\RetailStoreModel;
use Common\Model\RetailPayOrderModel;
use Common\Model\RetailBillOrderModel;
use Common\Model\RetailMerchantConfigModel;
use Common\Model\RetailOtherPayModel;
use Common\Model\RetailRechargeOrderModel;
use Common\Model\RetailSellModel;
use Common\Model\SSaleMGoodsModel;
use Common\Model\SWarehousingGoodsModel;
//[1.9.6]
/**
* 门店/商户概况数据统计
* Class Statistics [
* getMerchantStatisticsList 获取商户概况数据统计
* getStoreStatisticsList 获取门店概况数据统计
* getPayOrderData 订单处理
* getStoreSaleDataList 销售统计
* ]
* @package Common\Order
* @author GuYunQinFeng
*/
class Statistics
{
/**
* 获取商户概况数据统计
*/
public function getMerchantStatisticsList($merchant_id)
{
$RetailStoreModel = new RetailStoreModel();
$storeIdArr = $RetailStoreModel->getFindField(['merchantid' => $merchant_id, 'state' => 0], 'id', true);
$today_begin = strtotime(date('Y-m-d 00:00:00'));
$today_end = strtotime(date('Y-m-d 23:59:59'));
$map = [
'merchant_id' => $merchant_id,
'store_id' => ['in', $storeIdArr],
'add_time' => ['between', [$today_begin, $today_end]],
];
$vipMap = [
'merchantid' => $merchant_id,
'storeid' => ['in', $storeIdArr],
'addtime' => ['between', [$today_begin, $today_end]],
];
$list = $this->getPayOrderData($map, $vipMap, $merchant_id);
if (!empty($list)) {
return ['status' => 1, 'msg' => '数据获取成功', 'data' => $list];
} else {
return ['status' => 0, 'msg' => '暂无数据'];
}
}
/**
* 获取门店概况数据统计
*/
public function getStoreStatisticsList($merchant_id, $store_id)
{
$RetailStoreModel = new RetailStoreModel();
$SSaleMGoodsModel = new SSaleMGoodsModel();
$RetailSellModel = new RetailSellModel();
$SWarehousingGoodsModel = new SWarehousingGoodsModel();
$today_begin = strtotime(date('Y-m-d 00:00:00'));
$today_end = strtotime(date('Y-m-d 23:59:59'));
$map = [
'merchant_id' => $merchant_id,
'store_id' => $store_id,
'add_time' => ['between', [$today_begin, $today_end]],
];
$vipMap = [
'merchantid' => $merchant_id,
'storeid' => $store_id,
'addtime' => ['between', [$today_begin, $today_end]],
];
$list = $this->getPayOrderData($map, $vipMap, $merchant_id);
//商品总数
$list['goodsCount'] = $SSaleMGoodsModel->getCount(['store_id' => $store_id, 'status' => ['in', '0,1']]);
//出售的商品
$sellMap['pay_type'] = ['neq', 0];
$sellMap['store_id'] = $store_id;
$sellMap['add_time'] = ['between', [$today_begin, $today_end]];
$dead_info = $RetailSellModel->getGroupFindField($sellMap, 'goods_id', 'goods_id', true);
$dead_info = $dead_info ? $dead_info : array(0);
//所有商品
$saleMap['store_id'] = $store_id;
$saleMap['status'] = 0;
$saleMap['goods_id'] = ['not in', $dead_info];
// 滞销商品(最近30天没有出售数据的)
$list['goodInfo'] = $SSaleMGoodsModel->getCount($saleMap);
// 上架商品
$list['sjGoodsCount'] = $SSaleMGoodsModel->getCount(['store_id' => $store_id, 'status' => 0]);
$store_warning = $RetailStoreModel->getFind(['id' => $store_id]);
$time_shelf = $today_end + ($store_warning['warning'] * 86400);
$goodsMap = [
'store_id' => $store_id,
'surplus_num' => ['gt', 0],
'build_date' => [['neq', ''], ['elt', $today_end], 'and'],
'quality_guarantee_period' => ['neq', ''],
'_string' => "build_date + (quality_guarantee_period * 86400) <= $time_shelf",
];
$list['shelfGoods'] = $SWarehousingGoodsModel->getCount($goodsMap);
//商品总库存
$mgoodsMap['merchant_id'] = $merchant_id;
$mgoodsMap['store_id'] = $store_id;
$mgoodsMap['status'] = ['in', '0,1'];
$list['allGoodsNum'] = $SSaleMGoodsModel->getSum($mgoodsMap, "goods_num");
//超量商品
$mgoodsMap['_string'] = "goods_num >= more_num";
$list['moreGoods'] = $SSaleMGoodsModel->getCount($mgoodsMap);
//预警商品
$mgoodsMap['_string'] = "goods_num <= less_num";
$list['lessGoods'] = $SSaleMGoodsModel->getCount($mgoodsMap);
if (!empty($list)) {
return ['status' => 1, 'msg' => '数据获取成功', 'data' => $list];
} else {
return ['status' => 0, 'msg' => '暂无数据'];
}
}
/**
* 订单处理
* @param map 条件
*/
private function getPayOrderData($map, $vipMap, $merchant_id)
{
$RetailVipModel = new RetailVipModel();
$RetailPayOrderModel = new RetailPayOrderModel();
$RetailBillOrderModel = new RetailBillOrderModel();
$RetailRechargeModel = new RetailRechargeOrderModel();
$bill_map = $map;
$map['order_state'] = ['in', ['SUCCESS', 'REFUND']];
$list = $RetailPayOrderModel->getSelect($map);
unset($map['order_state']);
$retailCashMoney = 0; //零售现金
$retailAliMoney = 0; //零售支付宝
$retailWxMoney = 0; //零售微信
$retailAppletMoney = 0; //零售小程序商城微信
$vipCardMoney = 0; //会员卡支付
$otherPayMoney = 0; //其他支付
$toRefundMoney = 0; //今日待退款金额
$refundMoney = 0; //今日退款金额
$creditArrMoney = 0; //赊账金额
$creditRepayMoney = 0; //赊账还款金额
$vipIncNum = 0; //新增会员数
$vipRechargeMoney = 0; //今日会员充值
$vipGainMoney = 0; //今日会员获得余额
$credit = false; //是否含有赊权限
// var_dump($list);
foreach ($list as &$value) {
// 购买订单
if ($value['order_type'] == 1) {
switch ($value['scene_type']) {
case 1:
// 付款订单
switch ($value['pay_type']) {
case 1: //微信
$retailWxMoney += $value['trade_amount'];
break;
case 2: //支付宝
$retailAliMoney += $value['trade_amount'];
break;
case 3: //现金
$retailCashMoney += $value['trade_amount'];
break;
case 4: //小程序微信
$retailAppletMoney += $value['trade_amount'];
break;
case 5: //其他支付方式
$otherPayMoney += $value['trade_amount'];
break;
case 6: //会员余额
$vipCardMoney += $value['trade_amount'];
break;
}
break;
case 2:
// 退款订单
//退款金额
$refundMoney += $value['trade_amount'];
break;
}
// 会员充值
} else if ($value['order_type'] == 2 && $value['scene_type'] == 1 && $value['order_state'] == 'SUCCESS') {
$vipRecharge = $value['trade_amount'] - $value['refund_money'];
$vipRechargeMoney += $vipRecharge;
}
}
//赊账还款金额
$Plug = new Plug();
$result = $Plug->PlugPermissions(['merchant_id' => $merchant_id, 'identification_arr' => ['credit']]);
if ($result['data']['plug']['credit']) {
$map['status'] = 1;
$creditArrModel = new \Credit\Model\CreditArrearageModel();
$creditArrMoney = $creditArrModel->getSum($map, 'bill_money');
$creditRepayMoney = $creditArrModel->getSum($map, 'money');
$credit = true;
}
//新增会员数
$vipIncNum = $RetailVipModel->getCount($vipMap);
//获得余额
$map['state'] = 1; //正常
$map['type'] = 1; //充值
$map['status'] = 1; //支付成功
$vipGainMoney = $RetailRechargeModel->getSum($map, 'all_money');
$map['refund_status'] = 2;
$vipRefundGainMoney = $RetailRechargeModel->getSum($map, 'all_money');
$bill_map['order_type'] = 2;
$bill_map['refund_status'] = 5;
$toRefundMoney = $RetailBillOrderModel->getSum($bill_map, 'all_money');
return [
'allMoney' => round($retailCashMoney + $retailAliMoney + $retailWxMoney + $retailAppletMoney + $vipCardMoney + $otherPayMoney, 2),
'retailCashMoney' => round($retailCashMoney, 2),
'retailAliMoney' => round($retailAliMoney, 2),
'retailWxMoney' => round($retailWxMoney, 2),
'retailAppletMoney' => round($retailAppletMoney, 2),
'vipCardMoney' => round($vipCardMoney, 2),
'otherPayMoney' => round($otherPayMoney, 2),
'toRefundMoney' => round($toRefundMoney, 2),
'refundMoney' => round($refundMoney, 2),
'creditArrMoney' => round($creditArrMoney, 2),
'creditRepayMoney' => $creditRepayMoney ? round($creditRepayMoney, 2) : 0,
'vipIncNum' => round($vipIncNum, 2),
'vipRechargeMoney' => round($vipRechargeMoney, 2),
'vipGainMoney' => round($vipGainMoney - $vipRefundGainMoney, 2),
'credit' => round($credit, 2),
];
}
/********************************销售统计****开始*************************************/
/**
* 销售统计数据
* @param $param
* $param['merchant_id']
* $param['store_id']
* $param['date']
* $param['type'] 1商户 2门店
* @return array
*/
public function getStoreSaleDataList($param)
{
$store_data = [];
$count = 0;
//判断查询类型
switch ($param['type']) {
case 1:
// 查询商户下的门店
$StoreModel = new RetailStoreModel();
$storeMap = [
'merchantid' => $param['merchant_id'],
'store_status' => 0,
'state' => 0,
];
$storeField = ['id', 'storetag as store_name'];
//判断是否分页
if ($param['page']) {
$count = $StoreModel->getCount($storeMap);
$store_data = $StoreModel->getSelect($storeMap, $storeField, 'id asc', $param['page'] . ',5');
} else {
$store_data = $StoreModel->getSelect($storeMap, $storeField);
}
if (empty($store_data)) {
return callBack(statusCode()['success'], '暂无营业门店', [
'store_data' => [],
'recharge' => [],
'other_pay' => [],
'count' => $count,
]);
}
break;
case 2:
break;
default:
return callBack(statusCode()['error'], '参数有误');
break;
}
// 查询商户其他支付状态
$MerchantConfig = new RetailMerchantConfigModel();
$other_pay_state = $MerchantConfig->getFindField(['merchant_id' => $param['merchant_id']], 'other_pay');
$other_pay = [];
if (empty($other_pay_state) || $other_pay_state == 1) {
// 查询其他支付方式
$OtherPay = new RetailOtherPayModel();
$other_map = [
'merchant_id' => $param['merchant_id'],
'status' => 1,
'state' => 1
];
$other_pay = $OtherPay->getSelect($other_map, 'id,name', 'pay_order asc');
if (empty($other_pay)) {
$other_pay = [['name' => '其他支付', 'id' => 0]];
} else {
$other_pay[] = ['name' => '其他支付', 'id' => 0];
}
}
// 充值列表
$recharge = [];
// 日期
if (!empty($param['date'])) {
$start_time = strtotime(date('Y-m-d 00:00:00', strtotime($param['date'][0])));
$end_time = strtotime(date('Y-m-d 23:59:59', strtotime($param['date'][1]))) + 1;
if ($param['type'] == 2) {
$count = round(($end_time - $start_time) / 86400);
if ($count > 61) {
return callBack(statusCode()['error'], '查询天数的范围不得超过60天');
}
}
} else {
if ($param['type'] == 2) {
$end_time = strtotime(date('Y-m-d', time())) + 86399;
$start_time = $end_time - 86400 * 5;
$count = 5;
} else {
$start_time = strtotime(date('Y-m-d 00:00:00'));
$end_time = $start_time + 86399;
$recharge = $this->setRechargeParam(); //充值参数
}
}
if ($param['type'] == 2) {
// 处理时间数据
$start = 0;
$end = $count;
if ($param['page']) {
$start = ($param['page'] - 1) * 5;
$end = round($count - 5) >= $start ? ($start + 5) : $count;
}
for ($i = $start; $i < $end; $i++) {
$date = strtotime(date('Y-m-d 00:00:00', strtotime("-" . $i . " day", $end_time - 1)));
array_push(
$store_data,
[
'date' => date('Y-m-d', $date),
'date_map' => [$date, $date + 86399],
]
);
}
}
$store_data_before = $store_data;
$search_date = [$start_time, $end_time];
$parameter = [
'merchant_id' => $param['merchant_id'],
'store_id' => $param['type'] == 2 ? $param['store_id'] : '',
'type' => $param['type'],
];
// 处理数据
$param = $this->setStoreParam(); //定义门店参数
$Plug = new Plug();
$PlugData = $Plug->PlugPermissions([
'merchant_id' => $param['merchant_id'],
'identification_arr' => ['credit']
]); //赊账插件权限
if (!empty($PlugData['data']['plug']['credit'])) {
$credit = true;
} else {
$credit = false;
}
foreach ($store_data as &$value) {
$value = array_merge($value, $param);
// 查询订单 处理订单
$value = $this->handleOrder($value, $search_date, $parameter, $other_pay_state, $other_pay, $credit);
// 处理快捷收银
$value = $this->quickPay($value, $search_date, $parameter);
// 统计浄销售额
$value['total']['money'] = $value['total']['sell_money'] - $value['total']['refund_money'];
$value['total']['line_money'] = $value['total']['line_sell_money'] - $value['total']['line_refund_money'];
$value['total']['online_money'] = $value['total']['online_sell_money'] - $value['total']['online_refund_money'];
// 会员充值
$store_data_res = $this->handleStoreRecharge($value, $recharge, $search_date, $parameter);
$value = $store_data_res['info'];
if ($param['type'] == 2) {
$value['update_balance']['recharge_all_money'] = $value['line_recharge']['wechat_recharge'] + $value['line_recharge']['alipay_recharge'] + $value['line_recharge']['cash_recharge'];
$value['update_balance']['give_all_money'] = $value['line_recharge']['wechat_give'] + $value['line_recharge']['alipay_give'] + $value['line_recharge']['cash_give'] + $value['update_balance']['store_admin_give'] + $value['update_balance']['store_aide_give'];
$value['update_balance']['reduce_all_money'] = $value['update_balance']['store_admin_reduce'] + $value['update_balance']['store_aide_reduce'] + $value['update_balance']['cashier_reduce'] + $value['update_balance']['cashier_aide_reduce'];
} else {
$recharge = $store_data_res['recharge'];
}
// 处理总数据
$value = $this->handleStoreAllData($value);
if ($param['type'] == 2) {
unset($value['date_map']);
}
}
if ($param['type'] == 1) {
// 商户充值
$recharge = $this->handleMerchantRecharge($recharge, $search_date, $param['merchant_id']);
// 充值总额 赠送总额 扣除总额
$recharge['all_recharge_money'] = $recharge['small_program'] + $recharge['official_account'] + $recharge['merchant_admin_recharge'];
$recharge['all_give_money'] = $recharge['merchant_admin_give'] + $recharge['merchant_aide_give'];
$recharge['all_reduce_money'] = $recharge['merchant_admin_reduce'] + $recharge['merchant_aide_reduce'];
// 处理总数据
$recharge = $this->handleRechargeAllData($recharge);
}
return callBack(statusCode()['success'], '获取成功', [
'store_data' => $store_data,
'recharge' => $recharge,
'other_pay' => $other_pay,
'search_date' => $search_date,
'store_data_before' => $store_data_before,
'count' => $count,
]);
}
/**
* 定义商户充值参数
*/
private function setRechargeParam()
{
return [
'small_program' => 0,
'official_account' => 0,
'merchant_admin_recharge' => 0,
'merchant_admin_give' => 0,
'merchant_aide_give' => 0,
'merchant_admin_reduce' => 0,
'merchant_aide_reduce' => 0,
'all_recharge_money' => 0,
'all_give_money' => 0,
'all_reduce_money' => 0,
'merchant_admin_refund' => 0,
];
}
/**
* 定义门店参数
*/
private function setStoreParam()
{
return [
'total' => [
'money' => 0, //总
'sell_money' => 0,
'sell_num' => 0,
'refund_money' => 0,
'refund_num' => 0,
'line_money' => 0, //店内
'line_sell_money' => 0,
'line_sell_num' => 0,
'line_refund_money' => 0,
'line_refund_num' => 0,
'online_money' => 0, //商城
'online_sell_money' => 0,
'online_sell_num' => 0,
'online_refund_money' => 0,
'online_refund_num' => 0,
],
'wechat' => [
'sell_money' => 0, //总
'sell_num' => 0,
'refund_money' => 0,
'refund_num' => 0,
'line_sell_money' => 0, //店内
'line_sell_num' => 0,
'line_refund_money' => 0,
'line_refund_num' => 0,
'online_sell_money' => 0, //商城
'online_sell_num' => 0,
'online_refund_money' => 0,
'online_refund_num' => 0,
],
'alipay' => [
'sell_money' => 0, //总
'sell_num' => 0,
'refund_money' => 0,
'refund_num' => 0,
'line_sell_money' => 0, //店内
'line_sell_num' => 0,
'line_refund_num' => 0,
'line_refund_money' => 0,
'online_sell_money' => 0, //商城
'online_sell_num' => 0,
'online_refund_money' => 0,
'online_refund_num' => 0,
],
'vip' => [
'sell_money' => 0, //总
'sell_num' => 0,
'refund_money' => 0,
'refund_num' => 0,
'line_sell_money' => 0, //店内
'line_sell_num' => 0,
'line_refund_money' => 0,
'line_refund_num' => 0,
'online_sell_money' => 0, //商城
'online_sell_num' => 0,
'online_refund_money' => 0,
'online_refund_num' => 0,
],
'cash' => [
'sell_money' => 0, //总
'sell_num' => 0,
'refund_money' => 0,
'refund_num' => 0,
'line_sell_money' => 0, //店内
'line_sell_num' => 0,
'line_refund_money' => 0,
'line_refund_num' => 0,
'online_sell_money' => 0, //商城
'online_sell_num' => 0,
'online_refund_money' => 0,
'online_refund_num' => 0,
],
'line_recharge' => [
'wechat_recharge' => 0,
'wechat_give' => 0,
'alipay_recharge' => 0,
'alipay_give' => 0,
'cash_recharge' => 0,
'cash_give' => 0,
],
'update_balance' => [
'store_admin_give' => 0,
'store_aide_give' => 0,
'store_admin_reduce' => 0,
'store_aide_reduce' => 0,
'cashier_reduce' => 0,
'cashier_aide_reduce' => 0,
'store_refund' => 0,
'cashier_refund' => 0,
'goods_refund' => 0,
'recharge_all_money' => 0, // 充值总金额
'give_all_money' => 0, // 赠送总金额
'reduce_all_money' => 0, // 扣除总金额
],
];
}
/**
* 获取点单数据
* @param $info array
* @param $date array
* @param $parameter [
* merchant_id
* store_id
* type
* ]
* @param $other_pay_state int
* @param $other_pay array
* @param $credit
* @return array
*/
private function handleOrder($info, $date, $parameter, $other_pay_state = 0, $other_pay = [], $credit = false)
{
// 定义其他支付参数
if ($other_pay_state == 1 && !empty($other_pay)) {
$info['other'] = $this->otherParam($other_pay);
}
// 条件
$BillOrder = new RetailBillOrderModel();
$bill_map = [
'merchant_id' => $parameter['merchant_id'],
'pay_state' => 1,
'pay_type' => ['in', '1,3,4,5,6,7,8'],
'type' => ['in', '1,2'],
[
[
'order_type' => 1,
'refund_status' => ['in', '0,1'],
],
[
'order_type' => 2,
'refund_status' => 2,
],
'_logic' => 'OR'
],
];
switch ($parameter['type']) {
case 1:
// 商户
$bill_map['store_id'] = $info['id'];
$bill_map['add_time'] = ['between', $date];
break;
case 2:
// 门店
$bill_map['store_id'] = $parameter['store_id'];
$bill_map['add_time'] = ['between', $info['date_map']];
//赊账数据
if ($credit) {
$creditArreaModel = new \Credit\Model\CreditArrearageModel();
$creditRepayModel = new \Credit\Model\CreditRepaymentModel();
$creditMap = [
'merchant_id' => $parameter['merchant_id'],
'store_id' => $parameter['store_id'],
'status' => 1,
'add_time' => ['between', $info['date_map']],
];
$info['credit']['arrea_money'] = $creditArreaModel->getSum($creditMap, 'bill_money');
$info['credit']['repay_money'] = $creditRepayModel->getSum($creditMap, 'money');
}
break;
}
$bill_field = [
'id', 'all_money', 'pay_type', 'type', 'order_type',
];
// 查询
$store_order = $BillOrder->getSelect($bill_map, $bill_field);
$info['b_sql'] = M()->_sql();
if (empty($store_order)) {
return $info;
}
// 处理数据
foreach ($store_order as &$val) {
// 销售
if ($val['order_type'] == 1) {
// 小计
if (in_array($val['pay_type'], array(1, 3, 4, 5, 6, 7))) {
$info['total']['sell_money'] += $val['all_money'];
$info['total']['sell_num'] += 1;
if ($val['type'] == 1) {
$info['total']['online_sell_money'] += $val['all_money'];
$info['total']['online_sell_num'] += 1;
} else {
$info['total']['line_sell_money'] += $val['all_money'];
$info['total']['line_sell_num'] += 1;
}
}
switch (intval($val['pay_type'])) {
case 1:
// 现金
$info['cash']['sell_money'] += $val['all_money'];
$info['cash']['sell_num'] += 1;
if ($val['type'] == 1) {
$info['cash']['online_sell_money'] += $val['all_money'];
$info['cash']['online_sell_num'] += 1;
} else {
$info['cash']['line_sell_money'] += $val['all_money'];
$info['cash']['line_sell_num'] += 1;
}
break;
case 3:
// 微信
$info['wechat']['sell_money'] += $val['all_money'];
$info['wechat']['sell_num'] += 1;
if ($val['type'] == 1) {
$info['wechat']['online_sell_money'] += $val['all_money'];
$info['wechat']['online_sell_num'] += 1;
} else {
$info['wechat']['line_sell_money'] += $val['all_money'];
$info['wechat']['line_sell_num'] += 1;
}
break;
case 4:
// 支付宝
$info['alipay']['sell_money'] += $val['all_money'];
$info['alipay']['sell_num'] += 1;
if ($val['type'] == 1) {
$info['alipay']['online_sell_money'] += $val['all_money'];
$info['alipay']['online_sell_num'] += 1;
} else {
$info['alipay']['line_sell_money'] += $val['all_money'];
$info['alipay']['line_sell_num'] += 1;
}
break;
case 5:
$info['vip']['sell_money'] += $val['all_money'];
$info['vip']['sell_num'] += 1;
if ($val['type'] == 1) {
$info['vip']['online_sell_money'] += $val['all_money'];
$info['vip']['online_sell_num'] += 1;
} else {
$info['vip']['line_sell_money'] += $val['all_money'];
$info['vip']['line_sell_num'] += 1;
}
break;
case 6:
// 微信
$info['wechat']['sell_money'] += $val['all_money'];
$info['wechat']['sell_num'] += 1;
if ($val['type'] == 1) {
$info['wechat']['online_sell_money'] += $val['all_money'];
$info['wechat']['online_sell_num'] += 1;
} else {
$info['wechat']['line_sell_money'] += $val['all_money'];
$info['wechat']['line_sell_num'] += 1;
}
break;
case 7:
// 其他
if (!empty($info['other'])) {
$info = $this->otherPay($info, $val, $parameter);
}
break;
case 8:
// 组合
$info = $this->combinationPay($info, $val, $parameter);
break;
}
} else {
// 小计
if (in_array($val['pay_type'], array(1, 3, 4, 5, 6, 7))) {
$info['total']['refund_money'] += $val['all_money'];
$info['total']['refund_num'] += 1;
if ($val['type'] == 1) {
$info['total']['online_refund_money'] += $val['all_money'];
$info['total']['online_refund_num'] += 1;
} else {
$info['total']['line_refund_money'] += $val['all_money'];
$info['total']['line_refund_num'] += 1;
}
}
switch ($val['pay_type']) {
case 1:
// 现金
$info['cash']['refund_money'] += $val['all_money'];
$info['cash']['refund_num'] += 1;
if ($val['type'] == 1) {
$info['cash']['online_refund_money'] += $val['all_money'];
$info['cash']['online_refund_num'] += 1;
} else {
$info['cash']['line_refund_money'] += $val['all_money'];
$info['cash']['line_refund_num'] += 1;
}
break;
case 3:
// 微信
$info['wechat']['refund_money'] += $val['all_money'];
$info['wechat']['refund_num'] += 1;
if ($val['type'] == 1) {
$info['wechat']['online_refund_money'] += $val['all_money'];
$info['wechat']['online_refund_num'] += 1;
} else {
$info['wechat']['line_refund_money'] += $val['all_money'];
$info['wechat']['line_refund_num'] += 1;
}
break;
case 4:
// 支付宝
$info['alipay']['refund_money'] += $val['all_money'];
$info['alipay']['refund_num'] += 1;
if ($val['type'] == 1) {
$info['alipay']['online_refund_money'] += $val['all_money'];
$info['alipay']['online_refund_num'] += 1;
} else {
$info['alipay']['line_refund_money'] += $val['all_money'];
$info['alipay']['line_refund_num'] += 1;
}
break;
case 5:
$info['vip']['refund_money'] += $val['all_money'];
$info['vip']['refund_num'] += 1;
if ($val['type'] == 1) {
$info['vip']['online_refund_money'] += $val['all_money'];
$info['vip']['online_refund_num'] += 1;
} else {
$info['vip']['line_refund_money'] += $val['all_money'];
$info['vip']['line_refund_num'] += 1;
}
break;
case 6:
// 微信
$info['wechat']['refund_money'] += $val['all_money'];
$info['wechat']['refund_num'] += 1;
if ($val['type'] == 1) {
$info['wechat']['online_refund_money'] += $val['all_money'];
$info['wechat']['online_refund_num'] += 1;
} else {
$info['wechat']['line_refund_money'] += $val['all_money'];
$info['wechat']['line_refund_num'] += 1;
}
break;
case 7:
// 其他
if (!empty($info['other'])) {
$info = $this->otherPay($info, $val, $parameter);
}
break;
case 8:
// 组合
$info = $this->combinationPay($info, $val, $parameter);
break;
}
}
}
$PayOrderModel = new RetailPayOrderModel();
$subCardMap = [
'scene_type' => 1, //付款订单
'order_type' => 7, //购买次卡
];
switch ($parameter['type']) {
case 1:
$subCardMap['store_id'] = $info['id'];
$subCardMap['trade_date'] = ['between', $date];
break;
case 2:
$subCardMap['store_id'] = $parameter['store_id'];
$subCardMap['parameter'] = ['between', $info['date_map']];
break;
}
$subCardMap['pay_type'] = 1; //微信支付
$wxSubCardMoney = $PayOrderModel->getSum($subCardMap, 'trade_amount'); //次卡没有退款
$wxSubCardNum = $PayOrderModel->getCount($subCardMap);
$subCardMap['pay_type'] = 3; //现金
$cashSubCardMoney = $PayOrderModel->getSum($subCardMap, 'trade_amount'); //次卡没有退款
$cashSubCardNum = $PayOrderModel->getCount($subCardMap);
// 微信包含次卡
$info['wechat']['sell_money'] += $wxSubCardMoney;
$info['wechat']['sell_num'] += $wxSubCardNum;
// 现金包含次卡
$info['cash']['sell_money'] += $cashSubCardMoney;
$info['cash']['sell_num'] += $cashSubCardNum;
return $info;
}
/**
* 定义其他支付参数
* @param $other_pay array
* @return mixed
*/
private function otherParam($other_pay)
{
foreach ($other_pay as &$val) {
$val['sell_money'] = 0; //总
$val['sell_num'] = 0;
$val['refund_money'] = 0;
$val['refund_num'] = 0;
$val['line_sell_money'] = 0; //店内
$val['line_sell_num'] = 0;
$val['line_refund_money'] = 0;
$val['line_refund_num'] = 0;
$val['online_sell_money'] = 0; //商城
$val['online_sell_num'] = 0;
$val['online_refund_money'] = 0;
$val['online_refund_num'] = 0;
}
return $other_pay;
}
/**
* 查询其他支付
* @param $info array
* @param $bill_order array
* @param $parameter [
* merchant_id
* store_id
* type
* ]
* @return array
*/
private function otherPay($info, $bill_order, $parameter)
{
// 条件
$PayOrder = new RetailPayOrderModel();
$pay_map = [
'merchant_id' => $parameter['merchant_id'],
'bill_id' => $bill_order['id'],
'order_state' => ['in', ['SUCCESS', 'REFUND']],
];
$pay_map['store_id'] = $parameter['type'] == 1 ? $info['id'] : $parameter['store_id'];
$pay_field = [
'trade_amount', 'other_pay_id'
];
// 查询pay_order订单
$pay_order = $PayOrder->getFind($pay_map, $pay_field);
// 判断
if (empty($pay_order)) {
return $info;
}
// 处理数据
$info = $this->handleOther($info, $bill_order, $pay_order);
return $info;
}
/**
* 处理其他支付数据
* @param $info array
* @param $bill_order array
* @param $pay_order array
* @return array
*/
private function handleOther($info, $bill_order, $pay_order)
{
// 判断其他支付
if (empty($info['other'])) {
return $info;
}
foreach ($info['other'] as &$val) {
// 判断其他支付
if ($val['id'] == $pay_order['other_pay_id']) {
if ($bill_order['order_type'] == 1) {
$val['sell_money'] += $pay_order['trade_amount'];
$val['sell_num'] += 1;
if ($bill_order['type'] == 1) {
$val['online_sell_money'] += $pay_order['trade_amount'];
$val['online_sell_num'] += 1;
} else {
$val['line_sell_money'] += $pay_order['trade_amount'];
$val['line_sell_num'] += 1;
}
} else {
$val['refund_money'] += $pay_order['trade_amount'];
$val['refund_num'] += 1;
if ($bill_order['type'] == 1) {
$val['online_refund_money'] += $pay_order['trade_amount'];
$val['online_refund_num'] += 1;
} else {
$val['line_refund_money'] += $pay_order['trade_amount'];
$val['line_refund_num'] += 1;
}
}
}
}
return $info;
}
/**
* 处理组合支付
* @param $info array
* @param $bill_order array
* @param $parameter [
* merchant_id
* store_id
* type
* ]
* @return array
*/
public function combinationPay($info, $bill_order, $parameter)
{
// 条件
$PayOrder = new RetailPayOrderModel();
$pay_map = [
'merchant_id' => $parameter['merchant_id'],
'bill_id' => $bill_order['id'],
'order_state' => ['in', ['SUCCESS', 'REFUND']],
];
$pay_map['store_id'] = $parameter['type'] == 1 ? $info['id'] : $parameter['store_id'];
$pay_field = [
'id', 'pay_type', 'trade_amount', 'other_pay_id'
];
// 查询pay_order订单
$pay_order = $PayOrder->getSelect($pay_map, $pay_field);
// 判断
if (empty($pay_order)) {
return $info;
}
// 处理数据
foreach ($pay_order as &$val) {
// 判断类型
if ($bill_order['order_type'] == 1) {
$info['total']['sell_money'] += $val['trade_amount'];
$info['total']['sell_num'] += 1;
if ($bill_order['type'] == 1) {
$info['total']['online_sell_money'] += $val['trade_amount'];
$info['total']['online_sell_num'] += 1;
} else {
$info['total']['line_sell_money'] += $val['trade_amount'];
$info['total']['line_sell_num'] += 1;
}
switch ($val['pay_type']) {
case 1:
// 微信
$info['wechat']['sell_money'] += $val['trade_amount'];
$info['wechat']['sell_num'] += 1;
if ($bill_order['type'] == 1) {
$info['wechat']['online_sell_money'] += $val['trade_amount'];
$info['wechat']['online_sell_num'] += 1;
} else {
$info['wechat']['line_sell_money'] += $val['trade_amount'];
$info['wechat']['line_sell_num'] += 1;
}
break;
case 2:
// 支付宝
$info['alipay']['sell_money'] += $val['trade_amount'];
$info['alipay']['sell_num'] += 1;
if ($bill_order['type'] == 1) {
$info['alipay']['online_sell_money'] += $val['trade_amount'];
$info['alipay']['online_sell_num'] += 1;
} else {
$info['alipay']['line_sell_money'] += $val['trade_amount'];
$info['alipay']['line_sell_num'] += 1;
}
break;
case 3:
// 现金
$info['cash']['sell_money'] += $val['trade_amount'];
$info['cash']['sell_num'] += 1;
if ($bill_order['type'] == 1) {
$info['cash']['online_sell_money'] += $val['trade_amount'];
$info['cash']['online_sell_num'] += 1;
} else {
$info['cash']['line_sell_money'] += $val['trade_amount'];
$info['cash']['line_sell_num'] += 1;
}
break;
case 4:
// 微信
$info['wechat']['sell_money'] += $val['trade_amount'];
$info['wechat']['sell_num'] += 1;
if ($bill_order['type'] == 1) {
$info['wechat']['online_sell_money'] += $val['trade_amount'];
$info['wechat']['online_sell_num'] += 1;
} else {
$info['wechat']['line_sell_money'] += $val['trade_amount'];
$info['wechat']['line_sell_num'] += 1;
}
break;
case 5:
// 其他支付
$info = $this->handleOther($info, $bill_order, $val);
break;
case 6:
// 会员
$info['vip']['sell_money'] += $val['trade_amount'];
$info['vip']['sell_num'] += 1;
if ($bill_order['type'] == 1) {
$info['vip']['online_sell_money'] += $val['trade_amount'];
$info['vip']['online_sell_num'] += 1;
} else {
$info['vip']['line_sell_money'] += $val['trade_amount'];
$info['vip']['line_sell_num'] += 1;
}
break;
}
} else {
$info['total']['refund_money'] += $val['trade_amount'];
$info['total']['refund_num'] += 1;
if ($bill_order['type'] == 1) {
$info['total']['online_refund_money'] += $val['trade_amount'];
$info['total']['online_refund_num'] += 1;
} else {
$info['total']['line_refund_money'] += $val['trade_amount'];
$info['total']['line_refund_num'] += 1;
}
switch ($val['pay_type']) {
case 1:
// 微信
$info['wechat']['refund_money'] += $val['trade_amount'];
$info['wechat']['refund_num'] += 1;
if ($bill_order['type'] == 1) {
$info['wechat']['online_refund_money'] += $val['trade_amount'];
$info['wechat']['online_refund_num'] += 1;
} else {
$info['wechat']['line_refund_money'] += $val['trade_amount'];
$info['wechat']['line_refund_num'] += 1;
}
break;
case 2:
// 支付宝
$info['alipay']['refund_money'] += $val['trade_amount'];
$info['alipay']['refund_num'] += 1;
if ($bill_order['type'] == 1) {
$info['alipay']['online_refund_money'] += $val['trade_amount'];
$info['alipay']['online_refund_num'] += 1;
} else {
$info['alipay']['line_refund_money'] += $val['trade_amount'];
$info['alipay']['line_refund_num'] += 1;
}
break;
case 3:
// 现金
$info['cash']['refund_money'] += $val['trade_amount'];
$info['cash']['refund_num'] += 1;
if ($bill_order['type'] == 1) {
$info['cash']['online_refund_money'] += $val['trade_amount'];
$info['cash']['online_refund_num'] += 1;
} else {
$info['cash']['line_refund_money'] += $val['trade_amount'];
$info['cash']['line_refund_num'] += 1;
}
break;
case 4:
// 微信
$info['wechat']['refund_money'] += $val['trade_amount'];
$info['wechat']['refund_num'] += 1;
if ($bill_order['type'] == 1) {
$info['wechat']['online_refund_money'] += $val['trade_amount'];
$info['wechat']['online_refund_num'] += 1;
} else {
$info['wechat']['line_refund_money'] += $val['trade_amount'];
$info['wechat']['line_refund_num'] += 1;
}
break;
case 5:
// 其他支付
$info = $this->handleOther($info, $bill_order, $val);
break;
case 6:
// 会员
$info['vip']['refund_money'] += $val['trade_amount'];
$info['vip']['refund_num'] += 1;
if ($bill_order['type'] == 1) {
$info['vip']['online_refund_money'] += $val['trade_amount'];
$info['vip']['online_refund_num'] += 1;
} else {
$info['vip']['line_refund_money'] += $val['trade_amount'];
$info['vip']['line_refund_num'] += 1;
}
break;
}
}
}
return $info;
}
/**
* 处理快捷收银
* @param $info array
* @param $date array
* @param $parameter [
* merchant_id
* store_id
* type
* ]
* @return array
*/
public function quickPay($info, $date, $parameter)
{
// 条件
$PayOrder = new RetailPayOrderModel();
$quick_map = [
'merchant_id' => $parameter['merchant_id'],
'pay_type' => ['in', [1, 2, 3, 4, 6]],
'order_state' => ['in', ['SUCCESS', 'REFUND']],
'order_type' => 6
];
switch ($parameter['type']) {
case 1:
$quick_map['store_id'] = $info['id'];
$quick_map['trade_date'] = ['between', $date];
break;
case 2:
$quick_map['store_id'] = $parameter['store_id'];
$quick_map['trade_date'] = ['between', $info['date_map']];
break;
}
$quick_field = [
'id', 'pay_type', 'trade_amount', 'order_state'
];
// 查询pay_order订单
$pay_order = $PayOrder->getSelect($quick_map, $quick_field);
// 判断
if (empty($pay_order)) {
return $info;
}
// 处理数据
foreach ($pay_order as &$val) {
// 判断类型
if ($val['order_state'] == 'SUCCESS') {
$info['total']['sell_money'] += $val['trade_amount'];
$info['total']['sell_num'] += 1;
$info['total']['line_sell_money'] += $val['trade_amount'];
$info['total']['line_sell_num'] += 1;
switch ($val['pay_type']) {
case 1:
// 微信
$info['wechat']['sell_money'] += $val['trade_amount'];
$info['wechat']['sell_num'] += 1;
$info['wechat']['line_sell_money'] += $val['trade_amount'];
$info['wechat']['line_sell_num'] += 1;
break;
case 2:
// 支付宝
$info['alipay']['sell_money'] += $val['trade_amount'];
$info['alipay']['sell_num'] += 1;
$info['alipay']['line_sell_money'] += $val['trade_amount'];
$info['alipay']['line_sell_num'] += 1;
break;
case 3:
// 现金
$info['cash']['sell_money'] += $val['trade_amount'];
$info['cash']['sell_num'] += 1;
$info['cash']['line_sell_money'] += $val['trade_amount'];
$info['cash']['line_sell_num'] += 1;
break;
case 4:
// 微信
$info['wechat']['sell_money'] += $val['trade_amount'];
$info['wechat']['sell_num'] += 1;
$info['wechat']['line_sell_money'] += $val['trade_amount'];
$info['wechat']['line_sell_num'] += 1;
break;
case 6:
// 会员
$info['vip']['sell_money'] += $val['trade_amount'];
$info['vip']['sell_num'] += 1;
$info['vip']['line_sell_money'] += $val['trade_amount'];
$info['vip']['line_sell_num'] += 1;
break;
}
} else {
$info['total']['refund_money'] += $val['trade_amount'];
$info['total']['refund_num'] += 1;
$info['total']['line_refund_money'] += $val['trade_amount'];
$info['total']['line_refund_num'] += 1;
switch ($val['pay_type']) {
case 1:
// 微信
$info['wechat']['refund_money'] += $val['trade_amount'];
$info['wechat']['refund_num'] += 1;
$info['wechat']['line_refund_money'] += $val['trade_amount'];
$info['wechat']['line_refund_num'] += 1;
break;
case 2:
// 支付宝
$info['alipay']['refund_money'] += $val['trade_amount'];
$info['alipay']['refund_num'] += 1;
$info['alipay']['line_refund_money'] += $val['trade_amount'];
$info['alipay']['line_refund_num'] += 1;
break;
case 3:
// 现金
$info['cash']['refund_money'] += $val['trade_amount'];
$info['cash']['refund_num'] += 1;
$info['cash']['line_refund_money'] += $val['trade_amount'];
$info['cash']['line_refund_num'] += 1;
break;
case 4:
// 微信
$info['wechat']['refund_money'] += $val['trade_amount'];
$info['wechat']['refund_num'] += 1;
$info['wechat']['line_refund_money'] += $val['trade_amount'];
$info['wechat']['line_refund_num'] += 1;
break;
case 6:
// 会员
$info['vip']['refund_money'] += $val['trade_amount'];
$info['vip']['refund_num'] += 1;
$info['vip']['line_refund_money'] += $val['trade_amount'];
$info['vip']['line_refund_num'] += 1;
break;
}
}
}
return $info;
}
/**
* 处理门店充值数据
* @param $info array
* @param $recharge array
* @param $date array
* @param $parameter [
* merchant_id
* store_id
* type
* ]
* @return array
*/
public function handleStoreRecharge($info, $recharge, $date, $parameter)
{
// 条件
$RechargeOrder = new RetailRechargeOrderModel();
$rechange_map = [
'merchant_id' => $parameter['merchant_id'],
'status' => 1,
'type' => ['in', [1, 3, 4, 5, 9]],
'scene_type' => ['in', [1, 2, 3, 4, 5, 6]],
];
switch ($parameter['type']) {
case 1:
$rechange_map['store_id'] = $info['id'];
$rechange_map['add_time'] = ['between', $date];
break;
case 2:
$rechange_map['store_id'] = $parameter['store_id'];
$rechange_map['add_time'] = ['between', $info['date_map']];
break;
}
$rechange_field = ['id', 'money', 'all_money', 'user_type', 'scene_type', 'type', 'pay_type',];
// 查询
$recharge_order = $RechargeOrder->getSelect($rechange_map, $rechange_field);
// 判断
if (empty($recharge_order)) {
$data = [
'info' => $info,
'recharge' => $recharge
];
return $data;
}
// 处理数据
foreach ($recharge_order as &$val) {
// 判断类型
switch (intval($val['type'])) {
case 1:
// 充值
switch ($val['scene_type']) {
case 1:
switch ($val['pay_type']) {
case 1:
// 现金
$info['line_recharge']['cash_recharge'] += $val['money'];
$info['line_recharge']['cash_give'] += $val['all_money'] - $val['money'];
break;
case 2:
// 微信
$info['line_recharge']['wechat_recharge'] += $val['money'];
$info['line_recharge']['wechat_give'] += $val['all_money'] - $val['money'];
break;
case 3:
// 支付宝
$info['line_recharge']['alipay_recharge'] += $val['money'];
$info['line_recharge']['alipay_give'] += $val['all_money'] - $val['money'];
break;
}
break;
// 小程序
case 4:
$recharge['small_program'] += $val['money'];
break;
// 公众号
case 5:
$recharge['official_account'] += $val['money'];
break;
}
break;
// 3.编辑增加
case 3:
// 判断场景
switch ($val['scene_type']) {
case 3:
// 门店后台
$info['update_balance']['store_admin_give'] += $val['all_money'];
break;
case 6:
// 小助手
$info['update_balance']['store_aide_give'] += $val['all_money'];
break;
}
break;
// 编辑减少
case 4:
// 判断场景
switch ($val['scene_type']) {
case 1:
// 收银机
$info['update_balance']['cashier_reduce'] += $val['money'];
break;
case 3:
// 门店后台
$info['update_balance']['store_admin_reduce'] += $val['money'];
break;
case 6:
// 小助手
switch ($val['user_type']) {
case 2:
// 店长
$info['update_balance']['store_aide_reduce'] += $val['money'];
break;
case 3:
// 收银员
$info['update_balance']['cashier_aide_reduce'] += $val['money'];
break;
}
break;
}
break;
// 退款增加
case 5:
$info['update_balance']['goods_refund'] += $val['money'];
break;
// 退款
case 9:
// 判断类型
switch ($val['scene_type']) {
case 3:
// 店长
$info['update_balance']['store_refund'] += $val['all_money'];
break;
case 1:
// 收银员
$info['update_balance']['cashier_refund'] += $val['all_money'];
break;
}
break;
}
}
$data = [
'info' => $info,
'recharge' => $recharge
];
return $data;
}
/**
* 处理商户充值数据
* @param $info array
* @param $recharge array
* @param $date array
* @param $merchant_id
* @return array
*/
public function handleMerchantRecharge($recharge, $date, $merchant_id)
{
// 条件
$RechargeOrder = new RetailRechargeOrderModel();
$recharge_map = [
'merchant_id' => $merchant_id,
'status' => 1,
'user_type' => 1,
'type' => ['in', [1, 3, 4, 9]],
'scene_type' => ['in', [2, 6]],
'add_time' => ['between', $date]
];
$rechange_field = ['id', 'money', 'all_money', 'user_type', 'scene_type', 'type', 'pay_type',];
// 查询
$recharge_order = $RechargeOrder->getSelect($recharge_map, $rechange_field);
// 判断
if (empty($recharge_order)) {
return $recharge;
}
// 处理数据
foreach ($recharge_order as &$val) {
// 判断类型
switch (intval($val['type'])) {
// 判断类型 1.充值
case 1:
$recharge['merchant_admin_recharge'] += $val['money'];
$recharge['merchant_admin_give'] += $val['all_money'] - $val['money'];
break;
// 编辑增加
case 3:
// 判断场景
switch ($val['scene_type']) {
case 2:
// 商户后台
$recharge['merchant_admin_give'] += $val['all_money'];
break;
case 6:
// 小助手
$recharge['merchant_aide_give'] += $val['all_money'];
break;
}
break;
// 编辑减少
case 4:
// 判断场景
switch ($val['scene_type']) {
case 2:
// 商户后台
$recharge['merchant_admin_reduce'] += $val['money'];
break;
case 6:
// 小助手
$recharge['merchant_aide_reduce'] += $val['money'];
break;
}
break;
// 退款
case 9:
// 判断类型
$recharge['merchant_admin_refund'] += $val['all_money'];
break;
}
}
return $recharge;
}
/**
* 处理门店总数据
* @param $info array
* @return array
*/
public function handleStoreAllData($info)
{
// [total]
$info['total']['money'] = round($info['total']['money'], 2);
$info['total']['sell_money'] = round($info['total']['sell_money'], 2);
$info['total']['refund_money'] = round($info['total']['refund_money'], 2);
$info['total']['line_money'] = round($info['total']['line_money'], 2);
$info['total']['line_sell_money'] = round($info['total']['line_sell_money'], 2);
$info['total']['line_refund_money'] = round($info['total']['line_refund_money'], 2);
$info['total']['online_money'] = round($info['total']['online_money'], 2);
$info['total']['online_sell_money'] = round($info['total']['online_sell_money'], 2);
$info['total']['online_refund_money'] = round($info['total']['online_refund_money'], 2);
// [wechat]
$info['wechat']['sell_money'] = round($info['wechat']['sell_money'], 2);
$info['wechat']['refund_money'] = round($info['wechat']['refund_money'], 2);
$info['wechat']['line_sell_money'] = round($info['wechat']['line_sell_money'], 2);
$info['wechat']['line_refund_money'] = round($info['wechat']['line_refund_money'], 2);
$info['wechat']['online_sell_money'] = round($info['wechat']['online_sell_money'], 2);
$info['wechat']['online_refund_money'] = round($info['wechat']['online_refund_money'], 2);
// [alipay]
$info['alipay']['sell_money'] = round($info['alipay']['sell_money'], 2);
$info['alipay']['line_sell_money'] = round($info['alipay']['line_sell_money'], 2);
$info['alipay']['online_sell_money'] = round($info['alipay']['online_sell_money'], 2);
$info['alipay']['refund_money'] = round($info['alipay']['refund_money'], 2);
$info['alipay']['line_refund_money'] = round($info['alipay']['line_refund_money'], 2);
$info['alipay']['online_refund_money'] = round($info['alipay']['online_refund_money'], 2);
// [vip]
$info['vip']['sell_money'] = round($info['vip']['sell_money'], 2);
$info['vip']['line_sell_money'] = round($info['vip']['line_sell_money'], 2);
$info['vip']['online_sell_money'] = round($info['vip']['online_sell_money'], 2);
$info['vip']['refund_money'] = round($info['vip']['refund_money'], 2);
$info['vip']['line_refund_money'] = round($info['vip']['line_refund_money'], 2);
$info['vip']['online_refund_money'] = round($info['vip']['online_refund_money'], 2);
// [cash]
$info['cash']['sell_money'] = round($info['cash']['sell_money'], 2);
$info['cash']['line_sell_money'] = round($info['cash']['line_sell_money'], 2);
$info['cash']['online_sell_money'] = round($info['cash']['online_sell_money'], 2);
$info['cash']['refund_money'] = round($info['cash']['refund_money'], 2);
$info['cash']['line_refund_money'] = round($info['cash']['line_refund_money'], 2);
$info['cash']['online_refund_money'] = round($info['cash']['online_refund_money'], 2);
// [line_recharge]
$info['line_recharge']['wechat_recharge'] = round($info['line_recharge']['wechat_recharge'], 2);
$info['line_recharge']['alipay_recharge'] = round($info['line_recharge']['alipay_recharge'], 2);
$info['line_recharge']['cash_recharge'] = round($info['line_recharge']['cash_recharge'], 2);
$info['line_recharge']['wechat_give'] = round($info['line_recharge']['wechat_give'], 2);
$info['line_recharge']['alipay_give'] = round($info['line_recharge']['alipay_give'], 2);
$info['line_recharge']['cash_give'] = round($info['line_recharge']['cash_give'], 2);
// [update_balance]
$info['update_balance']['store_admin_give'] = round($info['update_balance']['store_admin_give'], 2);
$info['update_balance']['store_aide_give'] = round($info['update_balance']['store_aide_give'], 2);
$info['update_balance']['store_admin_reduce'] = round($info['update_balance']['store_admin_reduce'], 2);
$info['update_balance']['store_aide_reduce'] = round($info['update_balance']['store_aide_reduce'], 2);
$info['update_balance']['cashier_reduce'] = round($info['update_balance']['cashier_reduce'], 2);
$info['update_balance']['cashier_aide_reduce'] = round($info['update_balance']['cashier_aide_reduce'], 2);
$info['update_balance']['store_refund'] = round($info['update_balance']['store_refund'], 2);
$info['update_balance']['cashier_refund'] = round($info['update_balance']['cashier_refund'], 2);
$info['update_balance']['goods_refund'] = round($info['update_balance']['goods_refund'], 2);
// [other]
if (!empty($info['other'])) {
// 处理其他支付
foreach ($info['other'] as &$val) {
$val['sell_money'] = round($val['sell_money'], 2);
$val['line_sell_money'] = round($val['line_sell_money'], 2);
$val['online_sell_money'] = round($val['online_sell_money'], 2);
$val['refund_money'] = round($val['refund_money'], 2);
$val['line_refund_money'] = round($val['line_refund_money'], 2);
$val['online_refund_money'] = round($val['online_refund_money'], 2);
}
}
return $info;
}
/**
* 处理充值总数据
* @param $recharge array
* @return array
*/
public function handleRechargeAllData($recharge)
{
// [recharge]
$recharge['small_program'] = round($recharge['small_program'], 2); //小程序充值
$recharge['official_account'] = round($recharge['official_account'], 2); //公众号充值
$recharge['merchant_admin_recharge'] = round($recharge['merchant_admin_recharge'], 2); //商户后台充值
$recharge['merchant_admin_give'] = round($recharge['merchant_admin_give'], 2); //商户后台赠送
$recharge['merchant_aide_give'] = round($recharge['merchant_aide_give'], 2); //小助手赠送
$recharge['merchant_admin_reduce'] = round($recharge['merchant_admin_reduce'], 2); //后台扣除
$recharge['merchant_aide_reduce'] = round($recharge['merchant_aide_reduce'], 2); //小助手扣除
$recharge['all_recharge_money'] = round($recharge['all_recharge_money'], 2); //总充值
$recharge['all_give_money'] = round($recharge['all_give_money'], 2); //总赠送
$recharge['all_reduce_money'] = round($recharge['all_reduce_money'], 2); //总扣除
$recharge['merchant_admin_refund'] = round($recharge['merchant_admin_refund'], 2); //总退款
return $recharge;
}
/********************************销售统计****结束*************************************/
}