countLine($file); if($fileLines < 15000){ return FALSE; } $fp = fopen($file, "r+"); assert($n > 0); $pos = $n+1; $lines = []; while(count($lines) <= $n){ try{ fseek($fp, -$pos, SEEK_END); } catch(Exception $e){ fseek(0); break; } $pos *= $base; while(!feof($fp)){ array_unshift($lines, fgets($fp)); } } return array_slice($lines, 0, $n); } /** * 计算文件行数 */ public function countLine($file) { $fp = fopen($file, "r"); $i = 0; while(!feof($fp)){ //每次读取2M if($data = fread($fp, 1024*1024*2)){ //计算读取到的行数 $num = substr_count($data, "\n"); $i += $num; } } fclose($fp); return $i; } /** * 记录余额操作日志 * * @param int $userId 用户ID * @param string $oid 订单ID * @param int $before 记录前余额 * @param int $after 记录后余额 * @param int $amount 发生金额 * @param string $desc 描述 * * @return int */ public function addUserBalanceLog($userId, $oid, $before, $after, $amount, $desc = '') { $log = new UserBalanceLog(); $log->user_id = $userId; $log->order_id = $oid; $log->before = $before; $log->after = $after; $log->amount = $amount; $log->desc = $desc; $log->created_at = date('Y-m-d H:i:s'); return $log->save(); } /** * 添加返利日志 * * @param int $userId 用户ID * @param int $refUserId 返利用户ID * @param int $oid 订单ID * @param int $amount 发生金额 * @param int $refAmount 返利金额 * * @return int */ public function addReferralLog($userId, $refUserId, $oid, $amount, $refAmount) { $log = new ReferralLog(); $log->user_id = $userId; $log->ref_user_id = $refUserId; $log->order_id = $oid; $log->amount = $amount; $log->ref_amount = $refAmount; $log->status = 0; return $log->save(); } // 获取敏感词 public function sensitiveWords($type) { return SensitiveWords::query()->where('type',$type)->get()->pluck('words')->toArray(); } // 将Base64图片转换为本地图片并保存 function base64ImageSaver($base64_image_content) { // 匹配出图片的格式 if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){ $type = $result[2]; $directory = date('Ymd'); $path = '/assets/images/qrcode/'.$directory.'/'; if(!file_exists(public_path($path))){ // 检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir(public_path($path), 0755, TRUE); } $fileName = makeRandStr(18, TRUE).".{$type}"; if(file_put_contents(public_path($path.$fileName), base64_decode(str_replace($result[1], '', $base64_image_content)))){ chmod(public_path($path.$fileName), 0744); return $path.$fileName; }else{ return ''; } }else{ return ''; } } }