SmsAdmin.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace app\adminapi\controller\v1\notification\sms;
  3. use app\adminapi\controller\AuthController;
  4. use app\models\system\SystemConfig;
  5. use crmeb\services\{
  6. HttpService, sms\Sms, UtilService, CacheService
  7. };
  8. /**
  9. * 短信账号
  10. * Class SmsAdmin
  11. * @package app\adminapi\controller\v1\sms
  12. */
  13. class SmsAdmin extends AuthController
  14. {
  15. /**
  16. * 发送验证码
  17. * @return mixed
  18. */
  19. public function captcha()
  20. {
  21. if (!request()->isPost()) return $this->fail('发生失败');
  22. $phone = request()->param('phone');
  23. if (!trim($phone)) return $this->fail('请填写手机号');
  24. $sms = new Sms('yunxin');
  25. $res = json_decode(HttpService::getRequest($sms->getSmsUrl(), compact('phone')), true);
  26. if (!isset($res['status']) && $res['status'] !== 200)
  27. return $this->fail(isset($res['data']['message']) ? $res['data']['message'] : $res['msg']);
  28. return $this->success(isset($res['data']['message']) ? $res['data']['message'] : $res['msg']);
  29. }
  30. /**
  31. * 修改/注册短信平台账号
  32. */
  33. public function save()
  34. {
  35. list($account, $password, $phone, $code, $url, $sign) = UtilService::postMore([
  36. ['account', ''],
  37. ['password', ''],
  38. ['phone', ''],
  39. ['code', ''],
  40. ['url', ''],
  41. ['sign', ''],
  42. ], null, true);
  43. $signLen = mb_strlen(trim($sign));
  44. if (!strlen(trim($account))) return $this->fail('请填写账号');
  45. if (!strlen(trim($password))) return $this->fail('请填写密码');
  46. if (!$signLen) return $this->fail('请填写短信签名');
  47. if ($signLen > 8) return $this->fail('短信签名最长为8位');
  48. if (!strlen(trim($code))) return $this->fail('请填写验证码');
  49. if (!strlen(trim($url))) return $this->fail('请填写域名');
  50. $sms = new Sms('yunxin');
  51. $status = $sms->register($account, md5(trim($password)), $url, $phone, $code, $sign);
  52. if ($status['status'] == 400) return $this->fail('短信平台:' . $status['msg']);
  53. CacheService::clear();
  54. SystemConfig::setConfigSmsInfo($account, $password);
  55. return $this->success('短信平台:' . $status['msg']);
  56. }
  57. }