79 lines
2.9 KiB
PHP
79 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* =========================================================
|
|
*/
|
|
namespace addon\commission\job;
|
|
|
|
use app\model\NewBaseModel;
|
|
use think\Exception;
|
|
use think\facade\Db;
|
|
use think\queue\Job;
|
|
|
|
class AccountSettlementJob{
|
|
|
|
public function fire(Job $job,$data){
|
|
Db::startTrans();
|
|
try{
|
|
// trace($data, '平台抽成 - 流水结算到账 - 开始处理');
|
|
|
|
// 根据结算流水类型 获取对应条件
|
|
$where = [
|
|
['status', '=', 0]
|
|
];
|
|
if($data['account_type'] == 'partner') {
|
|
// 合伙人佣金
|
|
$where[] = ['account_type', '=', 'partner'];
|
|
}
|
|
else if($data['account_type'] == 'merchants_promoter') {
|
|
// 推广员佣金、招商员佣金
|
|
$where[] = ['account_type', 'in', ['promoter', 'merchants']];
|
|
// 仅结算指定订单相关
|
|
$joinIds = model('commission_record')->getColumn([
|
|
['order_id', '=', $data['order_id']]
|
|
],'id');
|
|
$where[] = ['join_id', 'in', $joinIds];
|
|
}
|
|
// 流水列表
|
|
$list = model('commission_account')->getList($where,'id,sum(account_data) as total_account_data,member_id','','a',[],'member_id');
|
|
// 获取用户已经持有信息
|
|
$memberIds = array_column($list, 'member_id');
|
|
$userList = Db::name('member')
|
|
->field('commission_money,member_id')
|
|
->whereIn('member_id', $memberIds)
|
|
->select()
|
|
->toArray();
|
|
$userList = array_column($userList, null, 'member_id');
|
|
// 循环流水列表 结算信息
|
|
foreach($list as $singleInfo){
|
|
$userList[$singleInfo['member_id']]['commission_money'] += $singleInfo['total_account_data'];
|
|
}
|
|
// 修改
|
|
$newBaseModel = (new NewBaseModel(['table_name' => 'member', 'pk' => 'member_id']));
|
|
$userList = array_values($userList);
|
|
$newBaseModel->saveAll($userList);
|
|
// 已结算
|
|
model('commission_account')->update(['status'=>1],[
|
|
['id', 'in', array_column($list, 'id')]
|
|
]);
|
|
|
|
|
|
Db::commit();
|
|
}
|
|
catch(\Exception $e){
|
|
$data['error_msg'] = $e->getMessage();
|
|
trace($data, '平台抽成 - 流水结算到账 - 失败');
|
|
Db::rollback();
|
|
}
|
|
$job->delete();
|
|
}
|
|
|
|
public function failed($data){
|
|
trace($data, '平台抽成 - 流水结算到账 - 失败(failed)');
|
|
}
|
|
}
|