Admin.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Controller;
  4. /**
  5. * 管理父类
  6. */
  7. class Admin extends Controller{
  8. protected $user = null;
  9. protected function _initialize(){
  10. $site = cnf('site');
  11. $this->assign('site',$site);
  12. $this->init();
  13. }
  14. public function init(){
  15. if (!$this->user = is_login('admin')) {
  16. $isAjax = $this->request->isAjax();
  17. if($isAjax){
  18. return json(['data'=>null,'code'=>1001,'msg'=>'登录超时,请重新登录']);
  19. }else{
  20. $login_url = url("Login/index");
  21. $result = redirect($login_url);
  22. $result->send();exit();
  23. }
  24. }
  25. $this->assign('user',$this->user);
  26. oplog('admin',$this->user['id']);
  27. }
  28. public function output($code,$msg,$data = [],$count = 0){
  29. try {
  30. // 返回JSON数据格式到客户端 包含状态信息
  31. $count = $count == 0?count($data):$count;
  32. $data = json_encode(['code'=>$code,'msg'=>$msg,'data'=>$data,'count'=>$count], JSON_UNESCAPED_UNICODE);
  33. if ($data === false) {
  34. throw new \InvalidArgumentException(json_last_error_msg());
  35. }
  36. header('Content-type: application/json');
  37. echo $data;exit();
  38. } catch (\Exception $e) {
  39. if ($e->getPrevious()) {
  40. throw $e->getPrevious();
  41. }
  42. throw $e;
  43. }
  44. }
  45. public function changepwd(){
  46. if ($this->request->isPost()) {
  47. $user_id = $this->user['id'];
  48. $User = model('User');
  49. $user = $User->where(['id'=>$user_id])->find();
  50. if (!$user) {
  51. $this->output(1,'参数错误');
  52. }
  53. $password = input('post.password');
  54. if (!empty($password)) {
  55. $oldpwd = input('post.oldpwd');
  56. $salt = $user['salt'];
  57. if ($user['password'] != md5(md5($oldpwd).$salt) ) {
  58. $this->output(1,'登录旧密码错误');
  59. }
  60. $user->password = md5(md5($password).$salt);;
  61. }
  62. $mobile = input('post.mobile');
  63. $user['mobile'] = $mobile;
  64. $result = $user->save();
  65. if (!$result) {
  66. $this->output(1,'修改失败');
  67. }
  68. $this->user['mobile'] = $mobile;
  69. session('admin_auth', $this->user);
  70. $this->output(0,'修改成功');
  71. }else{
  72. $this->assign('mobile',$this->user['mobile']);
  73. $this->assign('name',$this->user['name']);
  74. $this->assign('meta_title','修改密码');
  75. return $this->fetch();
  76. }
  77. }
  78. public function sendsms(){
  79. $mobile = input('param.mobile');
  80. if (empty($mobile)) {
  81. $this->output(1,'手机不能为空');
  82. }
  83. $SmsCode = model('SmsCode');
  84. $code = $SmsCode->where(['mobile'=>$mobile,'state'=>0])->find();
  85. $time = $this->request->time();
  86. $value = rand(1000,9999);
  87. if ($code && $code['expire_time'] > $time) {
  88. $value = $code['value'];
  89. $create_time = strtotime($code['create_time']);
  90. if ($create_time + 60 >= $time) {
  91. $this->output(1,'请稍后重试');
  92. }
  93. }else{
  94. $SmsCode->value = $value;
  95. $SmsCode->expire_time = $time + 5 * 60;
  96. $SmsCode->mobile = $mobile;
  97. $SmsCode->state = 0;
  98. $SmsCode->save();
  99. }
  100. vendor('aliyun.Dysms');
  101. $result = \Dysms::send('帮帮福利网','SMS_224990133',$mobile,['code'=>$value]);
  102. // var_dump($result);exit();
  103. if ($result) {
  104. $this->output(0,'发送成功');
  105. }
  106. $this->output(1,'发送失败');
  107. }
  108. public function checksms($mobile,$output = false){
  109. $smscode = input('param.smscode');
  110. if (empty($smscode)) {
  111. $this->output(1,'验证码不能为空');
  112. }
  113. $SmsCode = model('SmsCode');
  114. $code = $SmsCode->where(['mobile'=>$mobile,'state'=>0])->order('id desc')->find();
  115. $time = $this->request->time();
  116. if (!$code || $code['expire_time'] < $time) {
  117. $this->output(1,'验证码已过期,请重新获取');
  118. }
  119. if ($code['value'] != $smscode) {
  120. $this->output(1,'验证码错误');
  121. }
  122. $code->state = 1;
  123. $code->save();
  124. if ($output) {
  125. $this->output(0,'验证码正确');
  126. }
  127. return true;
  128. }
  129. }