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'; } }