Kaynağa Gözat

1.订阅请求记录
2.为了手机下访问看着更爽,bootbox alert全换成layer msg
3.注册时的服务协议

zhangjiangbin 8 yıl önce
ebeveyn
işleme
17fa8d978c
46 değiştirilmiş dosya ile 387 ekleme ve 210 silme
  1. 37 0
      app/Http/Controllers/AdminController.php
  2. 1 0
      app/Http/Controllers/SubscribeController.php
  3. 0 1
      app/Http/Controllers/UserController.php
  4. 1 3
      app/Http/Models/UserSubscribe.php
  5. 1 0
      public/js/layer/layer.js
  6. 1 0
      public/js/layer/mobile/layer.js
  7. 0 0
      public/js/layer/mobile/need/layer.css
  8. BIN
      public/js/layer/theme/default/icon-ext.png
  9. BIN
      public/js/layer/theme/default/icon.png
  10. 0 0
      public/js/layer/theme/default/layer.css
  11. BIN
      public/js/layer/theme/default/loading-0.gif
  12. BIN
      public/js/layer/theme/default/loading-1.gif
  13. BIN
      public/js/layer/theme/default/loading-2.gif
  14. 18 28
      readme.md
  15. 1 1
      resources/views/404.blade.php
  16. 5 6
      resources/views/admin/addArticle.blade.php
  17. 5 6
      resources/views/admin/addGroup.blade.php
  18. 5 6
      resources/views/admin/addNode.blade.php
  19. 5 6
      resources/views/admin/addUser.blade.php
  20. 2 1
      resources/views/admin/applyDetail.blade.php
  21. 6 7
      resources/views/admin/articleList.blade.php
  22. 11 12
      resources/views/admin/config.blade.php
  23. 5 6
      resources/views/admin/editArticle.blade.php
  24. 5 6
      resources/views/admin/editGroup.blade.php
  25. 5 6
      resources/views/admin/editNode.blade.php
  26. 5 6
      resources/views/admin/editUser.blade.php
  27. 6 7
      resources/views/admin/groupList.blade.php
  28. 6 5
      resources/views/admin/inviteList.blade.php
  29. 11 5
      resources/views/admin/layouts.blade.php
  30. 5 6
      resources/views/admin/nodeList.blade.php
  31. 116 0
      resources/views/admin/subscribeLog.blade.php
  32. 20 19
      resources/views/admin/system.blade.php
  33. 7 8
      resources/views/admin/userList.blade.php
  34. 18 10
      resources/views/coupon/couponList.blade.php
  35. 26 1
      resources/views/register.blade.php
  36. 6 7
      resources/views/shop/goodsList.blade.php
  37. 11 10
      resources/views/ticket/replyTicket.blade.php
  38. 5 6
      resources/views/user/index.blade.php
  39. 5 6
      resources/views/user/invite.blade.php
  40. 2 1
      resources/views/user/referral.blade.php
  41. 11 10
      resources/views/user/replyTicket.blade.php
  42. 2 1
      resources/views/user/subscribe.blade.php
  43. 6 7
      resources/views/user/ticketList.blade.php
  44. 1 0
      routes/web.php
  45. 1 0
      sql/db.sql
  46. 3 0
      sql/update/20171019.sql

+ 37 - 0
app/Http/Controllers/AdminController.php

@@ -15,6 +15,8 @@ use App\Http\Models\SsNode;
 use App\Http\Models\SsNodeInfo;
 use App\Http\Models\SsNodeOnlineLog;
 use App\Http\Models\User;
+use App\Http\Models\UserSubscribe;
+use App\Http\Models\UserSubscribeLog;
 use App\Http\Models\UserTrafficLog;
 use Illuminate\Http\Request;
 use Redirect;
@@ -657,6 +659,41 @@ class AdminController extends BaseController
         return Response::view('admin/trafficLog', $view);
     }
 
+    // 订阅请求日志
+    public function subscribeLog(Request $request)
+    {
+        $user_id = $request->get('user_id');
+        $username = $request->get('username');
+
+        $query = UserSubscribe::with(['User']);
+
+        if (!empty($user_id)) {
+            $query->where('user_id', $user_id);
+        }
+
+        if (!empty($username)) {
+            $query->whereHas('user', function ($q) use ($username) {
+                $q->where('username', 'like', '%' . $username . '%');
+            });
+        }
+
+        $subscribeList = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page'));
+
+        // 是否存在地址泄露的可能
+        foreach ($subscribeList as &$subscribe) {
+            $ipCounts = UserSubscribeLog::where('sid', $subscribe->id)->where('request_time', '>=', date('Y-m-d H:i:s', strtotime("-3 days")))->distinct('request_ip')->count('request_ip');
+            if ($ipCounts >= 10) {
+                $subscribe->isWarning = 1;
+            } else {
+                $subscribe->isWarning = 0;
+            }
+        }
+
+        $view['subscribeList'] = $subscribeList;
+
+        return Response::view('admin/subscribeLog', $view);
+    }
+
     // 格式转换(SS转SSR)
     public function convert(Request $request)
     {

+ 1 - 0
app/Http/Controllers/SubscribeController.php

@@ -54,6 +54,7 @@ class SubscribeController extends BaseController
         $log->sid = $subscribe->id;
         $log->request_ip = $request->getClientIp();
         $log->request_time = date('Y-m-d H:i:s');
+        $log->request_header = $request->headers;
         $log->save();
 
         // 获取这个账号可用节点

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

@@ -941,7 +941,6 @@ TXT;
             $obj->user_id = $user['id'];
             $obj->code = $code;
             $obj->times = 0;
-            $obj->created_at = date('Y-m-d H:i:s');
             $obj->save();
         } else {
             $code = $subscribe->code;

+ 1 - 3
app/Http/Models/UserSubscribe.php

@@ -13,12 +13,10 @@ class UserSubscribe extends Model
 {
     protected $table = 'user_subscribe';
     protected $primaryKey = 'id';
-    public $timestamps = false;
     protected $fillable = [
         'user_id',
         'code',
-        'times',
-        'created_at'
+        'times'
     ];
 
     public function User()

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
public/js/layer/layer.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
public/js/layer/mobile/layer.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
public/js/layer/mobile/need/layer.css


BIN
public/js/layer/theme/default/icon-ext.png


BIN
public/js/layer/theme/default/icon.png


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
public/js/layer/theme/default/layer.css


BIN
public/js/layer/theme/default/loading-0.gif


BIN
public/js/layer/theme/default/loading-1.gif


BIN
public/js/layer/theme/default/loading-2.gif


+ 18 - 28
readme.md

@@ -7,43 +7,42 @@ MYSQL 5.5 (推荐5.6+)
 磁盘空间 10G+
 KVM
 
+小白建议使用LNMP傻瓜安装出php7.1 + mysql(5.5以上)
+手动编译请看WIKI [编译安装PHP7.1.7环境(CentOS)]
 使用LNMP部署时请到/usr/local/php/etc/php.ini下搜索disable_functions,把proc_开头的函数都删掉
 
 telegram频道:https://t.me/ssrpanel
 telegram群组:https://t.me/chatssrpanel
-开发测试演示:http://www.ssrpanel.com    (限速100K)
-
-默认管理账号
+开发测试演示:http://www.ssrpanel.com
 用户名:admin 密码:123456
+(限速100K)
 ````
 
 #### VPS推荐
 ````
 部署面板必须得用到VPS,也就是服务器
 强烈推荐使用1G以上内存的KVM架构的服务器
-
-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)
 
 
 #### 打赏作者
 ````
-哈哈,如果你觉得这套代码好用,可以请我吃一个巨无霸汉堡,微信扫一下
-持续开发,喜欢请star一下
+如果你觉得这套代码好用,可以请我吃一个巨无霸汉堡,微信扫一下
+持续开发,喜欢请star一下
 ````
 ![打赏作者](https://github.com/ssrpanel/ssrpanel/blob/master/public/assets/images/donate.jpeg?raw=true)
 
-### 捐赠名单
-| 昵称      |    金额 |
-| :------- | --------:| 
-| Law-杰   | ¥10 | 
-| Err      | ¥51 | 
-| 緃噺開始 |  ¥5 | 
+### 打赏名单
+|昵称|金额|
+|:-------|--------:| 
+|Law-杰|¥10| 
+|Err| ¥51 | 
+|緃噺開始 |¥5| 
 |【要求匿名】|¥267|
-|、无奈 |¥5|
-|Sunny Woon| ¥10|
-|aazzpp678 | ¥26|
+|、无奈|¥5|
+|Sunny Woon|¥10|
+|aazzpp678|¥26|
 |风云_1688|¥15|
 |Royal|¥25|
 |bingo|¥8|
@@ -54,18 +53,8 @@ https://github.com/ssrpanel/ssrpanel/wiki/VPS%E6%8E%A8%E8%8D%90
 这些捐赠的用途:
 1.30刀买了1台VPS做开发测试用(后被干扰到几乎无法SSH)
 2.30刀买了一个Beyond Compare 4 Standard的正版激活码
-3.自掏腰包9刀买了www.ssrpanel.com域名
 3.感谢Jyo提供一个台Azure给我开发测试用,需要代购VPS找在tg群里找他
 
-开发测试环境:http://www.ssrpanel.com
-
-
-#### PHP7环境配置
-````
-Laravel 5.4 + Metronic 4.7
-小白建议使用LNMP傻瓜安装出php7.1 + mysql(5.5以上)
-手动编译请看WIKI [编译安装PHP7.1.7环境(CentOS)]
-````
 
 #### 拉取代码
 ````
@@ -161,10 +150,11 @@ sh initcfg.sh
 5.节点可以分组,不同级别的用户可以看到不同级别分组的节点
 6.SS配置转SSR配置,方便使用SS后端一键把账号转入到系统
 7.流量日志、单机单节点日志分析功能,知道用户最近都看了哪些网站
-7.定时任务、所有邮件投递都有记录
+7.定时任务、所有邮件投递都有记录,账号临近到期、流量不够都会自动发邮件提醒,自动禁用到期账号
 8.后台一键添加加密方式、混淆、协议
 9.强大的后台配置功能
-10.更多功能自己发掘
+10.屏蔽常见爬虫
+11.更多功能和开发排期请看WIKI
 ````
 
 ![Markdown](http://i4.bvimg.com/1949/aac73bf589fbd785.png)

+ 1 - 1
resources/views/404.blade.php

@@ -37,7 +37,7 @@
         <div class="number font-red"> 404 </div>
         <div class="details">
             <h3>页面不存在</h3>
-            <p> 如果发现BUG请上报胖虎,胖虎将送你一个静香.
+            <p> 如果发现BUG请提交到 <a href="https://github.com/ssrpanel/ssrpanel/issues" target="_blank">Issues</a>
                 <br/> </p>
             <p>
                 <a href="{{url('admin')}}" class="btn red btn-outline"> 返 回 </a>

+ 5 - 6
resources/views/admin/addArticle.blade.php

@@ -82,6 +82,7 @@
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/js/ueditor/ueditor.config.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/ueditor/ueditor.all.js" type="text/javascript" charset="utf-8"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 百度富文本编辑器
@@ -109,13 +110,11 @@
                 data: {_token:_token, title: title, sort:sort, content:content},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/articleList')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 5 - 6
resources/views/admin/addGroup.blade.php

@@ -86,6 +86,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // ajax同步提交
@@ -101,13 +102,11 @@
                 data: {_token:_token, name:name, level:level},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/groupList')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 5 - 6
resources/views/admin/addNode.blade.php

@@ -212,6 +212,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // ajax同步提交
@@ -241,13 +242,11 @@
                 data: {_token:_token, name: name, group_id:group_id, server:server, method:method, custom_method:custom_method, traffic_rate:traffic_rate, protocol:protocol, protocol_param:protocol_param, obfs:obfs, obfs_param:obfs_param, bandwidth:bandwidth, traffic:traffic, monitor_url:monitor_url, compatible:compatible, sort:sort, status:status},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/nodeList')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 5 - 6
resources/views/admin/addUser.blade.php

@@ -310,6 +310,7 @@
     <script src="/assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 有效期
@@ -359,13 +360,11 @@
                 data: {_token:_token, username: username, password:password, usage:usage, pay_way:pay_way, balance:balance, score:score, enable_time:enable_time, expire_time:expire_time, gender:gender, wechat:wechat, qq:qq, is_admin:is_admin, remark:remark, level:level, port:port, passwd:passwd, method:method, custom_method:custom_method, transfer_enable:transfer_enable, enable:enable, protocol:protocol, protocol_param:protocol_param, obfs:obfs, obfs_param:obfs_param, speed_limit_per_con:speed_limit_per_con, speed_limit_per_user:speed_limit_per_user},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/userList')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 2 - 1
resources/views/admin/applyDetail.blade.php

@@ -107,12 +107,13 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 更改状态
         function setStatus(status) {
             $.post("{{url('admin/setApplyStatus')}}", {_token:'{{csrf_token()}}', id:'{{$info->id}}', status:status}, function(ret){
-                bootbox.alert(ret.message, function () {
+                layer.msg(ret.message, function() {
                     window.location.reload();
                 });
             });

+ 6 - 7
resources/views/admin/articleList.blade.php

@@ -89,6 +89,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 添加文章
@@ -119,14 +120,12 @@
                 },
                 callback: function (result) {
                     if (result) {
-                        $.post("{{url('admin/delArticle')}}", {id:id, _token:_token}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                        $.post("{{url('admin/delArticle')}}", {id:id, _token:_token}, function(ret) {
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.reload();
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }

+ 11 - 12
resources/views/admin/config.blade.php

@@ -199,6 +199,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // modal关闭时刷新页面
@@ -258,14 +259,12 @@
                 },
                 callback: function (result) {
                     if (result) {
-                        $.post("{{url('admin/delConfig')}}", {id:id, _token:_token}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                        $.post("{{url('admin/delConfig')}}", {id:id, _token:_token}, function(ret) {
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.href = '{{url('admin/config?tab=')}}' + tabId;
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }
@@ -283,11 +282,11 @@
                 data: {_token:_token, id: id},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        window.location.href = '{{url('admin/config?tab=')}}' + tabId;
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
+                            window.location.href = '{{url('admin/config?tab=')}}' + tabId;
+                        }
+                    });
                 }
             });
         }

+ 5 - 6
resources/views/admin/editArticle.blade.php

@@ -82,6 +82,7 @@
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/js/ueditor/ueditor.config.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/ueditor/ueditor.all.js" type="text/javascript" charset="utf-8"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 百度富文本编辑器
@@ -110,13 +111,11 @@
                 data: {_token:_token, id:id, title: title, sort:sort, content:content},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/articleList')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 5 - 6
resources/views/admin/editGroup.blade.php

@@ -86,6 +86,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // ajax同步提交
@@ -101,13 +102,11 @@
                 data: {_token:_token, id:'{{$group->id}}', name:name, level:level},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/groupList')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 5 - 6
resources/views/admin/editNode.blade.php

@@ -209,6 +209,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // ajax同步提交
@@ -239,13 +240,11 @@
                 data: {_token:_token, id:id, name: name, group_id:group_id, server:server, method:method, custom_method:custom_method, traffic_rate:traffic_rate, protocol:protocol, protocol_param:protocol_param, obfs:obfs, obfs_param:obfs_param, bandwidth:bandwidth, traffic:traffic, monitor_url:monitor_url, compatible:compatible, sort:sort, status:status},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/nodeList?page=') . Request::get('page')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 5 - 6
resources/views/admin/editUser.blade.php

@@ -318,6 +318,7 @@
     <script src="/assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 有效期
@@ -369,13 +370,11 @@
                 data: {_token:_token, id:id, username: username, password:password, usage:usage, pay_way:pay_way, balance:balance, score:score, status:status, enable_time:enable_time, expire_time:expire_time, gender:gender, wechat:wechat, qq:qq, is_admin:is_admin, remark:remark, level:level, port:port, passwd:passwd, method:method, custom_method:custom_method, transfer_enable:transfer_enable, enable:enable, protocol:protocol, protocol_param:protocol_param, obfs:obfs, obfs_param:obfs_param, speed_limit_per_con:speed_limit_per_con, speed_limit_per_user:speed_limit_per_user},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function(){
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.href = '{{url('admin/userList?page=') . Request::get('page')}}';
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 6 - 7
resources/views/admin/groupList.blade.php

@@ -106,6 +106,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 添加节点分组
@@ -134,14 +135,12 @@
                 },
                 callback: function (result) {
                     if (result) {
-                        $.post("{{url('admin/delGroup')}}", {_token:'{{csrf_token()}}', id:id}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                        $.post("{{url('admin/delGroup')}}", {_token:'{{csrf_token()}}', id:id}, function(ret) {
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.reload();
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }

+ 6 - 5
resources/views/admin/inviteList.blade.php

@@ -104,6 +104,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 生成邀请码
@@ -117,11 +118,11 @@
                 data: {_token:_token},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        window.location.reload();
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
+                            window.location.reload();
+                        }
+                    });
                 }
             });
 

+ 11 - 5
resources/views/admin/layouts.blade.php

@@ -174,7 +174,7 @@
                         </li>
                     </ul>
                 </li>
-                <li class="nav-item {{Request::getRequestUri() == '/admin/convert' || Request::getRequestUri() == '/admin/import' || Request::getRequestUri() == '/admin/trafficLog' || Request::getRequestUri() == '/admin/analysis' || Request::getRequestUri() == '/emailLog/list' ? 'active open' : ''}}">
+                <li class="nav-item {{in_array(Request::getRequestUri(), ['/admin/convert', '/admin/import', '/admin/trafficLog', '/admin/analysis', '/admin/subscribeLog', '/emailLog/list']) ? 'active open' : ''}}">
                     <a href="javascript:;" class="nav-link nav-toggle">
                         <i class="icon-wrench"></i>
                         <span class="title">工具箱</span>
@@ -182,13 +182,13 @@
                     </a>
                     <ul class="sub-menu">
                         <li class="nav-item {{Request::getRequestUri() == '/admin/convert' ? 'active open' : ''}}">
-                            <a href="{{url('admin/convert')}}" class="nav-link ">
+                            <a href="{{url('admin/convert')}}" class="nav-link">
                                 <i class="icon-refresh"></i>
                                 <span class="title">格式转换</span>
                             </a>
                         </li>
                         <li class="nav-item {{Request::getRequestUri() == '/admin/import' ? 'active open' : ''}}">
-                            <a href="{{url('admin/import')}}" class="nav-link ">
+                            <a href="{{url('admin/import')}}" class="nav-link">
                                 <i class="icon-plus"></i>
                                 <span class="title">数据导入</span>
                             </a>
@@ -200,13 +200,19 @@
                             </a>
                         </li>
                         <li class="nav-item {{Request::getRequestUri() == '/admin/analysis' ? 'active open' : ''}}">
-                            <a href="{{url('admin/analysis')}}" class="nav-link ">
+                            <a href="{{url('admin/analysis')}}" class="nav-link">
                                 <i class="icon-bar-chart"></i>
                                 <span class="title">日志分析</span>
                             </a>
                         </li>
+                        <li class="nav-item {{Request::getRequestUri() == '/admin/subscribeLog' ? 'active open' : ''}}">
+                            <a href="{{url('admin/subscribeLog')}}" class="nav-link">
+                                <i class="icon-list"></i>
+                                <span class="title">订阅请求日志</span>
+                            </a>
+                        </li>
                         <li class="nav-item {{Request::getRequestUri() == '/emailLog/list' ? 'active open' : ''}}">
-                            <a href="{{url('emailLog/list')}}" class="nav-link ">
+                            <a href="{{url('emailLog/list')}}" class="nav-link">
                                 <i class="icon-list"></i>
                                 <span class="title">邮件投递记录</span>
                             </a>

+ 5 - 6
resources/views/admin/nodeList.blade.php

@@ -102,6 +102,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 添加节点
@@ -133,13 +134,11 @@
                 callback: function (result) {
                     if (result) {
                         $.post("{{url('admin/delNode')}}", {id:id, _token:_token}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.reload();
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }

+ 116 - 0
resources/views/admin/subscribeLog.blade.php

@@ -0,0 +1,116 @@
+@extends('admin.layouts')
+
+@section('css')
+    <link href="/assets/global/plugins/datatables/datatables.min.css" rel="stylesheet" type="text/css" />
+    <link href="/assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.css" rel="stylesheet" type="text/css" />
+@endsection
+@section('title', '控制面板')
+@section('content')
+    <!-- BEGIN CONTENT BODY -->
+    <div class="page-content">
+        <!-- BEGIN PAGE BREADCRUMB -->
+        <ul class="page-breadcrumb breadcrumb">
+            <li>
+                <a href="{{url('admin')}}">工具箱</a>
+                <i class="fa fa-circle"></i>
+            </li>
+            <li>
+                <a href="{{url('admin/subscribeLog')}}">订阅请求日志</a>
+            </li>
+        </ul>
+        <!-- END PAGE BREADCRUMB -->
+        <!-- BEGIN PAGE BASE CONTENT -->
+        <div class="row">
+            <div class="col-md-12">
+                <!-- BEGIN EXAMPLE TABLE PORTLET-->
+                <div class="portlet light bordered">
+                    <div class="portlet-title">
+                        <div class="caption font-dark">
+                            <i class="icon-list font-dark"></i>
+                            <span class="caption-subject bold uppercase">订阅请求日志</span>
+                        </div>
+                    </div>
+                    <div class="portlet-body">
+                        <div class="row">
+                            <div class="col-md-2 col-sm-2">
+                                <input type="text" class="col-md-4 form-control input-sm" name="user_id" value="{{Request::get('user_id')}}" id="user_id" placeholder="用户ID" onkeydown="if(event.keyCode==13){do_search();}">
+                            </div>
+                            <div class="col-md-2 col-sm-2">
+                                <input type="text" class="col-md-4 form-control input-sm" name="username" value="{{Request::get('username')}}" id="username" placeholder="用户名" onkeydown="if(event.keyCode==13){do_search();}">
+                            </div>
+                            <div class="col-md-2 col-sm-2">
+                                <button type="button" class="btn btn-sm blue" onclick="do_search();">查询</button>
+                                <button type="button" class="btn btn-sm grey" onclick="do_reset();">重置</button>
+                            </div>
+                        </div>
+                        <div class="table-scrollable">
+                            <table class="table table-striped table-bordered table-hover table-checkable order-column">
+                                <thead>
+                                <tr>
+                                    <th> ID </th>
+                                    <th> 用户 </th>
+                                    <th> 唯一识别码 </th>
+                                    <th> 请求次数 </th>
+                                    <th> 最后请求时间 </th>
+                                    <th> 异常 </th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                    @if($subscribeList->isEmpty())
+                                        <tr>
+                                            <td colspan="6">暂无数据</td>
+                                        </tr>
+                                    @else
+                                        @foreach($subscribeList as $subscribe)
+                                            <tr class="odd gradeX">
+                                                <td> {{$subscribe->id}} </td>
+                                                <td> {{$subscribe->user->username}} </td>
+                                                <td> {{$subscribe->code}} </td>
+                                                <td> {{$subscribe->times}} </td>
+                                                <td> {{$subscribe->updated_at}} </td>
+                                                <td>
+                                                    @if($subscribe->isWarning)
+                                                        <div class="label label-danger">异常</div>
+                                                    @endif
+                                                </td>
+                                            </tr>
+                                        @endforeach
+                                    @endif
+                                </tbody>
+                            </table>
+                        </div>
+                        <div class="row">
+                            <div class="col-md-4 col-sm-4">
+                                <div class="dataTables_info" role="status" aria-live="polite">共 {{$subscribeList->total()}} 条记录</div>
+                            </div>
+                            <div class="col-md-8 col-sm-8">
+                                <div class="dataTables_paginate paging_bootstrap_full_number pull-right">
+                                    {{ $subscribeList->links() }}
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <!-- END EXAMPLE TABLE PORTLET-->
+            </div>
+        </div>
+        <!-- END PAGE BASE CONTENT -->
+    </div>
+    <!-- END CONTENT BODY -->
+@endsection
+@section('script')
+    <script type="text/javascript">
+        // 搜索
+        function do_search() {
+            var user_id = $("#user_id").val();
+            var username = $("#username").val();
+
+            window.location.href = '{{url('admin/subscribeLog')}}' + '?user_id=' + user_id + '&username=' + username;
+        }
+
+        // 重置
+        function do_reset() {
+            window.location.href = '{{url('admin/subscribeLog')}}';
+        }
+    </script>
+@endsection

+ 20 - 19
resources/views/admin/system.blade.php

@@ -413,6 +413,7 @@
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 启用、禁用随机端口
@@ -477,7 +478,7 @@
 
                 $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'is_reset_password', value:is_reset_password}, function (ret) {
                     if (ret.status == 'fail') {
-                        bootbox.alert(ret.message, function() {
+                        layer.msg(ret.message, function() {
                             window.location.reload();
                         });
                     }
@@ -492,7 +493,7 @@
 
                 $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'is_active_register', value:is_active_register}, function (ret) {
                     if (ret.status == 'fail') {
-                        bootbox.alert(ret.message, function() {
+                        layer.msg(ret.message, function() {
                             window.location.reload();
                         });
                     }
@@ -507,7 +508,7 @@
 
                 $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'expire_warning', value:expire_warning}, function (ret) {
                     if (ret.status == 'fail') {
-                        bootbox.alert(ret.message, function() {
+                        layer.msg(ret.message, function() {
                             window.location.reload();
                         });
                     }
@@ -522,7 +523,7 @@
 
                 $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'referral_status', value:referral_status}, function (ret) {
                     if (ret.status == 'fail') {
-                        bootbox.alert(ret.message, function() {
+                        layer.msg(ret.message, function() {
                             window.location.reload();
                         });
                     }
@@ -558,7 +559,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'min_rand_score', value:min_rand_score}, function (ret) {
                 if (ret.status == 'fail') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -571,7 +572,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'max_rand_score', value:max_rand_score}, function (ret) {
                 if (ret.status == 'fail') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -584,7 +585,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'default_days', value:default_days}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -597,7 +598,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'default_traffic', value:default_traffic}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -610,7 +611,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'invite_num', value:invite_num}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -623,7 +624,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'reset_password_times', value:reset_password_times}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -636,7 +637,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'active_times', value:active_times}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -649,7 +650,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'traffic_warning_percent', value:traffic_warning_percent}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -663,7 +664,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'expire_days', value:expire_days}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -676,7 +677,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'website_name', value:website_name}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -689,7 +690,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'website_url', value:website_url}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -702,7 +703,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'login_add_score_range', value:login_add_score_range}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -715,7 +716,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'referral_traffic', value:referral_traffic}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -728,7 +729,7 @@
 
             $.post("{{url('admin/setReferralPercent')}}", {_token:'{{csrf_token()}}', value:referral_percent}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }
@@ -741,7 +742,7 @@
 
             $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'referral_money', value:referral_money}, function (ret) {
                 if (ret.status == 'success') {
-                    bootbox.alert(ret.message, function() {
+                    layer.msg(ret.message, function() {
                         window.location.reload();
                     });
                 }

+ 7 - 8
resources/views/admin/userList.blade.php

@@ -165,6 +165,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 添加账号
@@ -195,14 +196,12 @@
                 },
                 callback: function (result) {
                     if (result) {
-                        $.post("{{url('admin/delUser')}}", {id:id, _token:_token}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                        $.post("{{url('admin/delUser')}}", {id:id, _token:_token}, function(ret) {
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.reload();
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }
@@ -240,7 +239,7 @@
         // 重置流量
         function resetTraffic(id) {
             $.post("{{url('admin/resetUserTraffic')}}", {_token:'{{csrf_token()}}', id:id}, function (ret) {
-                bootbox.alert(ret.message, function () {
+                layer.msg(ret.message, function() {
                     window.location.reload();
                 });
             });

+ 18 - 10
resources/views/coupon/couponList.blade.php

@@ -32,7 +32,10 @@
                             <span class="caption-subject bold uppercase"> 卡券列表 </span>
                         </div>
                         <div class="actions">
-                            <div class="btn-group">
+                            <div class="btn-group btn-group-devided" data-toggle="buttons">
+                                <button class="btn sbold blue" onclick="exportCoupon()"> 批量导出
+                                    <i class="fa fa-download"></i>
+                                </button>
                                 <button class="btn sbold blue" onclick="addCoupon()"> 生成
                                     <i class="fa fa-plus"></i>
                                 </button>
@@ -118,16 +121,23 @@
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/fancybox/source/jquery.fancybox.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
+        // 批量导出卡券
+        function exportCoupon() {
+            bootbox.alert('开发中');
+        }
+
+        // 添加卡券
         function addCoupon() {
             window.location.href = '{{url('coupon/addCoupon')}}';
         }
 
-        // 删除商品
+        // 删除卡券
         function delCoupon(id) {
             bootbox.confirm({
-                message: "确定删除该优惠券?",
+                message: "确定删除该卡券吗?",
                 buttons: {
                     confirm: {
                         label: '确定',
@@ -140,14 +150,12 @@
                 },
                 callback: function (result) {
                     if (result) {
-                        $.post("{{url('coupon/delCoupon')}}", {id:id, _token:'{{csrf_token()}}'}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                        $.post("{{url('coupon/delCoupon')}}", {id:id, _token:'{{csrf_token()}}'}, function(ret) {
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.reload();
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }

+ 26 - 1
resources/views/register.blade.php

@@ -69,7 +69,7 @@
             <div class="form-group margin-top-20 margin-bottom-20">
                 <label class="mt-checkbox mt-checkbox-outline">
                     <input type="checkbox" name="tnc" checked disabled /> 我已阅读并同意遵守
-                    <a href="javascript:;"> 服务条款 </a>
+                    <a href="javascript:showTnc();"> 服务条款 </a>
                     <span></span>
                 </label>
             </div>
@@ -105,9 +105,34 @@
     function login() {
         window.location.href = '{{url('login')}}';
     }
+
+    // 服务条款
+    function showTnc() {
+        layer.open({
+            type: 1
+            ,title: false //不显示标题栏
+            ,closeBtn: false
+            ,area: '500px;'
+            ,shade: 0.8
+            ,id: 'tnc' //设定一个id,防止重复弹出
+            ,resize: false
+            ,btn: ['我已完整阅读,并承诺遵守']
+            ,btnAlign: 'c'
+            ,moveType: 1 //拖拽模式,0或者1
+            ,content: '<div style="padding: 20px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">不得通过本站提供的服务发布、转载、传送含有下列内容之一的信息:<br>(1)违反宪法确定的基本原则的;<br>(2)危害国家安全,泄漏国家机密,颠覆国家政权,破坏国家统一的;<br>(3)损害国家荣誉和利益的;<br>(4)煽动民族仇恨、民族歧视,破坏民族团结的;<br>(5)破坏国家宗教政策,宣扬邪教和封建迷信的; <br>(6)散布谣言,扰乱社会秩序,破坏社会稳定的;<br>(7)散布淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的;<br>(8)侮辱或者诽谤他人,侵害他人合法权益的;<br>(9)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序的;<br>(10)以非法民间组织名义活动的;<br>(11)含有法律、行政法规禁止的其他内容的。</div>'
+            ,success: function(layero){
+//                var btn = layero.find('.layui-layer-btn');
+//                btn.find('.layui-layer-btn0').attr({
+//                    href: 'http://www.layui.com/'
+//                    ,target: '_blank'
+//                });
+            }
+        });
+    }
 </script>
 <!-- BEGIN THEME GLOBAL SCRIPTS -->
 <script src="/assets/global/scripts/app.min.js" type="text/javascript"></script>
+<script src="/js/layer/layer.js" type="text/javascript"></script>
 <!-- END THEME GLOBAL SCRIPTS -->
 </body>
 

+ 6 - 7
resources/views/shop/goodsList.blade.php

@@ -109,6 +109,7 @@
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/fancybox/source/jquery.fancybox.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         function addGoods() {
@@ -136,14 +137,12 @@
                 },
                 callback: function (result) {
                     if (result) {
-                        $.post("{{url('shop/delGoods')}}", {id:id, _token:'{{csrf_token()}}'}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                        $.post("{{url('shop/delGoods')}}", {id:id, _token:'{{csrf_token()}}'}, function(ret) {
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.reload();
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }

+ 11 - 10
resources/views/ticket/replyTicket.blade.php

@@ -128,6 +128,7 @@
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/js/ueditor/ueditor.config.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/ueditor/ueditor.all.js" type="text/javascript" charset="utf-8"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         @if($ticket->status != 2)
@@ -152,11 +153,11 @@
                 data: {_token:'{{csrf_token()}}', id:'{{$ticket->id}}'},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        window.location.href = '{{url('ticket/ticketList')}}';
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
+                            window.location.href = '{{url('ticket/ticketList')}}';
+                        }
+                    });
                 }
             });
         }
@@ -172,11 +173,11 @@
                 data: {_token:'{{csrf_token()}}', id:'{{$ticket->id}}', content:content},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        window.location.reload();
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
+                            window.location.reload();
+                        }
+                    });
                 }
             });
         }

+ 5 - 6
resources/views/user/index.blade.php

@@ -202,6 +202,7 @@
     <script src="/assets/global/plugins/jquery-easyticker/test/jquery.easing.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/jquery-easyticker/jquery.easy-ticker.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script>
         // 流量饼图
@@ -242,13 +243,11 @@
                 data: {_token:'{{csrf_token()}}'},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.reload();
-                        });
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 5 - 6
resources/views/user/invite.blade.php

@@ -102,6 +102,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 生成邀请码
@@ -115,13 +116,11 @@
                 data: {_token:_token},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        //bootbox.alert(ret.message, function () {
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
                             window.location.reload();
-                        //});
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                        }
+                    });
                 }
             });
 

+ 2 - 1
resources/views/user/referral.blade.php

@@ -117,12 +117,13 @@
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/clipboardjs/clipboard.min.js" type="text/javascript"></script>
     <script src="/assets/pages/scripts/components-clipboard.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 申请提现
         function extractMoney() {
             $.post("{{url('user/extractMoney')}}", {_token:'{{csrf_token()}}'}, function (ret) {
-                bootbox.alert(ret.message);
+                layer.msg(ret.message);
             });
         }
     </script>

+ 11 - 10
resources/views/user/replyTicket.blade.php

@@ -128,6 +128,7 @@
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/js/ueditor/ueditor.config.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/ueditor/ueditor.all.js" type="text/javascript" charset="utf-8"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         @if($ticket->status != 2)
@@ -152,11 +153,11 @@
                 data: {_token:'{{csrf_token()}}', id:'{{$ticket->id}}'},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        window.location.href = '{{url('user/ticketList')}}';
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
+                            window.location.href = '{{url('user/ticketList')}}';
+                        }
+                    });
                 }
             });
         }
@@ -172,11 +173,11 @@
                 data: {_token:'{{csrf_token()}}', id:'{{$ticket->id}}', content:content},
                 dataType: 'json',
                 success: function (ret) {
-                    if (ret.status == 'success') {
-                        window.location.reload();
-                    } else {
-                        bootbox.alert(ret.message);
-                    }
+                    layer.msg(ret.message, function() {
+                        if (ret.status == 'success') {
+                            window.location.reload();
+                        }
+                    });
                 }
             });
         }

+ 2 - 1
resources/views/user/subscribe.blade.php

@@ -57,12 +57,13 @@
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
     <script src="/assets/global/plugins/clipboardjs/clipboard.min.js" type="text/javascript"></script>
     <script src="/assets/pages/scripts/components-clipboard.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 申请提现
         function extractMoney() {
             $.post("{{url('user/extractMoney')}}", {_token:'{{csrf_token()}}'}, function (ret) {
-                bootbox.alert(ret.message);
+                layer.msg(ret.message);
             });
         }
     </script>

+ 6 - 7
resources/views/user/ticketList.blade.php

@@ -106,6 +106,7 @@
 @endsection
 @section('script')
     <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+    <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
         // 回复工单
@@ -142,14 +143,12 @@
                 },
                 callback: function (result) {
                     if (result) {
-                        $.post("{{url('user/addTicket')}}", {_token:'{{csrf_token()}}', title:title, content:content}, function(ret){
-                            if (ret.status == 'success') {
-                                bootbox.alert(ret.message, function(){
+                        $.post("{{url('user/addTicket')}}", {_token:'{{csrf_token()}}', title:title, content:content}, function(ret) {
+                            layer.msg(ret.message, function() {
+                                if (ret.status == 'success') {
                                     window.location.reload();
-                                });
-                            } else {
-                                bootbox.alert(ret.message);
-                            }
+                                }
+                            });
                         });
                     }
                 }

+ 1 - 0
routes/web.php

@@ -40,6 +40,7 @@ Route::group(['middleware' => ['user', 'admin']], function() {
     Route::post('admin/delConfig', 'AdminController@delConfig'); // 删除配置
     Route::post('admin/setDefaultConfig', 'AdminController@setDefaultConfig'); // 设置默认配置
     Route::get('admin/trafficLog', 'AdminController@trafficLog'); // 流量日志
+    Route::get('admin/subscribeLog', 'AdminController@subscribeLog'); // 订阅请求日志
     Route::any('admin/export', 'AdminController@export'); // 导出配置信息
     Route::any('admin/convert', 'AdminController@convert'); // 格式转换
     Route::any('admin/import', 'AdminController@import'); // 数据导入

+ 1 - 0
sql/db.sql

@@ -541,6 +541,7 @@ CREATE TABLE `user_subscribe_log` (
   `sid` int(11) DEFAULT NULL COMMENT '对应user_subscribe的id',
   `request_ip` varchar(20) DEFAULT NULL COMMENT '请求IP',
   `request_time` datetime DEFAULT NULL COMMENT '请求时间',
+  `request_header` text COMMENT '请求头部信息',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 

+ 3 - 0
sql/update/20171019.sql

@@ -0,0 +1,3 @@
+ALTER TABLE `user_subscribe_log`
+ADD COLUMN `request_header` text COMMENT '请求头部信息' AFTER `request_time`;
+

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor