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

1.用户余额手动充值
2.加入一些国家icon
3.修正编辑商品导航栏BUG
4.更新readme

bingo 8 лет назад
Родитель
Сommit
95c9412ad7

+ 46 - 9
app/Http/Controllers/AdminController.php

@@ -20,6 +20,7 @@ use App\Http\Models\SsNodeOnlineLog;
 use App\Http\Models\SsNodeTrafficDaily;
 use App\Http\Models\SsNodeTrafficHourly;
 use App\Http\Models\User;
+use App\Http\Models\UserBalanceLog;
 use App\Http\Models\UserSubscribe;
 use App\Http\Models\UserSubscribeLog;
 use App\Http\Models\UserTrafficDaily;
@@ -143,8 +144,6 @@ class AdminController extends BaseController
             $qq = $request->get('qq');
             $usage = $request->get('usage');
             $pay_way = $request->get('pay_way');
-            $balance = $request->get('balance');
-            $score = $request->get('score');
             $enable_time = $request->get('enable_time');
             $expire_time = $request->get('expire_time');
             $remark = $request->get('remark');
@@ -183,8 +182,8 @@ class AdminController extends BaseController
                 'qq' => $qq,
                 'usage' => $usage,
                 'pay_way' => $pay_way,
-                'balance' => $balance,
-                'score' => $score,
+                'balance' => 0,
+                'score' => 0,
                 'enable_time' => empty($enable_time) ? date('Y-m-d') : $enable_time,
                 'expire_time' => empty($expire_time) ? date('Y-m-d', strtotime("+365 days")) : $expire_time,
                 'remark' => $remark,
@@ -237,8 +236,6 @@ class AdminController extends BaseController
             $qq = $request->get('qq');
             $usage = $request->get('usage');
             $pay_way = $request->get('pay_way');
-            $balance = $request->get('balance');
-            $score = $request->get('score');
             $status = $request->get('status');
             $enable_time = $request->get('enable_time');
             $expire_time = $request->get('expire_time');
@@ -251,7 +248,7 @@ class AdminController extends BaseController
                 'port' => $port,
                 'passwd' => $passwd,
                 'transfer_enable' => $this->toGB($transfer_enable),
-                'enable' => $enable,
+                'enable' => $status < 0 ? 0 : $enable, // 如果禁止登陆则同时禁用SSR
                 'method' => $method,
                 'custom_method' => $method,
                 'protocol' => $protocol,
@@ -265,8 +262,6 @@ class AdminController extends BaseController
                 'qq' => $qq,
                 'usage' => $usage,
                 'pay_way' => $pay_way,
-                'balance' => $balance,
-                'score' => $score,
                 'status' => $status,
                 'enable_time' => empty($enable_time) ? date('Y-m-d') : $enable_time,
                 'expire_time' => empty($expire_time) ? date('Y-m-d', strtotime("+365 days")) : $expire_time,
@@ -289,6 +284,7 @@ class AdminController extends BaseController
             $user = User::query()->where('id', $id)->first();
             if (!empty($user)) {
                 $user->transfer_enable = $this->flowToGB($user->transfer_enable);
+                $user->balance = $user->balance / 100;
             }
 
             $view['user'] = $user;
@@ -1657,4 +1653,45 @@ class AdminController extends BaseController
 
         return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']);
     }
+
+    // 操作用户余额
+    public function handleUserBalance(Request $request)
+    {
+        if ($request->method() == 'POST') {
+            $user_id = $request->get('user_id');
+            $amount = $request->get('amount');
+
+            if (empty($user_id) || empty($amount)) {
+                return Response::json(['status' => 'fail', 'data' => '', 'message' => '充值异常']);
+            }
+
+            try {
+                $user = User::query()->where('id', $user_id)->first();
+
+                // 写入余额变动日志
+                $userBalanceLog = new UserBalanceLog();
+                $userBalanceLog->user_id = $user_id;
+                $userBalanceLog->order_id = 0;
+                $userBalanceLog->before = $user->balance;
+                $userBalanceLog->after = $user->balance + $amount * 100;
+                $userBalanceLog->amount = $amount * 100;
+                $userBalanceLog->desc = '后台手动充值';
+                $userBalanceLog->created_at = date('Y-m-d H:i:s');
+                $userBalanceLog->save();
+
+                // 加减余额
+                if ($amount < 0) {
+                    $user->decrement('balance', abs($amount * 100));
+                } else {
+                    $user->increment('balance', abs($amount * 100));
+                }
+
+                return Response::json(['status' => 'success', 'data' => '', 'message' => '充值成功']);
+            } catch (\Exception $e) {
+                return Response::json(['status' => 'fail', 'data' => '', 'message' => '充值失败:' . $e->getMessage()]);
+            }
+        } else {
+            return Response::view('admin/handleUserBalance');
+        }
+    }
 }

BIN
public/assets/images/country/be.png


BIN
public/assets/images/country/fi.png


BIN
public/assets/images/country/is.png


BIN
public/assets/images/country/lu.png


BIN
public/assets/images/country/mm.png


BIN
public/assets/images/country/za.png


+ 32 - 3
readme.md

@@ -56,7 +56,7 @@ http://www.ssrpanel.com
 |Royal|¥25|
 |bingo|¥8|
 |Eason|¥10|
-|【要求匿名】|¥150|
+|【要求匿名】|¥270|
 |暮风|¥20|
 |huigeer|¥10|
 |真想悠哉|¥88|
@@ -67,6 +67,7 @@ http://www.ssrpanel.com
 |Sherl|¥48|
 |小孑、|¥20|
 |曾健|¥10|
+|Lojbk|¥10|
 
 
 这些捐赠的用途:
@@ -135,9 +136,36 @@ crontab -e
 * * * * * php /home/wwwroot/ssrpanel/artisan schedule:run >> /dev/null 2>&1
 ````
 
-#### 发送邮件配置
+## 邮件配置
+###### SMTP
 ````
-config\mail.php 修改其中的配置
+编辑 config\mail.php
+
+请自行配置如下内容
+'driver' => 'smtp',
+'host' => 'smtp.exmail.qq.com',
+'port' => 465,
+'from' => [
+    'address' => '[email protected]',
+    'name' => 'SSRPanel',
+],
+'encryption' => 'ssl',
+'username' => '[email protected]',
+'password' => 'xxxxxx',
+````
+
+###### Mailgun
+````
+编辑 config\mail.php
+将 driver 值改为 mailgun
+
+编辑 config/services.php
+
+请自行配置如下内容
+'mailgun' => [
+    'domain' => 'mailgun发件域名',
+    'secret' => 'mailgun上申请到的secret',
+],
 ````
 
 ## 日志分析(目前仅支持单机单节点)
@@ -244,6 +272,7 @@ vim user-config.json
 @orvice
 @ToyoDAdoubi
 @91yun
+@Akkariiin
 ````
 
 ## 说明

+ 1 - 15
resources/views/admin/addUser.blade.php

@@ -106,18 +106,6 @@
                                                     </select>
                                                 </div>
                                             </div>
-                                            <div class="form-group">
-                                                <label for="balance" class="col-md-3 control-label">余额</label>
-                                                <div class="col-md-8">
-                                                    <input type="text" class="form-control" name="balance" value="0" id="balance" placeholder="" required>
-                                                </div>
-                                            </div>
-                                            <div class="form-group">
-                                                <label for="score" class="col-md-3 control-label">积分</label>
-                                                <div class="col-md-8">
-                                                    <input type="text" class="form-control" name="score" value="0" id="score" placeholder="" required>
-                                                </div>
-                                            </div>
                                             <div class="form-group">
                                                 <label class="col-md-3 control-label">有效期</label>
                                                 <div class="col-md-8">
@@ -327,8 +315,6 @@
             var password = $('#password').val();
             var usage = $("input:radio[name='usage']:checked").val();
             var pay_way = $("input:radio[name='pay_way']:checked").val();
-            var balance = $('#balance').val();
-            var score = $('#score').val();
             var enable_time = $('#enable_time').val();
             var expire_time = $('#expire_time').val();
             var gender = $('#gender').val();
@@ -354,7 +340,7 @@
                 type: "POST",
                 url: "{{url('admin/addUser')}}",
                 async: false,
-                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},
+                data: {_token:_token, username: username, password:password, usage:usage, pay_way:pay_way, 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) {
                     layer.msg(ret.message, {time:1000}, function() {

+ 85 - 4
resources/views/admin/editUser.blade.php

@@ -109,16 +109,28 @@
                                             </div>
                                             <div class="form-group">
                                                 <label for="balance" class="col-md-3 control-label">余额</label>
-                                                <div class="col-md-8">
-                                                    <input type="text" class="form-control" name="balance" value="{{$user->balance}}" id="balance" placeholder="" required>
+                                                <div class="col-md-5">
+                                                    <p class="form-control-static"> {{$user->balance}} </p>
+                                                </div>
+                                                <div class="col-md-3">
+                                                    <div style="float:right;">
+                                                        <button type="button" class="btn btn-sm btn-danger" data-toggle="modal" data-target="#handle_user_balance">充值</button>
+                                                    </div>
                                                 </div>
                                             </div>
+                                            <!--
                                             <div class="form-group">
                                                 <label for="score" class="col-md-3 control-label">积分</label>
-                                                <div class="col-md-8">
-                                                    <input type="text" class="form-control" name="score" value="{{$user->score}}" id="score" placeholder="" required>
+                                                <div class="col-md-5">
+                                                    <p class="form-control-static"> {{$user->score}} </p>
+                                                </div>
+                                                <div class="col-md-3">
+                                                    <div style="float:right;">
+                                                        <button type="button" class="btn btn-sm btn-danger">操作</button>
+                                                    </div>
                                                 </div>
                                             </div>
+                                            -->
                                             <div class="form-group">
                                                 <label class="col-md-3 control-label">有效期</label>
                                                 <div class="col-md-8">
@@ -307,6 +319,37 @@
                     <!-- END FORM-->
                 </div>
             </div>
+
+            <!-- 余额充值 -->
+            <div id="handle_user_balance" class="modal fade" tabindex="-1" data-focus-on="input:first" data-backdrop="static" data-keyboard="false">
+                <div class="modal-dialog" style="width:300px;">
+                    <div class="modal-content">
+                        <div class="modal-header">
+                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
+                            <h4 class="modal-title">充值</h4>
+                        </div>
+                        <div class="modal-body">
+                            <div class="alert alert-danger" style="display: none;" id="msg"></div>
+                            <!-- BEGIN FORM-->
+                            <form action="#" method="post" class="form-horizontal">
+                                <div class="form-body">
+                                    <div class="form-group">
+                                        <label for="amount" class="col-md-4 control-label"> 充值金额 </label>
+                                        <div class="col-md-8">
+                                            <input type="text" class="form-control" name="amount" id="amount" placeholder="填入负值则会扣余额" onkeydown="if(event.keyCode==13){return false;}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </form>
+                            <!-- END FORM-->
+                        </div>
+                        <div class="modal-footer">
+                            <button type="button" data-dismiss="modal" class="btn dark btn-outline">关闭</button>
+                            <button type="button" class="btn red btn-outline" onclick="return handleUserBalance();">充值</button>
+                        </div>
+                    </div>
+                </div>
+            </div>
         </div>
         <!-- END PAGE BASE CONTENT -->
     </div>
@@ -384,5 +427,43 @@
                 $("#passwd").val(ret);
             });
         }
+
+        // 余额充值
+        function handleUserBalance() {
+            var amount = $("#amount").val();
+            var reg = /^(\-?)\d+(\.\d+)?$/; //只可以是正负数字
+
+            if (amount == '' || amount == 0 || !reg.test(amount)) {
+                $("#msg").show().html("请输入充值金额");
+                $("#name").focus();
+                return false;
+            }
+
+            $.ajax({
+                url:'{{url('admin/handleUserBalance')}}',
+                type:"POST",
+                data:{_token:'{{csrf_token()}}', user_id:'{{Request::get('id')}}', amount:amount},
+                beforeSend:function(){
+                    $("#msg").show().html("充值中...");
+                },
+                success:function(ret){
+                    if (ret.status == 'fail') {
+                        $("#msg").show().html(ret.message);
+                        return false;
+                    } else {
+                        layer.msg(ret.message, {time:1000}, function() {
+                            if (ret.status == 'success') {
+                                $("#handle_user_balance").modal("hide");
+                                window.location.reload();
+                            }
+                        });
+                    }
+                },
+                error:function(){
+                    $("#msg").show().html("请求错误,请重试");
+                },
+                complete:function(){}
+            });
+        }
     </script>
 @endsection

+ 1 - 1
resources/views/shop/editGoods.blade.php

@@ -14,7 +14,7 @@
                 <i class="fa fa-circle"></i>
             </li>
             <li>
-                <a href="{{url('shop/editGoods')}}">编辑商品</a>
+                <a href="{{url('shop/editGoods?id=' . Request::get('id'))}}">编辑商品</a>
             </li>
         </ul>
         <!-- END PAGE BREADCRUMB -->

+ 1 - 0
routes/web.php

@@ -63,6 +63,7 @@ Route::group(['middleware' => ['user', 'admin']], function() {
     Route::post('admin/setReferralPercent', 'AdminController@setReferralPercent'); // 设置返利比例
     Route::post('admin/setQrcode', 'AdminController@setQrcode'); // 设置充值二维码
     Route::post('admin/resetUserTraffic', 'AdminController@resetUserTraffic'); // 重置用户流量
+    Route::post('admin/handleUserBalance', 'AdminController@handleUserBalance'); // 余额充值
     Route::get('admin/makePasswd', 'AdminController@makePasswd'); // 获取随机密码
     Route::get('admin/download', 'AdminController@download'); // 下载转换过的JSON配置
     Route::any('shop/goodsList', 'ShopController@goodsList'); // 商品列表

+ 11 - 5
sql/db.sql

@@ -528,10 +528,10 @@ CREATE TABLE `user_balance_log` (
   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
   `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '账号ID',
   `order_id` int(11) NOT NULL DEFAULT '0' COMMENT '订单ID',
-  `before` decimal(11,2) NOT NULL DEFAULT '0.00' COMMENT '发生前余额',
-  `after` decimal(11,2) NOT NULL DEFAULT '0.00' COMMENT '发生后余额',
-  `balance` decimal(11,2) NOT NULL DEFAULT '0.00' COMMENT '发生金额',
-  `desc` varchar(255) DEFAULT '' COMMENT '描述',
+  `before` int(11) NOT NULL DEFAULT '0' COMMENT '发生前余额,单位分',
+  `after` int(11) NOT NULL DEFAULT '0' COMMENT '发生后金额,单位分',
+  `amount` int(11) NOT NULL DEFAULT '0' COMMENT '发生金额,单位分',
+  `desc` varchar(255) DEFAULT '' COMMENT '操作描述',
   `created_at` datetime DEFAULT NULL COMMENT '创建时间',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -749,7 +749,13 @@ INSERT INTO `country` VALUES ('36', '波兰', 'pl');
 INSERT INTO `country` VALUES ('37', '哈萨克斯坦', 'kz');
 INSERT INTO `country` VALUES ('38', '乌克兰', 'ua');
 INSERT INTO `country` VALUES ('39', '罗马尼亚', 'ro');
-INSERT INTO `country` VALUES ('40', '阿拉伯联合酋长国', 'ae');
+INSERT INTO `country` VALUES ('40', '阿联酋', 'ae');
+INSERT INTO `country` VALUES ('41', '南非', 'za');
+INSERT INTO `country` VALUES ('42', '缅甸', 'mm');
+INSERT INTO `country` VALUES ('43', '冰岛', 'is');
+INSERT INTO `country` VALUES ('44', '芬兰', 'fi');
+INSERT INTO `country` VALUES ('45', '卢森堡', 'lu');
+INSERT INTO `country` VALUES ('46', '比利时', 'be');
 
 
 

+ 26 - 0
sql/update/20171129.sql

@@ -0,0 +1,26 @@
+INSERT INTO `country` VALUES ('40', '阿联酋', 'ae');
+INSERT INTO `country` VALUES ('41', '南非', 'za');
+INSERT INTO `country` VALUES ('42', '缅甸', 'mm');
+INSERT INTO `country` VALUES ('43', '冰岛', 'is');
+INSERT INTO `country` VALUES ('44', '芬兰', 'fi');
+INSERT INTO `country` VALUES ('45', '卢森堡', 'lu');
+INSERT INTO `country` VALUES ('46', '比利时', 'be');
+
+
+-- 用户余额字段由decimal改为int,数值变大十倍
+ALTER TABLE `user` MODIFY `balance` int(11) NOT NULL DEFAULT '0' COMMENT '余额,单位分'
+UPDATE `user` SET balance = balance * 100;
+
+
+DROP TABLE `user_balance_log`;
+CREATE TABLE `user_balance_log` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '账号ID',
+  `order_id` int(11) NOT NULL DEFAULT '0' COMMENT '订单ID',
+  `before` int(11) NOT NULL DEFAULT '0' COMMENT '发生前余额,单位分',
+  `after` int(11) NOT NULL DEFAULT '0' COMMENT '发生后金额,单位分',
+  `amount` int(11) NOT NULL DEFAULT '0' COMMENT '发生金额,单位分',
+  `desc` varchar(255) DEFAULT '' COMMENT '操作描述',
+  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;