SystemAdmin.php 8.1 KB

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