Files
ProxyPanel/app/Http/Controllers/Controller.php
Bretton d1581f0e33 1.3
功能添加/重置
1. 商品限购功能重置 - 商品为0时下架
2. 添加用户付费自行重置套餐流量 - 可规定价格让用户重置或不开启功能
3. 邮箱注册增加白名单 - 白名单为用户只能使用固定邮箱后缀注册
4. 节点TCP和ICMP检测 - 节点阻断检测
5. 优惠券规则添加 - 满XX元抵XX,或者满XX元打折

页面添加与修改
1. 节点信息简化
2. 系统页面排版优化
3. 注册页面全新的TOS和AUP显示
4. 添加订阅记录查询页面
5. 人性化删除确认页

BUG修复和优化
1. 流量重置日相关代码统一
2. 众多代码简化
3. auth相关css导致的宽度变动bug修复
2020-08-05 03:20:19 +08:00

168 lines
3.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Models\ReferralLog;
use App\Http\Models\SensitiveWords;
use App\Http\Models\UserBalanceLog;
use Exception;
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($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 '';
}
}
}