90 lines
3.8 KiB
PHP
90 lines
3.8 KiB
PHP
<?php
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* =========================================================
|
|
*/
|
|
namespace addon\commission\job;
|
|
|
|
use app\model\NewBaseModel;
|
|
use think\queue\Job;
|
|
|
|
class PromoterSettlementJob{
|
|
|
|
public function fire(Job $job,$data){
|
|
model("commission_record")->startTrans();
|
|
try{
|
|
// trace($data, '平台抽成 - 支付成功推广员佣金结算 - 开始处理');
|
|
$orderId = (int)$data['order_id'];
|
|
// 当前订单
|
|
$where = [
|
|
['order_id', '=', $orderId],
|
|
['promoter_status', '=', 0],
|
|
];
|
|
$join = [
|
|
['member m', 'a.member_id = m.member_id', 'LEFT'],
|
|
['fenxiao fx', 'm.fenxiao_id = fx.fenxiao_id', 'LEFT'],
|
|
];
|
|
$field = 'a.id,a.site_id,a.member_id,a.promoter_money,m.is_fenxiao,m.nickname,fx.member_id as fenxiao_member_id,fx.parent';
|
|
$list = model('commission_record')->getList($where,$field,'','a', $join);
|
|
// 循环处理
|
|
$updateData = [];
|
|
$insertData = [];
|
|
foreach($list as $recordInfo){
|
|
// 判断:当前用户是否为分销 获取对应的上级分销商用户id
|
|
if($recordInfo['is_fenxiao'] == 1){
|
|
// 当前用户是分销商 使用parent查询上级用户id
|
|
$parentMemberId = model('fenxiao')->getValue(['fenxiao_id'=>$recordInfo['parent']], 'member_id');
|
|
}else{
|
|
// 当前用户不是分销商 直接为fenxiao_member_id
|
|
$parentMemberId = $recordInfo['fenxiao_member_id'];
|
|
}
|
|
// 判断:是否存在上级
|
|
if((int)$parentMemberId > 0){
|
|
// 存在上级
|
|
$insertData[] = [
|
|
'site_id' => $recordInfo['site_id'],
|
|
'member_id' => $parentMemberId,
|
|
'join_id' => $recordInfo['id'],
|
|
'account_type' => 'promoter',
|
|
'account_type_name' => '推广员佣金',
|
|
'account_data' => $recordInfo['promoter_money'],
|
|
'remark' => '推广订单收入',
|
|
];
|
|
// 修改信息
|
|
$updateData[] =[
|
|
'id' => $recordInfo['id'],
|
|
'promoter_status' => 1,
|
|
];
|
|
}else{
|
|
// 不存在上级
|
|
$updateData[] =[
|
|
'id' => $recordInfo['id'],
|
|
'promoter_status' => 2,
|
|
];
|
|
}
|
|
}
|
|
// 数据结果处理
|
|
if(count($insertData) > 0) model('commission_account')->addList($insertData);
|
|
if(count($updateData) > 0){
|
|
$updateModel = (new NewBaseModel(['table_name' => 'commission_record', 'pk' => 'id']));
|
|
$updateModel->saveAll($updateData);
|
|
}
|
|
|
|
model("commission_record")->commit();
|
|
}
|
|
catch(\Exception $e){
|
|
model("commission_record")->rollback();
|
|
$data['error_msg'] = $e->getMessage();
|
|
trace($data, '平台抽成 - 支付成功推广员佣金结算 - 失败');
|
|
}
|
|
$job->delete();
|
|
}
|
|
public function failed($data){
|
|
trace($data, '平台抽成 - 支付成功推广员佣金结算 - 失败(failed)');
|
|
}
|
|
}
|