MessageController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. namespace backend\controllers;
  3. use backend\forms\MessageForm;
  4. use common\helpers\KeyHelper;
  5. use common\logic\Amqp\Cache;
  6. use components\Exception;
  7. use components\service\AmqpConfig;
  8. use Yii;
  9. class MessageController extends BaseController
  10. {
  11. /**
  12. * [查询回执信息]
  13. * @author: libingke
  14. * @param $query
  15. * @param $queue
  16. * @return bool
  17. * @throws Exception
  18. */
  19. public function actionQueryReceipt($query, $queue)
  20. {
  21. if (is_string($query) && is_string($query)) {
  22. $statusKey = KeyHelper::getMessageStatusKey($query, $queue);
  23. $resultKey = KeyHelper::getMessageResultKey($query, $queue);
  24. $status = Yii::$app->redis->get($statusKey);
  25. if ($status !== false) {
  26. $mark = AmqpConfig::getMarkById($status);//状态码 => 提示信息
  27. if (Cache::STATUS_HAND_OK == $status) {
  28. return json_decode(Yii::$app->redis->get($resultKey), true);//直接返回数据
  29. } else {
  30. throw new Exception(2101, $mark);//非正常时回执
  31. }
  32. } else {
  33. throw new Exception(2102);//无效
  34. }
  35. } else {
  36. throw new Exception(2102);//无效
  37. }
  38. }
  39. /**
  40. * 发送消息
  41. * @author: libingke
  42. * @return array
  43. * @throws Exception
  44. */
  45. public function actionSend()
  46. {
  47. $model = new MessageForm();
  48. $model->setScenario('send');
  49. $model->load(['MessageForm' => Yii::$app->request->get()]);
  50. $data = [];
  51. if ($model->validate()) {
  52. $data = $model->sendMessageV1_1();
  53. } else {
  54. $model->handleError();//处理验证失败
  55. }
  56. return [
  57. 'code' => 200,
  58. 'message' => Yii::t('error', 200),
  59. 'data' => $data
  60. ];
  61. }
  62. /**
  63. * 批量发送消息
  64. * @author: libingke
  65. * @return array
  66. */
  67. public function actionBatchSend()
  68. {
  69. $model = new MessageForm();
  70. $model->setScenario('batch_send');
  71. $model->load(['MessageForm' => Yii::$app->request->get()]);
  72. $data = [];
  73. if ($model->validate()) {
  74. $data = $model->batchSendMessage();
  75. } else {
  76. $model->handleError();
  77. }
  78. return [
  79. 'code' => 200,
  80. 'message' => Yii::t('error', 200),
  81. 'data' => $data
  82. ];
  83. }
  84. /**
  85. * 获取队列消息列表
  86. * @author: libingke
  87. */
  88. public function actionList()
  89. {
  90. $model = new MessageForm();
  91. $model->setScenario('message_list');
  92. $model->load(['MessageForm' => Yii::$app->request->get()]);
  93. $data = [];
  94. if ($model->validate()) {
  95. $data = $model->getMessageList();
  96. } else {
  97. $model->handleError();
  98. }
  99. return [
  100. 'code' => 200,
  101. 'message' => Yii::t('error', 200),
  102. 'data' => $data
  103. ];
  104. }
  105. /**
  106. * 消费消息
  107. * @author: libingke
  108. */
  109. public function actionConsume()
  110. {
  111. $model = new MessageForm();
  112. $model->setScenario('consume');
  113. $model->load(['MessageForm' => Yii::$app->request->get()]);
  114. $data = [];
  115. if ($model->validate()) {
  116. $data = $model->consumeMessage();
  117. } else {
  118. $model->handleError();
  119. }
  120. return [
  121. 'code' => 200,
  122. 'message' => Yii::t('error', 200),
  123. 'data' => $data
  124. ];
  125. }
  126. /**
  127. * 删除消息
  128. * @author: libingke
  129. */
  130. public function actionDelete()
  131. {
  132. }
  133. /**
  134. * 清空消息
  135. * @author: libingke
  136. */
  137. public function actionPurge()
  138. {
  139. $model = new MessageForm();
  140. $model->setScenario('purge');
  141. $model->load(['MessageForm' => Yii::$app->request->get()]);
  142. $data = [];
  143. if ($model->validate()) {
  144. $data = $model->purge();
  145. } else {
  146. $model->handleError();
  147. }
  148. return [
  149. 'code' => 200,
  150. 'message' => Yii::t('error', 200),
  151. 'data' => $data
  152. ];
  153. }
  154. }