selectPaas()->with('platform'); $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $paas_list = $paas_list->where(function($sql) use($keyword){ $sql->where('name', 'like', '%'.$keyword.'%') ->orWhere('title', 'like', '%'.$keyword.'%'); }); } if(is_numeric($request->type)){ $paas_list = $paas_list->where('type', $request->type); } $nopage = $request->input('nopage', 1); if ($nopage) { $paas_list = $paas_list->orderBy('id', 'desc')->paginate(); }else{ $paas_list = $paas_list->orderBy('id', 'desc')->get(); } return $paas_list; } /** * 平台详情 * @param [type] $paas_id [description] * @return [type] [description] */ public function paas($paas_id) { $array = ['id'=>$paas_id]; $paas = $this->selectPaas($array)->firstOrFail(); return $paas; } /** * 添加平台 * @param [type] $array [description] * @return [type] [description] */ public function createPaas($array) { $paas = Paas::create($array); return $paas; } /** * 修改平台 * @param [type] $array [description] * @param [type] $paas_id [description] * @return [type] [description] */ public function updatePaas($array, $paas_id) { $this->selectPaas(['id'=>$paas_id])->update($array); return; } /** * 删除平台 * @param [type] $paas_id [description] * @return [type] [description] */ public function deletePaas($paas_id) { $this->selectPaas(['id'=>$paas_id])->delete(); return ; } /** * 添加渠道 * @param Request $request [description] * @return [type] [description] */ public function createPlatform($array) { $platform = Platform::create($array); return $platform; } /** * 渠道详情 * @param [type] $platform_id [description] * @return [type] [description] */ public function platform($platform_id) { $platform = $this->selectPlatform(['id'=>$platform_id])->first(); return $platform; } /** * 修改渠道 * @param [type] $array [description] * @param [type] $platform_id [description] * @return [type] [description] */ public function updatePlatform($array, $platform_id) { $this->selectPlatform(['id'=>$platform_id])->update($array); return; } /** * 删除渠道 * @param [type] $platform_id [description] * @return [type] [description] */ public function deletePlatform($platform_id) { $this->selectPlatform(['id'=>$platform_id])->delete(); return; } /** * 渠道列表 * @param [type] $nopage [description] * @return [type] [description] */ public function paasPlatforms($paas_id, $nopage=1, $limit=0) { $platforms = $this->selectPlatform(['paas_id'=>$paas_id])->orderBy('id', 'desc'); $keyword = request()->input('keyword'); if($keyword){ $platforms = $platforms->where('name', 'like', '%'.$keyword.'%'); } if ($nopage) { $platforms = $platforms->paginate(); }else{ if ($limit) { $platforms = $platforms->limit($limit)->get(); } } return $platforms; } /** * 同工列表 * @param [type] $paas_id [description] * @param integer $nopage [description] * @param integer $limit [description] * @return [type] [description] */ public function paasWorkers($request, $paas_id, $nopage=0, $limit=0) { $workers = $this->selectWorker(['paas_id'=>$paas_id])->with('user')->orderBy('id', 'desc'); $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $workers = $workers->whereHas('user', function($sql) use($keyword){ $sql->where('name', 'like', '%'.$keyword.'%') ->orWhere('mobile', 'like', '%'.$keyword.'%'); }); } if ($nopage) { if ($limit) { $workers = $workers->limit($limit)->get(); } }else{ $workers = $workers->paginate(); } return $workers; } /** * 添加同工 * @param Request $request [description] * @return [type] [description] */ public function createPaasWorker($array) { $worker = PaasWorker::create($array); return $worker; } /** * 同工详情 * @param Request $request [description] * @return [type] [description] */ public function paasWorker($worker_id) { $worker = $this->selectWorker(['id'=>$worker_id])->with('user')->first(); return $worker; } /** * 删除同工 * @param [type] $worker_id [description] * @return [type] [description] */ public function deletePaasWorker($worker_id) { $this->selectWorker(['id'=>$worker_id])->delete(); return; } /** * 平台客户 * @param [type] $request [description] * @param [type] $paas_id [description] * @param integer $nopage [description] * @return [type] [description] */ public function paasClients($request, $paas_id, $nopage=0) { // $platforms = Platform::where('paas_id', $paas_id)->distinct('app_id')->pluck('app_id')->toArray(); // $worker_user_ids = PaasWorker::where('paas_id', $paas_id)->distinct('user_id')->pluck("user_id")->toArray(); // $paas_openids = Wechat::whereIn('user_id', $worker_user_ids)->pluck('openid'); $paas_obj = Paas::findOrFail($paas_id); $user_service = new UserService(); $paas_user_ids = $user_service->paasUserIds($paas_obj->name, 'MAIN'); // $users = User::where(function($sql) use($platforms, $worker_user_ids, $paas_openids){ // $sql->whereIn('from_user_id', $worker_user_ids) // ->orWhereIn('from_platform', $platforms) // ->orWhereIn('from_openid', $paas_openids); // })->whereIn('id', $paas_user_ids)->orderBy('id', 'desc'); $users = User::whereIn('id', $paas_user_ids)->orderBy('id', 'desc'); $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.'%'); }); } if ($nopage) { $users = $users->get(); }else{ $users = $users->paginate(); } return $users; } /** * 绑定账号 * @param [type] $request [description] * @param [type] $user_id [description] * @return [type] [description] */ public function paasBindAccount($request, $user_id) { $paas_obj = $request->session()->get('paas_obj'); $account = PaasAccount::where('paas_id', $paas_obj->id)->first(); $account->user_id = $user_id; $account->save(); return $account; } /** * 提现账号详情 * @param [type] $request [description] * @return [type] [description] */ public function paasAccount($request) { $paas_obj = $request->session()->get('paas_obj'); $account = PaasAccount::firstOrCreate(['paas_id'=>$paas_obj->id]); $user = User::find($account->user_id); $account->user = $user; return $account; } /** * 提现记录 * @param [type] $request [description] * @return [type] [description] */ public function paasWithdraws($request) { $paas_obj = $request->session()->get('paas_obj'); $type = $request->input('type'); $withdraws = PaasWithdraw::with('user')->where('paas_id', $paas_obj->id)->where('type', $type)->orderBy('id', 'desc')->paginate(); return $withdraws; } /** * 提现 * @param [type] $request [description] * @return [type] [description] */ public function withdraw($request, $openid) { $account = $this->paasAccount($request); $paas_obj = $request->session()->get('paas_obj'); $type = $request->input('type'); if ($type == 'ACTIVITY') { $withdraw_amount = $account->activity_balance; //手续费 $fee = number_format($account->activity_ratio * $withdraw_amount, 2); //提现金额(手续费后) $arrival_amount = number_format($withdraw_amount - $fee,2); $account->decrement('activity_balance', $withdraw_amount); $account->increment('activity_withdraw', $withdraw_amount); $desc = '平台活动提现'; }elseif ($type == 'RANK'){ $withdraw_amount = $account->vip_balance; //手续费 $fee = number_format($account->vip_ratio * $withdraw_amount, 2); $arrival_amount = number_format($withdraw_amount - $fee,2); $account->decrement('vip_balance', $withdraw_amount); $account->increment('vip_withdraw', $withdraw_amount); $desc = '平台会员提现'; } $trade_no = \CommonUtilsService::getTradeNO(); //生成转账 PaasWithdraw::create([ 'paas_id'=>$paas_obj->id, 'user_id'=>auth()->id(), 'type'=>$type, 'withdraw_amount'=>$withdraw_amount, 'arrival_amount'=>$arrival_amount, 'trade_no'=>$trade_no, 'fee'=>$fee, 'is_hooked'=>0, ]); $result = \WechatService::userTransfer($trade_no, $openid, $arrival_amount * 100, $desc); return $result; } /** * 平台管理员列表 * @param [type] $request [description] * @return [type] [description] */ public function paasAdmins($request, $nopage=0) { $paas_obj = $request->session()->get('paas_obj'); $admins = Admin::with('user')->where('type', $paas_obj->name); $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $admins = $admins->whereHas('user', function($sql) use($keyword){ $sql->where('name', 'like', '%'.$keyword.'%') ->orWhere('mobile', 'like', '%'.$keyword.'%'); }); } if ($nopage) { $admins = $admins->get(); }else{ $admins = $admins->paginate(); } return $admins; } /** * 添加平台账号收益记录 * @param [type] $paas [description] * @param [type] $type [description] * @param [type] $type_id [description] */ public function addAccountHistory($paas, $type, $order_id, $amount) { $paas_obj = Paas::where('name', $paas)->first(); if (empty($paas_obj)) { return; } $account = PaasAccount::firstOrCreate(['paas_id'=>$paas_obj->id]); PaasAccountHistory::create([ 'paas_id'=>$paas_obj->id, 'account_id'=>$account->id, 'type'=>$type, 'order_id'=>$order_id, 'amount'=>$amount, ]); if ($type == 'ACTIVITY') { $account->increment('activity_balance', $amount); }elseif ($type == 'RANK') { $account->increment('vip_balance', $amount); } return; } /** * 添加平台与订单联系 */ public function addPaasOrder($paas, $order_id) { $paas_obj = Paas::where('name', $paas)->first(); if (empty($paas_obj)) { return; } PaasOrder::create([ 'paas_id'=>$paas_obj->id, 'order_id'=>$order_id, ]); return; } }