85 lines
3.5 KiB
PHP
85 lines
3.5 KiB
PHP
<?php
|
||
namespace app\jobs\store\platformCommission\refundOrderHandle;
|
||
|
||
|
||
use app\common\model\store\platformCommission\PartnerSettlement;
|
||
use app\common\model\store\platformCommission\PartnerSettlementCycle;
|
||
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:25
|
||
* Class HandleWeightValueJob
|
||
* @package app\jobs\store\platformCommission\refundOrderHandle
|
||
*/
|
||
class HandleCommissionPartnerMoneyJob implements JobInterface{
|
||
public function fire($job,$data){
|
||
try{
|
||
// Log::info("订单退款成功 - 合伙人佣金处理 - 开始处理: ".var_export($data,1));
|
||
$platformCommissionRecord = Record::where('order_product_id',$data['order_product_id'])->find();
|
||
// 待结算-结算时处理,已结算-减少用户已获得佣金,2、3-无处理
|
||
if($platformCommissionRecord->commission_partner_status == 1){
|
||
// 获取:获取当前抽成结算的归属周期
|
||
$createTime = strtotime($platformCommissionRecord->create_time);
|
||
$cycleInfo = PartnerSettlementCycle::where('start_time','<',$createTime)
|
||
->where('end_time','>',$createTime)
|
||
->find();
|
||
if($cycleInfo){
|
||
// 计算总退款的合伙人佣金
|
||
$reduceCommissionMoney = (float)sprintf("%.2f",$platformCommissionRecord['commission_partner_money'] * $data['refund_rate'] / 100);// 减少数量
|
||
// 获取退款的用户列表
|
||
$userList = PartnerSettlement::field('id,uid,money,proportion,cycle_id')
|
||
->where('cycle_id',$cycleInfo->id)
|
||
->select()
|
||
->toArray();
|
||
$bills = [];
|
||
foreach($userList as $partnerInfo){
|
||
// 计算当前用户应扣除合伙人佣金
|
||
$reduce = (float)sprintf("%.2f",$reduceCommissionMoney * $partnerInfo['proportion'] / 100);
|
||
// 记录账单
|
||
$bills[] = [
|
||
'uid' => $partnerInfo['uid'],
|
||
'link_id' => $partnerInfo['cycle_id'],
|
||
'pm' => 0,
|
||
'title' => '订单退款-扣除合伙人佣金',
|
||
'category' => 'brokerage',
|
||
'type' => 'commission_partner',
|
||
'number' => $reduce,
|
||
'balance' => 0,
|
||
'mark' => '订单退款,扣除合伙人佣金'.floatval($reduce).'元',
|
||
'mer_id' => 0,
|
||
'status' => 1
|
||
];
|
||
}
|
||
// 记录账单变化信息
|
||
if (count($bills) > 0) app()->make(UserBillRepository::class)->insertAll($bills);
|
||
}
|
||
}
|
||
}
|
||
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));
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
}
|