admin-api/app/jobs/store/platformCommission/CommissionMerchantsSettleme...

93 lines
3.4 KiB
PHP

<?php
namespace app\jobs\store\platformCommission;
use app\common\model\store\platformCommission\Record;
use app\common\repositories\store\platformCommission\RecordRepository;
use app\common\repositories\user\UserBillRepository;
use app\common\repositories\user\UserRepository;
use crmeb\interfaces\JobInterface;
use think\facade\Log;
/**
* Common: 招商员佣金结算
* Author: wu-hui
* Time: 2023/12/27 16:38
* Class CommissionMerchantsSettlementJob
* @package app\jobs\store\platformCommission
*/
class CommissionMerchantsSettlementJob implements JobInterface{
public function fire($job,$data){
try{
// Log::info('招商员佣金结算 - 开始处理: '.var_export($data,1));
$list = app()->make(RecordRepository::class)
->getSearch([])
->field(['id','uid','mer_id','order_id','commission_merchants_money'])
->whereIn('order_id',$data['order_ids'])
->where('commission_merchants_status',0)
->where('commission_merchants_money','>',0)
->with([
'mer' => function($query){
$query->field('mer_id,mer_name,mer_avatar,spread_uid as mer_spread_uid')->bind(['mer_name','mer_avatar','mer_spread_uid']);
},
'user' => function($query){
$query->field('uid,nickname,avatar')->bind(['nickname','avatar']);
},
])
->select()
->toArray();
if($list){
$userBillRepository = app()->make(UserBillRepository::class);
$userRepository = app()->make(UserRepository::class);
$updateData = [];
foreach($list as $singleInfo){
if((int)$singleInfo['mer_spread_uid'] > 0){
$userBillRepository->incBill($singleInfo['mer_spread_uid'], 'brokerage', 'commission_merchants', [
'link_id' => $singleInfo['order_id'],
'status' => 0,
'title' => '获得招商佣金',
'number' => $singleInfo['commission_merchants_money'],
'mark' => $singleInfo['nickname'] . '在' . $singleInfo['mer_name'] . '进行消费,奖励招商佣金' . floatval($singleInfo['commission_merchants_money']),
'balance' => 0
]);
$userRepository->incBrokerage($singleInfo['mer_spread_uid'], $singleInfo['commission_merchants_money']);
$updateData[] = [
'id' => $singleInfo['id'],
'commission_merchants_status' => 1
];
}else{
$updateData[] = [
'id' => $singleInfo['id'],
'commission_merchants_status' => 2
];
}
}
// 修改成功信息
Record::batchUpdate(array_values($updateData));
}
}
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));
}
}