alias('ut') ->where('ut.ancestor_id',$user_id) ->join('user as u','u.id=ut.descendant_id') ->field('u.id,u.level') ->where('ut.depth','>',0) ->order('ut.depth','asc') ->column('ut.descendant_id'); $yifen = 0; $last_level = 0; foreach($list as $user){ if($user['level']<=$last_level){ $this->log('用户ID:'.$user['id'].'\t,等级:'.$user['level'].'\t,$last_level:'.$last_level.'\t跳过'); continue; } $last_level = $user['level']; $commission_rate = $commission_rates[$user['level']] - $yifen; if($commission_rate>0){ $yifen += $commission_rate; $commission_amount = bcmul($amount,$commission_rate,4); $this->log('用户ID:'.$user['id'].'\t,等级:'.$user['level'].'\t,比例:'.$commission_rate.'\t,金额:'.$commission_amount); //\app\model\User::score($user['id'],$commission_amount,\app\enum\BalanceType::SEE_POINT_AWARD,'团队奖励:'.$user_id); } //已经是最大等级了 if($yifen>=0.25 || $user['level'] == 5){ $this->log('$yifen:'.$yifen.'\t,结束'); break; } } // 无需反序列化 //var_export($data); // 输出 ['to' => 'tom@gmail.com', 'content' => 'hello'] } function log($data){ \support\Log::info('settlement')->info(json_encode($data)); } // 消费失败回调 /* $package = [ 'id' => 1357277951, // 消息ID 'time' => 1709170510, // 消息时间 'delay' => 0, // 延迟时间 'attempts' => 2, // 消费次数 'queue' => 'send-mail', // 队列名 'data' => ['to' => 'tom@gmail.com', 'content' => 'hello'], // 消息内容 'max_attempts' => 5, // 最大重试次数 'error' => '错误信息' // 错误信息 ] */ public function onConsumeFailure(\Throwable $e, $package) { if($package['attempts'] >= $package['max_attempts']){ $this->log($package['data']); } } }