646 lines
29 KiB
PHP
646 lines
29 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers\Server\Admin;
|
||
|
||
use App\Http\Controllers\Controller;
|
||
use App\Models\CommunityActivity;
|
||
use App\Models\Coupon;
|
||
use App\Models\MerchantAccount;
|
||
use App\Models\Server\EvaluateAnswer;
|
||
use App\Models\Server\EvaluateDetail;
|
||
use App\Models\Server\EvaluateList;
|
||
use App\Models\Server\EvaluateQuestion;
|
||
use App\Models\Server\MEarningRule;
|
||
use App\Models\Server\MerchantEvaluate;
|
||
use App\Models\Server\TouristOrder;
|
||
use App\Models\Server\UserEvaluate;
|
||
use App\Models\User;
|
||
use App\Models\Wechat;
|
||
use App\Services\EvaluateService;
|
||
use Illuminate\Http\JsonResponse;
|
||
use Illuminate\Http\Request;
|
||
|
||
class EvaluateController extends Controller
|
||
{
|
||
|
||
/**
|
||
* 获取一点灵评测列表并存入数据库
|
||
*/
|
||
public function getTestListToDB(){
|
||
for($i = 1;$i<=9;$i++){
|
||
$y = 1;
|
||
do {
|
||
$data = EvaluateService::testList($y, $i);
|
||
if($data && $data['list']){
|
||
foreach ($data['list'] as $key => $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;
|
||
}
|
||
|
||
}
|