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, //下单赠送积分
 | ||
|  |         ]; | ||
|  |     } | ||
|  | } |