Admins.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. <?php
  2. /**
  3. * User: nickbai
  4. * Date: 2017/10/23 13:33
  5. * Email: 1902822973@qq.com
  6. */
  7. namespace app\admin\controller;
  8. class Admins extends Base
  9. {
  10. // 管理员列表
  11. public function index()
  12. {
  13. // $token = 'NzgyNTUwIyRAJSFeKi8xNTYxNTQwMzQzLzE=';
  14. // $res = model('Admins')->checktoken($token);
  15. // if($res == -1){
  16. // return $res;
  17. // }
  18. // $admin_id = explode('/',base64_decode($token))['2'];
  19. // $adminInfo = db('admins')->where('id', $admin_id)->find();
  20. if (request()->isAjax()) {
  21. $param = input('param.');
  22. $limit = $param['pageSize'];
  23. $offset = ($param['pageNumber'] - 1) * $limit;
  24. $where = [];
  25. if (!empty($param['searchText'])) {
  26. $where['user_name'] = ['like', '%' . $param['searchText'] . '%'];
  27. }
  28. $result = db('admins')->where($where)->limit($offset, $limit)->select();
  29. foreach ($result as $key => $vo) {
  30. // 优化显示状态
  31. if (1 == $vo['status']) {
  32. $result[$key]['status'] = '<span class="label label-primary">启用</span>';
  33. } else {
  34. $result[$key]['status'] = '<span class="label label-danger">禁用</span>';
  35. }
  36. // 上次登录时间
  37. $result[$key]['last_login_time'] = empty($vo['last_login_time']) ? '' : date('Y-m-d H:i:s', $vo['last_login_time']);
  38. // 生成操作按钮
  39. if (1 != $vo['id']) {
  40. $result[$key]['operate'] = $this->makeBtn($vo['id']);
  41. }
  42. }
  43. $return['total'] = db('admins')->where($where)->count(); //总数据
  44. $return['rows'] = $result;
  45. return json($return);
  46. }
  47. //
  48. return $this->fetch();
  49. }
  50. // 添加管理员
  51. public function addAdmin()
  52. {
  53. if (request()->isPost()) {
  54. $param = input('post.');
  55. $has = db('admins')->field('id')->where('user_name', $param['user_name'])->find();
  56. if (!empty($has)) {
  57. return json(['code' => -1, 'data' => '', 'msg' => '该管理员已经存在']);
  58. }
  59. $param['password'] = md5($param['password'] . config('salt'));
  60. try {
  61. db('admins')->insert($param);
  62. } catch (\Exception $e) {
  63. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  64. }
  65. return json(['code' => 1, 'data' => '', 'msg' => '添加管理员成功']);
  66. }
  67. $this->assign([
  68. 'status' => config('kf_status')
  69. ]);
  70. return $this->fetch('addadmin');
  71. }
  72. // 编辑管理员
  73. public function editAdmin()
  74. {
  75. if (request()->isAjax()) {
  76. $param = input('post.');
  77. // 检测用户修改的管理员是否重复
  78. $has = db('admins')->where('user_name', $param['user_name'])->where('id', '<>', $param['id'])->find();
  79. if (!empty($has)) {
  80. return json(['code' => -1, 'data' => '', 'msg' => '该管理员已经存在']);
  81. }
  82. // 修改用户密码
  83. if (empty($param['password'])) {
  84. unset($param['password']);
  85. } else {
  86. $param['password'] = md5($param['password'] . config('salt'));
  87. }
  88. try {
  89. db('admins')->where('id', $param['id'])->update($param);
  90. } catch (\Exception $e) {
  91. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  92. }
  93. return json(['code' => 1, 'data' => '', 'msg' => '编辑管理员成功']);
  94. }
  95. $id = input('param.id/d');
  96. $info = db('admins')->where('id', $id)->find();
  97. $this->assign([
  98. 'info' => $info,
  99. 'status' => config('kf_status')
  100. ]);
  101. return $this->fetch('editadmin');
  102. }
  103. // 删除管理员
  104. public function delAdmin()
  105. {
  106. if (request()->isAjax()) {
  107. $id = input('param.id/d');
  108. //return $id;
  109. try {
  110. db('admins')->where('id', $id)->delete();
  111. } catch (\Exception $e) {
  112. return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
  113. }
  114. return json(['code' => 1, 'data' => '', 'msg' => '删除管理员成功']);
  115. }
  116. }
  117. // 权限组
  118. public function power()
  119. {
  120. if (request()->isAjax()) {
  121. $param = input('param.');
  122. $limit = $param['pageSize'];
  123. $offset = ($param['pageNumber'] - 1) * $limit;
  124. $result = db('admingroup')->limit($offset, $limit)->select();
  125. foreach ($result as $key => $vo) {
  126. // 优化显示状态
  127. if (1 == $vo['status']) {
  128. $result[$key]['status'] = '<span class="label label-primary">启用</span>';
  129. } else {
  130. $result[$key]['status'] = '<span class="label label-danger">禁用</span>';
  131. }
  132. // 上次登录时间
  133. $result[$key]['addtime'] = date('Y-m-d H:i:s', $vo['addtime']);
  134. // 生成操作按钮
  135. if (0 != $vo['group_id']) {
  136. $result[$key]['operate'] = $this->makeBtnPower($vo['group_id']);
  137. }
  138. }
  139. $return['total'] = db('admingroup')->count(); //总数据
  140. $return['rows'] = $result;
  141. return json($return);
  142. }
  143. return $this->fetch();
  144. }
  145. // 添加权限组
  146. public function addpower()
  147. {
  148. if (request()->isPost()) {
  149. $param = input('post.');
  150. $has = db('admingroup')->field('group_id')->where('group_name', $param['group_name'])->find();
  151. if (!empty($has)) {
  152. return json(['code' => -1, 'data' => '', 'msg' => '该权限组已经存在']);
  153. }
  154. try {
  155. db('admingroup')->insert($param);
  156. } catch (\Exception $e) {
  157. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  158. }
  159. return json(['code' => 1, 'data' => '', 'msg' => '添加权限组成功']);
  160. }
  161. $this->assign([
  162. 'status' => config('kf_status')
  163. ]);
  164. return $this->fetch();
  165. }
  166. // 编辑权限组
  167. public function editpower()
  168. {
  169. // 权限组id
  170. $id = input('param.id/d');
  171. if (request()->isAjax()) {
  172. $menu = db('menu')->select();
  173. $param = input('post.');
  174. $data=array();
  175. for($i=0;$i<count($menu);$i++){
  176. if($param[$menu[$i]['name_cn']] != 0){
  177. $data[] = [
  178. 'group_id' => $param['group_id'],
  179. 'menu_id' => $param[$menu[$i]['name_cn']],
  180. ] ;
  181. }
  182. }
  183. if(!empty($data)){
  184. try {
  185. db('admingrouppower')->where('group_id',$param['group_id'])->delete();
  186. db('admingrouppower')->insertAll($data);
  187. } catch (\Exception $e) {
  188. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  189. }
  190. }
  191. return json(['code' => 1, 'data' => '', 'msg' => '编辑权限组成功']);
  192. }
  193. $menu = db('menu')->where('p_id',0)->select();
  194. $menulist = db('menu')->where('p_id','<>',0)->select();
  195. $adminmenu = db('admingrouppower')->where('group_id', $id)->select();
  196. for($i=0;$i<count($menu);$i++){
  197. $n = 0;
  198. for($a=0;$a<count($adminmenu);$a++){
  199. if($menu[$i]['id'] == $adminmenu[$a]['menu_id']){
  200. $n = 1;
  201. }
  202. }
  203. if($n == 1){
  204. $menu[$i]['power'] = 1;
  205. }else{
  206. $menu[$i]['power'] = 0;
  207. }
  208. for($j=0;$j<count($menulist);$j++){
  209. $num = 0;
  210. for($b=0;$b<count($adminmenu);$b++){
  211. if($menulist[$j]['id'] == $adminmenu[$b]['menu_id']){
  212. $num = 1;
  213. }
  214. }
  215. if($num == 1){
  216. $menulist[$j]['power'] = 1;
  217. }else{
  218. $menulist[$j]['power'] = 0;
  219. }
  220. if($menu[$i]['id'] == $menulist[$j]['p_id']){
  221. $menu[$i]['menulist'][$j] = $menulist[$j];
  222. }
  223. }
  224. }
  225. $this->assign([
  226. 'info' => $menu,
  227. 'id' => $id,
  228. 'status' => config('kf_status')
  229. ]);
  230. return $this->fetch();
  231. }
  232. // 删除权限组
  233. public function delPower()
  234. {
  235. if (request()->isAjax()) {
  236. $id = input('param.id/d');
  237. //return $id;
  238. try {
  239. db('admingroup')->where('group_id', $id)->delete();
  240. } catch (\Exception $e) {
  241. return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
  242. }
  243. return json(['code' => 1, 'data' => '', 'msg' => '删除权限组成功']);
  244. }
  245. }
  246. // 生成管理员操作按钮
  247. private function makeBtn($id)
  248. {
  249. $operate = '<a href="' . url('admins/editadmin', ['id' => $id]) . '">';
  250. $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
  251. $operate .= '<a href="javascript:adminDel(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
  252. $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
  253. return $operate;
  254. }
  255. // 生成权限组操作按钮
  256. private function makeBtnPower($id)
  257. {
  258. $operate = '<a href="' . url('admins/editpower', ['id' => $id]) . '">';
  259. $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
  260. $operate .= '<a href="javascript:powerDel(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
  261. $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
  262. return $operate;
  263. }
  264. }