User.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\bug\controller;
  4. use app\bug\model\UserRole;
  5. use app\user\model\Account;
  6. use think\App;
  7. use think\facade\Validate;
  8. class User extends Base
  9. {
  10. protected $noLogin=[];
  11. public function __construct(App $app) {
  12. parent::__construct($app);
  13. $this->model= new UserRole();
  14. }
  15. public function setRole(){
  16. $post =$this->request->param(["id"=>"","roleid"=>""],"post","trim");
  17. $valid = Validate::rule([
  18. "id|用户id"=>"require|number|gt:0",
  19. "roleid|角色id"=>"require|number|gt:0",
  20. ]);
  21. if($valid->check($post)== false) return error($valid->getError());
  22. $isRole = \app\bug\model\Role::where("id",$post['roleid'])->findOrEmpty();
  23. if($isRole->isEmpty())return error("所选角色不存在");
  24. if($isRole->status==0)return error("所选角色已禁用");
  25. $info = $this->model->where(["uid"=>$post['id'],"roleid"=>$post['roleid'],"is_del"=>0])->findOrEmpty();
  26. $info->uid=$post['id'];
  27. $info->roleid=$post['roleid'];
  28. $info->status=1;
  29. $insert = $info->save();
  30. return $insert? success('角色设置成功'):error('角色设置失败');
  31. }
  32. /**
  33. * 显示资源列表
  34. *
  35. * @return \think\Response
  36. */
  37. public function list()
  38. {
  39. $post =$this->request->param(["page"=>1,"size"=>10,"nickname"=>"",'username'=>'','level'=>'','itemid'=>'',"sys_status"=>""],"post","trim");
  40. $where=[["is_del","=",0]];
  41. if($post['nickname']!='') $where[]=["userInfo.nickname","like","%{$post['nickname']}%"];
  42. if($post['username']!='') $where[]=["username","like","%{$post['username']}%"];
  43. if($post['sys_status']!==''){
  44. $uidArr = UserRole::where(["status"=>1,"is_del"=>0])->column("uid");
  45. if($post['sys_status']==1){
  46. $where[]=['account.id','in',$uidArr];
  47. }else{
  48. $where[]=['account.id','not in',$uidArr];
  49. }
  50. }
  51. if($post['level']!=0) $where[]=['level','=',$post['level']];
  52. if($post['itemid']!=0) $where[]=['accountItem.itemid','=',$post['itemid']];
  53. $account = new Account();
  54. $list=$account->with(["accountItem"=>["itemName"],'company_relaton'])->withJoin(["userInfo","account_item"],"left")
  55. ->where($where)->order("account.id asc")
  56. ->paginate(["list_rows"=>$post['size'],"page"=>$post['page']]);
  57. $uidArr =array_column($list->items(),"id");
  58. $roleArr=(new UserRole())->RoleInfoByUid($uidArr);
  59. $list->hidden(['userInfo',"password",'salt','openId',"accountItem",'account_item']);
  60. foreach ($list->items() as &$item){
  61. $item['roleid'] = '0';
  62. $item['role_name'] = '';
  63. $item['sys_status'] = '0';
  64. if(isset($roleArr[$item->id])){
  65. $item['roleid'] =$roleArr[$item->id]->roleid;
  66. $item['role_name'] = $roleArr[$item->id]->role_name??"";
  67. $item['sys_status'] = $roleArr[$item->id]->status;
  68. }
  69. }
  70. return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
  71. }
  72. /**
  73. * @param token
  74. * @return \think\response\Json
  75. * @throws \think\exception\DbException
  76. */
  77. public function userInfo(){
  78. $uid =$this->request->post("id/d");
  79. $account = new Account();
  80. $info=$account->with(['company_relaton',"userInfo",'accountItem'=>['itemName']])->findOrEmpty($uid);
  81. $roleArr=(new UserRole())->RoleInfoByUid($uid);
  82. $info['roleid'] = '0';
  83. $info['role_name'] = '';
  84. $info['sys_status'] = '0';
  85. if(isset($roleArr[$uid])){
  86. $info['roleid'] =$roleArr[$uid]->roleid;
  87. $info['role_name'] = $roleArr[$uid]->role_name;
  88. $info['sys_status'] = $roleArr[$uid]->status;
  89. }
  90. return success("获取成功",$info);
  91. }
  92. public function userAll(){
  93. $post =$this->request->param(['username'=>"",'level'=>0,'itemid'=>0,'nickname'=>'',"sys_status"=>""],"post","trim");
  94. $where=[['is_del','=',0]];
  95. if($post['nickname']!='') $where[]=['userInfo.nickname','like',"%{$post['nickname']}%"];
  96. if($post['username']!='') $where[]=['username','like',"%{$post['username']}%"];
  97. if($post['level']!=0) $where[]=['level','=',$post['level']];
  98. if($post['sys_status']!==''){
  99. $uidArr = UserRole::where(['status'=>1,'is_del'=>0])->column('uid');
  100. if($post['sys_status']==1){
  101. $where[]=['account.id','in',$uidArr];
  102. }else{
  103. $where[]=['account.id','not in',$uidArr];
  104. }
  105. }
  106. if($post['itemid']!=0) $where[]=['accountItem.itemid','=',$post['itemid']];
  107. $account = new Account();
  108. $list=$account->with(['company_relaton','accountItem'=>['itemName']])->withJoin(['userInfo','account_item'],'left')
  109. ->where($where)->order('account.id asc')->hidden(['userInfo','password','salt','openId',"accountItem",'account_item'])
  110. ->select();
  111. $uidArr =array_column($list->toArray(),'id');
  112. $roleArr=(new UserRole())->RoleInfoByUid($uidArr);
  113. foreach ($list as &$item){
  114. $item['roleid'] = '0';
  115. $item['role_name'] = '';
  116. $item['sys_status'] = '0';
  117. if(isset($roleArr[$item->id])){
  118. $item['roleid'] =$roleArr[$item->id]->roleid;
  119. $item['role_name'] = $roleArr[$item->id]->role_name;
  120. $item['sys_status'] = $roleArr[$item->id]->status;
  121. }
  122. }
  123. return success('获取成功',$list);
  124. }
  125. /**
  126. * 保存新建的资源
  127. *
  128. * @param \think\Request $request
  129. * @return \think\Response
  130. */
  131. public function UserSave()
  132. {
  133. $post=$this->request->param(["id"=>"","nickname"=>"","mobile"=>"","role"=>"",'sys_status'=>'','itemid'=>""],"post","trim");
  134. $valid=Validate::rule([
  135. 'id|用户id'=>'require|number|gt:0',
  136. 'nickname|用户昵称'=>'require|max:255',
  137. 'mobile|用户手机号'=>'require|mobile',
  138. 'role|用户角色'=>'number|egt:0',
  139. 'sys_status|状态'=>'requireWith:role|number|in:0,1',
  140. 'itemid|部门'=>'number|egt:0',
  141. ]);
  142. if($valid->check($post)==false) return error($valid->getError());
  143. $userInfo = Account::where(["id"=>$post['id'],'is_del'=>0])->findOrEmpty();
  144. if($userInfo->isEmpty())return error('账户不存在');
  145. $userrole = $this->model->where(['uid'=>$post['id'],'is_del'=>0])->findOrEmpty();
  146. if($post['role']!=0){
  147. $roleinfo =\app\bug\model\Role::where("id",$post['role'])->findOrEmpty();
  148. if($roleinfo->isEmpty())return error("角色不存在");
  149. if($roleinfo->status==0)return error("角色已禁用");
  150. }
  151. $this->model->startTrans();
  152. try{
  153. if($userrole->isEmpty()){
  154. if($post['role']!=0){
  155. $userrole->uid=$post['id'];
  156. $userrole->roleid=$post['role'];
  157. $userrole->status=$post['sys_status'];
  158. }
  159. }else{
  160. $userrole->roleid=$post['role'];
  161. $userrole->status=$post['sys_status'];
  162. }
  163. if($userrole->isEmpty()==false) {
  164. $userUp=$userrole->save();
  165. if($userUp==false) throw new \Exception("角色设置失败");
  166. }
  167. $change=["mobile"=>$post['mobile'],"nickname"=>$post['nickname'],'itemid'=>$post['itemid']];
  168. $userInfo->changeAccount($post['id'],$change);
  169. $this->model->commit();
  170. return success("账户设置成功");
  171. }catch(\Exception $e){
  172. $this->model->rollback();
  173. return error($e->getMessage());
  174. }
  175. }
  176. public function UserStatus()
  177. {
  178. $post=$this->request->param(["id"=>"","sys_status"=>"",'plat'=>''],"post","trim");
  179. $valid=Validate::rule([
  180. "id|用户id"=>"require|number|gt:0",
  181. "sys_status|状态"=>"require|number|in:0,1",
  182. "plat|平台"=>"number|in:0,1,2,3"
  183. ]);
  184. if($valid->check($post)==false) return error($valid->getError());
  185. $message = $post['sys_status']==1?"启用":"禁用";
  186. $item = UserRole::where(['uid'=>$post['id']])->findOrEmpty();
  187. if($item->isEmpty() && $post['sys_status']==1) return error("账户请先设置角色再启用");
  188. $item->status=$post['sys_status'];
  189. $var = $item->save();
  190. if($var==false)return error("角色{$message}失败");
  191. return success("角色{$message}成功");
  192. }
  193. }