where('config','pay_user_orders_max_id')->first(); $min_id = $min_id->config_value; $max_id = DB::table('orders')->max('id'); while ($min_id <= $max_id) { \Log::info('insert_sql:'."insert into user_pay (uid,distribution_channel_id,first_recharge_time,first_recharge_amount) select uid,distribution_channel_id,min(created_at),price from orders where status ='PAID' and orders.id >=".$min_id." and orders.id<=".($min_id+9999)." and not EXISTS (select 1 from user_pay where uid = orders.uid) GROUP BY uid"); \Log::info("sec_recharge_update:update user_pay set user_pay.sec_recharge_time = (SELECT orders.created_at FROM orders where user_pay.uid = orders.uid and orders.created_at > user_pay.first_recharge_time and status = 'PAID' LIMIT 1),user_pay.sec_recharge_amount=(SELECT orders.price FROM orders where user_pay.uid = orders.uid and orders.created_at > user_pay.first_recharge_time and status = 'PAID' LIMIT 1) WHERE user_pay.sec_recharge_time is null"); $min_id+9999; } } private function test1() { $array = ['recent_read','subscribe','text_sign','text_search','readerover','readrecord','daily_sign'];// // $array = ['daily_sign']; foreach ($array as $v){ $users = Redis::SMEMBERS("temp_from_where:".$v); foreach ($users as $user){ $sub = DB::connection('chapter_order_mysql') ->table('chapter_orders'.($user%512)) ->where('uid',$user) ->whereBetween('created_at',['2018-11-23','2018-12-07 23:59:59']) ->first(); if($sub){ $fee = DB::connection('chapter_order_mysql') ->table($v.'_user') ->select('uid','fee') ->where('uid',$user) ->first(); DB::connection('chapter_order_mysql') ->table($v.'_user_sub') ->insert(['uid'=>$user,'fee'=>isset($fee->fee)?$fee->fee:-1]); } } } } private function test2() { $users = DB::table('daily_sign_user_sub')->where('fee',-1)->get(); foreach ($users as $user){ $fee = DB::table('chapter_orders'.($user%512)) ->where('uid',$user->uid) ->where('created_at','<=','2018-12-07 23:59:59') ->sum('fee'); $user->fee = $fee; $user->save(); } } }