QueueService.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Repositories\Service;
  4. use App\Jobs\AddExchangeCodeJob;
  5. use App\Jobs\AddHomeJob;
  6. use App\Jobs\AddHyperLogLogJob;
  7. use App\Jobs\AddPaymentResultJob;
  8. use App\Jobs\AddPayNotifyJob;
  9. use App\Jobs\AddRegisterJob;
  10. use App\Jobs\AddShiftVideoJob;
  11. use App\Jobs\AgentOrderIncJob;
  12. use App\Jobs\AgentUserLoginJob;
  13. use App\Jobs\AgentUserRegistJob;
  14. use App\Jobs\CrashLogJob;
  15. use App\Jobs\CreateUserRelationJob;
  16. use App\Jobs\GetPayTradeNoJob;
  17. use App\Jobs\InviteUserJob;
  18. use App\Jobs\PublicSendTgMegJob;
  19. use App\Jobs\RebateTwoUserJob;
  20. use App\Jobs\RebateUserJob;
  21. use App\Jobs\RefreshLoginTimeJob;
  22. use App\Jobs\SaveChangeLogJob;
  23. use App\Jobs\SaveChatRecordJob;
  24. use App\Jobs\SaveUserChatRecordJob;
  25. use App\Jobs\SendSignInRewardsJob;
  26. use App\Jobs\SentTaskRewardJob;
  27. use App\Jobs\TimeTaskSendRewardJob;
  28. use App\Jobs\VideoLikeJob;
  29. use Hyperf\AsyncQueue\Driver\DriverFactory;
  30. use Hyperf\AsyncQueue\Driver\DriverInterface;
  31. class QueueService
  32. {
  33. /**
  34. * @var DriverInterface
  35. */
  36. protected $driver;
  37. public function __construct(DriverFactory $driverFactory)
  38. {
  39. $this->driver = $driverFactory->get('default');
  40. }
  41. /**
  42. * 将app崩溃日志加入队列.
  43. * @param array $params 数据
  44. * @param int $delay 延时时间 单位秒
  45. */
  46. public function crashLogPush(array $params, int $delay = 0): bool
  47. {
  48. // 这里的 `CrashLogJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  49. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  50. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  51. return $this->driver->push(new CrashLogJob($params), $delay);
  52. }
  53. /**
  54. * 更新上次登陆时间.
  55. * @param array $params 数据
  56. * @param int $delay 延时时间 单位秒
  57. */
  58. public function refreshLoginTimePush(array $params, int $delay = 0): bool
  59. {
  60. // 这里的 `RefreshLoginTimeJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  61. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  62. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  63. return $this->driver->push(new RefreshLoginTimeJob($params), $delay);
  64. }
  65. /**
  66. * 异步统计日活.
  67. * @param array $params 数据
  68. * @param int $delay 延时时间 单位秒
  69. */
  70. public function addHyperLogLogJob(array $params, int $delay = 0): bool
  71. {
  72. // 这里的 `AddHyperLogLogJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  73. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  74. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  75. return $this->driver->push(new AddHyperLogLogJob($params), $delay);
  76. }
  77. /**
  78. * 异步记录兑换码-兑换记录.
  79. * @param array $params 数据
  80. * @param int $delay 延时时间 单位秒
  81. */
  82. public function addExchangeCodeJob(array $params, int $delay = 0): bool
  83. {
  84. // 这里的 `AddExchangeCodeJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  85. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  86. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  87. return $this->driver->push(new AddExchangeCodeJob($params), $delay);
  88. }
  89. /**
  90. * 异步记录支付返回支付通道.
  91. * @param array $params 数据
  92. * @param int $delay 延时时间 单位秒
  93. */
  94. public function addPaymentResultJob(array $params, int $delay = 0): bool
  95. {
  96. // 这里的 `AddPaymentResultJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  97. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  98. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  99. return $this->driver->push(new AddPaymentResultJob($params), $delay);
  100. }
  101. /**
  102. * 异步记录支付回调.
  103. * @param array $params 数据
  104. * @param int $delay 延时时间 单位秒
  105. */
  106. public function addPayNotifyJob(array $params, int $delay = 0): bool
  107. {
  108. // 这里的 `AddPayNotifyJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  109. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  110. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  111. return $this->driver->push(new AddPayNotifyJob($params), $delay);
  112. }
  113. /**
  114. * 异步更改点赞情况.
  115. * @param array $params 数据
  116. * @param int $delay 延时时间 单位秒
  117. */
  118. public function addVideoLikeJob(array $params, int $delay = 0): bool
  119. {
  120. // 这里的 `VideoLikeJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  121. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  122. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  123. return $this->driver->push(new VideoLikeJob($params), $delay);
  124. }
  125. /**
  126. * 异步添加注册情况.
  127. * @param array $params 数据
  128. * @param int $delay 延时时间 单位秒
  129. */
  130. public function addRegisterJob(array $params, int $delay = 0): bool
  131. {
  132. // 这里的 `AddRegisterJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  133. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  134. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  135. return $this->driver->push(new AddRegisterJob($params), $delay);
  136. }
  137. /**
  138. * 异步视频转码.
  139. * @param array $params 数据
  140. * @param int $delay 延时时间 单位秒
  141. */
  142. public function addShiftVideoJob(array $params, int $delay = 0): bool
  143. {
  144. // 这里的 `AddShiftVideoJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  145. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  146. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  147. return $this->driver->push(new AddShiftVideoJob($params), $delay);
  148. }
  149. /**
  150. * 异步发布首页视频.
  151. * @param array $params 数据
  152. * @param int $delay 延时时间 单位秒
  153. */
  154. public function addHomeVideoJob(array $params, int $delay = 0): bool
  155. {
  156. // 这里的 `AddHomeJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  157. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  158. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  159. return $this->driver->push(new AddHomeJob($params), $delay);
  160. }
  161. /**
  162. * 异步发放签到奖励
  163. * @param array $params 数据
  164. * @param int $delay 延时时间 单位秒
  165. */
  166. public function sendSignInRewardsJob(array $params, int $delay = 0): bool
  167. {
  168. // 这里的 `SendSignInRewardsJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  169. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  170. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  171. return $this->driver->push(new SendSignInRewardsJob($params), $delay);
  172. }
  173. /**
  174. * 异步发放任务奖励奖励
  175. * @param array $params 数据
  176. * @param int $delay 延时时间 单位秒
  177. */
  178. public function sentTaskRewardJob(array $params, int $delay = 0): bool
  179. {
  180. // 这里的 `SentTaskRewardJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  181. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  182. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  183. return $this->driver->push(new SentTaskRewardJob($params), $delay);
  184. }
  185. /**
  186. * 异步创建用户等级关系
  187. * @param array $params 数据
  188. * @param int $delay 延时时间 单位秒
  189. */
  190. public function createUserRelationJob(array $params, int $delay = 0): bool
  191. {
  192. // 这里的 `CreateUserRelationJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  193. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  194. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  195. return $this->driver->push(new CreateUserRelationJob($params), $delay);
  196. }
  197. /**
  198. * 异步计算返佣奖励
  199. * @param array $params 数据
  200. * @param int $delay 延时时间 单位秒
  201. */
  202. public function rebateUserJob(array $params, int $delay = 0): bool
  203. {
  204. // 这里的 `RebateUserJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  205. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  206. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  207. return $this->driver->push(new RebateUserJob($params), $delay);
  208. }
  209. /**
  210. * 异步计算返佣奖励第二版
  211. * @param array $params 数据
  212. * @param int $delay 延时时间 单位秒
  213. */
  214. public function rebateTwoUserJob(array $params, int $delay = 0): bool
  215. {
  216. // 这里的 `RebateUserJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  217. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  218. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  219. return $this->driver->push(new RebateTwoUserJob($params), $delay);
  220. }
  221. /**
  222. * 异步代理系统登陆
  223. * @param array $params 数据
  224. * @param int $delay 延时时间 单位秒
  225. */
  226. public function agentUserLoginJob(array $params, int $delay = 0): bool
  227. {
  228. // 这里的 `AgentUserLoginJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  229. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  230. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  231. return $this->driver->push(new AgentUserLoginJob($params), $delay);
  232. }
  233. /**
  234. * 异步代理系统注册
  235. * @param array $params 数据
  236. * @param int $delay 延时时间 单位秒
  237. */
  238. public function agentUserRegistJob(array $params, int $delay = 0): bool
  239. {
  240. // 这里的 `AgentUserRegistJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  241. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  242. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  243. return $this->driver->push(new AgentUserRegistJob($params), $delay);
  244. }
  245. /**
  246. * 异步代理系统新增订单
  247. * @param array $params 数据
  248. * @param int $delay 延时时间 单位秒
  249. */
  250. public function agentOrderIncJob(array $params, int $delay = 0): bool
  251. {
  252. // 这里的 `AgentOrderIncJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  253. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  254. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  255. return $this->driver->push(new AgentOrderIncJob($params), $delay);
  256. }
  257. /**
  258. * 异步发放限时奖励任务
  259. * @param array $params 数据
  260. * @param int $delay 延时时间 单位秒
  261. */
  262. public function timeTaskSendRewardJob(array $params, int $delay = 0): bool
  263. {
  264. // 这里的 `TimeTaskSendRewardJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  265. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  266. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  267. return $this->driver->push(new TimeTaskSendRewardJob($params), $delay);
  268. }
  269. /**
  270. * 异步获取支付方流水订单号
  271. * @param array $params 数据
  272. * @param int $delay 延时时间 单位秒
  273. */
  274. public function getPayTradeNoJob(array $params, int $delay = 0): bool
  275. {
  276. // 这里的 `TimeTaskSendRewardJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  277. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  278. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  279. return $this->driver->push(new GetPayTradeNoJob($params), $delay);
  280. }
  281. /**
  282. * 保存聊天记录
  283. * @param array $params 数据
  284. * @param int $delay 延时时间 单位秒
  285. */
  286. public function saveChatRecord(array $params, int $delay = 0): bool
  287. {
  288. // 这里的 `TimeTaskSendRewardJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  289. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  290. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  291. return $this->driver->push(new SaveChatRecordJob($params), $delay);
  292. }
  293. /**
  294. * 保存用户聊天记录
  295. * @param array $params 数据
  296. * @param int $delay 延时时间 单位秒
  297. */
  298. public function saveUserChatRecord(array $params, int $delay = 0): bool
  299. {
  300. // 这里的 `TimeTaskSendRewardJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  301. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  302. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  303. return $this->driver->push(new SaveUserChatRecordJob($params), $delay);
  304. }
  305. /**
  306. * 发送聊天记录到tg
  307. * @param array $params 数据
  308. * @param int $delay 延时时间 单位秒
  309. */
  310. public function publicSendTgMegJob(array $params, int $delay = 0): bool
  311. {
  312. // 这里的 `TimeTaskSendRewardJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  313. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  314. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  315. return $this->driver->push(new PublicSendTgMegJob($params), $delay);
  316. }
  317. /**
  318. * 保存帐变记录
  319. * @param array $params 数据
  320. * @param int $delay 延时时间 单位秒
  321. */
  322. public function saveChangeLogJob(array $params, int $delay = 0): bool
  323. {
  324. // 这里的 `TimeTaskSendRewardJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
  325. // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
  326. // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
  327. return $this->driver->push(new SaveChangeLogJob($params), $delay);
  328. }
  329. }