Browse Source

setrole接口优化,level3账号设置角色时不关联供应商

wufeng 2 years ago
parent
commit
7943b8aa54
1 changed files with 117 additions and 109 deletions
  1. 117 109
      app/admin/controller/User.php

+ 117 - 109
app/admin/controller/User.php

@@ -352,116 +352,124 @@ class User extends BaseController{
         return app_show(0,"获取成功",$list);
     }
 
-      /**
-	    * 修改用户基础信息
-	    */
-	    public  function  setRole(){
-	        $post=$this->request->only(["id"=>"","nickname"=>"","mobile"=>"","relaComNo"=>"","companyNo"=>"","roleid"=>"",
-	        "token"=>""],"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",
-	        	]);
-	        if($valide->check($post)==false) return error_show(1004,$valide->getError());
-	        if($post['roleid']!=0){
-	            $roleinfo =Db::name("role")->where("id","=",$post['roleid'])->find();
-	            if(empty($roleinfo)){
-	                return error_show(1002,"角色不存在");
-	            }
-	            if($roleinfo['status']==0){
-	                return error_show(1002,"角色已禁用");
-	            }
-	             if($roleinfo['level']==1){
-	                return error_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($companyNo==""){
-			 return error_show(1004,"业务公司编号不能为空");
-		}
-		$company =Db::name("supplier_info")->where(["code"=>$companyNo])->find();
-		if($company==false){
-			return error_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 error_show(1002,"超管账户不允许设置其他角色");
-	        $userrole = Db::name("user_role")
-	        ->where(["uid"=>$post['id'],"companyNo"=>$companyNo,"is_del"=>0])
-	        ->find();
-			$ismain =Db::name("user_role")->where(["uid"=>$post['id'],"is_main"=>1,"is_del"=>0])->find();
-	        Db::startTrans();
-	        try{
+    /**
+     * 修改用户基础信息
+     */
+    public function setRole()
+    {
+        $post = $this->request->only(["id", 'nickname', 'mobile', "relaComNo" => "", "companyNo" => "", "roleid", "token" => ""], "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",
+        ]);
+        if ($valide->check($post) == false) return error_show(1004, $valide->getError());
+        if ($post['roleid'] != 0) {
+            $roleinfo = Db::name("role")
+                ->field('id,status,level')
+                ->where("id", $post['roleid'])
+                ->find();
+            if (empty($roleinfo)) return error_show(1002, "角色不存在");
+            if ($roleinfo['status'] == 0) return error_show(1002, "角色已禁用");
+            if ($roleinfo['level'] == 1) return error_show(1002, "超管级别角色不允许设置");
 
-	             if(empty($userrole)){
-	                $roledata =[
-	                    "uid"=>$post['id'],
-	                    "roleid"=>$post['roleid'],
-	                    "nickname"=>$post['nickname'],
-	                    "companyNo"=>$companyNo,
-	                    "company_type"=>$company["type"]==3?2:1,
-	                    "is_main"=>$ismain?0:1,
-	                    "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
-						]
-						];
-
-					$companyinfo = ["id"=>$post['id'],"company"=>$companyarr,"token"=>$post['token']];
-					$companyset =setUserCompany($companyinfo);
-					if(!isset($companyset['code'])||$companyset['code']!=0){
-						return error_show(1004,$companyset['message']);
-		            }
-
-	               $up= Db::name("user_role")->insert($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);
-	            }
-			    $saveinfo =[
-						"id"=>$post['id'],
-						"nickname"=>$post['nickname'],
-						"mobile"=>$post['mobile'],
-						"token"=>$post['token']
-					];
-		            $saev= resetinfo($saveinfo);
-
-		            if(!isset($saev['code'])||$saev['code']!=0){
-						return error_show(1004,$saev['message']);
-		            }
-	              if($up==false){
-	                   Db::rollback();
-	                return error_show(1004,'用户信息更新失败');
-	              }
-	            Db::commit();
-	            return app_show(0,'用户信息更新成功');
-	        }catch (\Exception $e){
-	             Db::rollback();
-	             return error_show(1004,$e->getMessage());
-	        }
-	    }
+        }
+        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 !== 3) {
+            if ($companyNo == "") return error_show(1004, "业务公司编号不能为空");
+            $company = Db::name("supplier_info")->field('code')->where(["code" => $companyNo])->find();
+            if ($company == false) return error_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 error_show(1002, "超管账户不允许设置其他角色");
+
+        $userrole_where = ["uid" => $post['id'], "is_del" => 0];
+        if ($this->level !== 3) $userrole_where['companyNo'] = $companyNo;
+
+        $userrole = Db::name("user_role")
+            ->field('id')
+            ->where($userrole_where)
+            ->find();
+        $ismain = Db::name("user_role")->field('id')->where(["uid" => $post['id'], "is_main" => 1, "is_del" => 0])->find();
+        Db::startTrans();
+        try {
+
+            if (empty($userrole)) {
+                $roledata = [
+                    "uid" => $post['id'],
+                    "roleid" => $post['roleid'],
+                    "nickname" => $post['nickname'],
+                    "companyNo" => $this->level == 2 ? $companyNo : '',
+                    "company_type" => $this->level == 2 ? ($company["type"] == 3 ? 2 : 1) : 0,
+                    "is_main" => $ismain ? 0 : 1,
+                    "status" => 1,
+                    "addtime" => date("Y-m-d H:i:s"),
+                    "updatetime" => date("Y-m-d H:i:s")
+                ];
+
+                //level 为1,3时,角色不和公司关联,所以不需要操作
+                if ($this->level == 2) {
+                    $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']];
+                    $companyset = setUserCompany($companyinfo);
+                    if (!isset($companyset['code']) || $companyset['code'] != 0) {
+                        return error_show(1004, $companyset['message']);
+                    }
+                }
+
+
+                $up = Db::name("user_role")->insert($roledata);
+            } else {
+                $userrole['roleid'] = $post['roleid'];
+                $userrole['nickname'] = $post['nickname'];
+                $userrole['companyNo'] = $this->level == 2 ? $companyNo : '';
+                $userrole['company_type'] = $this->level == 2 ? ($company["type"] == 3 ? 2 : 1) : 0;
+                $userrole['updatetime'] = date("Y-m-d H:i:s");
+                $up = Db::name("user_role")->where(["id" => $userrole['id'], "is_del" => 0])->save($userrole);
+            }
+//            $saveinfo = [
+//                "id" => $post['id'],
+//                "nickname" => $post['nickname'],
+//                "mobile" => $post['mobile'],
+//                "token" => $post['token']
+//            ];
+//            $saev = resetinfo($saveinfo);
+
+//            if (!isset($saev['code']) || $saev['code'] != 0) {
+//                return error_show(1004, $saev['message']);
+//            }
+            if ($up == false) {
+                Db::rollback();
+                return error_show(1004, '用户信息更新失败');
+            }
+            Db::commit();
+            return app_show(0, '用户信息更新成功');
+        } catch (\Exception $e) {
+            Db::rollback();
+            return error_show(1004, $e->getMessage());
+        }
+    }
 	    /**获取用户关联业务公司
 		* @return \think\response\Json|void
 		* @throws \think\db\exception\DataNotFoundException