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() { return SensitiveWords::query()->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 ''; } } }