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