where('service_nature','alliance') ->first(); if($anchor){ return true; }else{ return false; } } /** *获取联盟商家列表 * @param Request $request */ public function getAllianceMerchantList(Request $request){ try { $keyword = $request->keyword; $merchant_id = $request->account_id; $audit_type = $request->audit_type; $is_alliance = $this->checkAlliance($merchant_id); if (!$is_alliance) { return $this->failure('该商家目前不是联盟状态或你没有权限'); } $alliance_merchant = AllianceMerchant::where('alliance_id', $merchant_id) ->leftJoin('live_anchors', function ($join) use ($merchant_id){ $join->on('alliance_merchants.mch_id', '=', 'live_anchors.m_id'); }) ->when(isset($audit_type), function ($query) use ($audit_type) { $query->where('audit_type', $audit_type); }) ->select('live_anchors.*','alliance_merchants.audit_type','alliance_merchants.updated_at') ->when($keyword,function ($query) use($keyword){ $query->where('live_anchors.name','like',"%$keyword%"); }) ->orderBy('alliance_merchants.updated_at','desc') ->paginate(); return $this->success('ok', $alliance_merchant); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 获取联盟商家详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|string */ public function getAllianceMerchantInfo(Request $request){ try { $alliance_merchant_id = $request->alliance_merchant_id; $serve_tab = $request->serve_tab; $account = MerchantAccount::select('id', 'qr_code', 'share_icon', 'share_subtitle', 'share_title', 'openid', 'choose_tarbar', 'template_position', 'member_info', 'mobile', 'email') ->where('id', $alliance_merchant_id) ->first(); $type = $request->type; if ($type == 'simple') { $anchor = Anchor::where('m_id', $alliance_merchant_id)->select('id', 'm_id', 'pic', 'name', 'mobile')->first(); } else { $anchor = Anchor::where('m_id', $alliance_merchant_id)->select('id', 'm_id', 'service_nature', 'pic', 'name', 'designation', 'introduction')->first(); } if ($anchor->service_nature == 'team' && $account->member_info) { $account->member_info = json_decode($account->member_info, true); } $jump_url = urlencode(env('APP_URL') . '/pu/#/'); $share_url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $alliance_merchant_id . '&anchor_openid=' . $anchor->openid .'&serve_tab='.$serve_tab. '&url=' . $jump_url; $qr_codes = Redis::get('HomePage_S' . $alliance_merchant_id); if (!$qr_codes) { $qr_codes = $this->getPreviewQrcode($share_url); Redis::setex('HomePage_S' . $alliance_merchant_id, 60 * 60 * 24 * 30, $qr_codes); $qr_codes = Redis::get('HomePage_S' . $alliance_merchant_id); } if ($account->choose_tarbar) { $account->choose_tarbar = json_decode($account->choose_tarbar, true); } else { $account->choose_tarbar = null; } if ($account->template_position) { $account->template_position = json_decode($account->template_position, true); } else { $account->template_position = null; } $location_latitude = $account->info ? $account->info->location_latitude : null; $location_longitude = $account->info ? $account->info->location_longitude : null; $address = $account->info ? $account->info->address : null; //$account['sign_code'] = $this->getSignInQrCode($alliance_merchant_id,null,null); //$account->admin_name = null; return $this->success('ok', compact('anchor', 'account', 'qr_codes', 'share_url', 'location_longitude', 'location_latitude', 'address')); } catch (\Exception $e) { DB::rollBack(); $this->getError($e); return $this->failure('获取个人资料失败'); } } /** * 删除联盟成员,同时删除成员的服务 * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function deleteAllianceMerchant(Request $request){ try { $merchant_id = $request->account_id; $alliance_merchant_id = $request->alliance_merchant_id; $admin_id = $request->merchant_admin_id; if(!$alliance_merchant_id){ return $this->failure('参数不全'); } $is_alliance = $this->checkAlliance($merchant_id); if (!$is_alliance) { return $this->failure('该商家目前不是联盟状态或你没有权限'); } DB::beginTransaction(); $allianceMerchant = AllianceMerchant::where('alliance_id', $merchant_id)->where('mch_id', $alliance_merchant_id) ->first(); if (!$allianceMerchant) { return $this->failure('联盟商家不存在'); } if($allianceMerchant->alliance_id == $alliance_merchant_id){ return $this->failure('您是联盟创建者,不能删除自己'); } $allianceMerchant->delete(); MarketService::where('merchant_id', $merchant_id) ->where('market_type',2) ->delete(); MerchantService::where('merchant_id', $merchant_id) ->where('service_type',2) ->delete(); DB::commit(); $alliance_anchor = Anchor::where('m_id',$merchant_id)->first(); $alliance_member = Anchor::where('m_id',$alliance_merchant_id)->first(); if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){ $this->sentMessage($alliance_member->mobile, '联盟'.$alliance_anchor->name.'已将你除名'); } return $this->success('ok'); }catch (\Exception $e){ DB::rollBack(); $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 联盟商家审核 * @param Request $request * @return \Illuminate\Http\JsonResponse|string */ public function auditAllianceMerchant(Request $request){ try { $merchant_id = $request->account_id; $admin_id = $request->merchant_admin_id; $alliance_merchant_id = $request->alliance_merchant_id; $err_msg = $request->err_msg; $audit_type = $request->audit_type; if(!$alliance_merchant_id || !$audit_type){ return $this->failure('参数不全'); } $is_alliance = $this->checkAlliance($merchant_id); if (!$is_alliance) { return $this->failure('该商家目前不是联盟状态'); } $alliance_merchant = AllianceMerchant::where('alliance_id', $merchant_id)->where('mch_id', $alliance_merchant_id) ->first(); if (!$alliance_merchant) { return $this->failure('商家不存在'); } if ($audit_type == 3 && empty($err_msg)) { return $this->failure('审核不能过时须要提供理由'); } if($audit_type == 2){ //以前审核不通过,现在审核通过,清除不通过原因 $alliance_merchant->err_msg = null; } if($alliance_merchant->audit_info){ $audit_info = json_decode($alliance_merchant->audit_info); } $audit_info[] = [ 'audited_at' => date('Y-m-d H:i:s'), 'audit_admin_id' => $admin_id ?? 0, 'audit_type' => $audit_type, 'err_msg' => $err_msg, ]; $alliance_merchant->audit_type = $audit_type; $alliance_merchant->err_msg = $err_msg; $alliance_merchant->audit_info = json_encode($audit_info); $alliance_merchant->save(); $alliance_anchor = Anchor::where('m_id',$merchant_id)->first(); $alliance_member = Anchor::where('m_id',$alliance_merchant_id)->first(); if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){ if($audit_type ==2){ $status = '已通过.'; }elseif($audit_type ==3){ $status = '被拒绝.'; }else{ $status = '正在审核'; } $this->sentMessage($alliance_member->mobile, '您申请加入的'.$alliance_anchor->name.'联盟'.$status); } return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 申请加入联盟 * @param Request $request * @return \Illuminate\Http\JsonResponse|string */ public function joinAlliance(Request $request){ try { $merchant_id = $request->account_id; $admin_id = $request->merchant_admin_id; $alliance_id = $request->alliance_id; if(!$alliance_id){ return $this->failure('参数不全'); } $is_alliance = $this->checkAlliance($alliance_id); if (!$is_alliance) { return $this->failure('该商家目前不是联盟状态'); } if($alliance_id == $merchant_id){ return $this->failure('你不能加入自己创建的联盟'); } $alliance_merchant = AllianceMerchant::where('alliance_id', $alliance_id)->where('mch_id', $merchant_id) ->first(); if($alliance_merchant) { if ($alliance_merchant->audit_type == 1 || $alliance_merchant->audit_type == 2) { return $this->failure('您已经加盟或已经提交了申请'); } elseif ($alliance_merchant->audit_type == 3) { $alliance_merchant->audit_type = 1; $alliance_merchant->save(); return $this->success('ok'); } } $alliance_merchant = new AllianceMerchant(); $alliance_merchant->alliance_id = $alliance_id; $alliance_merchant->mch_id = $merchant_id; $alliance_merchant->audit_type = 1; $alliance_merchant->save(); $alliance_anchor = Anchor::where('m_id',$alliance_id)->first(); $alliance_member = Anchor::where('m_id',$merchant_id)->first(); if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){ $this->sentMessage($alliance_anchor->mobile, '用户: '.$alliance_member->name. ', 手机号: '.$alliance_member->mobile.' 申请加入您的联盟,请及时审核'); } return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 退出联盟 * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function quitAlliance(Request $request){ try { $merchant_id = $request->account_id; $admin_id = $request->merchant_admin_id; $alliance_id = $request->alliance_id; $alliance_merchant = AllianceMerchant::where('alliance_id', $alliance_id)->where('mch_id', $merchant_id) ->first(); if (!$alliance_merchant) { return $this->failure('您没有加入过此联盟或已经通出了联盟'); } if($alliance_merchant->alliance_id == $merchant_id){ return $this->failure('您是联盟的创建者,不能退出联盟'); } DB::beginTransaction(); $alliance_merchant->delete(); MarketService::where('merchant_id', $alliance_id) ->where('market_type',2) ->delete(); MerchantService::where('merchant_id', $alliance_id) ->where('service_type',2) ->delete(); DB::commit(); $alliance_anchor = Anchor::where('m_id',$alliance_id)->first(); $alliance_member = Anchor::where('m_id',$merchant_id)->first(); if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){ $this->sentMessage($alliance_anchor->mobile, '商家: '.$alliance_member->name.' 已退出您的联盟'); } return $this->success('ok'); }catch (\Exception $e){ DB::rollBack(); $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 获取所有联盟列表 * @param Request $request */ public function getAllianceList(Request $request){ try { $merchant_id = $request->account_id; $keyword = $request->keyword; $alliance_ids = Anchor::where('service_nature', 'alliance') ->when($keyword,function ($query) use($keyword){ $query->where('live_anchors.name','like',"%$keyword%"); }) ->orderBy('created_at','desc') ->paginate(); foreach ($alliance_ids as $alliance){ $alliance_merchant = AllianceMerchant::where('alliance_id',$alliance->m_id) ->where('mch_id',$merchant_id) ->first(); if($alliance_merchant){ if($alliance_merchant->audit_type == 3){ $alliance->is_join = 0; }else{ $alliance->is_join = 1; } }else{ $alliance->is_join = 0; } } return $this->success('ok', $alliance_ids); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 获取我加入的联盟列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|string */ public function getMyAllianceList(Request $request){ try { $merchant_id = $request->account_id; $no_page = $request->no_page; $keyword = $request->keyword; $audit_type = $request->audit_type; $alliance_list = AllianceMerchant::where('alliance_merchants.mch_id', $merchant_id) ->leftJoin('live_anchors', 'alliance_merchants.alliance_id', 'live_anchors.m_id') ->where('alliance_merchants.alliance_id','!=',$merchant_id) ->when($audit_type,function ($query) use($audit_type){ $query->where('alliance_merchants.audit_type',$audit_type); }) ->when($keyword,function ($query) use($keyword){ $query->where('live_anchors.name','like',"%$keyword%"); }) ->select('live_anchors.m_id','live_anchors.name','live_anchors.pic','live_anchors.designation', 'alliance_merchants.created_at'); if($no_page){ $alliance_list = $alliance_list->orderBy('alliance_merchants.created_at','desc') ->get(); }else { $alliance_list = $alliance_list->orderBy('alliance_merchants.created_at','desc') ->paginate(); } return $this->success('ok', $alliance_list); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } }