79 lines
3.1 KiB
PHP
79 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* =========================================================
|
|
*/
|
|
namespace addon\commission\job;
|
|
|
|
use think\Exception;
|
|
use think\facade\Db;
|
|
use think\facade\Queue;
|
|
use think\queue\Job;
|
|
|
|
class PartnerSettlementJob{
|
|
|
|
public function fire(Job $job,$data){
|
|
Db::startTrans();
|
|
try{
|
|
// trace($data, '平台抽成 - 合伙人佣金结算 - 开始处理');
|
|
|
|
$cycleIds = $data['cycle_ids'] ?? [];
|
|
if(count($cycleIds) <= 0) throw new Exception('无周期记录信息!');
|
|
// 获取周期结算信息
|
|
$cycleList = model('commission_partner_cycle')->getList([
|
|
['id', 'in', $cycleIds]
|
|
],'id,start_time,end_time');
|
|
$cycleList = array_column($cycleList, null, 'id');
|
|
// 获取结算记录信息
|
|
$list = model('commission_partner')->getList([
|
|
['cycle_id', 'in', $cycleIds],
|
|
['is_settlement', '=', 0],
|
|
],'id,member_id,cycle_id,money,site_id');
|
|
if(count($list) > 0){
|
|
$insertData = [];
|
|
foreach($list as $singleInfo){
|
|
$cycleInfo = $cycleList[$singleInfo['cycle_id']] ?? [];
|
|
$timePeriod = date("Y-m-d H:i:s",$cycleInfo['start_time']) . ' ~ ' . date("Y-m-d H:i:s",$cycleInfo['end_time']);
|
|
$insertData[] = [
|
|
'site_id' => $singleInfo['site_id'],
|
|
'member_id' => $singleInfo['member_id'],
|
|
'join_id' => $singleInfo['id'],
|
|
'account_type' => 'partner',
|
|
'account_type_name' => '合伙人佣金',
|
|
'account_data' => $singleInfo['money'],
|
|
'remark' => $timePeriod . "权重值收入",
|
|
];
|
|
}
|
|
// 记录信息
|
|
if(count($insertData) > 0) model('commission_account')->addList($insertData);
|
|
// 修改结算状态
|
|
$ids = array_column($list,'id');
|
|
model('commission_partner')->update([ 'is_settlement' => 1],[
|
|
['id', 'in', $ids]
|
|
]);
|
|
|
|
// 结算当前订单的 招商员佣金、推广员佣金
|
|
Queue::push(AccountSettlementJob::class,[
|
|
'account_type' => 'partner',
|
|
]);
|
|
}
|
|
|
|
Db::commit();
|
|
}
|
|
catch(\Exception $e){
|
|
Db::rollback();
|
|
$data['error_msg'] = $e->getMessage();
|
|
trace($data, '平台抽成 - 合伙人佣金结算 - 失败');
|
|
}
|
|
$job->delete();
|
|
}
|
|
|
|
public function failed($data){
|
|
trace($data, '平台抽成 - 合伙人佣金结算 - 失败(failed)');
|
|
}
|
|
}
|