setName('bargain_close') ->setDescription('结束过期的砍价活动'); } protected function execute(Input $input, Output $output) { $lists = BargainActivity::where('status', BargainEnum::ACTIVITY_STATUS_ING)->select()->toArray(); $ids = []; $updateActivityData = []; $updateInitiateData = []; foreach ($lists as $item) { if (strtotime($item['end_time']) <= time()) { // 活动结束 $ids[] = $item['id']; $updateActivityData[] = ['id' => $item['id'], 'status' => BargainEnum::ACTIVITY_STATUS_END]; } } // 结束已过期的砍价活动 if (count($updateActivityData)) { (new BargainActivity)->saveAll($updateActivityData); } // 标记未砍价成功的记录为砍价失败 $bargainInitiateIds = BargainInitiate::where([ ['activity_id', 'in', $ids], ['status', '=', BargainEnum::STATUS_ING] ])->column('id'); foreach ($bargainInitiateIds as $id) { $updateInitiateData[] = ['id' => $id, 'status' => BargainEnum::STATUS_FAIL]; } if (count($updateInitiateData)) { (new BargainInitiate())->saveAll($updateInitiateData); } // 删除商品活动信息表的数据 $goodsActivityIds = GoodsActivity::where([ ['activity_type', '=', ActivityEnum::BARGAIN], ['activity_id', 'in', $ids], ])->column('id'); if (count($goodsActivityIds)) { GoodsActivity::destroy($goodsActivityIds); } // 标识已过砍价有效期的砍价记录为砍价失败 $ids = BargainInitiate::where([ ['end_time','<=', time()], ['status', '=', BargainEnum::STATUS_ING] ])->column('id'); $updateInitiateData = []; foreach($ids as $id) { $updateInitiateData[] = ['id' => $id, 'status' => BargainEnum::STATUS_FAIL]; } if (count($updateInitiateData)) { (new BargainInitiate())->saveAll($updateInitiateData); } } }