// +---------------------------------------------------------------------- declare (strict_types = 1); namespace app\api\controller\v1; use ywxapp\controller\ApiController; use think\facade\Event; use ywxapp\model\MemberUser as UserModel; use ywxapp\library\Result; use ywxapp\library\Email as EmailLib; /** * 邮箱验证码接口. */ class Ems extends ApiController { protected $noNeedLogin = '*'; protected $needRight = '*'; public function initialize() { } /** * 发送验证码 * * @param string $email 邮箱 * @param string $event 事件名称 */ public function send() { $email = $this->request->request('email'); $event = $this->request->request('event'); $event = $event ? $event : 'register'; Event::trigger('email_send', ['email'=>$email, 'event'=>'register'], true); $userinfo = UserModel::getByEmail($email); if ($event == 'register' && $userinfo) Result::instance()->error(('已被注册')); elseif (in_array($event, ['changeemail']) && $userinfo) Result::instance()->error(('已被占用')); elseif (in_array($event, ['changepwd', 'resetpwd']) && !$userinfo) Result::instance()->error(('未注册')); $ret = \ywxapp\library\Email::instance()->sendEmail($email, null, $event); if (!$ret) Result::instance()->error(('发送失败')); Result::instance()->success(('发送成功')); } /** * 检测验证码 * * @param string $email 邮箱 * @param string $event 事件名称 * @param string $captcha 验证码 */ public function check() { $email = $this->request->request('email'); $event = $this->request->request('event', 'register'); $captcha = $this->request->request('captcha'); $validate = validate([ 'email' => 'email', 'event' => 'chsAlphaNum', 'code' => 'Num', ]); if (!$validate->check(['email' => $email, 'event' => $event, 'code' => $captcha])) Result::instance()->error($validate->getError()); $userinfo = UserModel::where('email', $email)->find(); if ($event == 'register' && $userinfo) $this->result->error(('已被注册')); elseif (in_array($event, ['changeemail']) && $userinfo) Result::instance()->error(('已被占用')); elseif (in_array($event, ['changepwd', 'resetpwd']) && !$userinfo) Result::instance()->error(('未注册')); $ret = EmailLib::instance()->check($email, $captcha, $event); if (!$ret) Result::instance()->error(('验证码不正确')); Result::instance()->success(data: ('验证码正确')); } }