123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- namespace App\Console\Commands\Temp;
- use Log;
- use Illuminate\Console\Command;
- use DB;
- use App\Modules\User\Services\ReadRecordService;
- use Redis;
- class SelectPayUser extends Command
- {
-
- protected $signature = 'temp:select_user_pay';
-
- protected $description = '查付费用户情况';
-
- public function handle()
- {
- print_r("======查付费用户情况 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
- Log::info("======查付费用户情况 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
- $date = date('Y-m-d');
-
-
-
- print_r("=======更新付费用户实际余额 start=====");
- DB::update("update temp_pay_users,users set temp_pay_users.charge_balance = users.charge_balance,has_done = 0 where users.id = temp_pay_users.uid");
- print_r("=======更新付费用户实际余额 end=====");
-
-
-
-
- $bids = [1697,1148,1345,1342,1340,1696,1311,1368,1475,1460,1900,1347,1014,1965,10,1005,1858,1580,1017,1550,1528,1634,1301,857,930,1625,1851,1458,1826,1021,1094,1695,1823,1792,1877,917,1903,1987,1685,1566,1406,1488,1878,1677,1852,1304,1905,1589,907,1924,901,636,613,614,640,633,632,630,631,689,1249,615,617,625,626,627,324,750,762,733,732,779,754,794,807,766,691,692,628,853,856,852,854,845,837,835,834,832,831,830,836,884,883,864,876,871,870,869,868,867,873,959,960,961,962,979,968,970,969,976,974,967];
- $day_max_fee = 500000;
- $day_user_max_fee = 1500;
- $day_user_min_fee = 200;
- $user_min_left_fee = 1;
-
- $to_do_real_fee = 0;
-
- $black_uids = DB::table('temp_pay_black_users')->pluck('uid')->all();
- DB::table('temp_pay_users')->where('charge_balance','>=',$user_min_left_fee)->whereNotIn('uid',$black_uids)->orderBy('done_num','asc')->chunk(1,function ($users) use ($bids,$day_user_max_fee,$day_user_min_fee,$day_max_fee,&$to_do_real_fee){
- foreach ($users as $user)
- {
- if($to_do_real_fee >= $day_max_fee)
- {
- dd('reach day max fee: '.$to_do_real_fee);
- }
- $read_record_info = Redis::hgetall('book_read:' . $user->uid);
- $last_record = isset($read_record_info['last_read']) ? explode('_',$read_record_info['last_read']) : null;
- $latest_read_at = $last_record ? $last_record[2] : 0;
-
- if(!$latest_read_at || (time() - $latest_read_at < 4*30*86400 && $user->done_num==0)) continue;
- shuffle($bids);
- $read_bids = [];
- foreach ($read_record_info as $k=>$_re)
- {
- is_numeric($k) && $read_bids[] = $k;
- }
-
-
- foreach ($read_bids as $k=>$_bid)
- {
- $is_read_to_last = false;
-
- if(in_array($_bid,$bids) && !$is_read_to_last)
- {
- unset($read_bids[$k]);
- array_unshift($bids,$_bid);
- }
- }
-
- $to_do_date = date('Y-m-d',time()+86400);
- $to_do_fee = min(mt_rand($day_user_min_fee,$day_user_max_fee),$user->charge_balance);
- $latest_read_at = date('Y-m-d H:i:s',$latest_read_at);
- $bids = implode(',',$bids);
- $up_data = compact('bids','latest_read_at','to_do_date','to_do_fee');
- dump($up_data);
- if(DB::table('temp_pay_users')->where('id',$user->id)->update($up_data))
- {
- $to_do_real_fee += $to_do_fee;
- }
- }
- });
- Log::info("======查付费用户情况 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
- print_r("======查付费用户情况 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
- }
- }
|