admin-api/app/jobs/store/platformCommission/refundOrderHandle/HandleCommissionMoneyJob.php

84 lines
3.3 KiB
PHP

<?php
namespace app\jobs\store\platformCommission\refundOrderHandle;
use app\common\model\store\platformCommission\Record;
use app\common\repositories\user\UserBillRepository;
use crmeb\interfaces\JobInterface;
use think\facade\Log;
/**
* Common: 订单退款成功 - 招商员佣金 & 推广员佣金处理
* Author: wu-hui
* Time: 2024/01/03 9:26
* Class HandleCommissionMoneyJob
* @package app\jobs\store\platformCommission\refundOrderHandle
*/
class HandleCommissionMoneyJob implements JobInterface{
public function fire($job,$data){
try{
// Log::info("订单退款成功 - 招商员佣金&推广员佣金处理 - 开始处理: ".var_export($data,1));
$recordInfo = Record::where('order_product_id',$data['order_product_id'])
->field(['id','uid','mer_id','order_id','commission_merchants_money','commission_promoter_money'])
->with([
'mer' => function($query){
$query->field('mer_id,spread_uid as mer_spread_uid')->bind(['mer_spread_uid']);
},
'user' => function($query){
$query->field('uid,spread_uid')->bind(['spread_uid']);
},
])->find();
if(!$recordInfo) return false;
$recordInfo = $recordInfo->toArray();
$userBillRepository = app()->make(UserBillRepository::class);
// 处理招商员佣金
if((int)$recordInfo['mer_spread_uid'] > 0){
// 获取冻结中佣金信息
$reduce = (float)sprintf("%.2f",$recordInfo['commission_merchants_money'] * $data['refund_rate'] / 100);// 减少数量
// 添加减少记录
$userBillRepository->decBill($recordInfo['mer_spread_uid'], 'brokerage', 'commission_merchants', [
'link_id' => $recordInfo['order_id'],
'status' => 1,
'title' => '减少招商佣金',
'number' => $reduce,
'mark' => '订单退款,减少招商佣金' . floatval($reduce),
'balance' => 0
]);
}
// 处理推广员佣金
if((int)$recordInfo['spread_uid'] > 0){
// 获取冻结中佣金信息
$reduce = (float)sprintf("%.2f",$recordInfo['commission_promoter_money'] * $data['refund_rate'] / 100);// 减少数量
// 添加减少记录
$userBillRepository->decBill($recordInfo['spread_uid'], 'brokerage', 'commission_promoter', [
'link_id' => $recordInfo['order_id'],
'status' => 1,
'title' => '减少推广佣金',
'number' => $reduce,
'mark' => '订单退款,减少推广佣金' . floatval($reduce),
'balance' => 0
]);
}
}
catch(\Exception $e){
$data['error_msg'] = $e->getMessage();
Log::info('订单退款成功 - 招商员佣金&推广员佣金处理 - 失败: '.var_export($data,1));
}
$job->delete();
}
public function failed($data){
Log::info('订单退款成功 - 招商员佣金&推广员佣金处理 - 失败(failed): '.var_export($data,1));
}
}