Browse Source

设置角色接口优化

wufeng 2 years ago
parent
commit
ab0a2f5aec
1 changed files with 101 additions and 68 deletions
  1. 101 68
      app/admin/controller/User.php

+ 101 - 68
app/admin/controller/User.php

@@ -3,6 +3,7 @@ declare (strict_types=1);
 
 namespace app\admin\controller;
 
+use app\admin\common\User as UserCommon;
 use think\facade\Db;
 use app\admin\model\ActionLog;
 use think\facade\Validate;
@@ -27,13 +28,13 @@ class User extends Base
 
         $rs = json_decode($rs, true);
 
-        if(!isset($rs['code'])|| $rs['code']!=0)  return json_show(1004,$rs['message']);
+        if (!isset($rs['code']) || $rs['code'] != 0) return json_show(1004, $rs['message']);
 
-        $role =Db::name('user_role')
-            ->where(['uid'=>$rs['data']['id'],'is_main'=>1,'is_del'=>0])
+        $role = Db::name('user_role')
+            ->where(['uid' => $rs['data']['id'], 'is_main' => 1, 'is_del' => 0])
             ->findOrEmpty();
 
-        if(empty($role)) return json_show(1004,'未开通登录权限');
+        if (empty($role)) return json_show(1004, '没有默认角色,无法登录');
 
         $roleinfo = Db::name('role')
             ->where(['id' => $role['roleid']])
@@ -47,13 +48,14 @@ class User extends Base
             'role_id' => $role['roleid'] ?? '',
         ]);
 
-        return json_show(0,'登录成功',$data);
+        return json_show(0, '登录成功', $data);
 
     }
 
 
-    public function list(){
-        $param = $this->request->only(['nickname' => '', 'username' => '', 'status' => '', 'page' => 1, 'size' => 10, 'uid' => '', 'nuid' => '','companyNo'=>''], 'post', 'trim');
+    public function list()
+    {
+        $param = $this->request->only(['nickname' => '', 'username' => '', 'status' => '', 'page' => 1, 'size' => 10, 'uid' => '', 'nuid' => '', 'companyNo' => ''], 'post', 'trim');
 
         $param['level'] = 1;//只筛选超管用户
         $userCommon = new CommonUser();
@@ -379,40 +381,54 @@ class User extends Base
     //账号角色修改
     public function setRole()
     {
-        $post = $this->request->only(["id" => "", "nickname" => "", "mobile" => "", "relaComNo" => "", "companyNo" => "", "roleid" => "", "token" => ""], "post", "trim");
+        $post = $this->request->only(["id", "roleid", 'companyNo'], "post", "trim");
 
         $valide = Validate::rule([
             "id|账户ID" => "require|number|gt:0",
-            "nickname|名称" => "require|max:255",
-            "mobile|手机号" => "require|mobile",
-            "relaComNo|业务公司" => "max:255",
-            "companyNo|业务公司" => "max:255",
-            "roleid|角色ID" => "require|number",
+//            "nickname|名称" => "require|max:255",
+//            "mobile|手机号" => "require|mobile",
+//            "relaComNo|业务公司" => "max:255",
+            "roleid|角色ID" => "require|number|gt:0",
+            "companyNo|业务公司" => "require|max:255",
         ]);
         if ($valide->check($post) == false) return json_show(1004, $valide->getError());
         if ($post['roleid'] != 0) {
-            $roleinfo = Db::name("role")->where("id", "=", $post['roleid'])->find();
+            $roleinfo = Db::name("role")
+                ->field('id,status,level')
+                ->where("id", $post['roleid'])
+                ->find();
             if (empty($roleinfo)) return json_show(1002, "角色不存在");
             if ($roleinfo['status'] == 0) return json_show(1002, "角色已禁用");
             if ($roleinfo['level'] == 1) return json_show(1002, "超管级别角色不允许设置");
         }
-        if ($this->level == 1) $companyNo = isset($post['companyNo']) && $post['companyNo'] !== '' ? trim($post['companyNo']) : "";
-        else  $companyNo = isset($post['relaComNo']) && $post['relaComNo'] !== '' ? trim($post['relaComNo']) : "";
+//        if ($this->level == 1) $companyNo = isset($post['companyNo']) && $post['companyNo'] !== '' ? trim($post['companyNo']) : "";
+//        else  $companyNo = isset($post['relaComNo']) && $post['relaComNo'] !== '' ? trim($post['relaComNo']) : "";
 
-        if ($companyNo == "") return json_show(1004, "业务公司编号不能为空");
+//        if ($companyNo == "") return json_show(1004, "业务公司编号不能为空");
 
-        $company = Db::name("supplier_info")->where(["code" => $companyNo])->find();
-        if ($company == false) return json_show(1004, "业务公司不存在");
+//        $company = Db::name("supplier_info")->where(["code" => $companyNo])->find();
+//        if ($company == false) return json_show(1004, "业务公司不存在");
+
+//        $isSuper = Db::name("user_role")->alias("a")
+//            ->leftJoin("role b", "a.roleid=b.id")
+//            ->where(["a.uid" => $post['id'], "a.is_del" => 0, "b.level" => 1])
+//            ->findOrEmpty();
+//        if (!empty($isSuper)) return json_show(1002, "超管账户不允许设置其他角色");
+
+        $userCommon = new UserCommon();
+
+        $tmp = $userCommon->handle('userCompanyList', ['account_id' => $this->uid, 'companyCode' => $post['companyNo']]);
+
+        if (!isset($tmp['code']) || $tmp['code'] != 0) return json_show($tmp['code'], $tmp['message'], $tmp['data']);
+        if ($tmp['data']['count'] != 1) return json_show(1005, '尚未绑定该公司');
+        $is_main = $tmp['data']['list'][0]['is_main'];
+        $company_type = $tmp['data']['list'][0]['company_type'];
 
-        $isSuper = Db::name("user_role")->alias("a")
-            ->leftJoin("role b", "a.roleid=b.id")
-            ->where(["a.uid" => $post['id'], "a.is_del" => 0, "b.level" => 1])
-            ->findOrEmpty();
-        if (!empty($isSuper)) return json_show(1002, "超管账户不允许设置其他角色");
         $userrole = Db::name("user_role")
-            ->where(["uid" => $post['id'], "companyNo" => $companyNo, "is_del" => 0])
+            ->field('id')
+            ->where(["uid" => $post['id'], "companyNo" => $post['companyNo'], "is_del" => 0])
             ->find();
-        $ismain = Db::name("user_role")->where(["uid" => $post['id'], "is_main" => 1, "is_del" => 0])->find();
+//        $ismain = Db::name("user_role")->where(["uid" => $post['id'], "is_main" => 1, "is_del" => 0])->find();
         Db::startTrans();
         try {
 
@@ -421,60 +437,77 @@ class User extends Base
                     "uid" => $post['id'],
                     "roleid" => $post['roleid'],
                     "nickname" => $post['nickname'],
-                    "companyNo" => $companyNo,
-                    "company_type" => $company["type"] == 3 ? 2 : 1,
-                    "is_main" => $ismain ? 0 : 1,
+                    "companyNo" => $post['companyNo'],
+                    "company_type" => $company_type,
+                    "is_main" => $is_main,
                     "status" => 1,
                     "addtime" => date("Y-m-d H:i:s"),
                     "updatetime" => date("Y-m-d H:i:s")
                 ];
-                $companyarr = [
-                    [
-                        "companyCode" => $company["code"],
-                        "companyName" => $company["name"],
-                        "company_type" => $company["type"] == 3 ? 2 : 1,
-                        "is_main" => $ismain ? 0 : 1
-                    ]
-                ];
+//                $companyarr = [
+//                    [
+//                        "companyCode" => $company["code"],
+//                        "companyName" => $company["name"],
+//                        "company_type" => $company["type"] == 3 ? 2 : 1,
+//                        "is_main" => $ismain ? 0 : 1
+//                    ]
+//                ];
 
-                $companyinfo = ["id" => $post['id'], "company" => $companyarr, "token" => $post['token']];
+//                $companyinfo = ["id" => $post['id'], "company" => $companyarr, "token" => $post['token']];
 
-                $userCommon = new \app\admin\common\User();
-                $companyset = $userCommon->handle('setcompany', $companyinfo);
+//                $userCommon = new \app\admin\common\User();
+//                $companyset = $userCommon->handle('setcompany', $companyinfo);
 
-                if (!isset($companyset['code']) || $companyset['code'] != 0) return json_show(1004, $companyset['message']);
+//                if (!isset($companyset['code']) || $companyset['code'] != 0) return json_show(1004, $companyset['message']);
 
 
-                $up = Db::name("user_role")->insert($roledata);
+                $userrole['id'] = Db::name("user_role")->insertGetId($roledata);
             } else {
-                $userrole['roleid'] = $post['roleid'];
-                $userrole['nickname'] = $post['nickname'];
-                $userrole['companyNo'] = $companyNo;
-                $userrole['company_type'] = $company["type"] == 3 ? 2 : 1;
-                $userrole['updatetime'] = date("Y-m-d H:i:s");
-                $up = Db::name("user_role")->where(["uid" => $post['id'], "companyNo" => $companyNo, "is_del" => 0])->save($userrole);
+//                $userrole['roleid'] = $post['roleid'];
+//                $userrole['nickname'] = $post['nickname'];
+//                $userrole['companyNo'] = $companyNo;
+//                $userrole['company_type'] = $company["type"] == 3 ? 2 : 1;
+//                $userrole['updatetime'] = date("Y-m-d H:i:s");
+                $up = Db::name("user_role")
+                    ->where('id', $userrole['id'])
+                    ->update([
+                        "company_type" => $company_type,
+                        "is_main" => $is_main,
+                        'roleid' => $post['roleid'],
+                        'updatetime' => date("Y-m-d H:i:s"),
+                    ]);
             }
-            $saveinfo = [
-                "id" => $post['id'],
-                "nickname" => $post['nickname'],
-                "mobile" => $post['mobile'],
-                "token" => $post['token']
-            ];
-//            $saev = resetinfo($saveinfo);
-            $userCommon = new \app\admin\common\User();
-            $saev = $userCommon->handle('usersave', $saveinfo);
-            if (!isset($saev['code']) || $saev['code'] != 0) {
-                return json_show(1004, $saev['message']);
-            }
-            if ($up == false) {
-                Db::rollback();
-                return json_show(1004, '用户信息更新失败');
+
+
+            //设置默认角色
+            if ($is_main == 1) {
+                Db::name('user_role')
+                    ->where(["uid" => $post['id'], "is_del" => 0])
+                    ->where('id', '<>', $userrole['id'])
+                    ->update(['is_main' => 0]);
             }
+
+//            $saveinfo = [
+//                "id" => $post['id'],
+//                "nickname" => $post['nickname'],
+//                "mobile" => $post['mobile'],
+//                "token" => $post['token']
+//            ];
+//            $saev = resetinfo($saveinfo);
+//            $userCommon = new \app\admin\common\User();
+//            $saev = $userCommon->handle('usersave', $saveinfo);
+//            if (!isset($saev['code']) || $saev['code'] != 0) {
+//                return json_show(1004, $saev['message']);
+//            }
+//            if ($up == false) {
+//                Db::rollback();
+//                return json_show(1004, '用户信息更新失败');
+//            }
             Db::commit();
-            return json_show(0, '用户信息更新成功');
+            return json_show(0, '操作成功');
         } catch (\Exception $e) {
             Db::rollback();
-            return json_show(1004, $e->getMessage());
+            return json_show(1004, '操作失败,' . $e->getMessage());
         }
     }
 
@@ -828,7 +861,7 @@ class User extends Base
         if ($data['roleid'] != "") {
             $action = Db::name("role_action")->where(["role_id" => $data['roleid'], "status" => 1])->find();
             if ($action != false) {
-                $data['private_field'] = isset($action['private_field']) && $action['private_field'] != "" ? explode(",",$action['private_field']) : [];
+                $data['private_field'] = isset($action['private_field']) && $action['private_field'] != "" ? explode(",", $action['private_field']) : [];
             }
         }
         $data['business'] = $val;
@@ -879,14 +912,14 @@ class User extends Base
                 ->leftJoin("role b", "a.roleid=b.id")->where([["b.level", "=", 1], ["a.is_del", "=", 0]])->where($where)->column
                 ("uid");
             if ($post['islevel'] == 1) $post['uid'] = $uid;
-             else $post['nuid'] = $uid;
+            else $post['nuid'] = $uid;
 
             unset($post["islevel"]);
         }
 
         $userCommon = new \app\admin\common\User();
         $userinfo = $userCommon->GetAccountall($post);
-        $userinfo = json_decode($userinfo,true);
+        $userinfo = json_decode($userinfo, true);
         if (empty($userinfo) || $userinfo['code'] != 0) return app_show($userinfo['code'], $userinfo['msg']);
 
         $data = $userinfo['data']['list'];