account_id; $mobile = $request->mobile; $credentials = $request->credentials; if (empty($mobile)) return $this->failure('手机号不能为空'); $pic = $request->pic; if (empty($pic)) return $this->failure('请上传头像'); $label = $request->label; $name = $request->name; $introduction = $request->introduction; $experience = $request->experience; $seniority = $request->seniority; $designation = $request->designation; //手机号不需要敏感词过滤 //$await_checkoutTextArray[] = $mobile; $await_checkoutTextArray[] = $label; // $await_checkoutTextArray[] = $introduction; $await_checkoutTextArray[] = $name; $await_checkoutTextArray[] = $experience; $await_checkoutTextArray[] = $seniority; $await_checkoutTextArray[] = $designation; //敏感词汇过滤 $result = \CommonUtilsService::checkoutTextArrayV3($await_checkoutTextArray); if ($result['code'] == 1) { return $this->failure($result['cause']); } $result = \CommonUtilsService::imageContentCecurity([$request->pic]); if ($result && isset($result['result']) && $result['result']) { return $this->failure('图片' . $result['result'] . ',请换一张照片'); } $consult = new ConsultAccount(); $consult->merchant_id = $merchant_id; $consult->mobile = $mobile; $consult->pic = $pic; $consult->credentials = json_encode($credentials); $consult->name = $name; $consult->label = $label ? json_encode($label) : ''; $consult->introduction = $introduction; $consult->seniority = $seniority; $consult->experience = $experience; $consult->designation = $designation; $consult->save(); //保存后删除草稿箱内容 if (Cache::has('drafts_consult_account_merchant_id_' . $merchant_id)) Cache::forget('drafts_consult_account_merchant_id_' . $merchant_id); return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 老师咨询列表 * * * @param Request $request * @return JsonResponse|string */ public function consultAccounts(Request $request) { try { $merchant_id = $request->account_id; $keyword = $request->keyword; $consults = ConsultAccount::where('merchant_id', $merchant_id)->orderBy('id', 'desc'); if ($keyword) { $keyword = trim($keyword); $consults = $consults->where(function ($sql) use ($keyword) { $sql->where('name', 'like', '%' . $keyword . '%') ->orWhere('mobile', 'like', '%' . $keyword . '%'); }); } if ($request->has('nopage') && $request->nopage) { $consults = $consults->get(); } else { $consults = $consults->paginate(); } foreach ($consults as $key => $consult) { $consult->label = json_decode($consult->label, true) ?? []; } return $this->success('ok', $consults); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 咨询老师详情 * * * @param Request $request * @param $consult_id * @return JsonResponse|string */ public function consultDetail(Request $request, $consult_id) { try { $merchant_id = $request->account_id; $consult = ConsultAccount::where('id', $consult_id)->where('merchant_id', $merchant_id)->first(); $consult->label = json_decode($consult->label, true) ?? []; if ($consult->credentials && $consult->credentials != 'null') { $consult->credentials = json_decode($consult->credentials, true); } else { $consult->credentials = []; } return $this->success('ok', $consult); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 编辑咨询老师 * * * @param Request $request * @param $consult_id * @return JsonResponse|string */ public function consultUpdate(Request $request, $consult_id) { try { $await_checkoutTextArray = []; $merchant_id = $request->account_id; $consult = ConsultAccount::where('id', $consult_id)->where('merchant_id', $merchant_id)->first(); $credentials = $request->credentials; $mobile = $request->mobile; $pic = $request->pic; $label = $request->label; $name = $request->name; $introduction = $request->introduction; $experience = $request->experience; $seniority = $request->seniority; $designation = $request->designation; //手机号免过滤 //$await_checkoutTextArray[] = $mobile; $await_checkoutTextArray[] = $label; // $await_checkoutTextArray[] = $introduction; $await_checkoutTextArray[] = $name; $await_checkoutTextArray[] = $experience; $await_checkoutTextArray[] = $seniority; $await_checkoutTextArray[] = $designation; //敏感词汇过滤 $result = \CommonUtilsService::checkoutTextArrayV3($await_checkoutTextArray); if ($result['code'] == 1) { return $this->failure($result['cause']); } $result = \CommonUtilsService::imageContentCecurity([$request->pic]); if ($result && isset($result['result']) && $result['result']) { return $this->failure('图片' . $result['result'] . ',请换一张照片'); } if ($mobile && $mobile != $consult->mobile) { $consult->mobile = $mobile; } if ($pic && $pic != $consult->pic) { $consult->pic = $pic; } if ($label && $label != json_decode($consult->label)) { $consult->label = json_encode($label); } if ($name && $name != $consult->name) { $consult->name = $name; } if ($introduction && $introduction != $consult->introduction) { $consult->introduction = $introduction; } if ($experience && $experience != $consult->experience) { $consult->experience = $experience; } if ($seniority && $seniority != $consult->seniority) { $consult->seniority = $seniority; } if ($designation && $designation != $consult->designation) { $consult->designation = $designation; } $consult->credentials = json_encode($credentials); $consult->save(); return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 移除咨询老师 * * * @param Request $request * @param $consult_id * @return JsonResponse|string */ public function removeConsult(Request $request, $consult_id) { try { $merchant_id = $request->account_id; $consult = ConsultAccount::where('id', $consult_id)->where('merchant_id', $merchant_id)->first(); if (!$consult) return $this->failure('要删除的内容不存在'); $consult->delete(); return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 创建咨询服务 * * * @param Request $request * @return JsonResponse|string */ public function createConsultService(Request $request) { try { $await_checkoutTextArray = []; $consult_account_id = $request->consult_account_id; if (!$consult_account_id) return $this->failure('请先指定老师'); $title = $request->title; if (!$title) return $this->failure('请先输入标题'); $introduction = $request->introduction; if (!$introduction) return $this->failure('请输入简介'); $price = $request->price; if (!is_numeric($price) || $price < 0) return $this->failure('请输入正确价格'); $duration = $request->duration; if (!$duration || !is_numeric($duration)) return $this->failure('请输入咨询时长'); $status = $request->status ?? 0; $pic = $request->pic; $first_buy_discount = $request->first_buy_discount ?? 0; $await_checkoutTextArray[] = $title; // $await_checkoutTextArray[] = $introduction; $await_checkoutTextArray[] = $price; $await_checkoutTextArray[] = $duration; //敏感词汇过滤 $result = \CommonUtilsService::checkoutTextArrayV3($await_checkoutTextArray); if ($result['code'] == 1) { return $this->failure($result['cause']); } $result = \CommonUtilsService::imageContentCecurity([$request->pic]); if ($result && isset($result['result']) && $result['result']) { return $this->failure('图片' . $result['result'] . ',请换一张照片'); } $consult = new Consultation(); $consult->consult_account_id = $consult_account_id; $consult->title = $title; $consult->pic = $pic; $consult->introduction = $introduction; $consult->price = $price; $consult->duration = $duration; $consult->status = $status; $consult->first_buy_discount = $first_buy_discount; $consult->save(); if ($request->has('ratio') && $request->ratio >= 0) { if ($request->ratio > 1.0) { return $this->failure('利润分成比例不能大于100%'); } $rule = MEarningRule::where('m_id', $request->account_id) ->where('name', 'consult') ->where('type_id', 0) ->first(); $MEarningRule = new MEarningRule(); $MEarningRule->forzen_time = $rule?$rule->forzen_time : 1; $MEarningRule->m_id = $request->account_id; $MEarningRule->name = 'consult'; $MEarningRule->ratio = $request->ratio; $MEarningRule->type_id = $consult->id; $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; $MEarningRule->save(); } //保存后删除草稿箱内容 if (Cache::has('drafts_consult_merchant_id_' . $request->account_id)) Cache::forget('drafts_consult_merchant_id_' . $request->account_id); return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 咨询服务列表 * * * @param Request $request * @return JsonResponse|string */ public function ConsultServices(Request $request) { try { $merchant_id = $request->account_id; $status = $request->status ?? 2; $keyword = $request->keyword; //商户名下的老师id $account_ids = ConsultAccount::where('merchant_id', $merchant_id)->pluck('id')->toArray(); $consults = Consultation::with('teacher')->whereIn('consult_account_id', $account_ids); if ($status != 2) { $consults = $consults->where('status', $status); } if ($keyword) { $consults = $consults->whereHas('teacher', function ($sql) use ($keyword) { $sql->where('name', 'like', '%' . $keyword . '%') ->orWhere('mobile', 'like', '%' . $keyword . '%'); }); } $consults = $consults->orderBy('is_top', 'desc')->orderBy('top_time', 'desc')->orderBy('id', 'desc')->paginate(); foreach ($consults as $consult) { $member_count = TouristOrder::where('type', 'consult')->where('type_id', $consult->id)->where('pay_status', '<>', 0)->count(); $consult->member_count = $member_count; $pv = Redis::zscore('consulation', $consult->id); $consult->pv = $pv ?: 0; } return $this->success('ok', $consults); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 咨询服务详情 * @param Request $request * @param $id * @return JsonResponse|string */ public function ConsultService(Request $request, $id) { try { $serve_tab = $request->serve_tab; $con = Consultation::with('teacher')->where('id', $id)->first(); if ($con['teacher']['merchant_id'] != $request->account_id) { return $this->failure('咨询不属于档登陆用户'); } $openid = MerchantAccount::where('id', $request->account_id)->value('openid'); $con->teacher->label = json_decode($con->teacher->label, true) ?? []; $con->pv = Redis::zincrby('consulation', 1, $id); $jump_url = urlencode(env('APP_URL') . '/pu/#/consultingDetail/' . $id); // $u = urlencode('anchor_openid='.$openid.'&url=http://love.ufutx.cn/pu/#/'); $url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $request->account_id . '&serve_tab=' . $serve_tab . '&url=' . $jump_url . '&from_openid=' . $openid; // $qr_code = $this->getPreviewQrcode($url); // $qr_code = Redis::get('ConsultDetail_S' . $id); // if (!$qr_code) { $qr_code = $this->getPreviewQrcode($url); // Redis::setex('ConsultDetail_S' . $id, 60 * 60 * 24 * 30, $qr_code); // $qr_code = Redis::get('ConsultDetail_S' . $id); // } $MEarningRule = MEarningRule::where('m_id', $request->account_id) ->where('name', 'consult')->where('type_id', $id)->first(); $con['ratio'] = $MEarningRule['ratio'] ?? null; if ($con['ratio'] === null) { $con['ratio'] = MEarningRule::where('m_id', $request->account_id) ->where('name', 'consult')->where('type_id', 0) ->value('ratio'); } $con['ratio'] = number_format($con['ratio'], 2); $con['first_buy_discount'] = number_format($con['first_buy_discount'], 2); $share_url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $request->account_id . '&serve_tab=' . $serve_tab . '&url=' . $jump_url . '&from_openid=' . $openid; $con->share_url = $share_url; $con->qr_code = $qr_code; return $this->success('ok.', $con); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 商户咨询-用户评价列表 * @param Request $request * @return JsonResponse|string */ public function getConsultCommentList(Request $request) { try { $merchant_user_id = $request->merchant_user_id; $consult_id = $request->consult_id; if (!$consult_id) { return $this->failure('咨询服务ID不能为空值'); } $result = ConsultationRecords::select('id', 'anchor_id', 'name', 'price', 'type', 'comment', 'Praise', 'created_at', 'consulation_id', 'merchant_id', 'merchant_user_id', 'phone', 'updated_at','comment_time', 'is_anonymous') ->where('consulation_id', $consult_id) // ->where('status', 2) ->whereNotNull('Praise') // ->orderBy('id', 'desc') ->orderBy('comment_time','desc') ->orderBy('updated_at','desc') ->paginate(); foreach ($result as $key => $value) { $time = date('Y-m-d H:i', strtotime($value->created_at)); $value->time = $time; $teacher = Consultation::where('id', $consult_id)->first(); $user = MerchantUser::where('id', $value->merchant_user_id)->first(); $value->avatar = $user->pic ?? User::DefaultAvatar; if ($user && $user->nickname) { $value->name = $user->nickname; } $value->is_mine = $value->merchant_user_id == $merchant_user_id ? 1 : 0; $value->duration = $teacher->duration ?? 60; unset($value->viewer); unset($value->anchor); } return $this->success('ok', $result); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 删除咨询评论 * @param Request $request * @return JsonResponse|string */ public function deleteConsultComment(Request $request) { try { $merchant_id = $request->account_id; $consult_recode_id = $request->consult_recode_id; if (!$consult_recode_id) { $this->failure('咨询订单ID不能为空'); } $consultationRecords = ConsultationRecords::where('id', $consult_recode_id) ->where('merchant_id', $merchant_id) ->first(); if ($consultationRecords) { $consultationRecords->comment = null; $consultationRecords->Praise = null; $consultationRecords->save(); } else { $this->failure('评论不存在或不属于您的订单'); } return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 编辑咨询服务 * * * @param Request $request * @param $id * @return JsonResponse|string */ public function updateConsultService(Request $request, $id) { try { $await_checkoutTextArray = []; $con = Consultation::where('id', $id)->first(); $price = $request->price ?? 0; if ($request->price && !is_numeric($request->price)) return $this->failure('请输入正确价格'); if ($request->price && $request->price < 0) return $this->failure('请输入正确价格'); if ($request->consult_account_id && $con->consult_account_id != $request->consult_account_id) { $con->consult_account_id = $request->consult_account_id; } if ($request->title && $con->title != $request->title) { $con->title = $request->title; $await_checkoutTextArray[] = $request->title; } if ($request->has('price') && $con->price != $price) { $con->price = $price; $await_checkoutTextArray[] = $price; } if ($request->introduction && $con->introduction != $request->introduction) { $con->introduction = $request->introduction; // $await_checkoutTextArray[] = $request->introduction; } if ($request->duration && $con->duration != $request->duration) { $con->duration = $request->duration; $await_checkoutTextArray[] = $request->duration; } if ($request->pic && $con->pic != $request->pic) { $con->pic = $request->pic; $result = \CommonUtilsService::imageContentCecurity([$request->pic]); if ($result && isset($result['result']) && $result['result']) { return $this->failure('图片' . $result['result'] . ',请换一张照片'); } } //敏感词汇过滤 $result = \CommonUtilsService::checkoutTextArrayV3($await_checkoutTextArray); if ($result['code'] == 1) { return $this->failure($result['cause']); } if ($request->has('status')) { $con->status = $request->status; } if ($request->has('is_top')) { $con->is_top = $request->is_top; $con->top_time = $request->is_top ? date('Y-m-d H:i:s') : null; } if ($request->has('first_buy_discount')){ if ($request->first_buy_discount > 1) { return $this->failure('首次购买折扣比例不可以大于1'); } $con->first_buy_discount = $request->first_buy_discount; } $con->save(); if ($request->has('ratio') && $request->ratio >= 0) { if ($request->ratio > 1.0) { return $this->failure('利润分成不可以大于1'); } $rule = MEarningRule::where('m_id', $request->account_id)->where('type_id', 0)->where('name', 'consult')->first(); $MEarningRule = MEarningRule::where('m_id', $request->account_id)->where('type_id', $id) ->where('name', 'consult') ->first(); if (empty($MEarningRule)) { $MEarningRule = new MEarningRule(); $MEarningRule->forzen_time = $rule?$rule->forzen_time : 1; $MEarningRule->m_id = $request->account_id; $MEarningRule->name = 'consult'; $MEarningRule->ratio = $request->ratio; $MEarningRule->type_id = $id; $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; $MEarningRule->save(); } elseif ($MEarningRule['ratio'] != $request->ratio) { $MEarningRule->forzen_time = $rule?$rule->forzen_time : 1; $MEarningRule->ratio = $request->ratio; $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; $MEarningRule->save(); } } return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 删除咨询服务 * * * @param Request $request * @param $id * @return JsonResponse|string */ public function removeConsultService(Request $request, $id) { try { Consultation::where('id', $id)->delete(); return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 咨询管理 * * * @param Request $request * @return JsonResponse|string */ public function consulateRecords(Request $request) { try { $account_id = $request->account_id; $mobile = MerchantAccount::where('id', $account_id)->value('mobile'); $anchor = Anchor::where('m_id', $request->account_id)->first(); $keyword = $request->keyword; $status = $request->status ?? 0; //0:未受理 1:已受理 2:已完成 $pay_status = $request->pay_status ?? 0;//0未支付 1已支付 $records = ConsultationRecords::where('anchor_id', $anchor->id); if ($status != 3) { $records = $records->where('status', $status); } if ($pay_status != 2) { $records = $records->where('pay_status', $pay_status); } if ($keyword) { $records = $records->where(function ($sql) use ($keyword) { $sql->where('phone', 'like', '%' . $keyword . '%') ->orWhere('name', 'like', '%' . $keyword . '%'); }); } $records = $records->orderBy('id', 'desc')->paginate(); return $this->success('ok', $records); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 咨询数据 * * * @param Request $request * @param $id * @return JsonResponse|string */ public function consultStat(Request $request, $id) { try { $end_time = $request->end_time; $start_time = date('Y-m-d H:i:s', strtotime('-6 days', strtotime($end_time))); $week_order_num = [];//近一周(支付)订单数 $date = []; //间隔天数 $between_time = ceil((strtotime($end_time) - strtotime($start_time)) / 3600 / 24) + 1; for ($i = 0; $i < $between_time; $i++) { $date[] = date("Y-m-d", strtotime("+$i day", strtotime($start_time))); } // dd($date); foreach ($date as $start_time) { $date_arr[] = $start_time; // dd($date_arr); $start_time = $start_time . ' 00:00:00'; $end_time = date("Y-m-d 23:59:59", strtotime($start_time)); $week_order_num = ConsultationRecords::where('consulation_id', $id)->where('pay_status', 1)->whereBetween('created_at', [$start_time, $end_time])->count(); $daily_order_num[] = $week_order_num; $consume_cash = ConsultationRecords::where('consulation_id', $id)->where('pay_status', 1)->whereBetween('created_at', [$start_time, $end_time])->sum('price'); $daily_consume_cash[] = $consume_cash; $consume_num = ConsultationRecords::where('consulation_id', $id)->where('pay_status', 1)->groupBy('name')->count(); $daily_consume_num[] = $consume_num; } $pv = Redis::zscore('consulation', $id) ?? 0; return $this->success('ok', compact('date_arr', 'daily_order_num', 'daily_consume_cash', 'daily_consume_num', 'pv')); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 移动端咨询详情 * * * @param Request $request * @param $consult_id * @return JsonResponse|string */ public function phoneConsultDetail(Request $request, $consult_id) { try { $serve_tab = $request->serve_tab; $result = Consultation::withTrashed()->where('id', $consult_id)->first(); // if(!$result) return $this->failure('咨询信息有误'); $teacher = ConsultAccount::where('id', $result->consult_account_id)->first(); $result->intro = $teacher->introduction; $result->name = $teacher->name; $result->mobile = $teacher->mobile; $data = ConsultationRecords::where('consulation_id', $consult_id)->where('status', 2)->get(); $Praise = $data->sum('Praise'); $Praise_num = $data->count('Praise'); if ($Praise && $Praise_num) { $data->Praise_num = number_format($Praise / $Praise_num, 1); $result->Praise_num = intval($data->Praise_num / 5 * 100); } else { $result->Praise_num = 0; } $result->pay_num = $Praise_num; $result->label = json_decode($teacher->label, true); $result->t_pic = $teacher->pic; $result->price = floatval($result->price); $result->experience = $teacher->experience; $result->seniority = $teacher->seniority; $result->designation = $teacher->designation; $result->credentials = json_decode($teacher->credentials, true) ?? []; $result->mobile = $teacher->mobile; $result->pv = Redis::zscore('consulation', $consult_id); $jump_url = urlencode(env('APP_URL') . '/pu/#/consultingDetail/' . $consult_id); $url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $request->merchant_id . '&serve_tab=' . $serve_tab . '&url=' . $jump_url; $qr_code = Redis::get('ConsultDetail_S' . $consult_id); if (!$qr_code) { $qr_code = $this->getPreviewQrcode($url); Redis::setex('ConsultDetail_S' . $consult_id, 60 * 60 * 24 * 30, $qr_code); $qr_code = Redis::get('ConsultDetail_S' . $consult_id); } $result->share_qr_code = $qr_code; //消费人数 $result->consume_user_count = TouristOrder::where('type', 'consult')->where('type', $consult_id)->whereIn('pay_status', [1, 4])->groupBy('open_id')->get()->count(); //订单数 $result->consume_order_count = TouristOrder::where('type', 'consult')->where('type', $consult_id)->whereIn('pay_status', [1, 4])->count(); //收入(元) $result->income_amount = TouristOrder::where('type', 'consult')->where('type_id', $consult_id)->whereIn('pay_status', [1, 4])->sum('price'); //商家分成金额 $order_ids = TouristOrder::where('type', 'consult')->where('type_id', $consult_id)->whereIn('pay_status', [1, 4])->pluck('id')->toArray(); $result->merchant_income_value = MEarning::whereIn('m_order_id', $order_ids)->where('m_user_id', 0)->sum('value'); $orders = TouristOrder::where('type', 'community')->where('type_id', $consult_id)->whereIn('pay_status', [1, 4])->orderBy('id', 'desc')->limit(3)->get(); $avatar = []; foreach ($orders as $key => $order) { $avatar[$key] = MerchantUser::where('id', $order->account_id)->value('pic') ?? User::DefaultAvatar; if (empty($avatar[$key])) $avatar[$key] = User::DefaultAvatar; } $result->avatar = $avatar; //下架或删除状态 0下架 1正常上架 2已删除 $publish_state = 0; if ($result->deleted_at) { $publish_state = 2; } elseif ($result->status == 1) { $publish_state = 1; } else { $publish_state = 0; } $result->publish_state = $publish_state; return $this->success('ok', $result); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } } /** * 邀请评价 * @param Request $request * @return JsonResponse|string */ public function inviteComment(Request $request) { try { $id = $request->id; $order = ConsultationRecords::find($id); if (!$order) { return $this->failure('订单未找到'); } if ($order->pay_status != 1) { return $this->failure('订单未支付'); } // if($order->status == 2){ // return $this->failure('订单已结束'); // } if ($order->comment) { return $this->failure('订单已评论'); } $url = env('APP_URL') . "/pu/#/evaluation?id={$order->consulation_id}&orderId={$id}&merchant_id={$order->merchant_id}"; $qrcode = $this->getPreviewQrcode($url); return $this->success('ok',compact('url','qrcode')); } catch (\Exception $e) { $this->getError($e); return $this->failure($e->getMessage()); } } /** * 结束订单 * @param Request $request * @return JsonResponse|string */ public function closeOrder(Request $request) { try { $id = $request->id; $order = ConsultationRecords::find($id); if (!$order) { return $this->failure('订单未找到'); } if ($order->pay_status != 1) { return $this->failure('订单未支付'); } if($order->status == 2){ return $this->failure('订单已结束'); } if ($order->comment) { return $this->failure('订单已评论'); } $order->status = 2; $order->save(); $url = env('APP_URL') . "/pu/#/evaluation?id={$order->consulation_id}&orderId={$id}&merchant_id={$order->merchant_id}"; $merchant_user = MerchantUser::find($order->merchant_user_id); if ($order->scheduling_id && empty($order->reservation_time)){ $scheduling = SaasReservationConsultScheduling::find($order->scheduling_id); $order->reservation_time = "{$scheduling->date} {$scheduling->date_range}"; } $consultation = Consultation::find($order->consulation_id); $text = "咨询{$consultation->title},评价一下吧~"; \CommonUtilsService::consultInviteCommentNotice($merchant_user->openid,$url,$order->name,$order->reservation_time,$text); return $this->success('ok'); } catch (\Exception $e) { $this->getError($e); return $this->failure($e->getMessage()); } } }