123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- <?php
- /**
- * Created by PhpStorm.
- * User: tandunzhao
- * Date: 2017/11/20
- * Time: 下午5:26
- */
- namespace App\Console\Commands;
- use DB;
- use Illuminate\Console\Command;
- use Log;
- use Redis;
- class TemporaryTask extends Command
- {
- /**
- * 执行命令 php artisan force_user_active
- *
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'temporaryTask {start_id}';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '临时任务';
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- $access_token = unserialize(Redis::get('[wechat_op.common.access_token.wxceb2aacdce248393][1]'));
- var_dump($access_token);
- return;
- $this->test1();
- return;
- print_r('start_temporary:-----------------' . date('Y-m-d H:i:s'));
- $total_users = $above_five_thousands_total = $above_five_thousands_male = $above_five_thousands_felman = 0;
- $above_three_thousands_total = $above_three_thousands_male = $above_three_thousands_felman = 0;
- $min_uid = $this->argument('start_id');
- for ($i = 1; $i <= 10; $i++) {
- $inside_min_uid = $min_uid + ($i - 1) * 10000;
- $users = DB::table('user_pay')
- ->select('uid')
- ->where([['id', '>=', $inside_min_uid], ['id', '<=', $inside_min_uid + 9999]])
- ->orderBy('id')
- ->get();
- foreach ($users as $user) {
- //单本书15天内有无订阅
- try {
- $book_order = DB::table('book_orders')
- ->where('uid', $user->uid)
- ->where('created_at', '>=', date('Y-m-d 00:00:00', strtotime('-15 day')))
- ->sum('fee');
- $table_seq = ($user->uid) % 512;
- $chapter_order = DB::connection('chapter_order_mysql')
- ->table('chapter_orders' . $table_seq)
- ->where('uid', $user->uid)
- ->where('created_at', '>=', date('Y-m-d 00:00:00', strtotime('-15 day')))
- ->sum('fee');
- //\Log::info(($user->uid).$chapter_order.date('Y-m-d 00:00:00',strtotime('-15 day')));
- //}
- $subscribe_fee = $book_order + $chapter_order;
- if ($subscribe_fee > 0) {
- //\Log::info(($user->uid).':'.$subscribe_fee);
- $total_users++;
- $gender = 0;
- if ($subscribe_fee >= 3000) {
- $user_channel = DB::table('force_subscribe_users')
- ->leftjoin('books', 'books.id', '=', 'force_subscribe_users.bid')
- ->leftjoin('book_categories', 'book_categories.id', '=', 'books.category_id')
- ->where('force_subscribe_users.uid', $user->uid)
- ->first();
- if ($user_channel) {
- $gender = $user_channel->pid;
- } else {
- \Log::error('user_gender_not_found:uid:' . $user->uid);
- }
- $above_three_thousands_total++;
- if ($gender == 1) {
- $above_three_thousands_male++;
- }
- if ($gender == 2) {
- $above_three_thousands_felman++;
- }
- }
- if ($subscribe_fee >= 5000) {
- $above_five_thousands_total++;
- if ($gender == 1) {
- $above_five_thousands_male++;
- }
- if ($gender == 2) {
- $above_five_thousands_felman++;
- }
- }
- }
- } catch (\Exception $e) {
- \Log::error('temp task error:' . $e->getMessage());
- }
- print_r('$total_users:' . 'min_uid' . ($min_uid) . 'uid:' . ($user->id) . ':' . $total_users . '||$above_five_thousands_total:' . $above_five_thousands_total . '||$above_five_thousands_felman:' . $above_five_thousands_felman . '||$above_five_thousands_male:' . $above_five_thousands_male . "\r\n");
- print_r('||$above_three_thousands_total:' . $above_three_thousands_total . '||$above_three_thousands_felman:' . $above_three_thousands_felman . '||$above_three_thousands_male:' . $above_three_thousands_male . "\r\n");
- \Log::info('actual_total_users:' . 'min_uid' . ($min_uid) . 'uid:' . ($user->id) . ':' . $total_users . '||$above_five_thousands_total:' . $above_five_thousands_total . '||$above_five_thousands_felman:' . $above_five_thousands_felman . '||$above_five_thousands_male:' . $above_five_thousands_male . "\r\n" . '||$above_three_thousands_total:' . $above_three_thousands_total . '||$above_three_thousands_felman:' . $above_three_thousands_felman . '||$above_three_thousands_male:' . $above_three_thousands_male);
- //\Log::info('||$above_three_thousands_total:'.$above_three_thousands_total.'||$above_three_thousands_felman:'.$above_three_thousands_felman.'||$above_three_thousands_male:'.$above_three_thousands_male."\r\n");
- }
- }
- /*
- DB::table('user_pay')
- ->orderBy('uid','asc')
- ->chunk(1000,function($users) use(&$total_users,&$above_five_thousands_total,&$above_five_thousands_felman,&$above_five_thousands_male,&$above_three_thousands_total,&$above_three_thousands_male,&$above_three_thousands_felman){
- foreach ($users as $user) {
- //单本书15天内有无订阅
- try{
- $book_order = DB::table('book_orders')
- ->where('uid',$user->uid)
- ->where('created_at','>=',date('Y-m-d 00:00:00',strtotime('-15 day')))
- ->sum('fee');
- //\Log::info(($user->uid).':'.$book_order.date('Y-m-d 00:00:00',strtotime('-15 day')));
- //$chapter_order=0;
- //if(!$book_order) {
- $table_seq = ($user->uid)%512;
- $chapter_order = DB::connection('chapter_order_mysql')
- ->table('chapter_orders'.$table_seq)
- ->where('uid',$user->uid)
- ->where('created_at','>=',date('Y-m-d 00:00:00',strtotime('-15 day')))
- ->sum('fee');
- //\Log::info(($user->uid).$chapter_order.date('Y-m-d 00:00:00',strtotime('-15 day')));
- //}
- $subscribe_fee = $book_order + $chapter_order;
- if($subscribe_fee > 0){
- //\Log::info(($user->uid).':'.$subscribe_fee);
- $total_users++;
- $gender =0;
- if($subscribe_fee>=3000){
- $user_channel = DB::table('force_subscribe_users')
- ->leftjoin('books','books.id','=','force_subscribe_users.bid')
- ->leftjoin('book_categories','book_categories.id','=','books.category_id')
- ->where('force_subscribe_users.uid',$user->uid)
- ->first();
- if($user_channel){
- $gender=$user_channel->pid;
- }else{
- \Log::error('user_gender_not_found:uid:'.$user->uid);
- }
- $above_three_thousands_total++;
- if($gender==1){
- $above_three_thousands_male++;
- }
- if($gender==2){
- $above_three_thousands_felman++;
- }
- }
- if($subscribe_fee>=5000) {
- $above_five_thousands_total++;
- if($gender==1){
- $above_five_thousands_male++;
- }
- if($gender==2){
- $above_five_thousands_felman++;
- }
- }
- }
- }catch (\Exception $e){
- \Log::error('temp task error:'.$e->getMessage());
- }
- print_r('$total_users:'.$total_users.'||$above_five_thousands_total:'.$above_five_thousands_total.'||$above_five_thousands_felman:'.$above_five_thousands_felman.'||$above_five_thousands_male:'.$above_five_thousands_male."\r\n");
- print_r('||$above_three_thousands_total:'.$above_three_thousands_total.'||$above_three_thousands_felman:'.$above_three_thousands_felman.'||$above_three_thousands_male:'.$above_three_thousands_male."\r\n");
- \Log::info('$total_users:uid:'.($user->uid).$total_users.'||$above_five_thousands_total:'.$above_five_thousands_total.'||$above_five_thousands_felman:'.$above_five_thousands_felman.'||$above_five_thousands_male:'.$above_five_thousands_male."\r\n");
- \Log::info('||$above_three_thousands_total:'.$above_three_thousands_total.'||$above_three_thousands_felman:'.$above_three_thousands_felman.'||$above_three_thousands_male:'.$above_three_thousands_male."\r\n");
- }
- });*/
- \Log::info('final_stats:min_uid:' . ($min_uid) . '$total_users:' . $total_users . '||$above_five_thousands_total:' . $above_five_thousands_total . '||$above_five_thousands_felman:' . $above_five_thousands_felman . '||$above_five_thousands_male:' . $above_five_thousands_male . '$total_users:' . $total_users . '||$above_five_thousands_total:' . $above_five_thousands_total . '||$above_five_thousands_felman:' . $above_five_thousands_felman . '||$above_five_thousands_male:' . $above_five_thousands_male);
- print_r('final_stats:min_uid:' . ($min_uid) . '$total_users:' . $total_users . '||$above_five_thousands_total:' . $above_five_thousands_total . '||$above_five_thousands_felman:' . $above_five_thousands_felman . '||$above_five_thousands_male:' . $above_five_thousands_male . "\r\n");
- print_r('final_stats:min_uid:' . ($min_uid) . '||$above_three_thousands_total:' . $above_three_thousands_total . '||$above_three_thousands_felman:' . $above_three_thousands_felman . '||$above_three_thousands_male:' . $above_three_thousands_male . "\r\n");
- print_r('final_stats:min_uid:' . ($min_uid) . 'end_temporary:-----------------' . date('Y-m-d H:i:s'));
- \Log::info('final_stats:min_uid:' . ($min_uid) . 'end_temporary:-----------------' . date('Y-m-d H:i:s'));
- }
- 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]);
- }
- }
- /*DB::connection('chapter_order_mysql')
- ->table($v.'_user_sub')
- ->select('uid','fee')
- ->orderBy('id')
- ->chunk(10000,function($users) use($v){
- foreach ($users as $user){
- $sub = DB::table('chapter_orders'.(($user->uid)%512))
- ->where('uid',$user->uid)
- ->whereBetween('created_at',['2018-11-23','2018-12-07 23:59:59'])
- ->first();
- if($sub){
- DB::table($v.'_user_sub')->insert(['uid'=>$user->uid,'fee'=>$user->fee]);
- }
- }
- });*/
- //$total_users = $above_five_thousands_total = $above_five_thousands_male = $above_five_thousands_felman = 0;
- //$above_three_thousands_total = $above_three_thousands_male = $above_three_thousands_felman = 0;
- //$users = Redis::SMEMBERS("temp_from_where:".$v);
- /*foreach ($users as $user) {
- DB::connection('chapter_order_mysql')->table($v.'_user')->insert(['uid'=>$user]);
- /*$book_order = DB::table('book_orders')
- ->where('uid', $user)
- ->where('created_at', '>=', date('Y-m-d 00:00:00', strtotime('-15 day')))
- ->first();
- $table_seq = ($user) % 512;
- $chapter_order = DB::connection('chapter_order_mysql')
- ->table('chapter_orders' . $table_seq)
- ->where('uid', $user)
- ->where('created_at', '>=', date('Y-m-d 00:00:00', strtotime('-15 day')))
- ->first();
- if ($book_order || $chapter_order) {
- //\Log::info(($user->uid).':'.$subscribe_fee);
- $total_users++;
- $chapter_order_sum = DB::connection('chapter_order_mysql')
- ->table('chapter_orders' . $table_seq)
- ->where('uid', $user)
- ->sum('fee');
- $book_order_sum = DB::table('book_orders')
- ->where('uid', $user)
- ->sum('fee');
- $subscribe_fee = $book_order_sum + $chapter_order_sum;
- $gender = 0;
- if ($subscribe_fee >= 3000) {
- $user_channel = DB::table('force_subscribe_users')
- ->leftjoin('books', 'books.id', '=', 'force_subscribe_users.bid')
- ->leftjoin('book_categories', 'book_categories.id', '=', 'books.category_id')
- ->where('force_subscribe_users.uid', $user)
- ->first();
- if ($user_channel) {
- $gender = $user_channel->pid;
- } else {
- \Log::error('user_gender_not_found:uid:' . $user);
- }
- $above_three_thousands_total++;
- if ($gender == 1) {
- $above_three_thousands_male++;
- }
- if ($gender == 2) {
- $above_five_thousands_felman++;
- }
- }
- if ($subscribe_fee >= 5000) {
- $user_channel = DB::table('force_subscribe_users')
- ->leftjoin('books', 'books.id', '=', 'force_subscribe_users.bid')
- ->leftjoin('book_categories', 'book_categories.id', '=', 'books.category_id')
- ->where('force_subscribe_users.uid', $user)
- ->first();
- if ($user_channel) {
- $gender = $user_channel->pid;
- } else {
- \Log::error('user_gender_not_found:uid:' . $user);
- }
- $above_three_thousands_total++;
- if ($gender == 1) {
- $above_three_thousands_male++;
- }
- if ($gender == 2) {
- $above_five_thousands_felman++;
- }
- }
- //}
- }*/
- //return true;
- /*myLog('temp_from_where')->info($v.'---------------------------------------------------');
- myLog('temp_from_where')->info(compact(
- 'v',
- 'total_users',
- 'above_five_thousands_total',
- 'above_five_thousands_male',
- 'above_five_thousands_felman',
- 'above_three_thousands_total',
- 'above_three_thousands_male',
- 'above_three_thousands_felman'
- ));*/
- }
- }
- 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();
- }
- }
- }
|