request->only(["token"=>"","nickname"=>"","id"=>"","mobile"=>"","companyArr"=>[]],"post"); $valide = $validate=Validate::rule([ 'nickname|真实姓名' => 'require|max:255|min:2', 'id|账户ID' => 'require|number|gt:0', 'mobile|手机号' => 'require|number|mobile', 'companyArr|业务公司' => 'require|array', ]); if($valide->check($post)==false) return json_show(1004,$valide->getError()); $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) && !empty($post['companyArr']))return error_show(1002,"超管账户不允许设置关联业务公司"); $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(!empty($post['companyArr'])){ if(!empty($post['companyArr'])){ foreach ($post['companyArr'] as &$item){ $company =Db::name("supplier_info")->where(["code"=>$item['companyCode']])->find(); $item['company_type'] = $company["type"]==3?2:1; } } $companyinfo = ["id"=>$post['id'],"company"=>$post['companyArr'],"token"=>$post['token']]; $companyset =setUserCompany($companyinfo); if(!isset($companyset['code'])||$companyset['code']!=0){ return error_show(1004,$companyset['message']); } } return app_show(0,"设置成功"); } /** * 用户列表 */ public function userList(){ $post=$this->request->only(["token"=>"","nickname"=>"","relaComNo"=>"","islevel"=>"","username"=>"","companyNo"=>"","status"=>"","page"=>1,"size"=>10],"post"); $post['companyNo']==""? ($post['companyNo']=$post['relaComNo']??""):""; $where=[["a.is_del","=",0]]; unset($post['relaComNo']); if($post['companyNo']!=""){ $where[]=["a.companyNo","=",$post['companyNo']]; } if($post['status']!==''){ $uid =Db::name("user_role")->alias("a")->where(["status"=>1,"is_del"=>0])->where($where)->column("uid"); if($post['status']==1){ $where[]=["a.status","=",1]; $post['uid']= $uid; }else{ $post['nouid']=$uid; } unset($post['status']); } if($post["islevel"]!=""){ $uid =Db::name("user_role")->alias("a") ->leftJoin("role b","a.roleid=b.id")->where($where)->column("uid"); if($post['islevel']==1){ $where[]=["b.level","=",1]; $post['uid']= $uid; }else{ $where[]=["b.level","<>",1]; $post['nouid']=$uid; } unset($post["islevel"]); } $userinfo=GetUserList($post); if(empty($userinfo)||$userinfo['code']!=0){ return app_show($userinfo['code'],$userinfo['msg']); } $data = $userinfo['data']['list']; $roleArr = Db::name("user_role")->alias("a") ->leftJoin("role b","a.roleid=b.id") ->where($where) ->column("role_name,roleid,a.status,b.level","a.companyNo"); $list=[]; foreach ($data as $value){ $value['roleid']=$roleArr[$value['companyCode']]['roleid']??""; $value['com_status']=$roleArr[$value['companyCode']]['status']??""; $value["role_name"] =$roleArr[$value['companyCode']]['role_name']??""; $value["role_level"] =$roleArr[$value['companyCode']]['level']??""; $list[]=$value; } return app_show(0,"获取成功",["list"=>$list,"count"=>$userinfo['data']["count"]]); } /**获取当前访问用户的信息 * @param token * @return \think\response\Json * @throws \think\exception\DbException */ public function userInfo(){ $post =$this->request->only(["token"=>"","relaComNo"=>""],"post","trim"); $userinfo=GetUserInfo($post['token']); if(empty($userinfo)||$userinfo['code']!=0){ return app_show(1002,"员工信息不存在"); } $data = $userinfo['data']; $where=[["uid","=", $data['id']],["status","=",1],["is_del","=",0]]; if($post['relaComNo']!=""){ $where[]=["companyNo","=",$post['relaComNo']]; }else{ $where[]=["is_main","=",1]; } $role =Db::name("user_role")->where($where)->findOrEmpty(); if(!empty($role)){ $company_name = Db::name("supplier_info")->where(["code"=>$role['companyNo']])->value("name",""); $roleinfo = Db::name("role")->where(["id"=>$role['roleid']])->field("role_name,level")->find(); }else{ return error_show(1004,'未开通登录权限'); } if(!empty($data['company_relaton'])){ $roleArr = Db::name("user_role")->alias("a") ->leftJoin("role b","a.roleid=b.id") ->where(["a.status"=>1,"a.is_del"=>0,"a.uid"=>$data['id']]) ->column("role_name,roleid,a.status,b.level","a.companyNo"); foreach ($data['company_relaton'] as &$item){ $item['roleid'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['roleid']:""; $item['role_name'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['role_name']:""; $item['role_status'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['status']:""; $item['role_level'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['level']:""; } } $data['role_name']=$roleinfo['role_name']??''; $data['company_name']=$company_name??''; $data['role_level']=$roleinfo['level']??''; $data['role_id']=$role['roleid']??''; $data['companyNo']=$role['companyNo']??''; $data['company_type']=$role['company_type']??''; return app_show(0,"获取成功",$data); } /** * @return \think\response\Json|void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function setStatus(){ $post =$this->request->only(["id"=>"","status"=>"","relaComNo"=>"","companyNo"=>"","token"=>""],"post"); $valide =Validate::rule([ 'id|账户ID' => 'require|number|gt:0', 'status|状态' => 'require|number|in:0,1', 'relaComNo|业务公司' => 'max:255', 'companyNo|业务公司' => 'max:255', ]); if($valide->check($post)==false) return error_show(1004,$valide->getError()); $message = $post['status']==1?"启用":"禁用"; if($this->level==1){ $companyNo = isset($post['companyNo'])&&$post['companyNo']!=='' ? trim($post['companyNo']) :""; }else{ $companyNo = isset($post['relaComNo'])&&$post['relaComNo']!=='' ? trim($post['relaComNo']) :""; } $userinfo =Db::name("user_role")->where(["uid"=>$post['id'],"companyNo"=>$companyNo,"is_del"=>0]) ->find(); if($userinfo==false){ return error_show(1005,"未找到有关账户信息"); }else{ $userinfo['status']=$post['status']; $userinfo['updatetime']=date("Y-m-d H:i:s"); $sa=Db::name("user_role")->save($userinfo); } if($sa==false){ return error_show(1005,"{$message}失败"); }else{ return app_show(0,"{$message}成功"); } } //获取所有用户的信息 public function userAll(){ $post=$this->request->only(['relaComNo'=>"","companyNo"=>"","nickname"=>"","roleid"=>"","status"=>""],"post","trim"); $condition = [["is_del","=",0]]; $rolecond=" level in (1,2,3)"; if($post['relaComNo']!=""){ $condition[]=["companyNo","=",$post['relaComNo']]; $rolecond = "level=1 or (level in (2,3) and companyNo ='{$post['relaComNo']}' )"; } if($post['companyNo']!=""){ $condition[]=["companyNo","=",$post['companyNo']]; $rolecond = "level=1 or (level in (2,3) and companyNo ='{$post['companyNo']}' )"; } if($post['roleid']!=""){ $condition[]=["roleid","=",$post['roleid']]; $rolecond = "id={$post['roleid']}"; } if($post['status']!="")$condition[]=["status","=",$post['status']]; if($post['nickname']!="")$condition[]=["nickname","like","%{$post['nickname']}%"]; $list=Db::name("user_role")->where($condition)->select()->toArray(); $role = Db::name("role")->whereRaw($rolecond)->column("role_name,level","id"); foreach ($list as &$value){ $value['role_name']= $role[$value['roleid']]['role_name']??""; $value['role_level']= $role[$value['roleid']]['level']??""; $value['companyName']= Db::name("supplier_info")->where(["code"=>$value['companyNo']])->value("name",''); } return app_show(0,"获取成功",$list); } /** * 修改用户基础信息 */ public function setRole(){ $post=$this->request->only(["id"=>"","nickname"=>"","relaComNo"=>"","companyNo"=>"","roleid"=>"","token"=>""], "post","trim"); $valide=Validate::rule([ "id|账户ID"=>"require|number|gt:0", "nickname|名称"=>"require|max:255", "relaComNo|业务公司"=>"max:255", "companyNo|业务公司"=>"max:255", // "company_type|业务公司类型"=>"require|number|in:1,2", "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{ 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['companyNo'] = $companyNo; $userrole['company_type'] =$company["type"]==3?2:1; $userrole['updatetime'] = date("Y-m-d H:i:s"); $up=Db::name("user_role")->save($userrole); } 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 * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function GetCompany(){ $post=$this->request->only(["token"=>"","uid"=>"","companyName"=>"","page"=>1,"size"=>20],"post","trim"); $where=[]; if($post['uid']!=""){ $where[]=["a.uid","=",$post['uid']]; }else{ $where[]=["a.uid","=",$this->uid]; } if($post['companyName']!=""){ $where[]=["b.name","like","%{$post['companyName']}%"]; } $count = Db::name("user_role")->alias("a") ->leftJoin("supplier_info b","a.companyNo=b.code") ->where($where) ->count(); $total =ceil($count/$post['size']); $page = $post['page']>$total ? intval($total):intval($post['page']); $list = Db::name("user_role")->alias("a") ->leftJoin("supplier_info b","a.companyNo=b.code") ->where($where) ->field("a.uid,a.nickname,roleid,companyNo,b.name as companyName,a.status,a.company_type") ->page($page,intval($post['size'])) ->select()->toArray(); foreach ($list as &$value){ $value['role_name'] = Db::name("role")->where(["id"=>$value["roleid"]])->value("role_name",""); } return app_show(0,'获取成功',["list"=>$list,"count"=>$count]); } //密码设置 public function setPwd(){ $post=$this->request->only(["id"=>"","password"=>""],"post","trim"); $validate=Validate::rule([ 'id|账户ID' => 'require|number', 'password|密码' => 'require|min:6|max:200', ]); if($validate->check($post)==false) return error_show(1004,$validate->getError()); $data = resetpwd($post); if(empty($data)||$data['code']!=0){ return error_show($data['code'],$data['message']); }else{ return app_show(0,"密码修改成功"); } } public function usersave(){ $post=$this->request->only(["id"=>"","nickname"=>"","mobile"=>"","email"=>"","relaComNo"=>"","companyArr"=>[],"token"=>""],"post","trim"); $validate=Validate::rule([ 'id|账户ID' => 'number', 'nickname|真实姓名' => 'require|min:2|max:200', 'mobile|手机号' => 'require|number|length:11|mobile', 'email|邮箱' => 'email', 'companyArr|关联账户' => 'array', ]); if($validate->check($post)==false) return error_show(1004,$validate->getError()); if(!empty($post['companyArr'])){ foreach ($post['companyArr'] as &$item){ $company =Db::name("supplier_info")->where(["code"=>$item['companyCode']])->find(); $item['company_type'] = $company["type"]==3?2:1; } } if($post['id']!=""){ $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) && !empty($post['companyArr']))return error_show(1002,"超管账户不允许设置关联业务公司"); $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($post['relaComNo']!=""){ // $company =Db::name("supplier_info")->where(["code"=>$post['relaComNo']])->find(); // if($company){ // $temp = [ // "companyCode"=>$company["code"], // "companyName"=>$company["name"], // "company_type"=>$company["type"]==3?2:1, // "is_main"=>1, // ]; // $post['companyArr'][]=$temp; // } // } if(!empty($post['companyArr'])){ $companyinfo = ["id"=>$post['id'],"company"=>$post['companyArr'],"token"=>$post['token']]; $companyset =setUserCompany($companyinfo); if(!isset($companyset['code'])||$companyset['code']!=0){ return error_show(1004,$companyset['message']); } } }else{ if($post['relaComNo']!=""){ $company =Db::name("supplier_info")->where(["code"=>$post['relaComNo']])->find(); if($company){ $temp = [ "companyCode"=>$company["code"], "companyName"=>$company["name"], "company_type"=>$company["type"]==3?2:1, "is_main"=>1, ]; $post['companyArr'][]=$temp; } } $nam = addacount($post); if(!isset($nam['code'])||$nam['code']!=0){ return error_show(1004,$nam['message']); } } return $post['id']==""?app_show(0,"账户新建成功"):app_show(0,"账户新建失败"); } }