123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <?php
- declare (strict_types = 1);
- namespace app\bug\controller;
- use app\bug\model\UserRole;
- use app\user\model\Account;
- use think\App;
- use think\facade\Validate;
- class User extends Base
- {
- protected $noLogin=[];
- public function __construct(App $app) {
- parent::__construct($app);
- $this->model= new UserRole();
- }
- public function setRole(){
- $post =$this->request->param(["id"=>"","roleid"=>""],"post","trim");
- $valid = Validate::rule([
- "id|用户id"=>"require|number|gt:0",
- "roleid|角色id"=>"require|number|gt:0",
- ]);
- if($valid->check($post)== false) return error($valid->getError());
- $isRole = \app\bug\model\Role::where("id",$post['roleid'])->findOrEmpty();
- if($isRole->isEmpty())return error("所选角色不存在");
- if($isRole->status==0)return error("所选角色已禁用");
- $info = $this->model->where(["uid"=>$post['id'],"roleid"=>$post['roleid'],"is_del"=>0])->findOrEmpty();
- $info->uid=$post['id'];
- $info->roleid=$post['roleid'];
- $info->status=1;
- $insert = $info->save();
- return $insert? success('角色设置成功'):error('角色设置失败');
- }
- /**
- * 显示资源列表
- *
- * @return \think\Response
- */
- public function list()
- {
- $post =$this->request->param(["page"=>1,"size"=>10,"nickname"=>"",'username'=>'','level'=>'','itemid'=>'',"sys_status"=>""],"post","trim");
- $where=[["is_del","=",0]];
- if($post['nickname']!='') $where[]=["userInfo.nickname","like","%{$post['nickname']}%"];
- if($post['username']!='') $where[]=["username","like","%{$post['username']}%"];
- if($post['sys_status']!==''){
- $uidArr = UserRole::where(["status"=>1,"is_del"=>0])->column("uid");
- if($post['sys_status']==1){
- $where[]=['account.id','in',$uidArr];
- }else{
- $where[]=['account.id','not in',$uidArr];
- }
- }
-
- if($post['level']!=0) $where[]=['level','=',$post['level']];
- if($post['itemid']!=0) $where[]=['accountItem.itemid','=',$post['itemid']];
- $account = new Account();
- $list=$account->with(["accountItem"=>["itemName"],'company_relaton'])->withJoin(["userInfo","account_item"],"left")
- ->where($where)->order("account.id asc")
- ->paginate(["list_rows"=>$post['size'],"page"=>$post['page']]);
- $uidArr =array_column($list->items(),"id");
- $roleArr=(new UserRole())->RoleInfoByUid($uidArr);
- $list->hidden(['userInfo',"password",'salt','openId',"accountItem",'account_item']);
- foreach ($list->items() as &$item){
- $item['roleid'] = '0';
- $item['role_name'] = '';
- $item['sys_status'] = '0';
- if(isset($roleArr[$item->id])){
- $item['roleid'] =$roleArr[$item->id]->roleid;
- $item['role_name'] = $roleArr[$item->id]->role_name??"";
- $item['sys_status'] = $roleArr[$item->id]->status;
- }
- }
- return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
- }
- /**
- * @param token
- * @return \think\response\Json
- * @throws \think\exception\DbException
- */
- public function userInfo(){
- $uid =$this->request->post("id/d");
- $account = new Account();
- $info=$account->with(['company_relaton',"userInfo",'accountItem'=>['itemName']])->findOrEmpty($uid);
- $roleArr=(new UserRole())->RoleInfoByUid($uid);
- $info['roleid'] = '0';
- $info['role_name'] = '';
- $info['sys_status'] = '0';
- if(isset($roleArr[$uid])){
- $info['roleid'] =$roleArr[$uid]->roleid;
- $info['role_name'] = $roleArr[$uid]->role_name;
- $info['sys_status'] = $roleArr[$uid]->status;
- }
- return success("获取成功",$info);
- }
- public function userAll(){
- $post =$this->request->param(['username'=>"",'level'=>0,'itemid'=>0,'nickname'=>'',"status"=>""],"post","trim");
- $where=[['is_del','=',0]];
- if($post['nickname']!='') $where[]=['userInfo.nickname','like',"%{$post['nickname']}%"];
- if($post['username']!='') $where[]=['username','like',"%{$post['username']}%"];
- if($post['level']!=0) $where[]=['level','=',$post['level']];
- if($post['sys_status']!==''){
- $uidArr = UserRole::where(['status'=>1,'is_del'=>0])->column('uid');
- if($post['sys_status']==1){
- $where[]=['account.id','in',$uidArr];
- }else{
- $where[]=['account.id','not in',$uidArr];
- }
- }
- if($post['itemid']!=0) $where[]=['accountItem.itemid','=',$post['itemid']];
- $account = new Account();
- $list=$account->with(['company_relaton','accountItem'=>['itemName']])->withJoin(['userInfo','account_item'],'left')
- ->where($where)->order('account.id asc')->hidden(['userInfo','password','salt','openId',"accountItem",'account_item'])
- ->select();
- $uidArr =array_column($list->toArray(),'id');
- $roleArr=(new UserRole())->RoleInfoByUid($uidArr);
- foreach ($list as &$item){
- $item['roleid'] = '0';
- $item['role_name'] = '';
- $item['sys_status'] = '0';
- if(isset($roleArr[$item->id])){
- $item['roleid'] =$roleArr[$item->id]->roleid;
- $item['role_name'] = $roleArr[$item->id]->role_name;
- $item['sys_status'] = $roleArr[$item->id]->status;
- }
- }
- return success('获取成功',$list);
- }
- /**
- * 保存新建的资源
- *
- * @param \think\Request $request
- * @return \think\Response
- */
- public function UserSave()
- {
- $post=$this->request->param(["id"=>"","nickname"=>"","mobile"=>"","role"=>"",'sys_status'=>'','itemid'=>""],"post","trim");
- $valid=Validate::rule([
- 'id|用户id'=>'require|number|gt:0',
- 'nickname|用户昵称'=>'require|max:255',
- 'mobile|用户手机号'=>'require|mobile',
- 'role|用户角色'=>'number|egt:0',
- 'sys_status|状态'=>'requireWith:role|number|in:0,1',
- 'itemid|部门'=>'number|egt:0',
- ]);
- if($valid->check($post)==false) return error($valid->getError());
- $userInfo = Account::where(["id"=>$post['id'],'is_del'=>0])->findOrEmpty();
- if($userInfo->isEmpty())return error('账户不存在');
- $userrole = $this->model->where(['uid'=>$post['id'],'is_del'=>0])->findOrEmpty();
- if($post['role']!=0){
- $roleinfo =\app\bug\model\Role::where("id",$post['role'])->findOrEmpty();
- if($roleinfo->isEmpty())return error("角色不存在");
- if($roleinfo->status==0)return error("角色已禁用");
- }
-
- $this->model->startTrans();
- try{
- if($userrole->isEmpty()){
- if($post['role']!=0){
- $userrole->uid=$post['id'];
- $userrole->roleid=$post['role'];
- $userrole->status=$post['sys_status'];
- }
- }else{
- $userrole->roleid=$post['role'];
- $userrole->status=$post['sys_status'];
- }
- if($userrole->isEmpty()==false) {
- $userUp=$userrole->save();
- if($userUp==false) throw new \Exception("角色设置失败");
- }
- $change=["mobile"=>$post['mobile'],"nickname"=>$post['nickname'],'itemid'=>$post['itemid']];
- $userInfo->changeAccount($post['id'],$change);
- $this->model->commit();
- return success("账户设置成功");
- }catch(\Exception $e){
- $this->model->rollback();
- return error($e->getMessage());
- }
- }
- public function UserStatus()
- {
- $post=$this->request->param(["id"=>"","sys_status"=>"",'plat'=>''],"post","trim");
- $valid=Validate::rule([
- "id|用户id"=>"require|number|gt:0",
- "sys_status|状态"=>"require|number|in:0,1",
- "plat|平台"=>"number|in:0,1,2,3"
- ]);
- if($valid->check($post)==false) return error($valid->getError());
- $message = $post['sys_status']==1?"启用":"禁用";
- $item = UserRole::where(['uid'=>$post['id']])->findOrEmpty();
- if($item->isEmpty() && $post['sys_status']==1) return error("账户请先设置角色再启用");
- $item->status=$post['sys_status'];
- $var = $item->save();
- if($var==false)return error("角色{$message}失败");
- return success("角色{$message}成功");
- }
- }
|