getMessage()); return false; } } /** * 拼团活动数据统计 */ public function actionActivityDataStatistics() { // $start_time = microtime(true); $malls = Mall::getEnableMallList(); foreach ($malls as $mall) { $res = StatisticsLogic::asyncStatisticsActivityData($mall['id']); } // $end_time = microtime(true); // var_dump($end_time - $start_time); } /** * 每日更新参团次数 */ public function actionUpdateAttendTimes() { $malls = Mall::getEnableMallList(); foreach ($malls as $mall) { $res = AttendTimeLogic::addUserAttendTimes($mall['id']); } return 0; } //过了有效期的幸运拼团订单 public function actionExpActivity() { try { $malls = Mall::getEnableMallList(); foreach ($malls as $mall) { $mall_id = $mall['id']; $activity_list = LuckyGroupActivity::lists(['where' => [ ['status' => StatusEnum::ENABLED], ['mall_id' => $mall_id], ]]); $logic = new OrderPaidQueueLogic(); // 当天,手动拼团未成功 foreach ($activity_list as $activity) { $end_time = strtotime($activity['end_time']) + 1800;// 延迟半小时,以防有的订单还在开团中... if (time() > $end_time) { // 活动结束,找出手动拼团的订单 $group_order = LuckyGroupOrder::find() ->where([ 'attend_type' => LuckyGroupEnum::ATTEND_TYPE_NOT_AUTO, 'group_status' => LuckyGroupEnum::GROUP_JOINING, 'activity_id' => $activity['id'], 'mall_id' => $mall_id, ])->andWhere(['<', 'created_at', $end_time])->all(); foreach ($group_order as $order) { $model = new WinLossLogic(); $order->group_status = LuckyGroupEnum::GROUP_FAIL; $order->save(); $reson = '手动拼团失败自动退款'; $model->refundToBalance($order, $reson); $activity_id = $order['activity_id']; $goods_id = $order['goods_id']; $this->upQueue($logic,$order['id'],$activity_id,$goods_id); } } } // 前一天,手动拼团未成功的 $last_time = strtotime(date('Y-m-d')); $group_order = LuckyGroupOrder::find() ->where([ 'attend_type' => LuckyGroupEnum::ATTEND_TYPE_NOT_AUTO, 'group_status' => LuckyGroupEnum::GROUP_JOINING, 'mall_id' => $mall_id, ])->andWhere(['<', 'created_at', $last_time])->all(); foreach ($group_order as $order) { $model = new WinLossLogic(); $order->group_status = LuckyGroupEnum::GROUP_FAIL; $order->save(); $reson = '手动拼团失败自动退款'; $model->refundToBalance($order, $reson); $activity_id = $order['activity_id']; $goods_id = $order['goods_id']; $this->upQueue($logic,$order['id'],$activity_id,$goods_id); } } return ExitCode::OK; } catch (\Exception $e) { echo '过了有效期的幸运拼团订单:' . $e->getMessage(); return ExitCode::UNSPECIFIED_ERROR; } } public function upQueue($logic,$order_id,$activity_id,$goods_id){ $queue = $logic->getQueueName($activity_id, $goods_id); $len = \Yii::$app->redis->llen($queue); $ids = \Yii::$app->redis->lrange($queue, -$len, -1); \Yii::$app->redis->ltrim($queue, 0, -($len + 1)); foreach ($ids as $k=>$v){ if($v==$order_id){ unset($ids[$k]); } } if(!empty($ids)){ \Yii::$app->redis->lpush($queue, ...$ids); } } public function actionFixBalance() { $i = 1; $page_size = 1000; $wallet_type='balance'; while ($list = LuckyGroupUser::find() ->where(['status' => 1]) ->offset(($i - 1) * $page_size)->limit($page_size)->all()) { foreach ($list as $item) { CapitalLog::$capitalType = $wallet_type; $change_num = CapitalLog::find()->where(['user_id'=>$item['user_id'],'change_type'=>'add','from_type'=>'LuckyGroup']) ->andWhere(['!=','capital_type','refund_order'])->sum('change_num'); if(!empty($change_num)){ $item->balance = $change_num; $item->save(); } } $i++; } } //定时取消,待支付订单 public function actionClose(){ $malls = Mall::getEnableMallList(); $time = time(); foreach ($malls as $mall) { $order_auto_handle_time = \Yii::$app->services->setting->mall->get($mall['id'], 'order.payment_expire_time'); if (empty($order_auto_handle_time)) $order_auto_handle_time = 30; $time_node = $time - $order_auto_handle_time * 60 - 120; $time_field = 'created_at'; $where = [ 'and', ['mall_id' => $mall['id']], ['group_status'=>0], ['pay_at'=>0], ['<', $time_field, $time_node] ]; foreach (LuckyGroupOrder::find()->where($where)->each(1000) as $lucky_group_order) { $lucky_group_order->group_status = -1; $res = $lucky_group_order->save(); var_dump($res); } } } }