Browse Source

禁言调整

zhangxiaobin 1 year ago
parent
commit
0b0a843004

+ 0 - 1
application/admin/controller/UserPower.php

@@ -23,7 +23,6 @@ class UserPower extends Backend
         parent::_initialize();
         $this->model = new \app\admin\model\UserPower;
         $this->view->assign("privateMessagesList", $this->model->getPrivateMessagesList());
-        $this->view->assign("barrageList", $this->model->getBarrageList());
         $this->view->assign("speakList", $this->model->getSpeakList());
         $this->view->assign("rechargeList", $this->model->getRechargeList());
         $this->view->assign("raffleList", $this->model->getRaffleList());

+ 5 - 4
application/admin/lang/zh-cn/user_power.php

@@ -6,11 +6,12 @@ return [
     'Private_messages'   => '禁止私聊',
     'Private_messages 0' => '正常',
     'Private_messages 1' => '禁止',
-    'Barrage'            => '禁止弹幕',
-    'Barrage 0'          => '正常',
-    'Barrage 1'          => '禁止',
-    'Speak'              => '禁言',
+    'Private_messages 2' => '禁止(永久)',
+    'Private_messages_time' => '禁止私聊时间',
+    'Speak'              => '禁言弹幕',
     'Speak 0'            => '正常',
+    'Speak 1'            => '禁止',
+    'Speak 2'            => '禁止(永久)',
     'Speak_time'         => '禁言时间',
     'Recharge'           => '充值',
     'Recharge 0'         => '正常',

+ 2 - 15
application/admin/model/UserPower.php

@@ -26,7 +26,6 @@ class UserPower extends Model
     // 追加属性
     protected $append = [
         'private_messages_text',
-        'barrage_text',
         'speak_text',
         'speak_time_text',
         'recharge_text',
@@ -43,17 +42,12 @@ class UserPower extends Model
     
     public function getPrivateMessagesList()
     {
-        return ['0' => __('Private_messages 0'), '1' => __('Private_messages 1')];
-    }
-
-    public function getBarrageList()
-    {
-        return ['0' => __('Barrage 0'), '1' => __('Barrage 1')];
+        return ['0' => __('Private_messages 0'), '1' => __('Private_messages 1'), '2' => __('Private_messages 2')];
     }
 
     public function getSpeakList()
     {
-        return ['0' => __('Speak 0')];
+        return ['0' => __('Speak 0'),'1' => __('Speak 1'),'2' => __('Speak 3')];
     }
 
     public function getRechargeList()
@@ -105,13 +99,6 @@ class UserPower extends Model
     }
 
 
-    public function getBarrageTextAttr($value, $data)
-    {
-        $value = $value ? $value : (isset($data['barrage']) ? $data['barrage'] : '');
-        $list = $this->getBarrageList();
-        return isset($list[$value]) ? $list[$value] : '';
-    }
-
 
     public function getSpeakTextAttr($value, $data)
     {

+ 3 - 9
application/admin/view/user_power/add.html

@@ -19,15 +19,9 @@
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Barrage')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Private_messages_time')}:</label>
         <div class="col-xs-12 col-sm-8">
-                        
-            <select  id="c-barrage" data-rule="required" class="form-control selectpicker" name="row[barrage]">
-                {foreach name="barrageList" item="vo"}
-                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
-                {/foreach}
-            </select>
-
+            <input id="c-private_messages_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[private_messages_time]" type="text" value="0">
         </div>
     </div>
     <div class="form-group">
@@ -45,7 +39,7 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Speak_time')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-speak_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[speak_time]" type="text" value="{:date('Y-m-d H:i:s')}">
+            <input id="c-speak_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[speak_time]" type="text" value="0">
         </div>
     </div>
     <div class="form-group">

+ 2 - 8
application/admin/view/user_power/edit.html

@@ -19,15 +19,9 @@
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Barrage')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Private_messages_time')}:</label>
         <div class="col-xs-12 col-sm-8">
-                        
-            <select  id="c-barrage" data-rule="required" class="form-control selectpicker" name="row[barrage]">
-                {foreach name="barrageList" item="vo"}
-                    <option value="{$key}" {in name="key" value="$row.barrage"}selected{/in}>{$vo}</option>
-                {/foreach}
-            </select>
-
+            <input id="c-private_messages_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[private_messages_time]" type="text" value="{$row.private_messages|htmlentities}">
         </div>
     </div>
     <div class="form-group">

+ 43 - 1
application/common/library/Auth.php

@@ -107,6 +107,21 @@ class Auth
                 $this->setError('Account not exist');
                 return false;
             }
+            if ($userpower['private_messages'] == 1 || $userpower['speak'] == 1) {
+                $time = time();
+                $updateArr = [];
+                if ($userpower['private_messages_time'] < $time) {
+                    $updateArr['private_messages'] = 0;
+                    $user->power->private_messages = 0;
+                }
+                if ($userpower['speak_time'] < $time) {
+                    $updateArr['speak'] = 0;
+                    $user->power->speak = 0;
+                }
+                if (!empty($updateArr)) {
+                    UserPower::where(['user_id'=>$user_id])->update($updateArr);
+                }
+            }
             $user->power = $userpower;
 
 
@@ -341,7 +356,19 @@ class Auth
             if(!$userpower){
                 return false;
             }
-
+            if ($userpower['private_messages'] == 1 || $userpower['speak'] == 1) {
+                $time = time();
+                $updateArr = [];
+                if ($userpower['private_messages_time'] < $time) {
+                    $updateArr['private_messages'] = 0;
+                }
+                if ($userpower['speak_time'] < $time) {
+                    $updateArr['speak_time'] = 0;
+                }
+                if (!empty($updateArr)) {
+                    UserPower::where(['user_id'=>$user_id])->update($updateArr);
+                }
+            }
             Db::startTrans();
             try {
                 // 微信内置浏览器时不请空用户的token,APP才清除所有token
@@ -523,6 +550,21 @@ class Auth
         if($own_guild_id){
             $userinfo['own_guild_id'] = $own_guild_id;
         }
+        if ($this->power->private_messages == 1 ||$this->power->speak == 1) {
+            $time = time();
+            $updateArr = [];
+            if ($this->power->private_messages_time < $time) {
+                $updateArr['private_messages'] = 0;
+                $this->power->private_messages = 0;
+            }
+            if ($this->power->speak_time < $time) {
+                $updateArr['speak_time'] = 0;
+                $this->power->speak = 0;
+            }
+            if (!empty($updateArr)) {
+                UserPower::where(['user_id'=>$this->_user->id])->update($updateArr);
+            }
+        }
         $userinfo['user_power'] = $this->power;
         $userinfo['pre_nickname'] = isset($user['pre_nickname']) ? $user['pre_nickname'] : '';
         $userinfo['pre_avatar'] = isset($user['pre_avatar']) ? $user['pre_avatar'] : '';

+ 3 - 3
public/assets/js/backend/user_power.js

@@ -30,9 +30,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'user.nickname', title: __('User.nickname'), operate: 'LIKE'},
                         {field: 'user.avatar', title: __('User.avatar'), operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image},
                         {field: 'user.mobile', title: __('User.mobile'), operate: 'LIKE'},
-                        {field: 'private_messages', title: __('Private_messages'), searchList: {"0":__('Private_messages 0'),"1":__('Private_messages 1')}, formatter: Table.api.formatter.normal},
-                        {field: 'barrage', title: __('Barrage'), searchList: {"0":__('Barrage 0'),"1":__('Barrage 1')}, formatter: Table.api.formatter.normal},
-                        {field: 'speak', title: __('Speak'), searchList: {"0":__('Speak 0')}, formatter: Table.api.formatter.normal},
+                        {field: 'private_messages', title: __('Private_messages'), searchList: {"0":__('Private_messages 0'),"1":__('Private_messages 1'),"2":__('Private_messages 2')}, formatter: Table.api.formatter.normal},
+                        {field: 'private_messages_time', title: __('Private_messages_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+                        {field: 'speak', title: __('Speak'), searchList: {"0":__('Speak 0'),"1":__('Speak 1'),"2":__('Speak 2')}, formatter: Table.api.formatter.normal},
                         {field: 'speak_time', title: __('Speak_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
                         {field: 'recharge', title: __('Recharge'), searchList: {"0":__('Recharge 0'),"1":__('Recharge 1')}, formatter: Table.api.formatter.normal},
                         {field: 'raffle', title: __('Raffle'), searchList: {"0":__('Raffle 0'),"1":__('Raffle 1')}, formatter: Table.api.formatter.normal},