Browse Source

后台关系转移

lizhen_gitee 1 year ago
parent
commit
b42070cc52

+ 94 - 5
application/admin/controller/user/User.php

@@ -3,7 +3,7 @@
 namespace app\admin\controller\user;
 namespace app\admin\controller\user;
 
 
 use app\common\controller\Backend;
 use app\common\controller\Backend;
-
+use think\Db;
 /**
 /**
  * 会员管理
  * 会员管理
  *
  *
@@ -25,13 +25,102 @@ class User extends Backend
         $this->view->assign("statusList", $this->model->getStatusList());
         $this->view->assign("statusList", $this->model->getStatusList());
     }
     }
 
 
-
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        $this->selectpageFields = ['id','nickname'];
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if (false === $this->request->isAjax()) {
+            return $this->view->fetch();
+        }
+        //如果发送的来源是 Selectpage,则转发到 Selectpage
+        if ($this->request->request('keyField')) {
+            return $this->selectpage();
+        }
+        list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+        $list = $this->model
+            ->where($where)
+            ->order($sort, $order)
+            ->paginate($limit);
+        $result = ['total' => $list->total(), 'rows' => $list->items()];
+        return json($result);
+    }
 
 
     /**
     /**
-     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
-     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
-     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     * 关系转移
      */
      */
+    public function updateintro(){
+        if($this->request->isPost()){
+            $user_id       = input('user_id');
+            $new_intro_uid = input('new_intro_uid');
+
+            //验证
+            if(empty($user_id)) $this->error("请输入需要转移的用户ID");
+            if(empty($new_intro_uid)) $this->error("请输入新的上级用户ID");
+
+            Db::startTrans();
+
+            $user = Db::name('user')->where('id',$user_id)->lock(true)->find();
+            if(empty($user)){
+                Db::rollback();
+                $this->error('不存在的用户');
+            }
+
+
+            $new_intro = Db::name('user')->where('id',$new_intro_uid)->lock(true)->find();
+            if(empty($new_intro)){
+                Db::rollback();
+                $this->error('不存在的新上级用户');
+            }
+
+
+            $commonuser = new \app\common\model\User;
+
+            //我的多个下级,的推荐人,改成新人
+            $my_down = Db::name('user')->where('intro_uid',$user['id'])->select();
+//        dump($my_down);
+            if(!empty($my_down)){
+                foreach($my_down as $key => $down_user){
+                    $rs_down = $commonuser->updateIntro($down_user['id'],$new_intro_uid);
+                    if($rs_down !== true){
+                        Db::rollback();
+                        $this->error($rs_down);
+                    }
+                }
+            }
+
+
+            //理论上已经用不到了,预防万一又被查到
+            //我被转移了,我的上级保持不变,下级都没了
+            $my_update = [
+                'intro_num' => 0,
+                'intro_num_all' => 0,
+            ];
+            $rs2 = Db::name('user')->where('id',$user['id'])->update($my_update);
+            if($rs2 === false){
+                Db::rollback();
+                $this->error('更新被转移用户错误');
+            }
+
+            //记录个日志
+            $log = [
+                'info' => '用户['.$user['id'].']关系被转移,其名下直推有['.implode(',',array_column($my_down,'id')).'],都改到['.$new_intro_uid.']名下',
+                'createtime' => time(),
+            ];
+            Db::name('intro_log')->insertGetId($log);
+
+
+            //提交
+            Db::commit();
+            $this->success('转移完成');
+
+        }
+
+        return $this->view->fetch();
+    }
 
 
 
 
 }
 }

+ 26 - 0
application/admin/view/user/user/updateintro.html

@@ -0,0 +1,26 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">需要转移的用户:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input data-rule="required" data-source="user/user/index" data-field="nickname" data-order-by="id asc" data-format-item="[{id}]-[{nickname}]" class="form-control selectpage" name="user_id" type="text" value="">
+            <font color="red">被选中的人,其名下所有直推,都将转移给新的推荐人。</font>
+        </div>
+    </div>
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">新的推荐人:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input data-rule="required" data-source="user/user/index" data-field="nickname" data-order-by="id asc" data-format-item="[{id}]-[{nickname}]" class="form-control selectpage" name="new_intro_uid" type="text" value="">
+            <font color="red">将要接收N个新的直推。</font>
+        </div>
+    </div>
+
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 6 - 3
public/assets/js/backend/user/user.js

@@ -22,8 +22,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 url: $.fn.bootstrapTable.defaults.extend.index_url,
                 url: $.fn.bootstrapTable.defaults.extend.index_url,
                 pk: 'id',
                 pk: 'id',
                 sortName: 'id',
                 sortName: 'id',
-                fixedColumns: true,
-                fixedRightNumber: 1,
+//                fixedColumns: true,
+//                fixedRightNumber: 1,
                 columns: [
                 columns: [
                     [
                     [
                         {checkbox: true},
                         {checkbox: true},
@@ -66,7 +66,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 //                        {field: 'intro_ids', title: __('Intro_ids')},
 //                        {field: 'intro_ids', title: __('Intro_ids')},
 //                        {field: 'intro_level', title: __('Intro_level')},
 //                        {field: 'intro_level', title: __('Intro_level')},
 
 
-//                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
+//                        {field: 'operate', title: __('Operate'),table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                     ]
                     ]
                 ]
                 ]
             });
             });
@@ -80,6 +80,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         edit: function () {
         edit: function () {
             Controller.api.bindevent();
             Controller.api.bindevent();
         },
         },
+        updateintro: function () {
+            Controller.api.bindevent();
+        },
         api: {
         api: {
             bindevent: function () {
             bindevent: function () {
                 Form.api.bindevent($("form[role=form]"));
                 Form.api.bindevent($("form[role=form]"));