Admin.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. namespace app\common\model;
  3. use think\Db;
  4. class Admin extends Base {
  5. // 设置数据表(不含前缀)
  6. protected $name = 'admin';
  7. // 定义时间戳字段名
  8. protected $createTime = '';
  9. protected $updateTime = '';
  10. // 自动完成
  11. protected $auto = [];
  12. protected $insert = [];
  13. protected $update = [];
  14. public function getAdminStatusTextAttr($val,$data)
  15. {
  16. $arr = [0=>lang('disable'),1=>lang('enable')];
  17. return $arr[$data['admin_status']];
  18. }
  19. public function listData($where,$order,$page,$limit=20)
  20. {
  21. $page = $page > 0 ? (int)$page : 1;
  22. $limit = $limit ? (int)$limit : 20;
  23. $total = $this->where($where)->count();
  24. $list = Db::name('Admin')->where($where)->order($order)->page($page)->limit($limit)->select();
  25. return ['code'=>1,'msg'=>lang('data_list'),'page'=>$page,'pagecount'=>ceil($total/$limit),'limit'=>$limit,'total'=>$total,'list'=>$list];
  26. }
  27. public function infoData($where,$field='*')
  28. {
  29. if(empty($where) || !is_array($where)){
  30. return ['code'=>1001,'msg'=>lang('param_err')];
  31. }
  32. $info = $this->field($field)->where($where)->find();
  33. if(empty($info)){
  34. return ['code'=>1002,'msg'=>lang('obtain_err')];
  35. }
  36. $info = $info->toArray();
  37. $info['admin_pwd'] = '';
  38. return ['code'=>1,'msg'=>lang('obtain_ok'),'info'=>$info];
  39. }
  40. public function saveData($data)
  41. {
  42. if(!empty($data['admin_auth'])){
  43. $data['admin_auth'] = ','.join(',',$data['admin_auth']).',';
  44. }
  45. else{
  46. $data['admin_auth'] = '';
  47. }
  48. $validate = \think\Loader::validate('Admin');
  49. if(!empty($data['admin_id'])){
  50. if(!$validate->scene('edit')->check($data)){
  51. return ['code'=>1001,'msg'=>lang('param_err').':'.$validate->getError() ];
  52. }
  53. if(empty($data['admin_pwd'])){
  54. unset($data['admin_pwd']);
  55. }
  56. else{
  57. $data['admin_pwd'] = md5($data['admin_pwd']);
  58. }
  59. $where=[];
  60. $where['admin_id'] = ['eq',$data['admin_id']];
  61. $res = $this->where($where)->update($data);
  62. }
  63. else{
  64. if(!$validate->scene('edit')->check($data)){
  65. return ['code'=>1002,'msg'=>lang('param_err').':'.$validate->getError() ];
  66. }
  67. $data['admin_pwd'] = md5($data['admin_pwd']);
  68. $res = $this->insert($data);
  69. }
  70. if(false === $res){
  71. return ['code'=>1003,'msg'=>''.$this->getError() ];
  72. }
  73. return ['code'=>1,'msg'=>lang('save_ok')];
  74. }
  75. public function delData($where)
  76. {
  77. $res = $this->where($where)->delete();
  78. if($res===false){
  79. return ['code'=>1001,'msg'=>lang('del_err').':'.$this->getError() ];
  80. }
  81. return ['code'=>1,'msg'=>lang('del_ok')];
  82. }
  83. public function fieldData($where,$col,$val)
  84. {
  85. if(!isset($col) || !isset($val)){
  86. return ['code'=>1001,'msg'=>lang('param_err')];
  87. }
  88. $data = [];
  89. $data[$col] = $val;
  90. $res = $this->where($where)->update($data);
  91. if($res===false){
  92. return ['code'=>1002,'msg'=>lang('set_err').':'.$this->getError() ];
  93. }
  94. return ['code'=>1,'msg'=>lang('set_ok')];
  95. }
  96. public function login($data)
  97. {
  98. if(empty($data['admin_name']) || empty($data['admin_pwd']) ) {
  99. return ['code'=>1001,'msg'=>lang('param_err')];
  100. }
  101. if($GLOBALS['config']['app']['admin_login_verify'] !='0'){
  102. if(!captcha_check($data['verify'])){
  103. return ['code'=>1002,'msg'=>lang('verify_err')];
  104. }
  105. }
  106. $where=[];
  107. $where['admin_name'] = ['eq',$data['admin_name']];
  108. $where['admin_pwd'] = ['eq',md5($data['admin_pwd'])];
  109. $where['admin_status'] = ['eq',1];
  110. $row = $this->where($where)->find();
  111. if(empty($row)){
  112. return ['code'=>1003,'msg'=>lang('access_or_pass_err')];
  113. }
  114. $random = md5(rand(10000000,99999999));
  115. $update['admin_login_ip'] = mac_get_ip_long();
  116. $update['admin_login_time'] = time();
  117. $update['admin_login_num'] = $row['admin_login_num'] + 1;
  118. $update['admin_random'] = $random;
  119. $update['admin_last_login_time'] = $row['admin_login_time'];
  120. $update['admin_last_login_ip'] = $row['admin_login_ip'];
  121. $res = $this->where($where)->update($update);
  122. if($res===false){
  123. return ['code'=>1004,'msg'=>lang('model/admin/update_login_err')];
  124. }
  125. session('admin_auth','1');
  126. session('admin_info',$row->toArray());
  127. //cookie('admin_id',$row['admin_id']);
  128. //cookie('admin_name',$row['admin_name']);
  129. //cookie('admin_check',md5($random .'-'. $row['admin_name'] .'-'.$row['admin_id'] .'-'.mac_get_client_ip() ) );
  130. return ['code'=>1,'msg'=>lang('model/admin/login_ok')];
  131. }
  132. public function logout()
  133. {
  134. session('admin_auth',null);
  135. session('admin_info',null);
  136. //cookie('admin_id',null);
  137. //cookie('admin_name',null);
  138. //cookie('admin_check',null);
  139. return ['code'=>1,'msg'=>lang('model/admin/logout_ok')];
  140. }
  141. public function checkLogin()
  142. {
  143. if(session('admin_auth')!=='1'){
  144. return ['code'=>1009,'msg'=>lang('model/admin/not_login')];
  145. }
  146. $info = session('admin_info');
  147. if(empty($info)){
  148. return ['code'=>1002,'msg'=>lang('model/admin/not_login')];
  149. }
  150. return ['code'=>1,'msg'=>lang('model/admin/haved_login'),'info'=>$info];
  151. }
  152. public function checkLogin2()
  153. {
  154. $admin_id = cookie('admin_id');
  155. $admin_name = cookie('admin_name');
  156. $admin_check = cookie('admin_check');
  157. if(empty($admin_id) || empty($admin_name) || empty($admin_check)){
  158. return ['code'=>1001, 'msg'=>lang('model/admin/not_login')];
  159. }
  160. $where = [];
  161. $where['admin_id'] = $admin_id;
  162. $where['admin_name'] = $admin_name;
  163. $where['admin_status'] =1 ;
  164. $info = $this->where($where)->find();
  165. if(empty($info)){
  166. return ['code'=>1002,'msg'=>lang('model/admin/not_login')];
  167. }
  168. $info = $info->toArray();
  169. $login_check = md5($info['admin_random'] .'-'. $info['admin_name'] .'-'.$info['admin_id'] .'-'.mac_get_client_ip() ) ;
  170. if($login_check != $admin_check){
  171. return ['code'=>1003,'msg'=>lang('model/admin/not_login')];
  172. }
  173. return ['code'=>1,'msg'=>lang('model/admin/haved_login'),'info'=>$info];
  174. }
  175. }