233 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			233 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\admin\logic\finance;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use app\common\basics\Logic;
							 | 
						||
| 
								 | 
							
								use app\common\model\AccountLog;
							 | 
						||
| 
								 | 
							
								use app\common\model\order\Order;
							 | 
						||
| 
								 | 
							
								use app\common\enum\PayEnum;
							 | 
						||
| 
								 | 
							
								use app\common\enum\OrderEnum;
							 | 
						||
| 
								 | 
							
								use app\common\enum\OrderRefundEnum;
							 | 
						||
| 
								 | 
							
								use app\common\enum\AfterSaleEnum;
							 | 
						||
| 
								 | 
							
								use app\common\enum\WithdrawalEnum;
							 | 
						||
| 
								 | 
							
								use app\common\enum\DistributionOrderGoodsEnum;
							 | 
						||
| 
								 | 
							
								use app\common\enum\WithdrawEnum;
							 | 
						||
| 
								 | 
							
								use app\common\model\user\User;
							 | 
						||
| 
								 | 
							
								use app\common\model\shop\Shop;
							 | 
						||
| 
								 | 
							
								use app\common\model\shop\ShopWithdrawal;
							 | 
						||
| 
								 | 
							
								use app\common\model\shop\ShopSettlement;
							 | 
						||
| 
								 | 
							
								use app\common\model\WithdrawApply;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FinanceLogic extends Logic
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @Notes: 商家汇总
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function shop()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $model = new Order();
							 | 
						||
| 
								 | 
							
								        $modelShopSettlement = new ShopSettlement();
							 | 
						||
| 
								 | 
							
								        $modelShopWithdrawal = new ShopWithdrawal();
							 | 
						||
| 
								 | 
							
								        $modelWithdrawApply  = new WithdrawApply();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //已结算交易服务费(平台收入)、(商家)已结算交易服务费
							 | 
						||
| 
								 | 
							
								        $shopAmount = $settlePoundageAmount = $modelShopSettlement
							 | 
						||
| 
								 | 
							
								            ->sum('trade_service_fee');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //会员提现手续费(平台收入
							 | 
						||
| 
								 | 
							
								        $userPoundage =  $modelWithdrawApply
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['status', '=', WithdrawEnum::STATUS_SUCCESS]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('poundage');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //商家提现手续费(平台收入)
							 | 
						||
| 
								 | 
							
								        $commissionAmount =  $modelShopWithdrawal
							 | 
						||
| 
								 | 
							
								            ->sum('poundage_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //成交订单笔数
							 | 
						||
| 
								 | 
							
								        $orderNum = $model
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['pay_status', '>', PayEnum::UNPAID]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->count('id');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //营业额
							 | 
						||
| 
								 | 
							
								        $orderAmount = $model
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['pay_status', '>', PayEnum::UNPAID]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('order_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //退款订单金额
							 | 
						||
| 
								 | 
							
								        $refundAmount = $model
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['shipping_status', '=', OrderEnum::SHIPPING_NO],
							 | 
						||
| 
								 | 
							
								                ['pay_status', '=', PayEnum::REFUNDED],
							 | 
						||
| 
								 | 
							
								                ['refund_status', 'in', [OrderEnum::REFUND_STATUS_PART_REFUND, OrderEnum::REFUND_STATUS_ALL_REFUND]],
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('order_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //待退款订单金额
							 | 
						||
| 
								 | 
							
								        $refundAmountIng = $model->alias('o')
							 | 
						||
| 
								 | 
							
								            ->join('order_refund or', 'or.order_id = o.id')
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['o.shipping_status', '=', OrderEnum::SHIPPING_NO],
							 | 
						||
| 
								 | 
							
								                ['or.refund_status', '<>', OrderRefundEnum::REFUND_STATUS_COMPLETE]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('or.order_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //售后退款金额
							 | 
						||
| 
								 | 
							
								        $salesRefundAmount = $model->alias('o')
							 | 
						||
| 
								 | 
							
								            ->join('after_sale as', 'as.order_id = o.id')
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['o.shipping_status', '=', OrderEnum::SHIPPING_FINISH],
							 | 
						||
| 
								 | 
							
								                ['as.status', '=', AfterSaleEnum::STATUS_COMPLETE]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('as.refund_price');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //待售后退款金额
							 | 
						||
| 
								 | 
							
								        $salesRefundAmountIng = $model->alias('o')
							 | 
						||
| 
								 | 
							
								            ->join('after_sale as', 'as.order_id = o.id')
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['o.shipping_status', '=', OrderEnum::SHIPPING_FINISH],
							 | 
						||
| 
								 | 
							
								                ['as.status', '=', AfterSaleEnum::STATUS_WAITING]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('as.refund_price');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //已结算成交订单数
							 | 
						||
| 
								 | 
							
								        $settleOrederNum = $modelShopSettlement
							 | 
						||
| 
								 | 
							
								            ->sum('deal_order_count');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //已结算营业额
							 | 
						||
| 
								 | 
							
								        $settleOrederAmount = $modelShopSettlement
							 | 
						||
| 
								 | 
							
								            ->sum('business_money');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //待结算营业额
							 | 
						||
| 
								 | 
							
								        $settleOrederAmountWait = $model
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['pay_status', '>', PayEnum::UNPAID],
							 | 
						||
| 
								 | 
							
								                ['settle_id', '=', OrderEnum::SETTLE_WAIT]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('order_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //已结算分销佣金金额
							 | 
						||
| 
								 | 
							
								        $settleDistributionAmount = $modelShopSettlement
							 | 
						||
| 
								 | 
							
								            ->sum('distribution_money');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //已结算入账金额
							 | 
						||
| 
								 | 
							
								        $settleWithdrawalAmount = $modelShopSettlement
							 | 
						||
| 
								 | 
							
								            ->sum('entry_account_money');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //已提现金额
							 | 
						||
| 
								 | 
							
								        $withdrawaLeftamount = $modelShopWithdrawal
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['status', '=', WithdrawalEnum::SUCCESS_STATUS]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('apply_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //提现中金额
							 | 
						||
| 
								 | 
							
								        $withdrawaLeftamountIng = $modelShopWithdrawal
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['status', '=', WithdrawalEnum::HANDLE_STATUS]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('apply_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //可提现金额       
							 | 
						||
| 
								 | 
							
								        $modelShop = new Shop();
							 | 
						||
| 
								 | 
							
								        $shopWallet = $modelShop->sum('wallet');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //会员余额
							 | 
						||
| 
								 | 
							
								        $modelUser = new User();
							 | 
						||
| 
								 | 
							
								        $userMoney = $modelUser
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['del', '=', 0]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('user_money');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //会员已结算分销佣金金额                   
							 | 
						||
| 
								 | 
							
								        $userSettleDistributionAmount = $model->alias('o')
							 | 
						||
| 
								 | 
							
								            ->join('order_goods og', 'og.order_id = o.id')
							 | 
						||
| 
								 | 
							
								            ->join('distribution_order_goods dog', 'dog.order_goods_id = og.id')
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['o.settle_id', '=', OrderEnum::SETTLE_FINISH],
							 | 
						||
| 
								 | 
							
								                ['dog.status', '=', DistributionOrderGoodsEnum::STATUS_SUCCESS]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('dog.money');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //已提现佣金金额
							 | 
						||
| 
								 | 
							
								        $userDistributionMoney = $modelWithdrawApply
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['status', '=', WithdrawEnum::STATUS_SUCCESS]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('money');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //提现中佣金金额
							 | 
						||
| 
								 | 
							
								        $userDistributionMoneyIng = $modelWithdrawApply
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['status', '=', WithdrawEnum::STATUS_ING]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('money');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //可提现佣金金额
							 | 
						||
| 
								 | 
							
								        $userDistributionMoneyWait = $modelUser
							 | 
						||
| 
								 | 
							
								            ->where([
							 | 
						||
| 
								 | 
							
								                ['del', '=', 0]
							 | 
						||
| 
								 | 
							
								            ])
							 | 
						||
| 
								 | 
							
								            ->sum('earnings');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //总积分
							 | 
						||
| 
								 | 
							
								        $all_integral = AccountLog::where(['change_type'=>1,'source_type'=>AccountLog::integral_change])->sum('change_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //签到送出积分
							 | 
						||
| 
								 | 
							
								        $sign_in_integral = AccountLog::where(['source_type'=>AccountLog::sign_in_integral])->sum('change_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //使用积分
							 | 
						||
| 
								 | 
							
								        $use_integral = AccountLog::where(['change_type'=>2,'source_type'=>AccountLog::integral_change])->sum('change_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //下单赠送积分
							 | 
						||
| 
								 | 
							
								        $consume_award_integral = AccountLog::where(['source_type'=>AccountLog::consume_award_integral])->sum('change_amount');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return [
							 | 
						||
| 
								 | 
							
								            'shopAmount'                    =>  $shopAmount, //已结算交易服务费(平台收入)
							 | 
						||
| 
								 | 
							
								            'userPoundage'                  =>  $userPoundage, //会员提现手续费(平台收入)
							 | 
						||
| 
								 | 
							
								            'commissionAmount'              =>  $commissionAmount, //提现中佣金金额
							 | 
						||
| 
								 | 
							
								            'orderNum'                      =>  $orderNum, //成交订单笔数
							 | 
						||
| 
								 | 
							
								            'orderAmount'                   =>  $orderAmount, //营业额
							 | 
						||
| 
								 | 
							
								            'refundAmount'                  =>  $refundAmount, //退款订单金额
							 | 
						||
| 
								 | 
							
								            'refundAmountIng'               =>  $refundAmountIng, //待退款订单金额
							 | 
						||
| 
								 | 
							
								            'salesRefundAmount'             =>  $salesRefundAmount, //售后退款金额
							 | 
						||
| 
								 | 
							
								            'salesRefundAmountIng'          =>  $salesRefundAmountIng, //待售后退款金额
							 | 
						||
| 
								 | 
							
								            'settleOrederNum'               =>  $settleOrederNum, //已结算成交订单数
							 | 
						||
| 
								 | 
							
								            'settleOrederAmount'            =>  $settleOrederAmount, //已结算营业额
							 | 
						||
| 
								 | 
							
								            'settleOrederAmountWait'        =>  $settleOrederAmountWait, //待结算营业额
							 | 
						||
| 
								 | 
							
								            'settleDistributionAmount'      =>  $settleDistributionAmount, //已结算分销佣金金额
							 | 
						||
| 
								 | 
							
								            'settleWithdrawalAmount'        =>  $settleWithdrawalAmount, //已结算入账金额
							 | 
						||
| 
								 | 
							
								            'settlePoundageAmount'          =>  $settlePoundageAmount, //已结算交易服务费
							 | 
						||
| 
								 | 
							
								            'withdrawaLeftamount'           =>  $withdrawaLeftamount, //已提现金额
							 | 
						||
| 
								 | 
							
								            'withdrawaLeftamountIng'        =>  $withdrawaLeftamountIng, //提现中金额
							 | 
						||
| 
								 | 
							
								            'shopWallet'                    =>  $shopWallet, //可提现金额
							 | 
						||
| 
								 | 
							
								            'userMoney'                     =>  $userMoney, //会员余额
							 | 
						||
| 
								 | 
							
								            'userSettleDistributionAmount'  =>  $userSettleDistributionAmount, //会员已结算分销佣金金额
							 | 
						||
| 
								 | 
							
								            'userDistributionMoney'         =>  $userDistributionMoney, //已提现佣金金额
							 | 
						||
| 
								 | 
							
								            'userDistributionMoneyIng'      =>  $userDistributionMoneyIng, //提现中佣金金额
							 | 
						||
| 
								 | 
							
								            'userDistributionMoneyWait'     =>  $userDistributionMoneyWait, //可提现佣金金额
							 | 
						||
| 
								 | 
							
								            'all_integral'                  =>  $all_integral, //总积分
							 | 
						||
| 
								 | 
							
								            'sign_in_integral'              =>  $sign_in_integral, //签到送出积分
							 | 
						||
| 
								 | 
							
								            'use_integral'                  =>  $use_integral, //使用积分
							 | 
						||
| 
								 | 
							
								            'consume_award_integral'        =>  $consume_award_integral, //下单赠送积分
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |