Ver Fonte

Merge pull request #325 from slobber/master

add feature: add one or more initial labels after user registration.
Bruskyii Panda há 8 anos atrás
pai
commit
1594d0375d

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

@@ -1589,6 +1589,7 @@ class AdminController extends Controller
     public function system(Request $request)
     {
         $view = $this->systemConfig();
+        $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
         return Response::view('admin/system', $view);
     }

+ 11 - 0
app/Http/Controllers/RegisterController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Http\Models\Invite;
 use App\Http\Models\SsConfig;
 use App\Http\Models\User;
+use App\Http\Models\UserLabel;
 use App\Http\Models\Verify;
 use Illuminate\Http\Request;
 use App\Mail\activeUser;
@@ -146,6 +147,16 @@ class RegisterController extends Controller
             $user->referral_uid = $referral_uid;
             $user->save();
 
+            if(count(self::$config['initial_labels_for_user']) > 0) {
+                $labels = explode(',', self::$config['initial_labels_for_user']);
+                foreach ($labels as $label) {
+                    $userLabel = new UserLabel();
+                    $userLabel->user_id = $user->id;
+                    $userLabel->label_id = $label;
+                    $userLabel->save();
+                }
+            }
+
             // 更新邀请码
             if (self::$config['is_invite_register'] && $user->id) {
                 Invite::query()->where('id', $code->id)->update(['fuid' => $user->id, 'status' => 1]);

+ 1 - 0
database/seeds/ConfigTableSeeder.php

@@ -64,5 +64,6 @@ class ConfigTableSeeder extends Seeder
         DB::insert("INSERT INTO `config` VALUES ('51', 'youzan_client_id', '');");
         DB::insert("INSERT INTO `config` VALUES ('52', 'youzan_client_secret', '');");
         DB::insert("INSERT INTO `config` VALUES ('53', 'kdt_id', '');");
+        DB::insert("INSERT INTO `config` VALUES ('54', 'initial_labels_for_user', '');");
     }
 }

+ 37 - 0
resources/views/admin/system.blade.php

@@ -4,7 +4,10 @@
     <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" />
     <link href="/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css" rel="stylesheet" type="text/css" />
+    <link href="/assets/global/plugins/select2/css/select2.min.css" rel="stylesheet" type="text/css" />
+    <link href="/assets/global/plugins/select2/css/select2-bootstrap.min.css" rel="stylesheet" type="text/css" />
 @endsection
+
 @section('title', '控制面板')
 @section('content')
     <!-- BEGIN CONTENT BODY -->
@@ -257,6 +260,25 @@
                                                             </div>
                                                         </div>
                                                     </div>
+
+                                                    <div class="form-group">
+                                                        <div class="col-md-6">
+                                                            <label for="subscribe_domain" class="col-md-3 control-label">初始用户标签</label>
+                                                            <div class="col-md-9">
+                                                                <select id="labels" class="form-control select2-multiple" name="initial_labels_for_user" multiple="multiple">
+                                                                    @foreach($label_list as $label)
+                                                                        <option value="{{$label->id}}"
+                                                                            @if (in_array($label->id, explode(',', $initial_labels_for_user)))
+                                                                            selected
+                                                                            @endif
+                                                                        >{{$label->name}}</option>
+                                                                    @endforeach
+                                                                </select>
+                                                                <span class="help-block"> 注册用户初始标签 </span>
+                                                            </div>
+                                                        </div>
+                                                        <div class="col-md-6"></div>
+                                                    </div>
                                                 </div>
                                             </form>
                                         </div>
@@ -611,9 +633,24 @@
 @section('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="/assets/global/plugins/select2/js/select2.full.min.js" type="text/javascript"></script>
     <script src="/js/layer/layer.js" type="text/javascript"></script>
 
     <script type="text/javascript">
+        $('#labels').select2({
+            placeholder: '设置后则可见相同标签的节点',
+            allowClear: true,
+            width:'100%'
+        }).change(function () {
+            var initial_labels_for_user = $(this).val().join(',');
+            $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'initial_labels_for_user', value:initial_labels_for_user}, function (ret) {
+                layer.msg(ret.message, {time:1000}, function() {
+                    if (ret.status == 'fail') {
+                        window.location.reload();
+                    }
+                });
+            });
+        });
         // 启用、禁用随机端口
         $('#is_rand_port').on({
             'switchChange.bootstrapSwitch': function(event, state) {