Pārlūkot izejas kodu

select crm sites and user month f

zz 5 gadi atpakaļ
vecāks
revīzija
be801ac3e3

+ 160 - 0
app/Console/Commands/selectCrmSites.php

@@ -0,0 +1,160 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use DB;
+
+class selectCrmSites extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'selectCrmSites';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $result = $this->selectSites();
+        $data = [];
+        $times = DB::table('crm_other_channels')->max('times');
+        $times = $times?$times:0;
+        $i = 1;
+        foreach ($result as $item){
+            $data[] = [
+                'distribution_channel_id'=>$item,
+                'times'=>$times+1,
+                'created_at'=>date('Y-m-d H:i:s'),
+                'updated_at'=>date('Y-m-d H:i:s')
+            ];
+            if($i% 100 == 0){
+                DB::table('crm_other_channels')->insert($data);
+                $data = [];
+            }
+            $i++;
+        }
+
+        if($data){
+            DB::table('crm_other_channels')->insert($data);
+        }
+    }
+
+    public function selectSites(){
+        $distribution_channel_id = $this->getSiteNoRegister();
+        $setServiceSites = $this->getSiteSetServices();
+        $opTenCompanyInfo = $this->getTopTenCompanySite();
+        $innerSites = $this->getInnerSite();
+        $result = [];
+        foreach ($distribution_channel_id as $item){
+            //去除设置了二维码的站点
+            if(in_array($item,$setServiceSites)) continue;
+            //去除内部站点
+            if(in_array($item,$innerSites)) continue;
+            //1个月的流水排名前十公司排除
+            if(in_array($item,$opTenCompanyInfo)) continue;
+
+            $result[] = $item;
+        }
+        return $result;
+    }
+
+    public function getTopTenCompanySite(){
+        $data = $this->getTopTenCompanyInfo();
+        $res = [];
+        foreach ($data as $v){
+            $res = array_merge($res,$v['distribution_channel_id']);
+        }
+        return $res;
+    }
+    //最近1个月的流水排名前十公司
+    public function getTopTenCompanyInfo(){
+        //order_day_stats
+        $sql = 'SELECT company_id,GROUP_CONCAT( DISTINCT a.distribution_channel_id) as distribution_channel_id,GROUP_CONCAT(DISTINCT b.channel_user_id) as channel_user_ids ,SUM(a.total_recharge_amount) as total_recharge_amount  FROM order_day_stats a JOIN 
+distribution_channels b on a.distribution_channel_id = b.id 
+JOIN channel_users c on  b.channel_user_id = c.id
+where a.date >= date(DATE_ADD(NOW(),INTERVAL -1 MONTH))
+and c.company_id not in (1,2,3,18,760)
+GROUP BY c.company_id
+ORDER BY total_recharge_amount desc 
+LIMIT 10';
+        $result = DB::select($sql);
+        $data = [];
+        foreach ($result as $item){
+            $data[] = [
+                'company_id'=>$item->company_id,
+                'distribution_channel_id'=>explode(',',$item->distribution_channel_id),
+                'channel_user_ids'=>explode(',',$item->channel_user_ids),
+                'total_recharge_amount'=>$item->total_recharge_amount
+            ];
+        }
+        $res = [];
+        foreach ($data as $v){
+            $res = array_merge($res,$v['distribution_channel_id']);
+        }
+
+        return $data;
+    }
+
+    //内部账号
+    public function getInnerSite():array{
+        $sql = 'SELECT distribution_channels.id FROM distribution_channels JOIN channel_users on distribution_channels.channel_user_id = channel_users.id 
+where channel_users.company_id in (1,2,3,18,760)';
+        $result = DB::select($sql);
+        $data = [];
+        foreach ($result as $item){
+            $data[] = $item->id;
+        }
+        return $data;
+    }
+
+    //最近两周没有新增注册用户的其他渠道站点(小于100)
+    public function getSiteNoRegister():array{
+        $sql = 'SELECT distribution_channel_id,COUNT(users.id) FROM users 
+JOIN distribution_channels on users.distribution_channel_id = distribution_channels.id
+WHERE users.created_at >= date(DATE_ADD(NOW(),INTERVAL -2 WEEK))
+and distribution_channels.created_at <= date(DATE_ADD(NOW(),INTERVAL -1 MONTH))
+and distribution_channel_id >0
+GROUP BY distribution_channel_id
+HAVING COUNT(users.id) <100';
+        $result = DB::select($sql);
+        $data = [];
+        foreach ($result as $item){
+            $data[] = $item->distribution_channel_id;
+        }
+        return $data;
+    }
+
+    //站点所用客服二维码为平台官方
+    public function getSiteSetServices():array{
+        $sql = 'SELECT distribution_channel_id FROM distribution_channel_settings';
+        $result = DB::select($sql);
+        $data = [];
+        foreach ($result as $item){
+            $data[] = $item->distribution_channel_id;
+        }
+        return $data;
+    }
+}

+ 2 - 2
app/Http/Controllers/Wap/Web/WelcomeController.php

@@ -2198,8 +2198,8 @@ class WelcomeController extends BaseController
                 return [
                     'price'=>'30元',
                     'text' => '30元包月 全站万本精彩小说免费看',
-                    //'link'=> generateMonthOrderUrl($this->uid)
-                    'link'=> '/rmonthpay'
+                    'link'=> generateMonthOrderUrl($this->uid)
+                    //'link'=> '/rmonthpay'
                 ];
             }
         }

+ 1 - 1
app/Http/Routes/Wap/WapRoutes.php

@@ -22,7 +22,7 @@ Route::group(['domain'=>env('PAY_WAP_DOMAIN'),'namespace'=>'App\Http\Controllers
     Route::get('monthpay/getH5RedirectUrl','Pay\MonthOrderController@getH5RedirectUrl');
     Route::get('monthpay/getWechatRedirectUrl','Pay\MonthOrderController@getWechatRedirectUrl');
     Route::any('monthpay/signcallback','Pay\MonthOrderController@signCallBack');
-    Route::post('monthpay/ordercallback','Pay\MonthOrderController@orderCallBackV2');
+    Route::post('monthpay/ordercallback','Pay\MonthOrderController@orderCallBack');
 
 });
 Route::group(['domain'=>env('OFFICIAL_AUTH_FOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){

+ 14 - 0
app/Modules/User/Services/UserMonthService.php

@@ -10,6 +10,7 @@ namespace App\Modules\User\Services;
 
 use App\Modules\User\Models\UserMonthOrder;
 use App\Modules\User\Models\UserMonthSign;
+use GuzzleHttp\Client;
 
 class UserMonthService
 {
@@ -57,4 +58,17 @@ class UserMonthService
         $info = $model->where('trade_no',$trade_no)->first();
         return $info;
     }
+
+
+    public static function checkOrderStatus(int $user_id,int $plan_id,string $app_id,string $key,string $app_secret){
+        $pay_year = date('Y');
+        $pay_month = date('m');
+        $sign = _sign(compact('app_id','app_secret','user_id','plan_id','pay_year','pay_month'),$key.$key);
+        $client = new Client();
+        $url = 'http://pap.manyuedu.org/checkPay.php';
+        $client->request('post',$url,['form_params'=>
+            compact('user_id','app_secret','app_id','plan_id','pay_year','pay_month','sign')])
+            ->getBody()->getContents();
+
+    }
 }

+ 115 - 0
app/Modules/User/Services/UserService.php

@@ -8,8 +8,16 @@
 
 namespace App\Modules\User\Services;
 
+use App\Modules\Book\Models\BookGiftsSend;
+use App\Modules\Book\Models\UserShelfBooks;
+use App\Modules\Book\Services\UserShelfBooksService;
+use App\Modules\Subscribe\Models\BookOrder;
+use App\Modules\Subscribe\Models\ChapterOrder;
+use App\Modules\Subscribe\Services\BookOrderService;
+use App\Modules\Subscribe\Services\ChapterOrderService;
 use App\Modules\User\Models\User;
 use App\Modules\User\Models\UserEnv;
+use App\Modules\User\Models\UserSign;
 use DB;
 use App\Jobs\ActionTrigger;
 use App\Modules\OfficialAccount\Models\DistributionSelfDefineConfig;
@@ -359,4 +367,111 @@ WHERE u.openid in (SELECT openid from users WHERE  id = %s)";
     {
         return UserEnv::recordUA($ua,$uid);
     }
+
+    public static function transfer(int $from,int $to,int $distribution_channel_id){
+        //阅读记录迁移***************************************
+        $record = Redis::hgetall('book_read:'.$from);
+        $not_uid_key = ['last_read','sign_counts','sign_info','sign_day'];
+        $data = [];
+        foreach ($record as $k=>$item){
+            if(is_numeric($k) || in_array($k,$not_uid_key)){
+                $data[$k] = $item;
+            }
+        }
+        if($data) Redis::hmset('book_read:'.$to,$data);
+        //签到记录
+        $user_sign_model = new UserSign();
+        $user_sign_model->setCurrentTable(date('Ym'));
+        $sign_record = $user_sign_model->where('uid',$from)->select('price','sign_time','day','created_at')->orderBy('sign_time','desc')->get();
+        $temp = [];
+        if($sign_record){
+            foreach ($sign_record as $item){
+                $temp[] = [
+                    'uid'=>$to,
+                    'price'=>$item->price,
+                    'day'=>$item->day,
+                    'sign_time'=>$item->sign_time,
+                    'created_at'=>$item->created_at,
+                    'updated_at'=>date('Y-m-d H:i:s'),
+                ];
+            }
+            DB::table('user_sign'.date('Ym'))->insert($temp);
+        }
+        //订阅记录(按本)
+        $book_order = BookOrder::where('uid',$from)->where('bid','>',0)->get();
+        if($book_order){
+            $temp = [];
+            foreach ($book_order as $book){
+                $temp[] = [
+                    'distribution_channel_id'=>$distribution_channel_id,
+                    'bid'=>$book->bid,
+                    'book_name'=>$book->book_name,
+                    'uid'=>$to,
+                    'u'=>$book->u,
+                    'fee'=>0,
+                    'created_at'=>$book->created_at,
+                    'updated_at'=>date('Y-m-d H:i:s'),
+                ];
+            }
+            DB::table('book_orders')->insert($temp);
+        }
+        //订阅记录(按章)
+        $chapter_order_record = ChapterOrderService::getRecordByUid($from,'','',true);
+        if($chapter_order_record){
+            $temp = [];
+            $i = 1;
+            $chapter_model = new ChapterOrder();
+            $chapter_model->setCurrentTable($to);
+            foreach ($chapter_order_record as $chapter_order){
+                $temp[] = [
+                    'distribution_channel_id'=>$distribution_channel_id,
+                    'bid'=>$chapter_order->bid,
+                    'cid'=>$chapter_order->cid,
+                    'chapter_name'=>$chapter_order->chapter_name,
+                    'book_name'=>$chapter_order->book_name,
+                    'uid'=>$to,
+                    'send_order_id'=>0,
+                    'fee'=>0,
+                    'created_at'=>$chapter_order->created_at,
+                    'updated_at'=>date('Y-m-d H:i:s')
+                ];
+            }
+            $chapter_model->insert($temp);
+        }
+        //打赏记录
+        $gift_result = BookGiftsSend::where('uid',$from)->get();
+        if($gift_result){
+            $tmp = [];
+            foreach ($gift_result as $g){
+                $tmp[] =  [
+                    'uid'=>$to,
+                    'gift_id'=>$g->gift_id,
+                    'bid'=>$g->bid,
+                    'icon'=>$g->icon,
+                    'name_desc'=>$g->name_desc,
+                    'cost'=>$g->cost,
+                    'cost_reward'=>$g->cost_reward,
+                    'cost_recharge'=>$g->cost_recharge,
+                    'created_at'=>$g->created_at,
+                    'updated_at'=>date('Y-m-d H:i:s')
+                ];
+            }
+            DB::table('book_gifts_send')->insert($tmp);
+        }
+        //书架
+        $result = UserShelfBooks::where('uid',$from)->get();
+        if($result){
+            $tmp = [];
+            foreach ($result as $s){
+                $tmp[] = [
+                    'uid'=>$to,
+                    'distribution_channel_id'=>$distribution_channel_id,
+                    'bid'=>$s->bid,
+                    'created_at'=>$s->created_at,
+                    'updated_at'=>date('Y-m-d H:i:s')
+                ];
+            }
+            DB::table('user_shelf_books')->insert($tmp);
+        }
+    }
 }