orderBy('id','asc')->get(); $bar = $this->output->createProgressBar(count($oldData)); $bar->start(); $startTime = time(); $error = []; foreach ($oldData as $key => $value){ $type = $value->type; $note = $value->note; $userId = $value->user_id; if(empty($userId) || empty($type) || empty($note)){ $error[] = ['id'=>$value->id]; continue; } $typeArr = $this->getType($type,$note); $userType = 1; $money = $value->money; $moneyType = $typeArr['money_type']; $sourceId = $value->order_id; $sourceType = $typeArr['source_type']; $desc = $typeArr['desc']; $comment = $typeArr['comment']; $newData =[ 'user_id'=>$userId, 'user_type'=>$userType, 'money'=>$money, 'money_type'=>$moneyType, 'source_id'=>$sourceId, 'source_type'=>$sourceType, 'desc'=>$desc, 'comment'=>$comment, 'status'=>1, 'created_at' => $moneyType == 8 ? $value->time : strtotime($value->time), 'updated_at' => time(), ]; // 判断是否存在 总账 $exist = DB::table($newTableName) ->where('user_id',$userId) ->where('user_type',$userType) ->where('source_id',$sourceId) ->where('source_type',$sourceType) ->where('money',$money) ->where('money_type',$moneyType) ->exists(); if(!$exist){ if(!DB::table($newTableName)->insert($newData)){ $error[] = ['id'=>$value->id,'msg'=>'总账添加失败']; break; } } // 判断是否存在 用户账 $mod = bcmod((string)$userId, '5', 0); $newSubTableName = $newTableName.'_'.$mod; $existSub = DB::table($newSubTableName) ->where('user_id',$userId) ->where('user_type',$userType) ->where('source_id',$sourceId) ->where('source_type',$sourceType) ->where('money',$money) ->where('money_type',$moneyType) ->exists(); if(!$existSub){ if(!DB::table($newSubTableName)->insert($newData)){ $error[] = ['id'=>$value->id,'msg'=>'用户账添加失败']; break; } } $bar->advance(); } $bar->finish(); var_dump([time()-$startTime]); var_dump($error); return 0; } public function getType($type,$note) { $array = []; // 1加,2减 switch($type){ case 1: if($note == '当面付订单'){ $array['money_type'] = 100; $array['source_type'] = 1; $array['desc'] = '用户下单(线下)'; $array['comment'] = '用户下单'; }else if($note == '外卖订单'){ $array['money_type'] = 101; $array['source_type'] = 1; $array['desc'] = '用户下单(线上)'; $array['comment'] = '用户下单'; } break; case 2: if($note == '订单退款'){ $array['money_type'] = 8; $array['source_type'] = 1; $array['desc'] = '线上订单退款'; $array['comment'] = '线上订单退款到微信'; } break; default: break; } return $array; } // 当面付订单 // $desc='用户下单(线下)', // $comment='用户下单' // 外卖订单 // $desc='用户下单(线上)', // $comment='用户下单' // 订单退款 // $desc = '线上订单退款', // $comment = '线上订单退款到微信' // 后台充值 // 在线充值 // 订单拒绝 }