123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- <?php
- namespace App\Http\Controllers;
- use App\Http\Models\ReferralLog;
- use App\Http\Models\SensitiveWords;
- use App\Http\Models\UserBalanceLog;
- use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
- use Illuminate\Foundation\Bus\DispatchesJobs;
- use Illuminate\Foundation\Validation\ValidatesRequests;
- use Illuminate\Routing\Controller as BaseController;
- class Controller extends BaseController
- {
- use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
- // 生成随机密码
- public function makePasswd()
- {
- exit(makeRandStr());
- }
- // 生成VmessId
- public function makeVmessId()
- {
- exit(createGuid());
- }
- // 生成网站安全码
- public function makeSecurityCode()
- {
- exit(strtolower(makeRandStr(8)));
- }
- // 类似Linux中的tail命令
- public function tail($file, $n, $base = 5)
- {
- $fileLines = $this->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 '';
- }
- }
- }
|