Просмотр исходного кода

1.修正邀请码不带返利BUG
2.加入邀请码批量导出功能
3.更新readme

zhangjiangbin 8 лет назад
Родитель
Сommit
ab6f88fc6d

+ 1 - 1
app/Console/Commands/AutoDisableExpireUserJob.php

@@ -9,7 +9,7 @@ use Log;
 class autoDisableExpireUserJob extends Command
 {
     protected $signature = 'command:autoDisableExpireUserJob';
-    protected $description = '用户到期自动禁用';
+    protected $description = '自动禁用到期用户';
 
     public function __construct()
     {

+ 25 - 1
app/Http/Controllers/AdminController.php

@@ -26,6 +26,7 @@ use App\Http\Models\UserSubscribeLog;
 use App\Http\Models\UserTrafficDaily;
 use App\Http\Models\UserTrafficHourly;
 use App\Http\Models\UserTrafficLog;
+use Maatwebsite\Excel\Facades\Excel;
 use Illuminate\Http\Request;
 use Redirect;
 use Response;
@@ -1556,7 +1557,7 @@ class AdminController extends BaseController
     // 邀请码列表
     public function inviteList(Request $request)
     {
-        $view['inviteList'] = Invite::query()->with(['generator', 'user'])->orderBy('id', 'desc')->paginate(10)->appends($request->except('page'));
+        $view['inviteList'] = Invite::query()->with(['generator', 'user'])->orderBy('status', 'asc')->orderBy('id', 'desc')->paginate(10)->appends($request->except('page'));
 
         return Response::view('admin/inviteList', $view);
     }
@@ -1579,6 +1580,29 @@ class AdminController extends BaseController
         return Response::json(['status' => 'success', 'data' => '', 'message' => '生成成功']);
     }
 
+    // 导出邀请码
+    public function exportInvite(Request $request)
+    {
+        $inviteList = Invite::query()->where('status', 0)->orderBy('id', 'asc')->get();
+
+        $filename = '邀请码' . date('Ymd');
+        Excel::create($filename, function($excel) use($inviteList) {
+            $excel->sheet('邀请码', function($sheet) use($inviteList) {
+                $sheet->row(1, array(
+                    '邀请码', '有效期'
+                ));
+
+                if (!$inviteList->isEmpty()) {
+                    foreach ($inviteList as $k => $vo) {
+                        $sheet->row($k + 2, array(
+                            $vo->code, $vo->dateline
+                        ));
+                    }
+                }
+            });
+        })->export('xls');
+    }
+
     // 提现申请列表
     public function applyList(Request $request)
     {

+ 21 - 0
app/Http/Controllers/DonateController.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Response;
+
+class DonateController extends BaseController
+{
+    protected static $config;
+
+    function __construct()
+    {
+        self::$config = $this->systemConfig();
+    }
+
+    public function donate(Request $request)
+    {
+        return Response::view('admin/donate');
+    }
+}

+ 1 - 1
app/Http/Controllers/UserController.php

@@ -368,7 +368,7 @@ class UserController extends BaseController
 
         // 已生成的邀请码数量
         $num = Invite::query()->where('uid', $user['id'])->count();
-
+        
         $view['num'] = self::$config['invite_num'] - $num <= 0 ? 0 : self::$config['invite_num'] - $num; // 还可以生成的邀请码数量
         $view['inviteList'] = Invite::query()->where('uid', $user['id'])->with(['generator', 'user'])->paginate(10); // 邀请码列表
 

BIN
public/assets/images/donate.jpeg


+ 26 - 27
readme.md

@@ -1,3 +1,10 @@
+## 演示站(已挂)
+````
+http://www.ssrpanel.com
+用户名:admin
+密码:123456
+````
+
 ## 安装步骤
 #### 环境要求
 ````
@@ -16,17 +23,10 @@ PHP必须开启gd、fileinfo组件
 telegram频道:https://t.me/ssrpanel
 telegram群组:https://t.me/chatssrpanel
 本人未实名微信小号:dxstx77 (请勿任何转账、红包行为)
-严禁在TG群里喧哗,只聊VPS、技术不扯淡,更别刷屏惹众怒,否则踢3天,两次机会,第三次被踢你永远进不来,我都记得谁谁谁
+严禁在TG群里喧哗、谈论政治、发色情信息,只聊技术不扯淡,更别刷屏惹众怒,否则踢3天,两次机会,第三次被踢你永远进不来,我都记得谁谁谁
 ````
 
-## 演示站(已挂,求打赏)
-````
-http://www.ssrpanel.com
-用户名:admin
-密码:123456
-````
-
-![VPS推荐](https://github.com/ssrpanel/ssrpanel/wiki/VPS%E6%8E%A8%E8%8D%90)
+[VPS推荐](https://github.com/ssrpanel/ssrpanel/wiki/VPS%E6%8E%A8%E8%8D%90)
 ````
 部署面板必须得用到VPS
 强烈推荐使用1G以上内存的KVM架构的VPS
@@ -42,7 +42,7 @@ http://www.ssrpanel.com
 ````
 ![打赏作者](https://github.com/ssrpanel/ssrpanel/blob/master/public/assets/images/donate.jpeg?raw=true)
 
-### 打赏名单
+#### 打赏名单
 |昵称|金额|
 |:-------|--------:| 
 |Law-杰|¥10| 
@@ -68,6 +68,7 @@ http://www.ssrpanel.com
 |小孑、|¥20|
 |曾健|¥10|
 |Lojbk|¥10|
+|Denny Wei|¥100|
 
 
 这些捐赠的用途:
@@ -89,7 +90,7 @@ mysql 创建一个数据库,然后自行导入sql\db.sql
 config\database.php 中的mysql选项自行配置数据库
 ````
 
-#### 配置一下
+#### 其次配置一下运行环境
 ````
 cd ssrpanel/
 php composer.phar install
@@ -98,7 +99,7 @@ chown -R www:www storage/
 chmod -R 777 storage/
 ````
 
-#### NGINX配置文件加入
+#### 然后NGINX配置文件加入
 ````
 location / {
     try_files $uri $uri/ /index.php$is_args$args;
@@ -132,7 +133,8 @@ service php-fpm restart
 编辑crontab
 crontab -e
 
-然后加入如下(请自行修改ssrpanel路径)
+然后加入如下(请自行修改ssrpanel路径):
+(表示每分钟都执行定时任务,具体什么任务什么时候执行程序里已经定义了,请不要乱改,否则流量统计数据可能出错)
 * * * * * php /home/wwwroot/ssrpanel/artisan schedule:run >> /dev/null 2>&1
 ````
 
@@ -168,7 +170,7 @@ crontab -e
 ],
 ````
 
-## 日志分析(目前仅支持单机单节点)
+## 日志分析(仅支持单机单节点)
 ````
 找到SSR服务端所在的ssserver.log文件
 进入ssrpanel所在目录,建立一个软连接,并授权
@@ -205,7 +207,6 @@ chmod a+x fix_git.sh && sh fix_git.sh
 
 如果本地自行改了文件,想用回原版代码,请先备份好 config/database.php,然后执行以下命令:
 chmod a+x update.sh && sh update.sh
-
 ````
 
 ## 网卡流量监控一键脚本
@@ -268,7 +269,7 @@ vim user-config.json
 ## 校时
 ````
 如果架构是“一面板机-一数据库机-多节点机”,请务必保持各个服务器之间的时间一致,否则会影响节点在线数的准确性和单端口多用户功能的正常使用。
-推荐统一使用CST并安装校时服务:
+推荐统一使用CST时间并安装校时服务:
 vim /etc/sysconfig/clock 把值改为 Asia/Shanghai
 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
@@ -278,14 +279,12 @@ ntpdate cn.pool.ntp.org
 ````
 
 ## 致敬
-````
-@breakwa11
-@glzjin
-@orvice
-@ToyoDAdoubi
-@91yun
-@Akkariiin
-````
+- [@breakwa11](https://github.com/breakwa11)
+- [@glzjin](https://github.com/esdeathlove)
+- [@orvice](https://github.com/orvice)
+- [@ToyoDAdoubi](https://github.com/ToyoDAdoubi)
+- [@91yun](https://github.com/91yun)
+- [@Akkariiin](https://github.com/shadowsocksrr)
 
 ## 说明
 ````
@@ -295,17 +294,17 @@ ntpdate cn.pool.ntp.org
 4.内含简单的购物、优惠券、流量兑换、邀请码、推广返利&提现、文章管理、工单等模块
 5.节点支持分组,不同级别的用户可以看到不同级别分组的节点
 6.SS配置转SSR配置,轻松一键导入SS账号
-7.流量日志、单机单节点日志分析功能,知道用户最近都看了哪些网站
+7.流量日志、单机单节点日志分析功能
 8.强大的定时任务
 9.所有邮件投递都有记录
-10.账号临近到期、流量不够都会自动发邮件提醒,自动禁用到期、流量异常的账号
+10.账号临近到期、流量不够都会自动发邮件提醒,自动禁用到期、流量异常的账号,自动清除日志
 11.后台一键添加加密方式、混淆、协议、等级
 12.强大的后台一键配置功能
 13.屏蔽常见爬虫
 14.支持单端口多用户
 15.账号、节点24小时和近30天内的流量监控
 16.支持节点订阅功能,可一键封禁账号订阅地址
-17.引入serverStatus,可以在线实时查看节点的实时流量信息
+17.美观的国家图标
 ````
 
 ## 预览

+ 34 - 0
resources/views/admin/donate.blade.php

@@ -0,0 +1,34 @@
+@extends('admin.layouts')
+
+@section('css')
+    <link href="/assets/global/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css" rel="stylesheet" type="text/css" />
+@endsection
+@section('title', '控制面板')
+@section('content')
+    <!-- BEGIN CONTENT BODY -->
+    <div class="page-content">
+        <!-- BEGIN PAGE BASE CONTENT -->
+        <div class="row">
+            <div class="col-md-12">
+                <div class="portlet light bordered">
+                    <div class="portlet-body">
+                        <div class="row">
+                            <p>本程序免费、开源、无版权,要是觉得还不错,请打赏一下支持作者持续开发</p>
+                            <p>感恩的心,感谢有你</p>
+                            <p>Telegram频道:<a href="" target="_blank">https://t.me/ssrpanel</a></p>
+                            <p>Telegram群组:<a href="" target="_blank">https://t.me/chatssrpanel</a></p>
+                            <a href="https://github.com/ssrpanel/ssrpanel" target="_blank"><img src="{{asset('assets/images/donate.jpeg')}}" /></a>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- END PAGE BASE CONTENT -->
+    </div>
+    <!-- END CONTENT BODY -->
+@endsection
+@section('script')
+    <script type="text/javascript">
+        //
+    </script>
+@endsection

+ 13 - 1
resources/views/admin/inviteList.blade.php

@@ -41,6 +41,13 @@
                             <div class="caption">
                                 <span class="caption-subject font-dark bold uppercase">邀请码列表</span>
                             </div>
+                            <div class="actions">
+                                <div class="btn-group btn-group-devided" data-toggle="buttons">
+                                    <button class="btn sbold blue" onclick="exportInvite()"> 批量导出
+                                        <i class="fa fa-download"></i>
+                                    </button>
+                                </div>
+                            </div>
                         </div>
                         <div class="portlet-body">
                             <div class="table-scrollable table-scrollable-borderless">
@@ -64,7 +71,7 @@
                                             @foreach($inviteList as $invite)
                                                 <tr>
                                                     <td> {{$invite->id}} </td>
-                                                    <td> <a href="{{url('register?code='.$invite->code)}}" target="_blank">{{$invite->code}}</a> </td>
+                                                    <td> <a href="{{url('register?aff='.Session::get('user')['id'].'&code='.$invite->code)}}" target="_blank">{{$invite->code}}</a> </td>
                                                     <td> {{$invite->dateline}} </td>
                                                     <td> {{empty($invite->generator) ? '【账号已删除】' : $invite->generator->username}} </td>
                                                     <td> {{empty($invite->user) ? '' : $invite->user->username}} </td>
@@ -127,5 +134,10 @@
 
             return false;
         }
+
+        // 导出邀请码
+        function exportInvite() {
+            window.location.href = '{{url('admin/exportInvite')}}';
+        }
     </script>
 @endsection

+ 6 - 0
resources/views/admin/layouts.blade.php

@@ -270,6 +270,12 @@
                         </li>
                     </ul>
                 </li>
+                <li class="nav-item {{in_array(Request::getRequestUri(), ['/admin/donate']) ? 'active open' : ''}}">
+                    <a href="{{url('admin/donate')}}" class="nav-link nav-toggle">
+                        <i class="icon-question"></i>
+                        <span class="title">捐赠</span>
+                    </a>
+                </li>
             </ul>
             <!-- END SIDEBAR MENU -->
         </div>

+ 1 - 1
resources/views/user/invite.blade.php

@@ -55,7 +55,7 @@
                                             @foreach($inviteList as $key => $invite)
                                                 <tr>
                                                     <td> {{$key + 1}} </td>
-                                                    <td> <a href="{{url('register?code='.$invite->code)}}" target="_blank">{{$invite->code}}</a> </td>
+                                                    <td> <a href="{{url('register?aff='.Session::get('user')['id'].'&code='.$invite->code)}}" target="_blank">{{$invite->code}}</a> </td>
                                                     <td> {{$invite->dateline}} </td>
                                                     <td> {{empty($invite->user) ? '' : $invite->user->username}} </td>
                                                     <td>

+ 2 - 0
routes/web.php

@@ -36,6 +36,7 @@ Route::group(['middleware' => ['user', 'admin']], function() {
     Route::post('ticket/closeTicket', 'TicketController@closeTicket'); // 关闭工单
     Route::get('admin/inviteList', 'AdminController@inviteList'); // 邀请码列表
     Route::post('admin/makeInvite', 'AdminController@makeInvite'); // 生成邀请码
+    Route::get('admin/exportInvite', 'AdminController@exportInvite'); // 导出邀请码
     Route::get('admin/applyList', 'AdminController@applyList'); // 提现申请管理
     Route::get('admin/applyDetail', 'AdminController@applyDetail'); // 提现申请管理
     Route::post('admin/setApplyStatus', 'AdminController@setApplyStatus'); // 设置提现申请状态
@@ -76,6 +77,7 @@ Route::group(['middleware' => ['user', 'admin']], function() {
     Route::post('coupon/delCoupon', 'CouponController@delCoupon'); // 删除优惠券
     Route::get('coupon/exportCoupon', 'CouponController@exportCoupon'); // 导出优惠券
     Route::get('emailLog/logList', 'EmailLogController@logList'); // 邮件发送日志
+    Route::get('admin/donate', 'DonateController@donate'); // 捐赠
 });
 
 Route::group(['middleware' => ['user']], function() {