SystemAdmin.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. <?php
  2. namespace app\admin\controller\setting;
  3. use app\admin\controller\AuthController;
  4. use service\FormBuilder as Form;
  5. use service\JsonService;
  6. use service\UtilService as Util;
  7. use service\JsonService as Json;
  8. use think\Request;
  9. use app\admin\model\system\SystemRole;
  10. use think\Url;
  11. use app\admin\model\system\SystemAdmin as AdminModel;
  12. /**
  13. * 管理员列表控制器
  14. * Class SystemAdmin
  15. * @package app\admin\controller\system
  16. */
  17. class SystemAdmin extends AuthController
  18. {
  19. /**
  20. * 显示资源列表
  21. *
  22. * @return \think\Response
  23. */
  24. public function index()
  25. {
  26. $admin = $this->adminInfo;
  27. $where = Util::getMore([
  28. ['name',''],
  29. ['roles',''],
  30. ['level',bcadd($admin->level,1,0)]
  31. ],$this->request);
  32. $this->assign('where',$where);
  33. $this->assign('role',SystemRole::getRole(bcadd($admin->level,1,0)));
  34. $this->assign(AdminModel::systemPage($where));
  35. return $this->fetch();
  36. }
  37. /**
  38. * 显示创建资源表单页.
  39. *
  40. * @return \think\Response
  41. */
  42. public function create()
  43. {
  44. $admin = $this->adminInfo;
  45. $f = array();
  46. $f[] = Form::input('account','管理员账号');
  47. $f[] = Form::input('pwd','管理员密码')->type('password');
  48. $f[] = Form::input('conf_pwd','确认密码')->type('password');
  49. $f[] = Form::input('real_name','管理员姓名');
  50. $f[] = Form::select('roles','管理员身份')->setOptions(function ()use($admin){
  51. $list = SystemRole::getRole(bcadd($admin->level,1,0));
  52. $options = [];
  53. foreach ($list as $id=>$roleName){
  54. $options[] = ['label'=>$roleName,'value'=>$id];
  55. }
  56. return $options;
  57. })->multiple(1);
  58. $f[] = Form::radio('status','状态',1)->options([['label'=>'开启','value'=>1],['label'=>'关闭','value'=>0]]);
  59. $form = Form::make_post_form('添加管理员',$f,Url::build('save'));
  60. $this->assign(compact('form'));
  61. return $this->fetch('public/form-builder');
  62. }
  63. /**
  64. * 保存新建的资源
  65. *
  66. * @param \think\Request $request
  67. * @return \think\Response
  68. */
  69. public function save(Request $request)
  70. {
  71. $data = Util::postMore([
  72. 'account',
  73. 'conf_pwd',
  74. 'pwd',
  75. 'real_name',
  76. ['roles',[]],
  77. ['status',0]
  78. ],$request);
  79. if(!$data['account']) return Json::fail('请输入管理员账号');
  80. if(!$data['roles']) return Json::fail('请选择至少一个管理员身份');
  81. if(!$data['pwd']) return Json::fail('请输入管理员登陆密码');
  82. if($data['pwd'] != $data['conf_pwd']) return Json::fail('两次输入密码不想同');
  83. if(AdminModel::be($data['account'],'account')) return Json::fail('管理员账号已存在');
  84. $data['pwd'] = md5($data['pwd']);
  85. unset($data['conf_pwd']);
  86. $data['level'] = $this->adminInfo['level'] + 1;
  87. AdminModel::set($data);
  88. return Json::successful('添加管理员成功!');
  89. }
  90. /**
  91. * 显示编辑资源表单页.
  92. *
  93. * @param int $id
  94. * @return \think\Response
  95. */
  96. public function edit($id)
  97. {
  98. if(!$id) return $this->failed('参数错误');
  99. $admin = AdminModel::get($id);
  100. if(!$admin) return Json::fail('数据不存在!');
  101. $f = array();
  102. $f[] = Form::input('account','管理员账号',$admin->account);
  103. $f[] = Form::input('pwd','管理员密码')->type('password');
  104. $f[] = Form::input('conf_pwd','确认密码')->type('password');
  105. $f[] = Form::input('real_name','管理员姓名',$admin->real_name);
  106. $f[] = Form::select('roles','管理员身份',explode(',',$admin->roles))->setOptions(function ()use($admin){
  107. $list = SystemRole::getRole($admin->level);
  108. $options = [];
  109. foreach ($list as $id=>$roleName){
  110. $options[] = ['label'=>$roleName,'value'=>$id];
  111. }
  112. return $options;
  113. })->multiple(1);
  114. $f[] = Form::radio('status','状态',1)->options([['label'=>'开启','value'=>1],['label'=>'关闭','value'=>0]]);
  115. $form = Form::make_post_form('编辑管理员',$f,Url::build('update',compact('id')));
  116. $this->assign(compact('form'));
  117. return $this->fetch('public/form-builder');
  118. }
  119. /**
  120. * 保存更新的资源
  121. *
  122. * @param \think\Request $request
  123. * @param int $id
  124. * @return \think\Response
  125. */
  126. public function update(Request $request, $id)
  127. {
  128. $data = Util::postMore([
  129. 'account',
  130. 'conf_pwd',
  131. 'pwd',
  132. 'real_name',
  133. ['roles',[]],
  134. ['status',0]
  135. ],$request);
  136. if(!$data['account']) return Json::fail('请输入管理员账号');
  137. if(!$data['roles']) return Json::fail('请选择至少一个管理员身份');
  138. if(!$data['pwd'])
  139. unset($data['pwd']);
  140. else{
  141. if(isset($data['pwd']) && $data['pwd'] != $data['conf_pwd']) return Json::fail('两次输入密码不想同');
  142. $data['pwd'] = md5($data['pwd']);
  143. }
  144. if(AdminModel::where('account',$data['account'])->where('id','<>',$id)->count()) return Json::fail('管理员账号已存在');
  145. unset($data['conf_pwd']);
  146. AdminModel::edit($data,$id);
  147. return Json::successful('修改成功!');
  148. }
  149. /**
  150. * 删除指定资源
  151. *
  152. * @param int $id
  153. * @return \think\Response
  154. */
  155. public function delete($id)
  156. {
  157. if(!$id)
  158. return JsonService::fail('删除失败!');
  159. if(AdminModel::edit(['is_del'=>1,'status'=>0],$id,'id'))
  160. return JsonService::successful('删除成功!');
  161. else
  162. return JsonService::fail('删除失败!');
  163. }
  164. /**
  165. * 个人资料 展示
  166. * */
  167. public function adminInfo(){
  168. $adminInfo = $this->adminInfo;//获取当前登录的管理员
  169. $this->assign('adminInfo',$adminInfo);
  170. return $this->fetch();
  171. }
  172. /**保存信息
  173. * @param Request $request
  174. */
  175. public function setAdminInfo(Request $request){
  176. $adminInfo = $this->adminInfo;//获取当前登录的管理员
  177. if($request->isPost()){
  178. $data = Util::postMore([
  179. ['new_pwd',''],
  180. ['new_pwd_ok',''],
  181. ['pwd',''],
  182. 'real_name',
  183. ],$request);
  184. // if ($data['pwd'] == '') unset($data['pwd']);
  185. if($data['pwd'] != ''){
  186. $pwd = md5($data['pwd']);
  187. if($adminInfo['pwd'] != $pwd) return Json::fail('原始密码错误');
  188. }
  189. if($data['new_pwd'] != ''){
  190. if(!$data['new_pwd_ok']) return Json::fail('请输入确认新密码');
  191. if($data['new_pwd'] != $data['new_pwd_ok']) return Json::fail('俩次密码不一样');
  192. }
  193. if($data['pwd'] != '' && $data['new_pwd'] != ''){
  194. $data['pwd'] = md5($data['new_pwd']);
  195. }else{
  196. unset($data['pwd']);
  197. }
  198. unset($data['new_pwd']);
  199. unset($data['new_pwd_ok']);
  200. AdminModel::edit($data,$adminInfo['id']);
  201. return Json::successful('修改成功!,请重新登录');
  202. }
  203. }
  204. }