jh-admin/addon/commission/job/PartnerSettlementJob.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)');
}
}