UserController.class.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. <?php
  2. namespace Admin\Controller;
  3. /**
  4. * 用户管理
  5. * @author Devil
  6. * @blog http://gong.gg/
  7. * @version 0.0.1
  8. * @datetime 2016-12-01T21:51:08+0800
  9. */
  10. class UserController extends CommonController
  11. {
  12. /**
  13. * [_initialize 前置操作-继承公共前置方法]
  14. * @author Devil
  15. * @blog http://gong.gg/
  16. * @version 0.0.1
  17. * @datetime 2016-12-03T12:39:08+0800
  18. */
  19. public function _initialize()
  20. {
  21. // 调用父类前置方法
  22. parent::_initialize();
  23. // 登录校验
  24. $this->Is_Login();
  25. // 权限校验
  26. $this->Is_Power();
  27. }
  28. /**
  29. * [Index 用户列表]
  30. * @author Devil
  31. * @blog http://gong.gg/
  32. * @version 0.0.1
  33. * @datetime 2016-12-06T21:31:53+0800
  34. */
  35. public function Index()
  36. {
  37. // 参数
  38. $param = array_merge($_POST, $_GET);
  39. // 模型模型
  40. $m = M('User');
  41. // 条件
  42. $where = $this->GetIndexWhere();
  43. // 分页
  44. $number = MyC('admin_page_number');
  45. $page_param = array(
  46. 'number' => $number,
  47. 'total' => $m->where($where)->count(),
  48. 'where' => $param,
  49. 'url' => U('Admin/User/Index'),
  50. );
  51. $page = new \My\Page($page_param);
  52. // 获取列表
  53. $field = array('id', 'mobile', 'email', 'nickname', 'gender', 'birthday', 'signature', 'describe', 'state', 'add_time', 'upd_time');
  54. $list = $this->SetDataHandle($m->field($field)->where($where)->limit($page->GetPageStarNumber(), $number)->order('id desc')->select());
  55. // 性别
  56. $this->assign('common_gender_list', L('common_gender_list'));
  57. // 用户状态
  58. $this->assign('common_user_state_list', L('common_user_state_list'));
  59. // 参数
  60. $this->assign('param', $param);
  61. // 分页
  62. $this->assign('page_html', $page->GetPageHtml());
  63. // 数据列表
  64. $this->assign('list', $list);
  65. $this->display('Index');
  66. }
  67. /**
  68. * [SetDataHandle 数据处理]
  69. * @author Devil
  70. * @blog http://gong.gg/
  71. * @version 0.0.1
  72. * @datetime 2016-12-29T21:27:15+0800
  73. * @param [array] $data [用户数据]
  74. * @return [array] [处理好的数据]
  75. */
  76. private function SetDataHandle($data)
  77. {
  78. if(!empty($data))
  79. {
  80. foreach($data as &$v)
  81. {
  82. // 生日
  83. if($v['birthday'] > 0)
  84. {
  85. $v['birthday'] = date('Y-m-d', $v['birthday']);
  86. }
  87. // 注册时间
  88. $v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
  89. // 更新时间
  90. $v['upd_time'] = date('Y-m-d H:i:s', $v['upd_time']);
  91. // 性别
  92. $v['gender'] = L('common_gender_list')[$v['gender']]['name'];
  93. // 状态
  94. $v['state_text'] = L('common_user_state_list')[$v['state']]['name'];
  95. }
  96. }
  97. return $data;
  98. }
  99. /**
  100. * [GetIndexWhere 用户列表条件]
  101. * @author Devil
  102. * @blog http://gong.gg/
  103. * @version 0.0.1
  104. * @datetime 2016-12-10T22:16:29+0800
  105. */
  106. private function GetIndexWhere()
  107. {
  108. $where = array();
  109. // 模糊
  110. if(!empty($_REQUEST['keyword']))
  111. {
  112. $like_keyword = array('like', '%'.I('keyword').'%');
  113. $where[] = array(
  114. 'nickname' => $like_keyword,
  115. 'mobile' => $like_keyword,
  116. 'email' => $like_keyword,
  117. '_logic' => 'or',
  118. );
  119. }
  120. // 是否更多条件
  121. if(I('is_more', 0) == 1)
  122. {
  123. // 等值
  124. if(I('gender', -1) > -1)
  125. {
  126. $where['gender'] = intval(I('gender', 0));
  127. }
  128. if(I('state', -1) > -1)
  129. {
  130. $where['state'] = intval(I('state', 0));
  131. }
  132. // 表达式
  133. if(!empty($_REQUEST['time_start']))
  134. {
  135. $where['add_time'][] = array('gt', strtotime(I('time_start')));
  136. }
  137. if(!empty($_REQUEST['time_end']))
  138. {
  139. $where['add_time'][] = array('lt', strtotime(I('time_end')));
  140. }
  141. }
  142. return $where;
  143. }
  144. /**
  145. * [SaveInfo 用户添加/编辑页面]
  146. * @author Devil
  147. * @blog http://gong.gg/
  148. * @version 0.0.1
  149. * @datetime 2016-12-14T21:37:02+0800
  150. */
  151. public function SaveInfo()
  152. {
  153. // 用户信息
  154. $data = empty($_REQUEST['id']) ? array() : M('User')->find(I('id'));
  155. $data['birthday'] = empty($data['birthday']) ? '' : date('Y-m-d', $data['birthday']);
  156. $this->assign('data', $data);
  157. // 性别
  158. $this->assign('common_gender_list', L('common_gender_list'));
  159. // 用户状态
  160. $this->assign('common_user_state_list', L('common_user_state_list'));
  161. $this->display('SaveInfo');
  162. }
  163. /**
  164. * [Save 用户添加/编辑]
  165. * @author Devil
  166. * @blog http://gong.gg/
  167. * @version 0.0.1
  168. * @datetime 2016-12-14T21:37:02+0800
  169. */
  170. public function Save()
  171. {
  172. // 是否ajax请求
  173. if(!IS_AJAX)
  174. {
  175. $this->error(L('common_unauthorized_access'));
  176. }
  177. // 用户账户校验
  178. if(empty($_POST['mobile']) && empty($_POST['email']))
  179. {
  180. $this->ajaxReturn(L('user_accounts_param_error'), -1);
  181. }
  182. // 添加
  183. if(empty($_POST['id']))
  184. {
  185. $this->Add();
  186. // 编辑
  187. } else {
  188. $this->Edit();
  189. }
  190. }
  191. /**
  192. * [Add 用户添加]
  193. * @author Devil
  194. * @blog http://gong.gg/
  195. * @version 0.0.1
  196. * @datetime 2016-12-18T16:20:59+0800
  197. */
  198. private function Add()
  199. {
  200. // 用户模型
  201. $m = D('User');
  202. // 数据自动校验
  203. if($m->create($_POST, 1))
  204. {
  205. // 额外数据处理
  206. $m->salt = GetNumberCode(6);
  207. $m->pwd = LoginPwdEncryption(trim(I('pwd')), $m->salt);
  208. $m->nickname = I('nickname');
  209. $m->signature = I('signature');
  210. $m->describe = I('describe');
  211. $m->add_time = time();
  212. // 数据添加
  213. if($m->add())
  214. {
  215. $this->ajaxReturn(L('common_operation_add_success'));
  216. } else {
  217. $this->ajaxReturn(L('common_operation_add_error'), -100);
  218. }
  219. } else {
  220. $this->ajaxReturn($m->getError(), -1);
  221. }
  222. }
  223. /**
  224. * [Edit 用户编辑]
  225. * @author Devil
  226. * @blog http://gong.gg/
  227. * @version 0.0.1
  228. * @datetime 2016-12-17T22:13:40+0800
  229. */
  230. private function Edit()
  231. {
  232. // 用户模型
  233. $m = D('User');
  234. // 数据自动校验
  235. if($m->create($_POST, 2))
  236. {
  237. // 额外数据处理
  238. if(!empty($m->birthday))
  239. {
  240. $m->birthday = strtotime($m->birthday);
  241. }
  242. $m->nickname = I('nickname');
  243. $m->signature = I('signature');
  244. $m->describe = I('describe');
  245. $m->upd_time = time();
  246. // 登录密码
  247. if(!empty($_POST['pwd']))
  248. {
  249. $m->salt = GetNumberCode(6);
  250. $m->pwd = LoginPwdEncryption(trim(I('pwd')), $m->salt);
  251. } else {
  252. unset($m->pwd);
  253. }
  254. // 更新数据库
  255. if($m->where(array('id'=>I('id')))->save())
  256. {
  257. $this->ajaxReturn(L('common_operation_edit_success'));
  258. } else {
  259. $this->ajaxReturn(L('common_operation_edit_error'), -100);
  260. }
  261. } else {
  262. $this->ajaxReturn($m->getError(), -1);
  263. }
  264. }
  265. /**
  266. * [Delete 用户删除]
  267. * @author Devil
  268. * @blog http://gong.gg/
  269. * @version 0.0.1
  270. * @datetime 2016-12-15T11:03:30+0800
  271. */
  272. public function Delete()
  273. {
  274. // 是否ajax请求
  275. if(!IS_AJAX)
  276. {
  277. $this->error(L('common_unauthorized_access'));
  278. }
  279. // 参数处理
  280. $id = I('id');
  281. // 删除数据
  282. if(!empty($id))
  283. {
  284. // 用户模型
  285. $u = M('User');
  286. // 用户是否存在
  287. $user = $u->where(array('id'=>$id))->getField('id');
  288. if(empty($user))
  289. {
  290. $this->ajaxReturn(L('common_user_no_exist_error'), -2);
  291. }
  292. // 开启事务
  293. $u->startTrans();
  294. // 删除用户
  295. $u_state = $u->where(array('id'=>$id))->delete();
  296. // 删除成绩
  297. $us_state = M('UserStudent')->where(array('user_id'=>$id))->delete();
  298. if($u_state !== false && $us_state !== false)
  299. {
  300. // 提交事务
  301. $u->commit();
  302. $this->ajaxReturn(L('common_operation_delete_success'));
  303. } else {
  304. // 回滚事务
  305. $u->rollback();
  306. $this->ajaxReturn(L('common_operation_delete_error'), -100);
  307. }
  308. } else {
  309. $this->ajaxReturn(L('common_param_error'), -1);
  310. }
  311. }
  312. }
  313. ?>