table_admin.class.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. /**
  3. * 数据库表:管理员表
  4. *
  5. * @createtime 2018/03/01
  6. * @author 空竹
  7. * @copyright 芝麻开发(http://www.zhimawork.com)
  8. */
  9. class Table_admin extends Table {
  10. protected $table_name = 'admin';//表名
  11. protected $table_id = 'admin_id';//指定ID字段名称,必须
  12. protected $table_status = '';//指定状态字段名称,如果有
  13. protected $table_order = '';//指定排序字段名称,如果有
  14. //数据库结构
  15. protected function struct(){
  16. $attr = array();
  17. $attr['id'] = 'admin_id';
  18. $attr['name'] = 'admin_name';//名称
  19. $attr['account'] = 'admin_account';//账号
  20. $attr['password'] = 'admin_password';//加密后的密码
  21. $attr['salt'] = 'admin_salt';//密码salt
  22. $attr['group'] = 'admin_group';//所属管理员组ID
  23. $attr['loginip'] = 'admin_lastloginip';//最后一次登录IP
  24. $attr['logintime'] = 'admin_lastlogintime';//最后一次登陆时间
  25. $attr['logincount'] = 'admin_logincount';//登录次数,默认值0
  26. $attr['addtime'] = 'admin_addtime';//添加时间
  27. return $attr;
  28. }
  29. //增
  30. //@param $attr array -- 键值同struct()返回的数组
  31. public function add($attr){
  32. $param = array (
  33. 'admin_account' => array('string', $attr['account']),
  34. 'admin_password' => array('string', $attr['password']),
  35. 'admin_salt' => array('string', $attr['salt']),
  36. 'admin_group' => array('number', $attr['group']),
  37. 'admin_addtime' => array('number', time())
  38. );
  39. return $this->pdo->sqlinsert($this->table_fullname, $param);
  40. }
  41. //获取列表(分页)
  42. //$count、$page和$pagesize都为0时,返回全部结果(适用于无需分页的情况)
  43. //
  44. //@param $filter array -- 过滤条件,格式见Table::filterToWhere
  45. //@param $count -- 0:返回列表 1:返回结果数量
  46. //@param $page -- 当前第几页
  47. //@param $pagesize -- 每页数量
  48. public function getList($filter = array(), $count = 0, $page = 0, $pagesize = 0){
  49. $where = $this->filterToWhere($filter);
  50. if($count == 0){//列表
  51. $sql = "select * from ". $this->table_fullname ." $where order by admin_id desc";
  52. if($page > 0){//分页
  53. $startrow = ($page - 1) * $pagesize;
  54. $sql_limit = " limit $startrow, $pagesize";
  55. $sql .= $sql_limit;
  56. }
  57. $rs = $this->pdo->sqlQuery($sql);
  58. $r = array();
  59. if($rs){
  60. foreach($rs as $key => $val){
  61. $r[$key] = $this->dataToAttr($val);
  62. }
  63. return $r;
  64. }else{
  65. return $r;
  66. }
  67. }else{//统计
  68. $sql = "select count(*) as c from ". $this->table_fullname . " $where ";
  69. $rs = $this->pdo->sqlQuery($sql);
  70. if($rs){
  71. return $rs[0]['c'];
  72. }else{
  73. return 0;
  74. }
  75. }
  76. }
  77. /**
  78. * 根据账号获取详情
  79. *
  80. * @param $acount 管理员账号
  81. *
  82. */
  83. public function getInfoByAccount($account){
  84. $account = $this->pdo->sql_check_input(array('string', $account));
  85. $sql = "select * from ". $this->table_fullname ." where admin_account = $account limit 1";
  86. $rs = $this->pdo->sqlQuery($sql);
  87. $r = array();
  88. if($rs){
  89. foreach($rs as $key => $val){
  90. $r[$key] = $this->dataToAttr($val);
  91. }
  92. return $r[0];
  93. }else{
  94. return $r;
  95. }
  96. }
  97. /**
  98. * 登录时更新管理员信息
  99. *
  100. * @param $id 管理员ID
  101. *
  102. */
  103. public function updateLoginInfo($id){
  104. $ip = Env::getIP();
  105. $param = array(
  106. 'admin_lastloginip' => array('string', $ip),
  107. 'admin_lastlogintime' => array('number', time()),
  108. 'admin_logincount' => array('expression', 'admin_logincount+1'),
  109. );
  110. $where = array(
  111. 'admin_id' =>array('number', $id)
  112. );
  113. return $this->pdo->sqlupdate($this->table_fullname, $param, $where);
  114. }
  115. /**
  116. * 修改管理员账号和组信息
  117. *
  118. * @param $id 管理员ID
  119. * @param $attr 管理员属性数组,数组键值参考add()函数
  120. *
  121. */
  122. public function edit($id, $attr){
  123. $param = array (
  124. 'admin_account' => array('string', $attr['account']),
  125. 'admin_group' => array('number', $attr['group'])
  126. );
  127. $where = array(
  128. 'admin_id' => array('number', $id)
  129. );
  130. return $this->pdo->sqlupdate($this->table_fullname, $param, $where);
  131. }
  132. /**
  133. * 修改密码
  134. *
  135. * @param $id 管理员ID
  136. * @param $newpass 新密码
  137. * @param $salt Salt
  138. *
  139. */
  140. public function updatePwd($id, $newpass, $salt){
  141. $param = array(
  142. "admin_password" => array('string', $newpass),
  143. "admin_salt" => array('string', $salt)
  144. );
  145. $where = array(
  146. "admin_id" => array('number', $id)
  147. );
  148. return $this->pdo->sqlupdate($this->table_fullname, $param, $where);
  149. }
  150. }
  151. ?>