select('level,init_attend_times') ->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED]) ->asArray() ->indexBy('level') ->all(); $group_users_query = LuckyGroupUser::find()->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED]); $time = time(); foreach ($group_users_query->batch(200) as $group_users) { if (!empty($group_users)) { foreach ($group_users as $user) { $group_level = $group_levels[$user->level] ?? []; $user->clear_attend_times_at = $time; $user->give_attend_times_at = $time; $attend_times = $group_level['init_attend_times'] ?? 0; if ($attend_times == 0 && $user->level == 0) { $attend_times = \Yii::$app->services->setting->addons->get($mall_id, LuckyGroupEnum::ADDONS_NAME, 'basic.default_level_attend_times'); } $before_attend_times = $user->attend_times ?? 0; $user->attend_times = $attend_times; $res = $user->save(); if (false === $res) { \Yii::error('自动更新参团会员参团次数失败: errmsg => ' . $user->getErrorMessage() . ', user_id => ' . $user->user_id . ', level => ' . $user->level . ', attend_times => ' . $group_level['init_attend_times'] ?? 0);\Yii::getLogger()->flush(true); echo '自动更新参团会员参团次数失败: errmsg => ' . $user->getErrorMessage() . PHP_EOL; continue; } $insert_data[] = [$mall_id, $user->user_id, $attend_times, $before_attend_times, '系统每日重置参团会员的参团次数', 1, 1, $time, $time]; } if (!empty($insert_data)) { $fields = ['mall_id', 'user_id', 'num', 'before_num', 'desc', 'type', 'status', 'created_at', 'updated_at']; $res = \Yii::$app->db->createCommand()->batchInsert(LuckyGroupAttendTimesLog::tableName(), $fields, $insert_data)->execute(); if (empty($res)) { \Yii::error('自动更新参团会员参团次数失败: errmsg => 批量插入更新参团次数日志记录失败。insert_data => ' . var_export($insert_data, true));\Yii::getLogger()->flush(true); echo '自动更新参团会员参团次数失败: errmsg => 批量插入更新参团次数日志记录失败' . PHP_EOL; continue; } } } } return true; } }