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. public $send_arr;
  12. private $_queue = '';
  13. /**
  14. * 登录方式
  15. */
  16. const TYPE_SMS = 'sms';
  17. const TYPE_EMAIL = 'email';
  18. public function rules()
  19. {
  20. return [
  21. //login
  22. //[['email', 'password', 'type'], 'safe', 'on' => 'login'],
  23. [['email', 'password', 'type'], 'trim', 'on' => 'login'],
  24. [['email', 'password'], 'required', 'on' => 'login'],
  25. ['email', 'email', 'on' => 'login'],
  26. ['type', 'default', 'value' => static::TYPE_EMAIL, 'on' => 'login'],
  27. ['type', 'in', 'range' => [static::TYPE_EMAIL, static::TYPE_SMS], 'on' => 'login'],
  28. //logins
  29. [['send_arr'], 'required', 'on' => 'logins']
  30. ];
  31. }
  32. public function setQueue($scenario)
  33. {
  34. $this->_queue = $scenario;
  35. }
  36. public function getQueue()
  37. {
  38. return $this->_queue;
  39. }
  40. /**
  41. * [发送消息]
  42. * @author: libingke
  43. * @return array
  44. * @throws Exception
  45. */
  46. public function sendMessage()
  47. {
  48. $body = json_encode([
  49. 'email' => $this->email,
  50. 'password' => $this->password,
  51. 'type' => $this->type
  52. ]);
  53. $queue = $this->getQueue();
  54. $data = [];
  55. try {
  56. $message = new Message($queue);
  57. $corrId = $message->send($body, $queue);
  58. Cache::setData($corrId, Cache::STATUS_SEND_OK); //set: status = send ok
  59. $data[] = $corrId;
  60. } catch (\common\logic\Amqp\Exception $e) {
  61. throw new Exception($e->getCode(), $e->getMessage());
  62. }
  63. return $data;
  64. }
  65. }