public function violation() { if (!Sentry::check()) { return Response::json(['errCode' => 10, 'message' => '请登录']); } //$current_user = User::find( Sentry::getUser()->user_id ); $current_user = Sentry::getUser(); if ($current_user->is_common_user() && static::is_reach_search_limit($current_user->user_id, 'violation')) { return Response::json(['errCode' => 2, 'message' => '您已经达到查询上限。每日可查询2次']); } $params = Input::all(); $rules = ['engineCode' => 'required|size:6', 'frameCode' => 'required|size:6', 'licensePlate' => 'required|size:7', 'licenseType' => 'required|size:2']; $messages = ['required' => '请输入:attribute', 'size' => ':attribute位数不正确']; $attributes = ['engineCode' => '发动机号后六位', 'frameCode' => '车架号码', 'licensePlate' => '车牌号码', 'licenseType' => '车辆类型']; $validator = Validator::make($params, $rules, $messages, $attributes); // 格式不对,将返回第一个错误 if ($validator->fails()) { return Response::json(['errCode' => 1, 'message' => $validator->messages()->first()]); } try { // 请求数据 $search_result = BusinessController::violation(TokenController::getAccessToken($current_user), $params['engineCode'], $params['licensePlate'], $params['licenseType']); $account = ['unit' => $search_result['account']['violationUnit'], 'balance' => $search_result['account']['balance']]; // 解析请求 $result_to_keep = []; $result_to_show = []; $search_result['data']['returnCode'] = (int) $search_result['data']['returnCode']; if ($search_result['data']['returnCode'] == 1) { foreach ($search_result['data']['body'] as $value) { // 过滤错误 if (isset($value['tips'])) { throw new OperationException('查询失败', 32); } // 只显示未交款或未处理的的违章信息 if (!($value['clbj'] == '1' && $value['jkbj'] == '1')) { // 根据序号前六位查找违章城市 $value['wfcs'] = static::convert_xh(substr($value['xh'], 0, 6)); array_push($result_to_show, $value); // 未处理且违法记分为0的,则可以处理 if ($value['wfjfs'] == '0') { array_push($result_to_keep, $value); } } } } else { throw new OperationException('查询失败', 32); } // 违章信息存到session,以便下单 // 没有违章记录则不保存 if (count($result_to_keep)) { // 取出序号 $violations_xh = array_map(function ($r) { return $r['xh']; }, $result_to_keep); // 重新拼接,序号作为键,违章信息作为值 $result_to_keep = array_combine($violations_xh, $result_to_keep); $service_fee = BusinessController::getServiceFee(); $express_fee = BusinessController::getExpressFee(); $info = ['car_type_no' => $params['licenseType'], 'car_plate_no' => $params['licensePlate'], 'car_engine_no' => $params['engineCode'], 'car_frame_no' => $params['frameCode']]; // 以此方式计算一次查询的sign $sign = md5(http_build_query($info)); // 如果Session中存在已查询过的数据,取Session中数据 if (Session::has('violations')) { $violations = Session::get('violations'); } else { $violations = []; } // 判断是否存在该次查询的数据 if (array_key_exists($sign, $violations)) { // 判断状态码 if ($violations[$sign]['info']['status'] == AgencyController::$AGENCY_STATUS_CONFIRMED) { return Response::json(['errCode' => 3, 'message' => '您已确认办理该车辆违章信息,请到提交订单页面确认或取消后再查询', 'sign' => $sign]); } $service_fee = array_get($violations, $sign . '.info.service_fee'); // 过滤已经存在的违章信息 $violations[$sign]['results'] = array_replace($violations[$sign]['results'], $result_to_keep); } else { $info['service_fee'] = $service_fee; $info['express_fee'] = $express_fee; $info['status'] = AgencyController::$AGENCY_STATUS_SEARCHED; $violations[$sign] = ['info' => $info, 'results' => $result_to_keep]; } Session::put('violations', $violations); } } catch (OperationException $e) { $return_message = static::process_error($e->getCode(), $e->getMessage()); $return_message['user_type'] = $current_user->user_type; // 普通用户返回剩余查询次数 if ($current_user->is_common_user() && $e->getCode() < 50) { static::increase_search_count($current_user->user_id); $return_message['remain_search_count'] = static::get_search_count_remain($current_user->user_id); } else { if ($current_user->is_business_user() && isset($account)) { $return_message['account'] = $account; } } return Response::json($return_message); } catch (\Exception $e) { return Response::json(static::process_error($e->getCode(), $e->getMessage())); } $return_message = ['errCode' => 0, 'violations' => $result_to_show]; // 普通用户返回剩余查询次数 if ($current_user->is_common_user()) { static::increase_search_count($current_user->user_id); $return_message['remain_search_count'] = static::get_search_count_remain($current_user->user_id); } else { if ($current_user->is_business_user()) { $return_message['account'] = $account; } } $return_message['user_type'] = $current_user->user_type; if (isset($sign)) { $return_message['sign'] = $sign; } if (isset($service_fee)) { $return_message['service_fee'] = $service_fee; } return Response::json($return_message); }
public function changeServiceUnivalence() { $userId = Input::get("user_id"); $user = BusinessUser::where("user_id", "=", $userId)->get(); $agencyUnivalence = BusinessController::getServiceFee($userId); $expressUnivalence = BusinessController::getExpressFee($userId); $defaultAgencyUnivalence = DB::table('fee_types')->select('number')->where("category", "30")->where("item", "1")->first(); $defaultExpressUnivalence = DB::table('fee_types')->select('number')->where("category", "20")->where("item", "1")->first(); return View::make('pages.admin.business-center.change-service-univalence', ["defaultExpressUnivalence" => $defaultExpressUnivalence->number, "defaultAgencyUnivalence" => $defaultAgencyUnivalence->number, "expressUnivalence" => $expressUnivalence, "agencyUnivalence" => $agencyUnivalence, "username" => $user[0]->business_name, "userId" => $userId]); }