503.5,
5352276 => 266,
5350677 => 285,
5352212 => 380,
5352211 => 1045,
5352210 => 760,
5352209 => 380,
5352208 => 760,
5350403 => 114,
5349123 => 285,
5349372 => 285,
5346924 => 285,
5352433 => 760,
5349713 => 95,
5348017 => 199.5,
5351411 => 1463,
5352535 => 665,
5346982 => 769.5,
5345774 => 313.5,
5352523 => 665,
5346478 => 1187.5,
5349879 => 475,
5352233 => 760,
5348700 => 2584,
5344662 => 969,
5345278 => 209,
5351904 => 551,
5345493 => 275.5,
5349688 => 1748,
5351924 => 380,
5348026 => 332.5,
5348962 => 4750,
5346159 => 693.5,
5351619 => 1045,
5351807 => 2831,
5350426 => 95,
5344610 => 608,
5344515 => 1197,
5350443 => 361,
5346094 => 950,
5350358 => 1187.5,
5347725 => 361,
5352458 => 1045,
5351189 => 361,
5348630 => 522.5,
5349709 => 1748,
5351373 => 684,
5345879 => 950,
5350359 => 370.5,
5351923 => 1045,
5345919 => 579.5,
5344810 => 237.5,
5352455 => 674.5,
5348947 => 133,
5348622 => 95,
5349735 => 1653,
5351621 => 380,
5349987 => 95,
5350010 => 380,
5347898 => 114,
5344563 => 893,
5344861 => 1881,
5351491 => 855];
$ids = array_keys($list);
echo "共要处理记录:".count($list).'个,'.count($ids).'个ID
';
$users = UserModel::whereIn('id', $ids)->field('id,mobile,money,score')->select();
echo "实际用户记录:".count($users).'个
';
$moneyLogs = [];
$scoreLogs = [];
$noCatchUsers = [];
Db::startTrans();
foreach($list as $key => $catchMoney){
$userInfo = UserModel::where('id', $key)->field('id,mobile,money,score')->find();
$userId = isset($userInfo['id'])? $userInfo['id'] : 0;
$money = isset($userInfo['money'])? $userInfo['money'] : 0;
$score = isset($userInfo['score'])? $userInfo['score'] : 0;
$mobile = isset($userInfo['mobile'])? $userInfo['mobile'] : '';
if($userId && $catchMoney>0){
if($money>=$catchMoney){
echo "【扣除余额】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".max(0,$money-$catchMoney).'
';
$moneyLogs[] = [
'uid'=> $userId,
'money'=> $catchMoney,
'type'=> 17,
'create_at'=> date('Y-m-d H:i:s'),
'state'=> 2,
'from_id'=>0,
'before_money'=> $money,
'after_money'=> max(0,$money-$catchMoney),
'remark'=> '提现打款重复扣除',
];
// 扣除
/*if(!UserModel::where('id', $userId)->dec('money', $catchMoney)->update()){
DB::rollback();
return 'fail';
}*/
}elseif($score>=$catchMoney){
echo "【扣除积分】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".($money-$catchMoney).'
';
$scoreLogs[] = [
'uid'=> $userId,
'score'=> $catchMoney,
'type'=> 13,
'create_at'=> date('Y-m-d H:i:s'),
'state'=> 2,
'from_id'=>0,
'before_score'=> $score,
'after_score'=> max(0,$score-$catchMoney),
'remark'=> '提现打款重复扣除',
];
// 处理账户
/*if(!UserModel::where('id', $userId)->dec('score', $catchMoney)->update()){
DB::rollback();
return 'fail';
}*/
}elseif(($score+$money)>=$catchMoney){
// 扣除余额后剩余的钱
$money1 = max(0,$catchMoney - $money);
echo "【扣除积分和余额】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".max(0,$catchMoney-$money).",扣除后积分 ".($score-$money1).'
';
$moneyLogs[] = [
'uid'=> $userId,
'money'=> $money,
'type'=> 17,
'create_at'=> date('Y-m-d H:i:s'),
'state'=> 2,
'from_id'=>0,
'before_money'=> $money,
'after_money'=> 0,
'remark'=> '提现打款重复扣除',
];
// 扣积分
$scoreLogs[] = [
'uid'=> $userId,
'score'=> $money1,
'type'=> 13,
'create_at'=> date('Y-m-d H:i:s'),
'state'=> 2,
'from_id'=>0,
'before_score'=> $score,
'after_score'=> max(0,$score-$money1),
'remark'=> '提现打款重复扣除',
];
// 处理账户
/*if(!UserModel::where('id', $userId)->dec('money', $money)->dec('score',$money1)->update()){
DB::rollback();
return 'fail';
}*/
}else{
echo "【账户不足】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],账户不够
";
$noCatchUsers[$userId] = "【账户不足】用户[{$userId}][{$mobile}],账户余额[{$money}]-积分[{$score}],处理金额 {$catchMoney},账户不够";
}
}else{
echo "【未做处理】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户积分[{$money}]-积分[{$score}],数据错误未处理
";
}
}
Db::commit();
return 'success';
}
}