paasCon = $paasCon; $this->userCon = $userCon; } /** * 平台列表 * @param Request $request [description] * @return [type] [description] */ public function paasList(Request $request) { $paas_list = $this->paasCon->paasList($request); return $this->success('ok', $paas_list); } /** * 平台详情 * @param Request $request [description] * @return [type] [description] */ public function paas(Request $request, $paas_id) { //平台 $paas = $this->paasCon->paas($paas_id); return $this->success('ok', $paas); } /** * 修改平台信息 * @param Request $request [description] * @param [type] $paas_id [description] * @return [type] [description] */ public function updatePaas(Request $request, $paas_id) { $array = []; $paas = Paas::find($paas_id); if ($request->has('title') && $request->title != $paas->title) { $array['title'] = $request->title; } if ($request->has('logo') && $request->logo != $paas->logo) { $array['logo'] = $request->logo; } if ($request->has('intro') && $request->intro != $paas->intro) { $array['intro'] = $request->intro; } if ($request->has('name') && $request->name != $paas->name) { $array['name'] = $request->name; } if ($request->has('status') && $request->status != $paas->status) { $array['status'] = $request->status; } $this->paasCon->updatePaas($array, $paas_id); return $this->success('ok'); } /** * 添加平台 * @param Request $request [description] * @return [type] [description] */ public function createPaas(Request $request) { $type = $request->input('type', 0); $logo = $request->input('logo'); $name = $request->input('name'); if (empty($name)) { return $this->failure('请输入平台唯一标识,英文大写字母表示'); }else{ $name = strtoupper($name); $result = Paas::where('name', $name)->exists(); if ($result) { return $this->failure('该标识已存在'); } } $title = $request->input('title'); if (empty($title)) { return $this->failure('请输入平台名称'); } $intro = $request->input('intro'); $array = [ 'type'=>$type, 'logo'=>$logo, 'name'=>$name, 'title'=>$title, 'intro'=>$intro, ]; $paas = $this->paasCon->createPaas($array); return $this->success('ok', $paas); } /** * 删除平台 * @param Request $request [description] * @param [type] $paas_id [description] * @return [type] [description] */ public function deletePaas(Request $request, $paas_id) { $this->paasCon->deletePaas($paas_id); return $this->success('ok'); } /** * 平台渠道列表 * @param Request $request [description] * @param [type] $paas_id [description] * @return [type] [description] */ public function paasPlatforms(Request $request, $paas_id) { //渠道 $platforms = $this->paasCon->paasPlatforms($paas_id, 1); return $this->success('ok', $platforms); } /** * 平台渠道(平台管理员) * @param Request $request [description] * @return [type] [description] */ public function paasAdminPlatforms(Request $request) { $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); $platforms = $this->paasCon->paasPlatforms($paas_obj->id, 1); return $this->success('ok', $platforms); }else{ return $this->failure('你不是平台管理员!'); } } /** * 添加渠道 * @param Request $request [description] */ public function createPlatform(Request $request) { try { $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); $paas_id = $paas_obj->id; }else{ $paas_id = $request->input('paas_id'); if (empty($paas_id)) { return $this->failure('请选择平台'); } } $app_id = $request->input('app_id'); if (empty($app_id)) { return $this->failure('请输入唯一标识'); }else{ $result = Platform::where('app_id', $app_id)->exists(); if ($result) { return $this->failure('该标识已存在'); } } $name = $request->input('name'); if (empty($name)) { return $this->failure('请输入名称'); } // $logo = $request->input('logo'); switch ($request->type){ case "mini": //logo显示小程序码 // $path = 'pages/tabBar/welcome?from_platform='.$app_id; // $logo = $this->getQrcode($path, 512); $path = 'pages/tabBar/welcome'; $param = "from_platform={$app_id}"; $logo = $this->getWechatMiniQrcode($path, $param); break; case 'app': if($request->paas_id == 44){ $url = env('APP_URL').'/h5/#/realCertificationApp?app_url=certification&from_platform='.$request->app_id; }else { $url = env('APP_URL').'/h5/#/downloadApp?APP_ID=' . $request->app_id; } $logo = $this->getUrlqrcode($url); break; default: // $path = 'pages/tabBar/welcome?from_platform='.$app_id; // $logo = $this->getQrcode($path, 512); $path = 'pages/tabBar/welcome'; $param = "from_platform={$app_id}"; $logo = $this->getWechatMiniQrcode($path, $param); break; } $array = [ 'paas_id'=>$paas_id, 'app_id'=>$app_id, 'name'=>$name, 'logo'=>$logo, ]; $platform = $this->paasCon->createPlatform($array); return $this->success('ok', $platform); }catch (\Exception $e){ return $this->failure($e->getMessage()); } } /** * 渠道详情 * @param Request $request [description] * @param [type] $platform_id [description] * @return [type] [description] */ public function platform(Request $request, $platform_id) { $platform = $this->paasCon->platform($platform_id); $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); if ($platform->paas_id != $paas_obj->id) { return $this->failure('暂时访问不了该渠道!'); } } return $this->success('ok', $platform); } /** * 修改渠道 * @param Request $request [description] * @param [type] $platform_id [description] * @return [type] [description] */ public function updatePlatform(Request $request, $platform_id) { $platform = Platform::find($platform_id); $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); if ($platform->paas_id != $paas_obj->id) { return $this->failure('暂时修改不了该渠道!'); } } $array = []; if ($request->has('name') && $request->name != $platform->name) { $array['name'] = $request->name; } if ($request->has('logo') && $request->logo != $platform->logo) { $array['logo'] = $request->logo; } $this->paasCon->updatePlatform($array, $platform_id); return $this->success('ok'); } /** * 删除渠道 * @param Request $request [description] * @param [type] $platform_id [description] * @return [type] [description] */ public function deletePlatform(Request $request, $platform_id) { $platform = Platform::find($platform_id); $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); if ($platform->paas_id != $paas_obj->id) { return $this->failure('暂时修改不了该渠道!'); } } $this->paasCon->deletePlatform($platform_id); return $this->success('ok'); } /** * 同工列表 * @param Request $request [description] * @param [type] $paas_id [description] * @return [type] [description] */ public function paasWorkers(Request $request, $paas_id) { // 同工 $workers = $this->paasCon->paasWorkers($request, $paas_id, 1); return $this->success('ok', $workers); } /** * 添加同工 * @param Request $request [description] * @return [type] [description] */ public function createPaasWorker(Request $request) { $paas_id = $request->input('paas_id'); if (empty($paas_id)) { return $this->failure('请选择平台'); } $user_id = $request->input('user_id'); if (empty($user_id)) { return $this->failure('请选择用户'); } $result = PaasWorker::where(['user_id'=>$user_id])->exists(); if ($result) { return $this->failure('添加失败,该用户已成为同工'); } $array = ['paas_id'=>$paas_id, 'user_id'=>$user_id]; $worker = $this->paasCon->createPaasWorker($array); return $this->success('ok', $worker); } /** * 同工详情 * @param Request $request [description] * @return [type] [description] */ public function paasWorker(Request $request, $worker_id) { $user = $this->paasCon->paasWorker($worker_id); return $this->success('ok', $user); } /** * 删除同工 * @param [type] $worker_id [description] * @return [type] [description] */ public function deletePaasWorker($worker_id) { $this->paasCon->deletePaasWorker($worker_id); return $this->success('ok'); } /** * 我的同工列表 * @param Request $request [description] * @param [type] $paas_id [description] * @return [type] [description] */ public function workers(Request $request) { $admin_type = $request->session()->get('admin_type'); $workers = null; if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); $paas_id = $paas_obj->id; $workers = $this->paasCon->paasWorkers($request, $paas_id, $request->input('nopage', 0)); foreach ($workers as $worker) { $invite_users = $this->userCon->inviteUsers($worker->user_id, 1); $worker->invite_user_num = count($invite_users); } } return $this->success('ok', $workers); } /** * 平台客户 * 同工邀请的人+渠道邀请的人 * @param Request $request [description] * @return [type] [description] */ public function paasClients(Request $request) { $admin_type = $request->session()->get('admin_type'); $workers = null; if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); $users = $this->paasCon->paasClients($request, $paas_obj->id); } return $this->success('ok', $users); } /** * 用户绑定提现账号 * @param Request $request [description] * @return [type] [description] */ public function paasBindAccount(Request $request, $user_id) { $openid = Wechat::where('user_id', $user_id)->value('openid'); if (empty($openid)) { return $this->failure('该用户没有微信信息'); } $this->paasCon->paasBindAccount($request, $user_id); return $this->success('ok'); } /** * 平台账号 * @param Request $request [description] * @return [type] [description] */ public function paasAccount(Request $request) { $account = $this->paasCon->paasAccount($request); return $this->success('ok', $account); } /** * 提现记录 * @param Request $request [description] * @return [type] [description] */ public function paasWithdraws(Request $request) { $withdraws = $this->paasCon->paasWithdraws($request); return $this->success('ok', $withdraws); } /** * 提现 * @param Request $request [description] * @return [type] [description] */ public function withdraw(Request $request) { $account = $this->paasCon->paasAccount($request); if (empty($account->user_id)) { return $this->failure('该提现账号没有绑定提现人'); } $openid = Wechat::where('user_id', $account->user_id)->value('openid'); if (empty($openid)) { return $this->failure('提现账号绑定人没有微信信息'); } $type = $request->input("type"); if (empty($type)) { return $this->failure('请选择提现类型'); } if ($type == 'ACTIVITY') { if ($account->activity_balance <= 2) { return $this->failure('余额不足'); } }elseif ($type = "RANK") { if ($account->vip_balance <= 2) { return $this->failure('余额不足'); } } $result = $this->paasCon->withdraw($request, $openid); if (!$result) { return $this->failure('提现失败'); } return $this->success('提现成功'); } /** * 平台管理员列表 * @param Request $request [description] * @return [type] [description] */ public function paasAdmins(Request $request) { $admins = $this->paasCon->paasAdmins($request); return $this->success('ok', $admins); } /** * 渠道推广员 * @param Request $request [description] * @param Platform $platform [description] * @param PlatformUser $Platform_user [description] */ public function platformUsers(Request $request, Platform $platform, PlatformUser $platform_user) { //平台管理员 检查是否是他的渠道 $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); if ($platform->paas_id != $paas_obj->id) { return $this->failure('暂无访问权限'); } } $users = $platform_user->where('platform_id', $platform->id)->with('user.wechat'); $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $users = $users->whereHas('user',function($sql) use($keyword){ $sql->where('name', 'like', '%'.$keyword.'%') ->orWhere('mobile', 'like', '%'.$keyword.'%'); }); } $users = $users->orderBy('invite_num', 'desc')->orderBy('id', 'desc')->paginate(); $paas_id = $platform->paas_id; $start_time = $request->input('start_time'); $end_time = $request->input('end_time'); if ($start_time && $end_time) { foreach ($users as $user) { $user_id = $user->user_id; $openid = $user->user->wechat->openid; $num = User::where(function($sql) use($user_id, $openid){ $sql->where('from_user_id', $user_id); })->where('created_at', '>=', $start_time)->where('created_at', '<', $end_time)->count()?:0; $user->invite_num = $num; } } $pass_users = User::with('wechat')->where('from_platform', $platform->app_id)->orderBy('created_at', 'desc')->paginate(); foreach ($pass_users as $pass_user){ $pass_user->from_user = $pass_user->FromUsername(); } return $this->success('ok', compact('users', 'paas_id', 'pass_users')); } /** * 添加渠道推广员 * @param Request $request [description] * @param Platform $platform [description] * @param PlatformUser $Platform_user [description] */ public function addPlatformUser(Request $request, Platform $platform, User $user, PlatformUser $platform_user) { $platform_user_obj = $platform_user->where('user_id', $user->id)->first(); if ($platform_user_obj) { return $this->failure('添加失败,该用户已是推广员!'); } $openid = $user->wechat->openid; $paas_id = $platform->paas_id; $app_id = $platform->app_id; $paas_name = Paas::where('id', $paas_id)->value('name'); //生成二维码 $path = 'pages/tabBar/welcome?from_platform='.$app_id.'&paas='.$paas_name.'&from_openid='.$openid.'&from_user_id='.$user->id; // dd($path); $qrcode = $this->getQrcode($path, 512); $platform_user_obj = $platform_user->create([ 'user_id'=>$user->id, 'platform_id'=>$platform->id, 'qrcode'=>$qrcode, ]); $platform_user_obj->user; return $this->success('ok', $platform_user_obj); } /** * 开启、禁止推广员 * @param Request $request [description] * @param PlatformUser $platform_user [description] * @return [type] [description] */ public function disablePlatformUser(Request $request, PlatformUser $platformUser) { $platformUser->disable = $platformUser->disable?0:1; $platformUser->save(); return $this->success('ok', $platformUser); } /** * 平台用户 */ public function paasUsers(Request $request, Paas $paas, User $user) { // $paas_user_ids = $this->userCon->paasUserIds($paas->name, 'MAIN'); $users = $user->where('is_approved', 1); $keyword = $request->input('keyword'); if (!empty($keyword)) { $keyword = trim($keyword); $users = $users->where(function($sql) use($keyword){ $sql->where('name', 'like', '%'.$keyword.'%') ->orWhere('mobile', 'like', '%'.$keyword.'%'); }); } $nopage = $request->input('nopage'); if ($nopage) { $users = $users->get(); }else{ $users = $users->paginate(); } return $this->success('ok', $users); } /** * 开启、禁止渠道 * @param Request $request [description] * @param Platform $platform [description] * @return [type] [description] */ public function disablePlatform(Request $request, Platform $platform) { $platform->disable = $platform->disable?0:1; $platform->save(); return $this->success('ok', $platform); } /** * 平台邀请人数 * @param Request $request [description] * @param Paas $paas [description] * @return [type] [description] */ public function paasInviteNum(Request $request, Paas $paas) { $start_time = $request->input('start_time'); $end_time = $request->input('end_time'); $paases = $paas->orderBy('id', 'desc'); $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $paases = $paases->where('title', 'like', '%'.$keyword.'%'); } $paases = $paases->with('platform.inviteUsers')->paginate(); foreach ($paases as $pa) { $platforms = $pa->platform()->paginate(); $result_num = 0; foreach ($platforms as $platform) { if ($start_time && $end_time) { $num = $platform->inviteUsers->where('created_at', '>=', $start_time)->where('created_at', '<', $end_time)->count(); }else{ $num = $platform->inviteUsers->count(); } $result_num = $result_num + $num; } $pa->invite_num = $result_num; } return $this->success('ok', $paases); } //通过该渠道进来的用户 public function userFromPlat(Request $request, $platform_id){ $platform = Platform::find($platform_id); $type = Paas::where('id', $platform->paas_id)->value('type'); //type 0:小程序 1:H5 2:APP $app_id = $platform->app_id; //是否是APP渠道 if($platform->paas_id == 44) { $users = ApproveHistory::with('user:id,name,nickname,app_avatar,circle_avatar,photo,mobile,sex,rank_id,is_approved,type')->whereHas('user')->where('status', 1)->where('type', 'body')->where('from_platform', $platform->app_id)->paginate(); foreach ($users as $user) { $user->name = $user->user->name; $user->nickname = $user->user->nickname; $user->app_avatar = $user->user->app_avatar; $user->circle_avatar = $user->user->circle_avatar; $user->photo = $user->user->photo; $user->mobile = $user->user->mobile; $user->sex = $user->user->sex; $user->rank_id = $user->user->rank_id; $user->is_approved = $user->user->is_approved; $user->type = $user->user->type; $user->avatar = $user->user->avatar; $user->is_real_approved = $user->user->is_real_approved; $user->created_at = $user->user->created_at; unset($user->user); } }else { if ($type == 2) { $user_ids = Db::table('user_register_channels')->where('channel', $app_id)->pluck('user_id')->toArray(); $users = User::whereIn('id', $user_ids); } else { $users = User::where('from_platform', $app_id); } $keyword = $request->input('keyword'); if (!empty($keyword)) { $keyword = trim($keyword); $users = $users->where(function ($sql) use ($keyword) { $sql->where('name', 'like', '%' . $keyword . '%') ->orWhere('mobile', 'like', '%' . $keyword . '%') ->orWhere('id', $keyword); }); } $users = $users->orderBy('id', 'desc')->paginate(); } return $this->success('ok', $users); } //通过渠道完成实名认证的用户 public function approveFromPlat(Request $request, $platform_id){ $platfrom = Platform::find($platform_id); if(empty($platfrom)){ return $this->failure('渠道不存在'); } $user_id = PlatformBehavior::where('platform_id', $platform_id)->where('model', 'APPROVE')->pluck('user_id'); $users = User::whereIn('id', $user_id); if($request->type == 'new'){ $users= $users->where('from_platform', $platfrom->app_id); }elseif ($request->type == 'old'){ $users= $users->where('from_platform', '!=', $platfrom->app_id); } $users = $users->paginate(); return $this->success('ok', $users); } //通过该渠道进来的认证用户列表 public function approveUserFromPlat(Request $request,$platform_id){ $platfrom = Platform::find($platform_id); if(empty($platfrom)){ return $this->failure('渠道不存在'); } $user_ids = ApproveHistory::where('type','body')->where('status','1')->where('from_platform',$platfrom->app_id)->pluck('user_id'); $users = User::whereIn('id',$user_ids); $is_new = $request->is_new; if ($is_new == 1) { $users = $users->where('is_new',0); } if ($is_new == 2) { $users = $users->where('is_new',1); } $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $users = $users->where(function ($sql) use ($keyword) { $sql->where('name', 'like', '%' . $keyword . '%') ->orWhere('mobile', 'like', '%' . $keyword . '%') ->orWhere('id', $keyword); }); } $users = $users->paginate(); return $this->success('ok', $users); } }