post('id'); $person_id = $request->post('person'); $person_info = DB::table('web_user_person')->where('id', $person_id)->first(); if (!$person_info) { return \Yz::echoError('人员信息不存在'); } $log_info = DB::table('questionnaires_logs')->where('id', $id)->where('person_id', $person_id)->first(); if (!$log_info) { return \Yz::echoError('问卷信息不存在'); } DB::table('questionnaires_logs')->where('id', $id)->update(['del' => 1]); return \Yz::Return(true, '操作完成'); } public function list(Request $request) { $person_id = $request->post('person'); $person_info = DB::table('web_user_person')->where('id', $person_id)->first(); if (!$person_info) { return \Yz::echoError('人员信息不存在'); } $log = DB::table('questionnaires_logs')->select(['*']) ->selectRaw("IFNULL((select `name` from questionnaires where questionnaires.id = questionnaires_logs.person_id),'') as title") ->where('items', '!=', '[]') ->where('person_id', $person_id) ->where('del', 2) ->orderBy('id', 'desc')->get(); $list = []; foreach ($log as $value) { $person_info = json_decode($value->person_info, true); $age = !!$person_info['birthday'] ? date('Y') - date('Y', strtotime($person_info['birthday'])) : 0; $check_items = json_decode($value->check_items, true); $count = count($check_items); $list[] = [ 'id' => $value->id, 'title' => $value->title, 'name' => $person_info['name'], 'age' => $age, 'created_at' => $value->created_at, 'count' => $count ]; } return \Yz::Return(true, '操作完成', [ 'log'=>$log, 'list' => $list, ]); } public function push(Request $request) { $id = $request->post('id'); $person_id = $request->post('person'); $person_info = DB::table('web_user_person')->where('id', $person_id)->first(); if (!$person_info) { return \Yz::echoError('人员信息不存在'); } $log_info = DB::table('questionnaires_logs')->where('question_id', $id)->where('person_id', $person_id)->orderBy('id', 'desc')->first(); if (!$log_info) { return \Yz::echoError('未查询到答题记录'); } $content = json_decode($log_info->content, true); return \Yz::Return(true, '操作完成', [ 'info' => $content, ]); } public function info(Request $request) { $id = $request->post('id'); $person_id = $request->post('person'); $person_info = DB::table('web_user_person')->where('id', $person_id)->first(); if (!$person_info) { return \Yz::echoError('人员信息不存在'); } $log_info = DB::table('questionnaires_logs')->where('id', $id)->where('person_id', $person_id)->first(); if (!$log_info) { return \Yz::echoError('问卷信息不存在'); } $person_info = json_decode($log_info->person_info, true); $age = !!$person_info['birthday'] ? date('Y') - date('Y', strtotime($person_info['birthday'])) : 0; $sex = !!$person_info['sex'] ? $person_info['sex'] : 1; $weight = !!$log_info->weight ? $log_info->weight : 0; $height = !!$log_info->height ? $log_info->height : 0; $items_ids = json_decode($log_info->check_items, true); $check_items = []; if (!!count($items_ids)) { $items_info = DB::table('question_items')->whereIn('id', $items_ids)->get(); foreach ($items_info as $key => $value) { $check_items[] = [ 'id' => $value->id, 'name' => $value->name, ]; } } $items = json_decode($log_info->items, true); $check_items_array = json_decode($log_info->check_items_array, true); $wh = '-'; if (!!$weight && $height) { $wh = round($weight / pow($height / 100, 2), 2); } return \Yz::Return(true, '操作完成', [ 'date' => date('Y-m-d', strtotime($log_info->created_at)), 'sex' => $sex, 'age' => $age, 'weight' => $wh, 'items' => $items, 'check_items' => $check_items, 'check_items_array' => $check_items_array, 'price' => [ 'jichu' => self::sum_items($items, $check_items_array['jichu']), 'tuijian' => self::sum_items($items, $check_items_array['tuijian']), 'gaoduan' => self::sum_items($items, $check_items_array['gaoduan']), ], 'original_price' => [ 'jichu' => self::sum_items($items, $check_items_array['jichu'], false), 'tuijian' => self::sum_items($items, $check_items_array['tuijian'], false), 'gaoduan' => self::sum_items($items, $check_items_array['gaoduan'], false), ], 'count' => [ 'jichu' => self::item_count($items, $check_items_array['jichu']), 'tuijian' => self::item_count($items, $check_items_array['tuijian']), 'gaoduan' => self::item_count($items, $check_items_array['gaoduan']), ] ]); } public function item_count($items, $check_items) { if (count($items)) { $items_count = DB::table('items')->whereIn('item_id', $items) ->where('keshi_name', '!=', '材料费')->where('status', 1)->count(); } else { $items_count = 0; } if (count($check_items['items'])) { $check_sum_count = DB::table('items') ->whereIn('item_id', $check_items['items']) ->where('keshi_name', '!=', '材料费')->where('status', 1)->count(); } else { $check_sum_count = 0; } if (count($check_items['combo_items'])) { $combo_count = DB::table('items') ->whereIn('item_id', $check_items['combo_items']) ->where('keshi_name', '!=', '材料费')->where('status', 1)->count(); } else { $combo_count = 0; } $ic = $items_count + $check_sum_count + $combo_count; return $ic; } public function sum_items($items, $check_items, $zk = true) { if (count($items)) { $sum = DB::table('items')->whereIn('item_id', $items)->where('status', 1)->sum('price'); } else { $sum = 0; } if (count($check_items['items'])) { $check_sum = DB::table('items')->whereIn('item_id', $check_items['items'])->where('status', 1)->sum('price'); } else { $check_sum = 0; } if (count($check_items['combo_items'])) { $combo = DB::table('items')->whereIn('item_id', $check_items['combo_items'])->where('status', 1)->sum('price'); } else { $combo = 0; } if (!!$zk) { $zhekou = config('app.globals.Wj_ZheKou'); } else { $zhekou = 1; } return number_format((($combo + $sum + $check_sum) * $zhekou), 2, '.', ''); } public function submit(Request $request) { $question_id = $request->post('question_id'); $content = $request->post('content'); $use_time = $request->post('use_time'); $question_info = DB::table('questionnaires')->where('id', $question_id)->first(); if (!$question_info) { return \Yz::echoError('问卷不存在'); } $person_id = $request->post('person_id'); $person_info = DB::table('web_user_person')->where('id', $person_id)->first(); if (!$person_info) { return \Yz::echoError('人员信息不存在'); } $question_ids = []; $question_map = []; $content_sex=''; $content_hunyin=''; $feipang=false; $height_temp=0; $weight_temp=0; foreach ($content as $key => $value) { if (strpos($value['question'], "身高")!== false) { $height_temp = $value['value']; } if (strpos($value['question'], "体重")!== false) { $weight_temp = $value['value']; } if ($height_temp>0 && $weight_temp>0) { $wh_temp = round($weight_temp / pow($height_temp / 100, 2), 2); if ($wh_temp > 30) { $feipang=true; } } } if($feipang){ foreach ($content as $key => $value) { if (strpos($value['question'], "是否肥胖")!== false) { $content[$key]['value']="A. 是"; $content[$key]['active']=0; } } } foreach ($content as $key => $value) { $question_ids[] = $value['id']; $question_map["q{$value['id']}"] = $value; if ($value['question'] == '性别') { $content_sex = $value['value']; } if (strpos($value['question'], "婚姻状况") !== false) { $content_hunyin = $value['value']; } } $type = $question_info->type; $items = json_decode($question_info->items, true); //获取绑定套餐的id if(strpos($content_sex, "男") !== false){ $jichu_combo_new = (isset($question_info->jichu_nan) and !empty($question_info->jichu_nan))?$question_info->jichu_nan:0; $tuijian_combo_new = (isset($question_info->tuijian_nan) and !empty($question_info->tuijian_nan))?$question_info->tuijian_nan:0; $gaoduan_combo_new = (isset($question_info->gaoduan_nan) and !empty($question_info->gaoduan_nan))?$question_info->gaoduan_nan:0; } if(strpos($content_sex, "女") !== false){ if(strpos($content_hunyin, "未婚")!== false){ $jichu_combo_new = (isset($question_info->jichu_nv_weihun) and !empty($question_info->jichu_nv_weihun))?$question_info->jichu_nv_weihun:0; $tuijian_combo_new = (isset($question_info->tuijian_nv_weihun) and !empty($question_info->tuijian_nv_weihun))?$question_info->tuijian_nv_weihun:0; $gaoduan_combo_new = (isset($question_info->gaoduan_nv_weihun) and !empty($question_info->gaoduan_nv_weihun))?$question_info->gaoduan_nv_weihun:0; } if(strpos($content_hunyin, "已婚")!== false){ $jichu_combo_new = (isset($question_info->jichu_nv_yihun) and !empty($question_info->jichu_nv_yihun))?$question_info->jichu_nv_yihun:0; $tuijian_combo_new = (isset($question_info->tuijian_nv_yihun) and !empty($question_info->tuijian_nv_yihun))?$question_info->tuijian_nv_yihun:0; $gaoduan_combo_new = (isset($question_info->gaoduan_nv_yihun) and !empty($question_info->gaoduan_nv_yihun))?$question_info->gaoduan_nv_yihun:0; } } //获取套餐的项目 $jichu_items_ids = []; if ($jichu_combo_new) { $jichu_combo_items = DB::table('combo_items')->where('combo_id', $jichu_combo_new)->get(); foreach ($jichu_combo_items as $key => $value) { $jichu_items_ids[]=$value->item_id; } } $tuijian_items_ids = []; if ($tuijian_combo_new) { $tuijian_combo_items = DB::table('combo_items')->where('combo_id', $tuijian_combo_new)->get(); foreach ($tuijian_combo_items as $key => $value) { $tuijian_items_ids[]=$value->item_id; } } $gaoduan_items_ids = []; if ($gaoduan_combo_new) { $gaoduan_combo_items = DB::table('combo_items')->where('combo_id', $gaoduan_combo_new)->get(); foreach ($gaoduan_combo_items as $key => $value) { $gaoduan_items_ids[]=$value->item_id; } } $check_items = []; $check_items_array = [ 'jichu' => [ 'combo' => '0', 'combo_items' => [], 'jichu' => $jichu_combo_new, 'items' => $jichu_items_ids ], 'tuijian' => [ 'combo' => '0', 'combo_items' => [], 'jichu' => $jichu_combo_new, 'items' =>$tuijian_items_ids ], 'gaoduan' => [ 'combo' => '0', 'combo_items' => [], 'jichu' => $jichu_combo_new, 'items' => $gaoduan_items_ids ], ]; if (!!count($question_ids)) { $question_questions = DB::table('question_questions')->whereIn('id', $question_ids)->get(); } else { $question_questions = []; } $weight = 0; $height = 0; $score = 0; foreach ($question_questions as $value) { $id = $value->id; $option = json_decode($value->option, true); if (in_array($value->type, ['input', 'date', 'city'])) { if ($option['input']['value'] === '${体重}') { if (isset($question_map["q{$id}"])) { $weight = $question_map["q{$id}"]['value']; } } if ($option['input']['value'] === '${身高}') { if (isset($question_map["q{$id}"])) { $height = $question_map["q{$id}"]['value']; } } } else { if (isset($question_map["q{$id}"])) { $v = $question_map["q{$id}"]['active']; $item_option = $option['select']['value'][$v]; if ($item_option['type'] === 'score') { if (!isset($item_option['score'])) { $item_option['score'] = 0; } foreach ($content as $content_key => $content_item) { if ($content_item['id'] == $id) { $content[$content_key]['score'] = $item_option['score']; } } $score = $score + $item_option['score']; } if ($item_option['type'] === 'items') { foreach ($item_option['items'] as $item) { if (!in_array($item, $check_items)) { $check_items_info = DB::table('question_items')->where('id', $item)->first(); if(strpos($content_sex, "男") !== false){ $check_items_info->jichu = $check_items_info->jichu_nan; $check_items_info->tuijian = $check_items_info->tuijian_nan; $check_items_info->gaoduan = $check_items_info->gaoduan_nan; } if(strpos($content_sex, "女")!== false){ if(strpos($content_hunyin, "未婚")!== false){ $check_items_info->jichu = $check_items_info->jichu_nv_weihun; $check_items_info->tuijian = $check_items_info->tuijian_nv_weihun; $check_items_info->gaoduan = $check_items_info->gaoduan_nv_weihun; } if(strpos($content_hunyin, "已婚")!== false){ $check_items_info->jichu = $check_items_info->jichu_nv_yihun; $check_items_info->tuijian = $check_items_info->tuijian_nv_yihun; $check_items_info->gaoduan = $check_items_info->gaoduan_nv_yihun; } } if (!!$check_items_info) { $check_items[] = (string)$item; if ($check_items_info->jichu != '0') { $jichu_combo_info = DB::table('combos')->where('combo_id', $check_items_info->jichu)->first(); if (!!$jichu_combo_info) { if ($check_items_array['jichu']['combo'] == '0') { $items_ids = []; $combo_items = json_decode($jichu_combo_info->items, true); foreach ($combo_items as $combo_item) { $items_ids[] = $combo_item['id']; } $check_items_array['jichu']['combo'] = $check_items_info->jichu; $check_items_array['jichu']['combo_items'] = $items_ids; } else { $items_ids = []; $combo_items = json_decode($jichu_combo_info->items, true); foreach ($combo_items as $combo_item) { if ( !in_array($combo_item['id'], $check_items_array['jichu']['combo_items']) && !in_array($combo_item['id'], $check_items_array['jichu']['items']) ) { $items_ids[] = $combo_item['id']; } } $check_items_array['jichu']['items'] = array_merge($check_items_array['jichu']['items'], $items_ids); } } } if ($check_items_info->tuijian != '0') { $tuijian_combo_info = DB::table('combos')->where('combo_id', $check_items_info->tuijian)->first(); if (!!$tuijian_combo_info) { if ($check_items_array['tuijian']['combo'] == '0') { $items_ids = []; $combo_items = json_decode($tuijian_combo_info->items, true); foreach ($combo_items as $combo_item) { $items_ids[] = $combo_item['id']; } $check_items_array['tuijian']['combo'] = $check_items_info->tuijian; $check_items_array['tuijian']['combo_items'] = $items_ids; } else { $items_ids = []; $combo_items = json_decode($tuijian_combo_info->items, true); foreach ($combo_items as $combo_item) { if ( !in_array($combo_item['id'], $check_items_array['tuijian']['combo_items']) && !in_array($combo_item['id'], $check_items_array['tuijian']['items']) ) { $items_ids[] = $combo_item['id']; } } $check_items_array['tuijian']['items'] = array_merge($check_items_array['tuijian']['items'], $items_ids); } } } if ($check_items_info->gaoduan != '0') { $gaoduan_combo_info = DB::table('combos')->where('combo_id', $check_items_info->gaoduan)->first(); if (!!$gaoduan_combo_info) { if ($check_items_array['gaoduan']['combo'] == '0') { $items_ids = []; $combo_items = json_decode($gaoduan_combo_info->items, true); foreach ($combo_items as $combo_item) { $items_ids[] = $combo_item['id']; } $check_items_array['gaoduan']['combo'] = $check_items_info->gaoduan; $check_items_array['gaoduan']['combo_items'] = $items_ids; } else { $items_ids = []; $combo_items = json_decode($gaoduan_combo_info->items, true); foreach ($combo_items as $combo_item) { if ( !in_array($combo_item['id'], $check_items_array['gaoduan']['combo_items']) && !in_array($combo_item['id'], $check_items_array['gaoduan']['items']) ) { $items_ids[] = $combo_item['id']; } } $check_items_array['gaoduan']['items'] = array_merge($check_items_array['gaoduan']['items'], $items_ids); } } } } } } } } } } preg_match_all('/\d+/', $weight, $matches); $weight = $matches[0][0]; $weight = $weight ? $weight : 0; preg_match_all('/\d+/', $height, $matches); $height = $matches[0][0]; $height = $height ? $height : 0; $ip = self::getTrustedProxiesIp(); $ip2region = new \Ip2Region(); $record = $ip2region->simple($ip); $ip_info = ''; if (!!$record) { $ip_info = $record; } $log_id = DB::table('questionnaires_logs')->insertGetId([ 'question_id' => $question_id, 'type' => $type, 'weight' => $weight, 'height' => $height, 'use_time' => $use_time, 'ip' => $ip, 'ip_info' => $ip_info, 'score' => $score, 'order_id' => '0', 'person_id' => $person_id, 'person_info' => json_encode($person_info, JSON_UNESCAPED_UNICODE), 'content' => json_encode($content, JSON_UNESCAPED_UNICODE), 'items' => json_encode($items, JSON_UNESCAPED_UNICODE), 'check_items' => json_encode($check_items, JSON_UNESCAPED_UNICODE), 'check_items_array' => json_encode($check_items_array, JSON_UNESCAPED_UNICODE), 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]); return \Yz::Return(true, '操作完成', [ 'id' => $log_id ]); } public function getTrustedProxiesIp() { //获取用户真实ip if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } $res = preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches[0] : ''; return $res; } }