Regiment.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Facades\Servers\Logs\Log;
  4. use App\Models\Orders;
  5. use App\Models\OrdersProduct;
  6. use Illuminate\Console\Command;
  7. use App\Facades\Servers\Redis\RedisLock;
  8. use App\Facades\Servers\WechatWork\ExternalContact;
  9. use App\Models\RegimentActive as Model;
  10. use App\Models\Regiment as RegimentModel;
  11. use App\Models\RegimentRecord;
  12. class Regiment extends Command
  13. {
  14. /**
  15. * 任务名称
  16. *
  17. * @var string
  18. */
  19. protected $signature = 'regiment';
  20. /**
  21. * 任务描述
  22. *
  23. * @var string
  24. */
  25. protected $description = '拼团活动时间到期';
  26. /**
  27. * Create a new command instance.
  28. *
  29. * @return void
  30. */
  31. public function __construct()
  32. {
  33. parent::__construct();
  34. }
  35. /**
  36. * Execute the console command.
  37. *
  38. * @return int
  39. */
  40. public function handle()
  41. {
  42. // 执行任务
  43. $this->run_regiment();
  44. return 0;
  45. }
  46. /**
  47. * 执行任务
  48. *
  49. * */
  50. public function run_regiment(){
  51. // 实例化
  52. Log::log('run_regiment','执行开始');
  53. $Model = New Model();
  54. $time = time();
  55. // 活动结束
  56. $activeList = $Model->query()->where([['end_time','<=',time()],['status','=',1]])->get()->toArray();
  57. if ($activeList){
  58. $activeList = array_column($activeList,null,'id');
  59. $activeIds = array_column($activeList,'id');
  60. $regiment = RegimentModel::query()->where('status','=',0)->whereIn('active_id',$activeIds)->get()->toArray();
  61. if ($regiment){
  62. foreach ($regiment as $v){
  63. //虚拟成团
  64. if ($activeList[$v['active_id']]['virtually'] == 0 || $activeList[$v['active_id']]['number'] <= $v['people_number']){
  65. //查询记录
  66. $regimentRecordList = regimentRecord::query()->where('regiment_id','=',$v['id'])->get()->toArray();
  67. if ($regimentRecordList){
  68. $regimentRecordListIds = array_column($regimentRecordList,'order_id');
  69. //修改订单
  70. $res = Orders::query()->whereIn('id',$regimentRecordListIds)->update(['status'=>1,'update_time'=>$time]);
  71. if (!$res) Log::error('run_regiment','修改订单失败');
  72. $res = OrdersProduct::query()->whereIn('order_id',$regimentRecordListIds)->update(['status'=>1]);
  73. if (!$res) Log::error('run_regiment','修改订单产品失败');
  74. }
  75. //修改状态
  76. $res = RegimentModel::query()->where('id','=',$v['id'])->update(['status'=>2]);
  77. if (!$res) Log::error('run_regiment','修改团状态失败');
  78. $res = RegimentRecord::query()->where('regiment_id','=',$v['id'])->update(['status'=>2]);
  79. if (!$res) Log::error('run_regiment','修改团记录失败');
  80. }else{
  81. RegimentModel::query()->where('id','=',$v['id'])->update(['status'=>3]);
  82. RegimentRecord::query()->where('regiment_id','=',$v['id'])->update(['status'=>3]);
  83. //查询记录
  84. $regimentRecordList = regimentRecord::query()->where('regiment_id','=',$v['id'])->get()->toArray();
  85. if ($regimentRecordList){
  86. $regimentRecordListIds = array_column($regimentRecordList,'order_id');
  87. //修改订单
  88. $res = Orders::query()->whereIn('id',$regimentRecordListIds)->update(['status'=>11]);
  89. if (!$res) Log::error('run_regiment','修改订单失败');
  90. $res = OrdersProduct::query()->whereIn('order_id',$regimentRecordListIds)->update(['status'=>11]);
  91. if (!$res) Log::error('run_regiment','修改订单产品失败');
  92. }
  93. }
  94. }
  95. }
  96. $res = $Model->query()->whereIn('id',$activeIds)->update(['status'=>2,'update_time'=>$time]);
  97. if (!$res) Log::error('run_regiment','修改团活动失败:'.json_encode($activeIds));
  98. }
  99. //团过期
  100. $regimentList = RegimentModel::query()->where([['status','=',1],['end_time','<=',$time]])->get();
  101. if ($regimentList){
  102. foreach ($regimentList as $v){
  103. $activeList = $Model->query()->where('id','=',$v['active_id'])->first();
  104. //虚拟成团
  105. if ($activeList['virtually'] == 0 || $activeList['number'] <= $v['people_number']){
  106. //修改状态
  107. $r = RegimentModel::query()->where('id','=',$v['id'])->update(['status'=>2]);
  108. RegimentRecord::query()->where('regiment_id','=',$v['id'])->update(['status'=>2]);
  109. //查询记录
  110. $regimentRecordList = regimentRecord::query()->where('regiment_id','=',$v['id'])->get()->toArray();
  111. if ($regimentRecordList){
  112. $regimentRecordListIds = array_column($regimentRecordList,'order_id');
  113. //修改订单
  114. $res = Orders::query()->whereIn('id',$regimentRecordListIds)->update(['status'=>1]);
  115. if (!$res) Log::error('run_regiment','修改订单失败');
  116. $res = OrdersProduct::query()->whereIn('order_id',$regimentRecordListIds)->update(['status'=>1]);
  117. if (!$res) Log::error('run_regiment','修改订单产品失败');
  118. }
  119. }else{
  120. $r = RegimentModel::query()->where('id','=',$v['id'])->update(['status'=>3]);
  121. RegimentRecord::query()->where('regiment_id','=',$v['id'])->update(['status'=>3]);
  122. //查询记录
  123. $regimentRecordList = regimentRecord::query()->where('regiment_id','=',$v['id'])->get();
  124. $regimentRecordListIds = array_column($regimentRecordList,'order_id');
  125. //修改订单
  126. $res = Orders::query()->whereIn('id',$regimentRecordListIds)->update(['status'=>11]);
  127. if (!$res) Log::error('run_regiment','修改订单失败');
  128. $res = OrdersProduct::query()->whereIn('order_id',$regimentRecordListIds)->update(['status'=>11]);
  129. if (!$res) Log::error('run_regiment','修改订单产品失败');
  130. }
  131. }
  132. }
  133. Log::log('run_regiment','执行完成');
  134. }
  135. }