From 0126357d76856f883f9ec3ff2a886d8fc5a22712 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Tue, 30 May 2023 15:37:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=87=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20=E4=BF=AE=E5=A4=8D=E6=98=BE=E7=A4=BA=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../merchant/FinancialRecordRepository.php | 389 ++++++++++-------- .../admin/system/merchant/FinancialRecord.php | 10 +- crmeb/services/ExcelService.php | 7 +- 3 files changed, 241 insertions(+), 165 deletions(-) diff --git a/app/common/repositories/system/merchant/FinancialRecordRepository.php b/app/common/repositories/system/merchant/FinancialRecordRepository.php index 4a6b9af3..0c1337e4 100644 --- a/app/common/repositories/system/merchant/FinancialRecordRepository.php +++ b/app/common/repositories/system/merchant/FinancialRecordRepository.php @@ -45,7 +45,7 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 5/7/21 */ - public function getList(array $where,int $page,int $limit) + public function getList(array $where, int $page, int $limit) { $query = $this->dao->search($where)->order('create_time DESC'); $count = $query->count(); @@ -61,7 +61,7 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 5/7/21 */ - public function getFiniancialTitle(?int $merId,array $where) + public function getFiniancialTitle(?int $merId, array $where) { /** * 平台支出 @@ -71,19 +71,19 @@ class FinancialRecordRepository extends BaseRepository * 退回收入 refund_order + (佣金 brokerage_one,brokerage_two - 退回佣金 refund_brokerage_two,refund_brokerage_one ) + (手续费 order_charge + 预售手续费 presell_charge - 平台退给商户的手续费 refund_charge ) */ $where['is_mer'] = $merId; - if($merId){ + if ($merId) { //商户收入 - $income = $this->dao->search($where)->where('financial_type','in',['order','mer_presell'])->sum('number'); + $income = $this->dao->search($where)->where('financial_type', 'in', ['order', 'mer_presell'])->sum('number'); //商户支出 - $expend_ = $this->dao->search($where)->where('financial_type','in',['refund_order','brokerage_one','brokerage_two','order_charge','presell_charge'])->sum('number'); - $_expend = $this->dao->search($where)->where('financial_type','in',['refund_charge','refund_brokerage_two','refund_brokerage_one'])->sum('number'); - $expend = bcsub($expend_,$_expend,2); + $expend_ = $this->dao->search($where)->where('financial_type', 'in', ['refund_order', 'brokerage_one', 'brokerage_two', 'order_charge', 'presell_charge'])->sum('number'); + $_expend = $this->dao->search($where)->where('financial_type', 'in', ['refund_charge', 'refund_brokerage_two', 'refund_brokerage_one'])->sum('number'); + $expend = bcsub($expend_, $_expend, 2); $msg = '商户'; - }else{ + } else { //平台收入 - $income = $this->dao->search($where)->where('financial_type','in',['order','order_presell','presell'])->sum('number'); + $income = $this->dao->search($where)->where('financial_type', 'in', ['order', 'order_presell', 'presell'])->sum('number'); //平台支出 - $expend = $this->dao->search($where)->where('financial_type','in',['brokerage_one','brokerage_two','order_true','refund_charge','presell_true','order_platform_coupon','order_svip_coupon'])->sum('number'); + $expend = $this->dao->search($where)->where('financial_type', 'in', ['brokerage_one', 'brokerage_two', 'order_true', 'refund_charge', 'presell_true', 'order_platform_coupon', 'order_svip_coupon'])->sum('number'); $msg = '平台'; } $data = [ @@ -91,13 +91,13 @@ class FinancialRecordRepository extends BaseRepository 'className' => 'el-icon-s-goods', 'count' => $income, 'field' => '元', - 'name' => $msg.'收入' + 'name' => $msg . '收入' ], [ 'className' => 'el-icon-s-order', 'count' => $expend, 'field' => '元', - 'name' => $msg.'支出' + 'name' => $msg . '支出' ], ]; return $data; @@ -113,26 +113,26 @@ class FinancialRecordRepository extends BaseRepository public function getAdminTitle($where) { //订单收入总金额 - $count = $this->dao->search($where)->where('financial_type','in',['order','order_presell','presell'])->sum('number'); + $count = $this->dao->search($where)->where('financial_type', 'in', ['order', 'order_presell', 'presell'])->sum('number'); //退款支出金额 - $refund_order = $this->dao->search($where)->where('financial_type','refund_order')->sum('number'); + $refund_order = $this->dao->search($where)->where('financial_type', 'refund_order')->sum('number'); //佣金支出金额 - $brokerage_ = $this->dao->search($where)->where('financial_type','in',['brokerage_one','brokerage_two'])->sum('number'); - $_brokerage = $this->dao->search($where)->where('financial_type','in',['refund_brokerage_two','refund_brokerage_one'])->sum('number'); - $brokerage = bcsub($brokerage_,$_brokerage,2); + $brokerage_ = $this->dao->search($where)->where('financial_type', 'in', ['brokerage_one', 'brokerage_two'])->sum('number'); + $_brokerage = $this->dao->search($where)->where('financial_type', 'in', ['refund_brokerage_two', 'refund_brokerage_one'])->sum('number'); + $brokerage = bcsub($brokerage_, $_brokerage, 2); //平台手续费 - $charge_ = $this->dao->search($where)->where('financial_type','in',['order_charge','presell_charge'])->sum('number'); - $_charge = $this->dao->search($where)->where('financial_type','refund_charge')->sum('number'); - $charge = bcsub($charge_,$_charge,2); + $charge_ = $this->dao->search($where)->where('financial_type', 'in', ['order_charge', 'presell_charge'])->sum('number'); + $_charge = $this->dao->search($where)->where('financial_type', 'refund_charge')->sum('number'); + $charge = bcsub($charge_, $_charge, 2); //优惠券费用 ,'order_platform_coupon','order_svip_coupon' - $coupon = $this->dao->search($where)->where('financial_type','in',['order_platform_coupon','order_svip_coupon'])->sum('number'); + $coupon = $this->dao->search($where)->where('financial_type', 'in', ['order_platform_coupon', 'order_svip_coupon'])->sum('number'); //充值金额 $bill_where = [ 'status' => 1, 'date' => $where['date'], 'category' => 'now_money', ]; - $bill = app()->make(UserBillRepository::class)->search($bill_where)->where('type','in',['sys_inc_money','recharge'])->sum('number'); + $bill = app()->make(UserBillRepository::class)->search($bill_where)->where('type', 'in', ['sys_inc_money', 'recharge'])->sum('number'); //充值消费金额 $bill_where = [ 'pm' => 0, @@ -140,7 +140,7 @@ class FinancialRecordRepository extends BaseRepository 'date' => $where['date'], 'category' => 'now_money', ]; - $_bill = app()->make(UserBillRepository::class)->search($bill_where)->where('type','in',['presell','pay_product','sys_dec_money'])->sum('number'); + $_bill = app()->make(UserBillRepository::class)->search($bill_where)->where('type', 'in', ['presell', 'pay_product', 'sys_dec_money'])->sum('number'); //产生交易的商户数 $mer_number = $this->dao->search($where)->group('mer_id')->count(); @@ -194,7 +194,7 @@ class FinancialRecordRepository extends BaseRepository 'name' => '优惠券金额' ] ]; - return compact('stat'); + return compact('stat'); } /** @@ -207,27 +207,27 @@ class FinancialRecordRepository extends BaseRepository public function getMerchantTitle($where) { //商户收入 - $count = $this->dao->search($where)->where('financial_type','in',['order','mer_presell'])->sum('number'); + $count = $this->dao->search($where)->where('financial_type', 'in', ['order', 'mer_presell'])->sum('number'); //保证金 - $auto_margin = $this->dao->search($where)->where('financial_type','auto_margin')->sum('number'); + $auto_margin = $this->dao->search($where)->where('financial_type', 'auto_margin')->sum('number'); //平台优惠券 - $coupon = $this->dao->search($where)->where('financial_type','in',['order_platform_coupon','order_svip_coupon'])->sum('number'); + $coupon = $this->dao->search($where)->where('financial_type', 'in', ['order_platform_coupon', 'order_svip_coupon'])->sum('number'); //商户余额 $mer_money = app()->make(MerchantRepository::class)->search(['mer_id' => $where['is_mer']])->value('mer_money'); //最低提现额度 $extract_minimum_line = systemConfig('extract_minimum_line'); //商户可提现金额 - $_line = bcsub($mer_money,$extract_minimum_line,2); + $_line = bcsub($mer_money, $extract_minimum_line, 2); //退款支出金额 - $refund_order = $this->dao->search($where)->where('financial_type','refund_order')->sum('number'); + $refund_order = $this->dao->search($where)->where('financial_type', 'refund_order')->sum('number'); //佣金支出金额 - $_brokerage = $this->dao->search($where)->where('financial_type','in',['brokerage_one','brokerage_two'])->sum('number'); - $refund_brokerage = $this->dao->search($where)->where('financial_type','in',['refund_brokerage_one','refund_brokerage_two'])->sum('number'); - $brokerage = bcsub($_brokerage,$refund_brokerage,2); + $_brokerage = $this->dao->search($where)->where('financial_type', 'in', ['brokerage_one', 'brokerage_two'])->sum('number'); + $refund_brokerage = $this->dao->search($where)->where('financial_type', 'in', ['refund_brokerage_one', 'refund_brokerage_two'])->sum('number'); + $brokerage = bcsub($_brokerage, $refund_brokerage, 2); //平台手续费 - $refund_true = $this->dao->search($where)->where('financial_type','in',['order_charge','presell_charge'])->sum('number'); - $order_charge = $this->dao->search($where)->where('financial_type','refund_charge')->sum('number'); - $charge = bcsub($refund_true,$order_charge,2); + $refund_true = $this->dao->search($where)->where('financial_type', 'in', ['order_charge', 'presell_charge'])->sum('number'); + $order_charge = $this->dao->search($where)->where('financial_type', 'refund_charge')->sum('number'); + $charge = bcsub($refund_true, $order_charge, 2); //商户可提现金额 // $bill_order = app()->make(StoreOrderRepository::class)->search(['paid' => 1,'date' => $where['date'],'pay_type' => 0])->sum('pay_price'); $merLockMoney = app()->make(UserBillRepository::class)->merchantLickMoney($where['is_mer']); @@ -246,7 +246,7 @@ class FinancialRecordRepository extends BaseRepository ], [ 'className' => 'el-icon-s-cooperation', - 'count' => ($_line < 0) ? 0 : $_line, + 'count' => ($_line < 0) ? 0 : $_line, 'field' => '元', 'name' => '商户可提现金额' ], @@ -279,7 +279,7 @@ class FinancialRecordRepository extends BaseRepository 'count' => $merLockMoney, 'field' => '元', 'name' => '商户冻结金额' - ], [ + ], [ 'className' => 'el-icon-s-cooperation', 'count' => $auto_margin, 'field' => '元', @@ -298,19 +298,19 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 3/23/21 */ - public function getAdminList(array $where,int $page,int $limit) + public function getAdminList(array $where, int $page, int $limit, $merchant = []) { //日 - if($where['type'] == 1){ + if ($where['type'] == 1) { $field = Db::raw('from_unixtime(unix_timestamp(create_time),\'%Y-%m-%d\') as time'); - }else{ - //月 - if(!empty($where['date'])){ + } else { + //月 + if (!empty($where['date'])) { list($startTime, $endTime) = explode('-', $where['date']); $firstday = date('Y/m/01', strtotime($startTime)); $lastday_ = date('Y/m/01', strtotime($endTime)); $lastday = date('Y/m/d', strtotime("$lastday_ +1 month -1 day")); - $where['date'] = $firstday.'-'.$lastday; + $where['date'] = $firstday . '-' . $lastday; } $field = Db::raw('from_unixtime(unix_timestamp(create_time),\'%Y-%m\') as time'); } @@ -318,35 +318,34 @@ class FinancialRecordRepository extends BaseRepository $query = $this->dao->search($where)->field($field)->group("time")->order('create_time DESC'); $count = $query->count(); - $list = $query->page($page,$limit)->select()->each(function ($item) use($where){ - - $key = $where['is_mer'] ? $where['is_mer'].'_financial_record_list_'.$item['time'] : 'sys_financial_record_list_'.$item['time']; - if(($where['type'] == 1 && ($item['time'] == date('Y-m-d',time()))) || ($where['type'] == 2 && ($item['time'] == date('Y-m',time())))){ - $income = ($this->countIncome($where['type'],$where,$item['time']))['number'] ; - $expend = ($this->countExpend($where['type'],$where,$item['time']))['number'] ; + $list = $query->page($page, $limit)->select()->each(function ($item) use ($where, $merchant) { + $key = $where['is_mer'] ? $where['is_mer'] . '_financial_record_list_' . $item['time'] : 'sys_financial_record_list_' . $item['time']; + if (($where['type'] == 1 && ($item['time'] == date('Y-m-d', time()))) || ($where['type'] == 2 && ($item['time'] == date('Y-m', time())))) { + $income = ($this->countIncome($where['type'], $where, $item['time'],$merchant))['number']; + $expend = ($this->countExpend($where['type'], $where, $item['time'],$merchant))['number']; + $ret = [ + 'income' => $income, + 'expend' => $expend, + 'charge' => bcsub($income, $expend, 2), + ]; + } else { + if (!$ret = Cache::get($key)) { + $income = ($this->countIncome($where['type'], $where, $item['time'],$merchant))['number']; + $expend = ($this->countExpend($where['type'], $where, $item['time'],$merchant))['number']; $ret = [ 'income' => $income, - 'expend' => $expend , - 'charge' => bcsub($income,$expend,2), + 'expend' => $expend, + 'charge' => bcsub($income, $expend, 2), ]; - }else{ - if(!$ret = Cache::get($key)){ - $income = ($this->countIncome($where['type'],$where,$item['time']))['number'] ; - $expend = ($this->countExpend($where['type'],$where,$item['time']))['number'] ; - $ret = [ - 'income' => $income, - 'expend' => $expend , - 'charge' => bcsub($income,$expend,2), - ]; - Cache::tag('system')->set($key,$ret,24 * 3600); - } + Cache::tag('system')->set($key, $ret, 24 * 3600); } - $item['income'] = $ret['income']; - $item['expend'] = $ret['expend']; - $item['charge'] = $ret['charge']; - }); + } + $item['income'] = $ret['income']; + $item['expend'] = $ret['expend']; + $item['charge'] = $ret['charge']; + }); - return compact('count','list'); + return compact('count', 'list'); } /** @@ -357,46 +356,47 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 3/23/21 */ - public function adminDetail(int $type,array $where) + public function adminDetail(int $type, array $where) { - $date_ = strtotime($where['date']);unset($where['date']); - $date = ($type == 1) ? date('Y-m-d',$date_) : date('Y-m',$date_); - $income = $this->countIncome($type,$where,$date); - $bill = $this->countBill($type,$date); - $expend = $this->countExpend($type,$where,$date); - $charge = bcsub($income['number'],$expend['number'],2); - $data['date'] = $date; + $date_ = strtotime($where['date']); + unset($where['date']); + $date = ($type == 1) ? date('Y-m-d', $date_) : date('Y-m', $date_); + $income = $this->countIncome($type, $where, $date); + $bill = $this->countBill($type, $date); + $expend = $this->countExpend($type, $where, $date); + $charge = bcsub($income['number'], $expend['number'], 2); + $data['date'] = $date; $data['income'] = [ 'title' => '订单收入总金额', - 'number' => $income['number'] , - 'count' => $income['count'].'笔', + 'number' => $income['number'], + 'count' => $income['count'] . '笔', 'data' => [ - ['订单支付', $income['number_order'].'元', $income['count_order'].'笔'], - ['退回优惠券补贴', $income['number_coupon'].'元', $income['count_coupon'].'笔'], - ['退回会员优惠券补贴', $income['number_svipcoupon'].'元', $income['count_svipcoupon'].'笔'], + ['订单支付', $income['number_order'] . '元', $income['count_order'] . '笔'], + ['退回优惠券补贴', $income['number_coupon'] . '元', $income['count_coupon'] . '笔'], + ['退回会员优惠券补贴', $income['number_svipcoupon'] . '元', $income['count_svipcoupon'] . '笔'], ] ]; - $data['bill'] = [ + $data['bill'] = [ 'title' => '充值金额', - 'number' => $bill['number'] , - 'count' => $bill['count'].'笔', + 'number' => $bill['number'], + 'count' => $bill['count'] . '笔', 'data' => [] ]; $data['expend'] = [ 'title' => '支出总金额', - 'number' => $expend['number'] , - 'count' => $expend['count'].'笔', + 'number' => $expend['number'], + 'count' => $expend['count'] . '笔', 'data' => [ - ['应付商户金额', $expend['number_order'] .'元', $expend['count_order'].'笔'], - ['佣金', $expend['number_brokerage'] .'元', $expend['count_brokerage'].'笔'], - ['返还手续费', $expend['number_charge'] .'元', $expend['count_charge'].'笔'], - ['优惠券补贴',$expend['number_coupon'] .'元', $expend['count_coupon'].'笔'], - ['会员优惠券补贴',$expend['number_svipcoupon'] .'元', $expend['count_svipcoupon'].'笔'], + ['应付商户金额', $expend['number_order'] . '元', $expend['count_order'] . '笔'], + ['佣金', $expend['number_brokerage'] . '元', $expend['count_brokerage'] . '笔'], + ['返还手续费', $expend['number_charge'] . '元', $expend['count_charge'] . '笔'], + ['优惠券补贴', $expend['number_coupon'] . '元', $expend['count_coupon'] . '笔'], + ['会员优惠券补贴', $expend['number_svipcoupon'] . '元', $expend['count_svipcoupon'] . '笔'], ] ]; $data['charge'] = [ 'title' => '平台手续费收入总金额', - 'number' => $charge , + 'number' => $charge, 'count' => '', 'data' => [] ]; @@ -411,68 +411,69 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 5/6/21 */ - public function merDetail(int $type,array $where) + public function merDetail(int $type, array $where,$merchant=[]) { - $date_ = strtotime($where['date']); unset($where['date']); - $date = ($type == 1) ? date('Y-m-d',$date_) : date('Y-m',$date_); - $income = $this->countIncome($type,$where,$date); - $expend = $this->countExpend($type,$where,$date); - $charge = bcsub($income['number'],$expend['number'],2); + $date_ = strtotime($where['date']); + unset($where['date']); + $date = ($type == 1) ? date('Y-m-d', $date_) : date('Y-m', $date_); + $income = $this->countIncome($type, $where, $date,$merchant); + $expend = $this->countExpend($type, $where, $date,$merchant); + $charge = bcsub($income['number'], $expend['number'], 2); - $data['date'] = $date; + $data['date'] = $date; $data['income'] = [ 'title' => '订单收入总金额', - 'number' => $income['number'] , - 'count' => $income['count'].'笔', + 'number' => $income['number'], + 'count' => $income['count'] . '笔', 'data' => [ - ['订单支付', $income['number_order'].'元', $income['count_order'].'笔'], - ['优惠券补贴', $income['number_coupon'].'元', $income['count_coupon'].'笔'], - ['会员优惠券补贴', $income['number_svipcoupon'].'元', $income['count_svipcoupon'].'笔'], + ['订单支付', $income['number_order'] . '元', $income['count_order'] . '笔'], + ['优惠券补贴', $income['number_coupon'] . '元', $income['count_coupon'] . '笔'], + ['会员优惠券补贴', $income['number_svipcoupon'] . '元', $income['count_svipcoupon'] . '笔'], ] ]; $data['expend'] = [ 'title' => '支出总金额', - 'number' => $expend['number'] , - 'count' => $expend['count'].'笔', + 'number' => $expend['number'], + 'count' => $expend['count'] . '笔', 'data' => [ [ '平台手续费', - $expend['number_order_charge'] .'元', - $expend['count_order_charge'].'笔', - '退回'.$expend['number_order_charge'] .'元', - '退回'.$expend['count_charge'].'笔', + $expend['number_order_charge'] . '元', + $expend['count_order_charge'] . '笔', + '退回' . $expend['number_order_charge'] . '元', + '退回' . $expend['count_charge'] . '笔', ], [ '店铺保证金', - $expend['number_auto_margin'] .'元', - $expend['count_auto_margin'].'笔' + $expend['number_auto_margin'] . '元', + $expend['count_auto_margin'] . '笔' ], [ '佣金', - bcsub($expend['number_brokerage'],$expend['number_refund_brokerage'],2) .'元', - $expend['count_brokerage'] + $expend['count_refund_brokerage'].'笔' + bcsub($expend['number_brokerage'], $expend['number_refund_brokerage'], 2) . '元', + $expend['count_brokerage'] + $expend['count_refund_brokerage'] . '笔' ], [ '商户退款', - $expend['number_refund'] .'元', - $expend['count_refund'].'笔' + $expend['number_refund'] . '元', + $expend['count_refund'] . '笔' ], [ '退还优惠券补贴', - $expend['number_coupon'] .'元', - $expend['count_coupon'].'笔' + $expend['number_coupon'] . '元', + $expend['count_coupon'] . '笔' ], [ '退还会员优惠券补贴', - $expend['number_svipcoupon'] .'元', - $expend['count_svipcoupon'].'笔' + $expend['number_svipcoupon'] . '元', + $expend['count_svipcoupon'] . '笔' ], ] ]; $data['charge'] = [ 'title' => '应入账总金额', - 'number' => $charge , + 'number' => $charge, 'count' => '', 'data' => [] ]; @@ -488,27 +489,50 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 3/23/21 */ - public function countIncome($type, $where, $date) + public function countIncome($type, $where, $date, $merchant = []) { - $financialType = ['order','order_presell','presell','mer_presell']; - [$data['count_order'],$data['number_order']] = $this->dao->getDataByType($type, $where, $date, $financialType); - if ($where['is_mer']){ + $financialType = ['order', 'order_presell', 'presell', 'mer_presell']; + if ($merchant){ + switch ($merchant['type_id']) { + case 16: + $financialType1 = ['commission_to_town']; + break; + case 15: + $financialType1 = ['commission_to_village']; + break; + case 14: + $financialType1 = ['commission_to_service_team']; + break; + case 11: + $financialType1 = ['commission_to_cloud_warehouse']; + break; + case 10: + $financialType1 = ['commission_to_entry_merchant']; + break; + default: + $financialType1 = []; + } + + $financialType = array_merge($financialType, $financialType1); + } + + [$data['count_order'], $data['number_order']] = $this->dao->getDataByType($type, $where, $date, $financialType); + if ($where['is_mer']) { $financialType = ['order_platform_coupon']; } else { $financialType = ['refund_platform_coupon']; } - [ $data['count_coupon'], $data['number_coupon']] = $this->dao->getDataByType($type, $where, $date, $financialType); + [$data['count_coupon'], $data['number_coupon']] = $this->dao->getDataByType($type, $where, $date, $financialType); - if ($where['is_mer']){ + if ($where['is_mer']) { $financialType = ['order_svip_coupon']; } else { $financialType = ['refund_svip_coupon']; } - [ $data['count_svipcoupon'], $data['number_svipcoupon']] = $this->dao->getDataByType($type, $where, $date, $financialType); - - $data['count'] = $data['count_order']; - $data['number'] = bcadd($data['number_coupon'],$data['number_order'],2); + [$data['count_svipcoupon'], $data['number_svipcoupon']] = $this->dao->getDataByType($type, $where, $date, $financialType); + $data['count'] = $data['count_order']; + $data['number'] = bcadd($data['number_coupon'], $data['number_order'], 2); return $data; } @@ -527,15 +551,15 @@ class FinancialRecordRepository extends BaseRepository 'status' => 1, 'category' => 'now_money', ]; - $query = app()->make(UserBillRepository::class)->search($bill_where)->where('type','in',['sys_inc_money','recharge']); + $query = app()->make(UserBillRepository::class)->search($bill_where)->where('type', 'in', ['sys_inc_money', 'recharge']); //充值消费金额 - if($type == 1) $query->whereDay('create_time', $date); - if($type == 2) $query->whereMonth('create_time',$date); + if ($type == 1) $query->whereDay('create_time', $date); + if ($type == 2) $query->whereMonth('create_time', $date); $count = $query->count(); $number = $query->sum('number'); - return compact('count','number'); + return compact('count', 'number'); } /** @@ -546,7 +570,7 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 3/23/21 */ - public function countExpend($type, $where, $date) + public function countExpend($type, $where, $date,$merchant=[]) { /** * 平台支出 @@ -556,29 +580,58 @@ class FinancialRecordRepository extends BaseRepository * 退回收入 refund_order + (佣金 brokerage_one,brokerage_two - 退回佣金 refund_brokerage_two,refund_brokerage_one ) + (手续费 order_charge + 预售手续费 presell_charge - 平台退给商户的手续费 refund_charge ) */ // 退回佣金 - $financialType = ['brokerage_one','brokerage_two']; - [$data['count_brokerage'],$data['number_brokerage']] = $this->dao->getDataByType($type, $where, $date, $financialType); + $financialType = ['brokerage_one', 'brokerage_two']; + [$data['count_brokerage'], $data['number_brokerage']] = $this->dao->getDataByType($type, $where, $date, $financialType); // 退回 手续费 $financialType = ['refund_charge']; - [$data['count_charge'],$data['number_charge']] = $this->dao->getDataByType($type, $where, $date, $financialType); + [$data['count_charge'], $data['number_charge']] = $this->dao->getDataByType($type, $where, $date, $financialType); - if($where['is_mer']){ //商户的 + if ($merchant){ + switch ($merchant['type_id']) { + case 16: + $financialType1 = ['commission_to_town_refund']; + break; + case 15: + $financialType1 = ['commission_to_village_refund']; + break; + case 14: + $financialType1 = ['commission_to_service_team_refund']; + break; + case 11: + $financialType1 = ['commission_to_cloud_warehouse_refund']; + break; + case 10: + $financialType1 = ['commission_to_entry_merchant_refund']; + break; + default: + $financialType1 = []; + } + }else{ + //退款的 + $refund=['commission_to_town_refund','commission_to_village_refund','commission_to_service_team_refund','commission_to_cloud_warehouse_refund','commission_to_entry_merchant_refund']; + //分成的 + $commission=['commission_to_town','commission_to_village','commission_to_service_team','commission_to_cloud_warehouse','commission_to_entry_merchant']; + } + if ($where['is_mer']) { //商户的 //退回 收入 $financialType = ['refund_order']; - [$data['count_refund'],$data['number_refund']] = $this->dao->getDataByType($type, $where, $date, $financialType); + [$data['count_refund'], $data['number_refund']] = $this->dao->getDataByType($type, $where, $date, $financialType); //平台手续费 - $financialType = ['order_charge','presell_charge']; - [$data['count_order_charge'],$data['number_order_charge']] = $this->dao->getDataByType($type, $where, $date, $financialType); + $financialType = ['order_charge', 'presell_charge']; + [$data['count_order_charge'], $data['number_order_charge']] = $this->dao->getDataByType($type, $where, $date, $financialType); //商户保证金 $financialType = ['auto_margin']; - [$data['count_auto_margin'],$data['number_auto_margin']] = $this->dao->getDataByType($type, $where, $date, $financialType); - + [$data['count_auto_margin'], $data['number_auto_margin']] = $this->dao->getDataByType($type, $where, $date, $financialType); + //商户保证金退回 + $financialType = ['auto_margin_refund']; + [$data['count_auto_margin_refund'], $data['number_auto_margin_refund']] = $this->dao->getDataByType($type, $where, $date, $financialType); + $number3 = bcsub($data['number_auto_margin'], $data['number_auto_margin_refund'], 3); //退回佣金 - $financialType = ['refund_brokerage_two','refund_brokerage_one']; - [$data['count_refund_brokerage'],$data['number_refund_brokerage']] = $this->dao->getDataByType($type, $where, $date, $financialType); + $financialType = ['refund_brokerage_two', 'refund_brokerage_one']; + [$data['count_refund_brokerage'], $data['number_refund_brokerage']] = $this->dao->getDataByType($type, $where, $date, $financialType); //退回给平台的优惠券金额 $financialType = ['refund_platform_coupon']; @@ -587,22 +640,28 @@ class FinancialRecordRepository extends BaseRepository $financialType = ['refund_svip_coupon']; [$data['count_svipcoupon'], $data['number_svipcoupon']] = $this->dao->getDataByType($type, $where, $date, $financialType); + if (!empty($financialType1)){ + [$data['count_commission'], $data['number_commission']] = $this->dao->getDataByType($type, $where, $date, $financialType1); + $data['count_brokerage']+=$data['count_commission']; + $data['number_brokerage']+=$data['number_commission']; + } + //佣金 brokerage_one,brokerage_two - 退回佣金 refund_brokerage_two,refund_brokerage_one ) - $number = bcsub($data['number_brokerage'],$data['number_refund_brokerage'],3); + $number = bcsub($data['number_brokerage'], $data['number_refund_brokerage'], 3); //平台手续费 =( order_charge + 预售手续费 presell_charge - 平台退给商户的手续费 refund_charge ) - $number_1 = bcsub($data['number_order_charge'],$data['number_charge'],3); + $number_1 = bcsub($data['number_order_charge'], $data['number_charge'], 3); //退回收入 refund_order + 退回佣金 - $number_2 = bcadd(bcadd($data['number_refund'],$data['number_coupon'],2),$data['number_svipcoupon'],2); - $data['count'] = $data['count_brokerage'] + $data['count_refund'] + $data['count_order_charge'] + $data['count_refund_brokerage'] + $data['count_svipcoupon']+$data['count_auto_margin']; - $data['number'] =bcadd(bcadd($number_2,$number,3),$number_1,2); + $number_2 = bcadd(bcadd($data['number_refund'], $data['number_coupon'], 2), $data['number_svipcoupon'], 2); + $data['count'] = $data['count_brokerage'] + $data['count_refund'] + $data['count_order_charge'] + $data['count_refund_brokerage'] + $data['count_svipcoupon'] + $data['count_auto_margin']; + $data['number'] = bcadd(bcadd($number3,bcadd($number_2, $number, 3),3), $number_1, 2); - }else{ //平台的 + } else { //平台的 // 退回 订单实际获得金额 - $financialType = ['order_true','presell_true']; - [$data['count_order'],$data['number_order']] = $this->dao->getDataByType($type, $where, $date, $financialType); + $financialType = ['order_true', 'presell_true','auto_margin']; + [$data['count_order'], $data['number_order']] = $this->dao->getDataByType($type, $where, $date, $financialType); //付给商户的优惠券抵扣金额 $financialType = ['order_platform_coupon']; @@ -612,11 +671,17 @@ class FinancialRecordRepository extends BaseRepository $financialType = ['order_svip_coupon']; [$data['count_svipcoupon'], $data['number_svipcoupon']] = $this->dao->getDataByType($type, $where, $date, $financialType); - $number = bcadd($data['number_brokerage'],$data['number_order'],2); - $number_1 = bcadd(bcadd($number,$data['number_coupon'],2),$data['number_svipcoupon'],2); + //付给服务团队和其他的佣金 + [$data['count_refund'], $data['number_refund']] = $this->dao->getDataByType($type, $where, $date, $refund); + [$data['count_commission'], $data['number_commission']] = $this->dao->getDataByType($type, $where, $date, $commission); + $data['count_brokerage']+=$data['count_commission']-$data['count_refund']; + $data['number_brokerage']+=$data['number_commission']-$data['number_refund']; - $data['count'] = $data['count_brokerage'] + $data['count_order'] + $data['count_charge']; - $data['number'] = bcadd($number_1,$data['number_charge'],2); + $number = bcadd($data['number_brokerage'], $data['number_order'], 2); + $number_1 = bcadd(bcadd($number, $data['number_coupon'], 2), $data['number_svipcoupon'], 2); + + $data['count'] = $data['count_brokerage'] + $data['count_order'] + $data['count_charge']; + $data['number'] = bcadd($number_1, $data['number_charge'], 2); } return $data; } @@ -629,12 +694,12 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 3/24/21 */ - public function countCharge($type,$where,$date) + public function countCharge($type, $where, $date) { $financialType = ['order_charge']; [$count, $number] = $this->dao->getDataByType($type, $where, $date, $financialType); - return compact('count','number'); + return compact('count', 'number'); } /** @@ -645,11 +710,11 @@ class FinancialRecordRepository extends BaseRepository * @author Qinii * @day 3/24/21 */ - public function countRefund($type,$where,$date) + public function countRefund($type, $where, $date) { $financialType = ['refund_order']; [$count, $number] = $this->dao->getDataByType($type, $where, $date, $financialType); - return compact('count','number'); + return compact('count', 'number'); } } diff --git a/app/controller/admin/system/merchant/FinancialRecord.php b/app/controller/admin/system/merchant/FinancialRecord.php index 0fd5e30d..0832ec74 100644 --- a/app/controller/admin/system/merchant/FinancialRecord.php +++ b/app/controller/admin/system/merchant/FinancialRecord.php @@ -96,7 +96,12 @@ class FinancialRecord extends BaseController [$page, $limit] = $this->getPage(); $where = $this->request->params([['type',1],'date']); $where['is_mer'] = $this->request->merId() ?? 0 ; - $data = $this->repository->getAdminList($where,$page, $limit); + try { + $merchant = $this->request->merchant(); + }catch (\Exception $e){ + $merchant = []; + } + $data = $this->repository->getAdminList($where,$page, $limit,$merchant); return app('json')->success($data); } @@ -114,7 +119,8 @@ class FinancialRecord extends BaseController $where['date'] = empty($date) ? date('Y-m-d',time()) : $date ; $where['is_mer'] = $this->request->merId() ?? 0 ; if($this->request->merId()){ - $data = $this->repository->merDetail($type,$where); + $merchant = $this->request->merchant(); + $data = $this->repository->merDetail($type,$where,$merchant); }else{ $data = $this->repository->adminDetail($type,$where); } diff --git a/crmeb/services/ExcelService.php b/crmeb/services/ExcelService.php index 5f37dc29..94556e6a 100644 --- a/crmeb/services/ExcelService.php +++ b/crmeb/services/ExcelService.php @@ -352,6 +352,7 @@ class ExcelService 'order_presell' => '预售订单(定金)', 'refund_platform_coupon' => '退回优惠券补贴', 'order_platform_coupon' => '优惠券补贴', + 'auto_margin'=> '保证金', 'commission_to_service_team'=>'订单平台佣金', 'commission_to_platform'=>'订单剩余平台手续费', 'commission_to_village'=>'订单平台佣金', @@ -360,6 +361,11 @@ class ExcelService 'commission_to_platform_refun'=>'退回剩余平台手续费', 'commission_to_village_refun'=>'退回平台佣金', 'commission_to_town_refun'=>'退回平台佣金', + 'auto_margin_refun'=>'退回保证金', + 'commission_to_entry_merchant'=>'订单平台佣金', + 'commission_to_cloud_warehouse'=> '订单平台佣金', + 'commission_to_entry_merchant_refund'=> '退回平台佣金', + 'commission_to_cloud_warehouse_refund'=> '退回平台佣金', ]; $sys_pm_1 = ['order','presell','order_charge','order_presell','presell_charge','refund_brokerage_one','refund_brokerage_two']; $mer_pm_1 = ['order','presell','refund_charge','refund_brokerage_one','refund_brokerage_two','mer_presell','order_platform_coupon']; @@ -438,7 +444,6 @@ class ExcelService $i++; $mer_name = $mer_name ? $mer_name : ($value['merchant']['mer_name'] ?? ''); } - $count_brokeage = $expend['count_brokerage'] + $expend['count_refund_brokerage']; $number_brokeage = bcsub($expend['number_brokerage'],$expend['number_refund_brokerage'],2); $count_charge = $expend['count_charge']+$expend['count_order_charge'];