LuckyBagRewardJobs.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php namespace App\Jobs\Company\LiveLuckyBag;
  2. use Illuminate\Bus\Queueable;
  3. use Illuminate\Contracts\Queue\ShouldQueue;
  4. use Illuminate\Foundation\Bus\Dispatchable;
  5. use Illuminate\Queue\InteractsWithQueue;
  6. use Illuminate\Queue\SerializesModels;
  7. use App\Facades\Servers\Logs\Log;
  8. use App\Models\Manager\CustomAmount;
  9. use App\Models\Manager\CustomCoupon;
  10. use App\Models\Manager\CustomScore;
  11. use App\Models\Manager\LiveLuckyBagWinning;
  12. use App\Servers\DB\DbService;
  13. /**
  14. * 奖品发放
  15. */
  16. class LuckyBagRewardJobs implements ShouldQueue
  17. {
  18. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  19. /** 奖品数据 **/
  20. protected $winData;
  21. /**
  22. * 任务可尝试的次数
  23. *
  24. * @var int
  25. */
  26. public $tries = 3;
  27. /**
  28. * Create a new job instance.
  29. *
  30. * @return void
  31. */
  32. public function __construct($data)
  33. {
  34. $this->winData = $data;
  35. }
  36. /**
  37. * Execute the job.
  38. *
  39. * @return void
  40. */
  41. public function handle()
  42. {
  43. // 获取数据
  44. $winData = $this->winData;
  45. try {
  46. // 如果不是1,2,3 类型,不处理
  47. if( !in_array($winData['prize_type'],[1,2,3,4]) ) return 0;
  48. // 切换数据库
  49. (new DbService())->getConnectionNameByCompanyId($winData['company_id']);
  50. // 中奖记录
  51. $LiveLuckyBagWinning = (new LiveLuckyBagWinning);
  52. // 先查询是不是有未处理的
  53. $oldId = $LiveLuckyBagWinning->query()->where([['custom_uid','=',$winData['custom_uid']],['lucky_bag_id','=',$winData['lucky_bag_id']],['status','=',0],['participate_id','=',$winData['participate_id']]])->value('id');
  54. // 如果有没有的话,不处理
  55. if( !$oldId ) return 0;
  56. // 如果是积分
  57. if( $winData['prize_type'] == 1 ){
  58. // 积分大于0
  59. if( $winData['prize'] > 0 ){
  60. // 积分发放
  61. $result = (new CustomScore)->trade($winData['custom_uid'],$winData['shop_id'],$winData['company_id'],$winData['lucky_bag_id'],$winData['prize'],11,1,'直播福袋');
  62. // 发放失败,改为未中奖
  63. if( isset($result['error']) ){
  64. // 修改状态
  65. $result = $LiveLuckyBagWinning->edit($oldId,['status'=>1]);
  66. // 发放失败,改为未中奖
  67. if( !$result ) Log::info('job_error/lucky_bag_reward_jobs', '状态修改失败', $winData);
  68. Log::info('job_error/lucky_bag_reward_jobs', $result['error'], $winData);
  69. }
  70. }
  71. }
  72. // 优惠券
  73. if( $winData['prize_type'] == 2 ){
  74. // 优惠券存在ID
  75. if( $winData['prize'] ) {
  76. // 优惠卷给与
  77. $result = (new CustomCoupon)->giveCoupon($winData['prize'],$winData['custom_uid'],$winData['shop_id'],$winData['company_id']);
  78. // 发放失败,改为未中奖
  79. if( isset($result['error']) ){
  80. // 修改状态
  81. $result = $LiveLuckyBagWinning->edit($oldId,['status'=>1]);
  82. // 发放失败,改为未中奖
  83. if( !$result ) Log::info('job_error/lucky_bag_reward_jobs', '状态修改失败', $winData);
  84. Log::info('job_error/lucky_bag_reward_jobs', $result['error'], $winData);
  85. }
  86. }
  87. }
  88. // 红包
  89. if( $winData['prize_type'] == 3 || $winData['prize_type'] == 4){
  90. // 积分大于0
  91. if( $winData['prize'] > 0 ){
  92. // 积分发放
  93. $result = (new CustomAmount)->trade($winData['custom_uid'],$winData['shop_id'],$winData['company_id'],$winData['lucky_bag_id'],$winData['prize'],9,1,'直播福袋');
  94. // 发放失败,改为未中奖
  95. if( isset($result['error']) ){
  96. // 修改状态
  97. $result = $LiveLuckyBagWinning->edit($oldId,['status'=>1]);
  98. // 发放失败,改为未中奖
  99. if( !$result ) Log::info('job_error/lucky_bag_reward_jobs', '状态修改失败', $winData);
  100. Log::info('job_error/lucky_bag_reward_jobs', $result['error'], $winData);
  101. }
  102. }
  103. }
  104. } catch (Throwable $th) {
  105. Log::info('job_error/lucky_bag_reward_jobs', $th->getMessage(), $winData);
  106. }
  107. }
  108. }