$val){ $evaluateList = EvaluateList::where('test_item_id',$val['id']) ->where('name',$val['name']) ->first(); if($evaluateList){ continue; }else{ $evaluateList = new EvaluateList(); $evaluateList->test_item_id = $val['id']; $evaluateList->test_type = $i; $evaluateList->name = $val['name']; $evaluateList->desc = $val['desc']; $evaluateList->question_number = $val['questionNumber']; $evaluateList->cover = $val['cover']; $evaluateList->price = $val['price'] /100; $evaluateList->evaNum = $val['evaNum']; $evaluateList->subtitle = $val['subtitle']; $evaluateList->save(); } } } sleep(10); $y += 1; $a = 1; }while($data['list']); $a = 1; } } /** * 获取一点灵评测列表并存入数据库 */ public function getTestDetailToDB(){ $list = EvaluateList::pluck('test_item_id'); foreach ($list as $key => $val){ $data = EvaluateService::testDetails($val); $evaluateList = EvaluateDetail::where('test_item_id',$data['itemId']) ->where('title',$data['title']) ->first(); if($evaluateList){ continue; }else{ $evaluateDetail = new EvaluateDetail(); $evaluateDetail->test_item_id = $data['itemId']; $evaluateDetail->title = $data['title']; $evaluateDetail->subtitle = $data['subtitle']; $evaluateDetail->image = $data['image']; $evaluateDetail->tabImage = $data['tabImage']; $evaluateDetail->cover = $data['cover']; $evaluateDetail->summary = $data['summary']; $evaluateDetail->report_pages = $data['reportPages']; $evaluateDetail->notes = $data['notes']; $evaluateDetail->price = $data['price'] /100; $evaluateDetail->question_count = $data['questionCount']; $evaluateDetail->visitNum = $data['visitNum']; $evaluateDetail->hits = $data['hits']; $evaluateDetail->questions = json_encode($data['questions']); $evaluateDetail->save(); } } } /** * 获取商家服务列表 * @param Request $request */ public function getMerchantTestList(Request $request){ try { $keyword = trim($request->keyword); $merchant_id = $request->account_id; $type = $request->test_type; $nopage = $request->nopage; $status = $request->status ?? 2; $evaluate_lists = MerchantEvaluate::where('merchant_id', $merchant_id) ->when($type, function ($query) use ($type) { $query->where('test_item_type', $type); }) ->when($keyword, function ($query) use ($keyword) { $query->where('title', 'like', '%' . $keyword . '%'); }) ->select('id', 'test_item_id', 'title', 'price', 'pv', 'status', 'created_at', 'is_top', 'top_time', 'image') ->orderBy('status', 'desc')->orderBy('is_top', 'desc')->orderBy('top_time', 'desc')->orderBy('id', 'desc'); if ($status != 2) { $evaluate_lists = $evaluate_lists->where('status', $status); } if ($nopage) { $evaluate_lists = $evaluate_lists->get(); } else { $evaluate_lists = $evaluate_lists->paginate();; } foreach ($evaluate_lists as $key => $evaluate_list) { $evaluate_list->totel_order_num = TouristOrder::where('type', 'evaluate')->where('type_id', $evaluate_list->id)->count(); } return $this->success('ok', $evaluate_lists); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息了,请稍后再试'); } } /** * 获取评测服务列表 */ public function getTestList(Request $request){ try { $type = $request->test_type; $keyword = $request->keyword; $nopage = $request->nopage; $evaluate_list = EvaluateList::when($type, function ($query) use ($type) { $query->where('test_type', $type); }) ->when($keyword, function ($query) use ($keyword) { $query->where('name', 'like', "%$keyword%"); //->orWhere('desc','like',"%$keyword%"); }); if($request->account_id != 491){ $evaluate_list = $evaluate_list ->where('type',1); } if ($nopage) { $evaluate_list = $evaluate_list->get(); } else { $evaluate_list = $evaluate_list->paginate();; } return $this->success('ok', $evaluate_list); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息了,请稍后再试'); } } /** * 获取评测详情 * @param Request $request */ public function getTestDetail(Request $request){ try { $merchant_id = $request->account_id; $id = $request->id; $merchant_evaluate = MerchantEvaluate::where('merchant_id', $merchant_id) ->where('id', $id) ->select('id', 'status', 'test_item_type', 'test_item_id', 'sort', 'pv', 'is_top', 'top_time', 'created_at') ->first(); if (!$merchant_evaluate) { return $this->failure('商家没有这项测评服务'); } $list = EvaluateList::where('merchant_id',$merchant_id)->where('test_item_id',$merchant_evaluate['test_item_id']) ->first(); if($list && $list->type == 1){ $test_details = EvaluateService::testDetails($merchant_evaluate['test_item_id']); $test_details['price'] = number_format($test_details['price'] / 100, 2); }else{ $test_details = EvaluateDetail::where('test_item_id',$merchant_evaluate['test_item_id']) ->first(); if($test_details){ $test_details = $test_details->toArray(); } } $test_details['merchant_evaluate'] = $merchant_evaluate; $test_details['test_type'] = EvaluateList::where('test_item_id', $test_details['merchant_evaluate']['test_item_id'])->value('test_type'); $openid = MerchantAccount::where('id', $merchant_id)->value('openid'); $test_details['rule'] = MEarningRule::where('m_id', $merchant_id) ->where('name', 'evaluate')->where('type_id', $test_details['merchant_evaluate']['id']) ->select('ratio', 'forzen_time') ->first(); if ($test_details['rule'] === null) { $test_details['rule']['ratio'] = null; $test_details['rule']['forzen_time'] = null; } $jump_url = urlencode(env('APP_URL') . '/pu/#/evaluateDetails/' . $test_details['merchant_evaluate']['id']); $url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $merchant_id . '&from_openid=' . $openid . '&url=' . $jump_url; $qr_code_url = $this->getPreviewQrcode($url); $test_details['jump_url'] = $url; $test_details['url'] = $qr_code_url; return $this->success('ok', $test_details); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息了,请稍后再试'); } } /** * 商家添加评测产品到自己的服务里 * @param Request $request */ public function putTestItemToMerchant(Request $request){ try { $merchant_user_id = $request->account_id; $test_item_id = $request->test_item_id; $is_top = $request->is_top; $status = $request->status; if (!$test_item_id) { return $this->failure('评测项目ID不能为空'); } //查询一点灵订单价格,此单价不可低于一点灵订单价 $result = EvaluateService::testDetails($test_item_id); if (!$result) { return $this->failure('该产品已下架'); } $merchant_evaluate = MerchantEvaluate::where('test_item_id', $test_item_id) ->where('merchant_id', $merchant_user_id) ->withTrashed() ->first(); if ($merchant_evaluate) { if ($merchant_evaluate->deleted) { $merchant_evaluate->restore(); } $merchant_evaluate->status = $request->status; $merchant_evaluate->price = $result['price'] / 100; $merchant_evaluate->status = $status; if ($is_top == 1) { $merchant_evaluate->is_top = $is_top; $merchant_evaluate->top_time = $request->top_time; } $merchant_evaluate->save(); } else { $merchant_evaluate = new MerchantEvaluate(); $merchant_evaluate->test_item_id = $test_item_id; $merchant_evaluate->status = $request->status; $merchant_evaluate->merchant_id = $merchant_user_id; $merchant_evaluate->title = $result['title']; $merchant_evaluate->image = $result['image']; $merchant_evaluate->status = $status; if ($is_top == 1) { $merchant_evaluate->is_top = $is_top; $merchant_evaluate->top_time = $request->top_time; } $merchant_evaluate->test_item_type = $result['questions'][0]['type']; $merchant_evaluate->price = $result['price'] / 100; $merchant_evaluate->save(); } if ($request->has('ratio') && $request->ratio >= 0) { if ($request->ratio > 1.0) { return $this->failure('利润分成不可以大于100%'); } $MEarningRule = MEarningRule::where('m_id', $request->account_id) ->where('type_id', $merchant_evaluate->id) ->where('name', 'evaluate') ->first(); $rule = MEarningRule::where('m_id', $request->account_id) ->where('name', 'evaluate') ->where('type_id', 0) ->first(); if ($MEarningRule === null) { $MEarningRule = new MEarningRule(); $MEarningRule->m_id = $request->account_id; $MEarningRule->forzen_time = $request->forzen_time ?? 1; $MEarningRule->ratio = number_format($request->ratio, 2); $MEarningRule->type_id = $merchant_evaluate->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->name = 'evaluate'; $MEarningRule->save(); } else { $MEarningRule->forzen_time = $request->forzen_time ?? 1; $MEarningRule->ratio = number_format($request->ratio, 2); $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 */ public function searchMerchantEvaluate(Request $request) { try { $keyword = $request->keyword; $test_item_type = $request->test_item_type; $merchant_id = $request->account_id; $test_item_ids = MerchantEvaluate::where('merchant_id', $merchant_id) ->when($test_item_type, function ($query) use ($test_item_type) { $query->where('test_item_type', $test_item_type); }) ->pluck('test_item_id'); $return_data = EvaluateList::whereIn('test_item_id', $test_item_ids) ->when($keyword, function ($query) use ($keyword) { $query->where('name', 'like', "%$keyword%"); //$query->where('desc', 'like',"%$keyword%"); }) ->get(); return $this->success('ok', $return_data); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息了,请稍后再试'); } } /** * 搜索所有的评测 * @param Request $request * @return JsonResponse|string */ public function searchEvaluate(Request $request){ $keyword = $request->keyword; $test_item_type = $request->test_item_type; $return_data = EvaluateList::when($keyword, function ($query) use ($keyword) { $query->where('desc', 'like', "%$keyword%") ->orWhere('name', 'like', "%$keyword%"); }) ->when($test_item_type,function ($query) use ($test_item_type){ $query->where('test_type', $test_item_type); }) ->get(); return $this->success('ok', $return_data); } /** * 更新评测信息(置顶等) * @param Request $request * @param $id * @return JsonResponse */ public function updateMerchantEvaluate(Request $request,$id) { try { $m_id = $request->account_id; $is_top = $request->is_top; $top_time = $request->top_time; $id = $request->id; $merchant_evaluate = MerchantEvaluate::where('id', $id) ->where('merchant_id', $m_id) ->first(); if (!$merchant_evaluate) { return $this->failure('服务不存在'); } if ($is_top == 1) { $merchant_evaluate->is_top = $is_top; $merchant_evaluate->top_time = $top_time; $merchant_evaluate->save(); } if ($request->has('status')) { $merchant_evaluate->status = $request->status; $merchant_evaluate->save(); } if ($request->has('ratio') && $request->ratio >= 0) { if ($request->ratio > 1.0) { return $this->failure('利润分成不可以大于1'); } $MEarningRule = MEarningRule::where('m_id', $request->account_id) ->where('type_id', $merchant_evaluate->id) ->where('name', 'evaluate') ->first(); if ($MEarningRule === null) { $MEarningRule = new MEarningRule(); $MEarningRule->m_id = $request->account_id; $MEarningRule->forzen_time = $request->forzen_time ?? 1; $MEarningRule->name = 'evaluate'; $MEarningRule->ratio = number_format($request->ratio, 2); $MEarningRule->type_id = $merchant_evaluate->id; $MEarningRule->first_sharer = 0.3; $MEarningRule->last_sharer = 0.5; $MEarningRule->other_sharer = 0.2; $MEarningRule->save(); } else { MEarningRule::where('m_id', $request->account_id) ->where('name', 'evaluate') ->where('type_id', $merchant_evaluate->id) ->update([ 'forzen_time' => $request->forzen_time ?? 1, 'ratio' => number_format($request->ratio, 2) ]); } } return $this->success('ok'); }catch (\Exception $e){ $this->getError($e); return $this->failure('服务器休息了,请稍后再试'); } } /** *获取 * @param Request $request * @return JsonResponse|string */ public function getEvaluateOrder(Request $request){ try { $id = $request->id; $merchant_id = $request->account_id; $nopage = $request->nopage; $keyword = $request->keyword; $merchant_evaluate_ids = MerchantEvaluate::where('merchant_id', $merchant_id); if (isset($id)){ $merchant_evaluate_ids = $merchant_evaluate_ids->where('id',$id)->value('id'); if(!$merchant_evaluate_ids){ return $this->failure('评测不存在'); } }else{ $merchant_evaluate_ids = $merchant_evaluate_ids->pluck('id'); } $members = TouristOrder::with('viewer:avatar as pic,mobile,openid,sex,nickname', 'user_evaluate:id,created_at,order_id,evaluate_report','merUser', 'alliance', 'fromUser:user_id as id,avatar,mobile,openid,sex,nickname', 'mEarning:id,m_user_id,m_order_id,sharer,ratio,sub_ratio,value', 'mAdvanceEarning:id,m_user_id,m_order_id,sharer,ratio,sub_ratio,value', 'mEarning.user:id,pic,nickname,mobile', 'mAdvanceEarning.user:id,pic,nickname,mobile') // ->where('type','evaluate')->where('merchant_id',$merchant_id)->withCount('follow'); ->where('type','evaluate')->withCount('follow'); if(isset($id)) { $members->when($id, function ($query) use ($merchant_evaluate_ids) { $query->where('type_id', $merchant_evaluate_ids); }); }else{ $members->whereIn('type_id',$merchant_evaluate_ids); } if(isset($request->pay_status)){ $members = $members->where('pay_status',$request->pay_status); } if($keyword){ $members = $members->where('name','like',"%$keyword%") ->orWhere('mobile','like',"%$keyword%"); } if($nopage){ $members = $members->orderBy('id','desc')->get(); }else{ $members = $members->orderBy('id','desc')->paginate(); } foreach ($members as $key => $value) { if($value->created_at <'2022-3-21 18:00'){ $temp_sku = explode('-',$value->desc); if(!empty($temp_sku[1])){ $value->goods = $temp_sku[1]; } } $test_item_id = MerchantEvaluate::where('id',$value->type_id)->value('test_item_id'); $value->evaluate_type = EvaluateList::where('test_item_id',$test_item_id)->value('type'); if($value->channel== '福恋小程序'){ //渠道:0商家H5,1福恋H5,2福恋app,3福恋小程序 $wechat = Wechat::where('openid',$value->open_id)->first(); if($wechat){ $user = User::where('id',$wechat->user_id)->first(); if($user){ $userinfo['nickname'] = $user->nickname; $userinfo['pic'] = $user->photo?:($user->circle_avatar?:User::DefaultAvatar); $value->merchant_user = $userinfo; } } }else{ //渠道:0商家H5,1福恋H5,2福恋app,3福恋小程序 $rand_str = $this->randString(8); $nickname = '用户'.$rand_str; if($value->mobile && !($value->mobile == '匿名用户' || $value->mobile == '未获取' )) { $user = User::where('mobile', $value->mobile) ->select('nickname', 'circle_avatar as pic') ->first(); if ($user && ($user['nickname'] || $user['pic'])) { $value->merchant_user = $user; } else { if($value->mer_user && $value->mer_user['pic']){ $user_info['pic'] = $value->mer_user['pic']; }elseif($value->viewer && $value->viewer['pic']){ $user_info['pic'] = $value->viewer['pic']; }else{ $user_info['pic'] = User::DefaultAvatar; } if($value->mer_user && $value->mer_user['nickname']){ $user_info['nickname'] = $value->mer_user['nickname']; }elseif($value->viewer && $value->viewer['nickname']){ $user_info['nickname'] = $value->viewer['nickname']; }else{ $user_info['nickname'] = User::DefaultAvatar; } $value->merchant_user = $user_info; } }elseif($value->open_id){ $wechat = Wechat::where('official_openid',$value->open_id) ->select('user_id','nickname','avatar as pic') ->first(); if($wechat && ($wechat['nickname'] || $wechat['pic'] )) { $value->merchant_user = $wechat; }elseif($wechat && $wechat->user_id){ $user = User::where('id', $wechat->user_id) ->select('nickname', 'circle_avatar as pic') ->first(); if ($user && ($user['nickname'] || $user['pic'])) { $value->merchant_user = $user; } else { if($value->mer_user && $value->mer_user['pic']){ $user_info['pic'] = $value->mer_user['pic']; }elseif($value->viewer && $value->viewer['pic']){ $user_info['pic'] = $value->viewer['pic']; }else{ $user_info['pic'] = User::DefaultAvatar; } if($value->mer_user && $value->mer_user['nickname']){ $user_info['nickname'] = $value->mer_user['nickname']; }elseif($value->viewer && $value->viewer['nickname']){ $user_info['nickname'] = $value->viewer['nickname']; }else{ $user_info['nickname'] = '未获取';; } $value->merchant_user = $user_info; } }else{ if($value->mer_user && $value->mer_user['pic']){ $user_info['pic'] = $value->mer_user['pic']; }elseif($value->viewer && $value->viewer['pic']){ $user_info['pic'] = $value->viewer['pic']; }else{ $user_info['pic'] = User::DefaultAvatar; } if($value->mer_user && $value->mer_user['nickname']){ $user_info['nickname'] = $value->mer_user['nickname']; }elseif($value->viewer && $value->viewer['nickname']){ $user_info['nickname'] = $value->viewer['nickname']; }else{ $user_info['nickname'] = '未获取'; } $value->merchant_user = $user_info; } }else{ if($value->mer_user && $value->mer_user['pic']){ $user_info['pic'] = $value->mer_user['pic']; }elseif($value->viewer && $value->viewer['pic']){ $user_info['pic'] = $value->viewer['pic']; }else{ $user_info['pic'] = User::DefaultAvatar; } if($value->mer_user && $value->mer_user['nickname']){ $user_info['nickname'] = $value->mer_user['nickname']; }elseif($value->viewer &&$value->viewer['nickname']){ $user_info['nickname'] = $value->viewer['nickname']; }else{ $user_info['nickname'] = '未获取'; } $value->merchant_user = $user_info; } } $value->linkmen = json_decode( $value->linkmen,true); if($value->mobile=='未获取'){ $value->mobile = $value->linkmen[0]['mobile']??'未获取'; } if($value->name=='未获取'){ $value->name = $value->linkmen[0]['name']??'未获取'; } } return $this->success('ok',$members); } catch (\Exception $e) { $this->getError($e); return $this->failure('操作失败'); } } /** * 获取用户评测详情 * @param Request $request * @return JsonResponse|string */ public function getUserEvaluate(Request $request){ $order_id = $request->order_id; if(config('app.debug')){ if(!$order_id){ return $this->failure('订单号必传'); } } $order = TouristOrder::where('trade_no',$order_id)->first(); $merchant_eval = MerchantEvaluate::where("id", $order->type_id)->first(); $is_disc = false; if ($merchant_eval->test_item_id == 10007) { $is_disc = true; } $details = UserEvaluate::where('order_id',$order_id)->select('id','order_id','answer','report', "questions") ->first(); if(!$details){ return $this->failure('评测不存在'); } $details->evaluate_report = json_decode($details->evaluate_report); if ($is_disc) { $details->answer = $this->discResult($details); } else { $details->answer = json_decode($details->answer); foreach ($details->answer as $key => $val){ if (empty($val) || empty(isset($val->questionId))) continue; $user_question = EvaluateQuestion::where('id',$val->questionId)->value('question_name'); $user_answer = EvaluateAnswer::where('id',$val->answerId)->value('content'); $val->user_question = $user_question; $val->user_answer = $user_answer; } } $url = env('APP_URL') . '/pu/#/reviewResults/'.$order_id.'?merchant_id='.$order->merchant_id; $qr_code_url = $this->getPreviewQrcode($url); $details->jump_ur = $url; $details->url = $qr_code_url; return $this->success('ok',$details); } public function discResult($details) { $answers = json_decode($details->answer, true); $questions = json_decode($details->questions, true); foreach($questions as $key => &$question) { $question["user_answer"] = $answers[$key]["answerName"]; $question["user_question"] = $question["question_name"]; } return $questions; } }