加密文件
<?php /** * 数据管理 * User: djw * Date: 2018/5/24 * Time: 14:45 */ namespace ai\Http\Controllers; use ai\Lib\Secrets; use ClassesWithParents\D; use Illuminate\Http\Request; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; class Data extends Controller { /** * 导入数据 */ public function import(Request $request) { if ($request->isMethod('get')) { // phpinfo();die; return view('data.import'); } else { $name = $request->name; $bus = $request->bus; $task = $request->task; $huashu = $request->huashu; $data_file = $request->file('data'); if($data_file -> isValid()) { //检验一下上传的文件是否有效. $clientName = $data_file->getClientOriginalName(); $pack_name = substr($clientName, 0, strrpos($clientName, '.')); // 包名 } $dst_path = Config::get('constants.UPLOAD_DATA').'/'.date('Y', time()) . '/' . date('m', time()) . '/' . date('d', time()); // 这里是如果上传文件过大 自己命令文件的处理代码 // $newName = md5(date("Y-m-d H:i:s").mt_rand(1000,9999)); // $entension = $data_file -> getClientOriginalExtension(); // $path = $request->file('data')->storeAs( // $dst_path, $newName.'.'.$entension // ); $path = $request->file('data')->store($dst_path); // $path = Storage::putFile('uploadData', $request->file('data')); $import_time= time(); $status = 2; // 默认为2 未完成 $operation = 2; // 默认为2 未完成 对应的关闭 $task_type = \ai\Models\Task::getTaskType($bus, $task); $task_type = $task_type->type; // dd($task_type->type); // dd($path); $data = $this->importData(public_path().'/upload/'.$path, $huashu, $pack_name); $post_url = 'http://192.168.8.69/api/batchImportData.php'; $result = post_api($post_url, $data); dd($result); $res = DB::table('a_data_packet')->insert(['name' => $name, 'business_id' => $bus, 'task_id' => $task, 'huashu_id' => $huashu, 'data_position' => $path, 'import_time' => $import_time, 'operation' => $operation,'status' => $status,'task_type' => $task_type]); if ($res) { return view('data.import', ['message' => '导入数据成功']); } } } /** 筛选任务数据管理页面 */ public function screenTask(Request $request) { // 搜索条件 数据包名 数据包ID 任务名称 商家名称 状态 $data_name = $request->data_name ? $request->data_name : ''; $data_id = $request->data_id ? $request->data_id : ''; $task_name = $request->task_name ? $request->task_name : ''; $bus_name = $request->bus_name ? $request->bus_name : ''; $status = $request->status; $task_type = 1; $datas = $this->getData($data_name, $data_id, $task_name, $bus_name, $status, $task_type); // dd($datas); // 分页 $perPage = Config::get('constants.PERPAGE'); if ($request->has('page')) { $current_page = $request->input('page'); $current_page = $current_page <= 0 ? 1 :$current_page; } else { $current_page = 1; } $data = Business::fenye($perPage, $current_page, $datas); $data = [ 'datas' => $data[0], 'paginator' => $data[1], 'total' => $data[2], 'data_name' => $data_name, 'data_id' => $data_id, 'task_name' => $task_name, 'bus_name' => $bus_name, 'status' => $status, ]; return view('data.screenTask.index') ->with($data) ; } private function getData($data_name, $data_id, $task_name, $bus_name, $status, $task_type) { $data_name = trim($data_name); $data_id = trim($data_id); $task_name = trim($task_name); $bus_name = trim($bus_name); $where_str = ' where 1 = 1'; if ($data_name) { $where_str .= " AND d.name like '%$task_name%'"; } if ($data_id) { $where_str .= " AND d.id = $data_id"; } if ($bus_name) { $where_str .= " AND b.name like '%$bus_name%'"; } if ($task_name) { $where_str .= " AND t.name like '%$task_name%'"; } if ($status) { $where_str .= " AND d.status = $status"; } if ($task_type) { $where_str .= " AND d.task_type = $task_type"; } $sql = "SELECT d.*, b.name as b_name, t.name as t_name FROM a_data_packet as d LEFT JOIN a_business as b ON d.business_id = b.id LEFT JOIN a_task as t ON d.task_id = t.id"; $sql .= $where_str; $sql .= " ORDER BY d.status asc"; $res = DB::select($sql); return $res; } /** * ajax 发布 */ public function release(Request $request) { $id = $request->id; $res = DB::table('a_data_packet')->where('id', $id)->update(['operation' => 3, 'status' => '3']); if ($res) { return ['status' => 1]; // 成功 } } /** * ajax 关闭 */ public function close(Request $request) { $id = $request->id; $res = DB::table('a_data_packet')->where('id', $id)->update(['operation' => 4, 'status' => '3']); if ($res) { return ['status' => 1]; // 成功 } } /** * 筛选数据 */ public function screen(Request $request) { } /** 转接任务数据管理页面 */ public function transferTask(Request $request) { // 搜索条件 数据包名 数据包ID 任务名称 商家名称 状态 $data_name = $request->data_name ? $request->data_name : ''; $data_id = $request->data_id ? $request->data_id : ''; $task_name = $request->task_name ? $request->task_name : ''; $bus_name = $request->bus_name ? $request->bus_name : ''; $status = $request->status; $task_type = 2; $datas = $this->getData($data_name, $data_id, $task_name, $bus_name, $status, $task_type); // dd($datas); // 分页 $perPage = Config::get('constants.PERPAGE'); if ($request->has('page')) { $current_page = $request->input('page'); $current_page = $current_page <= 0 ? 1 :$current_page; } else { $current_page = 1; } $data = Business::fenye($perPage, $current_page, $datas); $data = [ 'datas' => $data[0], 'paginator' => $data[1], 'total' => $data[2], 'data_name' => $data_name, 'data_id' => $data_id, 'task_name' => $task_name, 'bus_name' => $bus_name, 'status' => $status,
]; return view('data.transferTask.index') ->with($data) ; } /** 拨打任务数据管理页面 */ public function dialTask(Request $request) { // 搜索条件 数据包名 数据包ID 任务名称 商家名称 状态 $data_name = $request->data_name ? $request->data_name : ''; $data_id = $request->data_id ? $request->data_id : ''; $task_name = $request->task_name ? $request->task_name : ''; $bus_name = $request->bus_name ? $request->bus_name : ''; $status = $request->status; $task_type = 3; $datas = $this->getData($data_name, $data_id, $task_name, $bus_name, $status, $task_type); // dd($datas); // 分页 $perPage = Config::get('constants.PERPAGE'); if ($request->has('page')) { $current_page = $request->input('page'); $current_page = $current_page <= 0 ? 1 :$current_page; } else { $current_page = 1; } $data = Business::fenye($perPage, $current_page, $datas); $data = [ 'datas' => $data[0], 'paginator' => $data[1], 'total' => $data[2], 'data_name' => $data_name, 'data_id' => $data_id, 'task_name' => $task_name, 'bus_name' => $bus_name, 'status' => $status, ]; return view('data.dialTask.index') ->with($data) ; } /** * 导入数据接口 */ public function importData($path, $speech_id, $pack_name) { $contents = file_get_contents($path); $contents=str_replace(array("\n","\r"),"",trim($contents)); $phone_arr = str_split($contents, 11); $file = []; foreach ($phone_arr as $key=>$value) { $file[$key]['number'] = $value; // 数据 $file[$key]['data_id'] = time().$key; // 数据id } $app_id = 1; $time_stamp = time(); $signInfo = $app_id.$time_stamp; $public_key = Config::get('constants.PUBLIC_KEY'); $pu_key = openssl_pkey_get_public($public_key);// 可用返回资源id $public_encrypt = Secrets::public_encrypt($signInfo,$pu_key);//加密 $signInfo = urlencode($public_encrypt); // $signInfo = $public_encrypt; // var_dump($signInfo); $data = ['file' => $file, 'speech_id' => $speech_id, 'pack_name' => $pack_name, 'time_stamp' => $time_stamp, 'app_id' => $app_id, "signInfo" => $signInfo]; $data= json_encode($data); // dd($signInfo, $data); return $data; } }
使用 $app_id = 1; $time_stamp = time(); $signInfo = $app_id.$time_stamp; $public_key = Config::get('constants.PUBLIC_KEY'); $pu_key = openssl_pkey_get_public($public_key);// 可用返回资源id $public_encrypt = Secrets::public_encrypt($signInfo,$pu_key);//加密 $signInfo = urlencode($public_encrypt);