MessageForm.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace backend\forms;
  3. use common\logic\Amqp\Cache;
  4. use common\logic\Amqp\Message;
  5. use components\Exception;
  6. class MessageForm extends BaseForm
  7. {
  8. public $email;
  9. public $password;
  10. public $type;
  11. /**
  12. * 登录方式
  13. */
  14. const TYPE_SMS = 'sms';
  15. const TYPE_EMAIL = 'email';
  16. /**
  17. * 绑定队列名称
  18. * @var array
  19. */
  20. public static $queueMap = [
  21. 'login' => 'login'
  22. ];
  23. public function rules()
  24. {
  25. return [
  26. [['email', 'password', 'type'], 'safe', 'on' => 'login'],
  27. [['email', 'password', 'type'], 'trim', 'on' => 'login'],
  28. [['email', 'password'], 'required', 'on' => 'login'],
  29. ['email', 'email', 'on' => 'login'],
  30. ['type', 'default', 'value' => static::TYPE_EMAIL, 'on' => 'login'],
  31. ['type', 'in', 'range' => [static::TYPE_EMAIL, static::TYPE_SMS], 'on' => 'login']
  32. ];
  33. }
  34. public static function getQueueName($scenario)
  35. {
  36. if (isset(self::$queueMap[$scenario])) {
  37. return self::$queueMap[$scenario];
  38. }
  39. return '';
  40. }
  41. /**
  42. * [发送消息]
  43. * @author: libingke
  44. * @return array
  45. * @throws Exception
  46. */
  47. public function sendMessage()
  48. {
  49. $body = json_encode([
  50. 'email' => $this->email,
  51. 'password' => $this->password,
  52. 'type' => $this->type
  53. ]);
  54. $queue = MessageForm::getQueueName($this->scenario);
  55. $data = [];
  56. try {
  57. $message = new Message($queue);
  58. $corrId = $message->send($body, $queue);
  59. Cache::setData($corrId, Cache::STATUS_SEND_OK); //set: status = send ok
  60. $data[] = $corrId;
  61. } catch (\common\logic\Amqp\Exception $e) {
  62. throw new Exception($e->getCode(), $e->getMessage());
  63. }
  64. return $data;
  65. }
  66. }