fix a stupid error: queue for more tickets than capacity

This commit is contained in:
2024-05-25 01:18:24 +00:00
parent 10ee833002
commit 8cc179a0c2
3 changed files with 3 additions and 1 deletions

View File

@ -41,5 +41,6 @@ struct CoreTrainData {
struct SeatsData {
uint32_t seat[99];
uint32_t max_seats;
};
#endif

View File

@ -171,6 +171,7 @@ std::string TicketSystemEngine::AddTrain(const std::string &command) {
for (int i = 0; i < core_train_data.stationNum - 1; i++) {
seats_data.seat[i] = core_train_data.seatNum;
}
seats_data.max_seats = core_train_data.seatNum;
int day_count = core_train_data.saleDate_end - core_train_data.saleDate_beg + 1;
for (int i = 0; i < day_count; i++) {
seats_data_storage.Put(std::make_pair(train_id_hash, i), seats_data);

View File

@ -251,7 +251,7 @@ std::string TicketSystemEngine::BuyTicket(const std::string &command) {
available_seats = std::min(available_seats, (int)seats_data.seat[j]);
}
if (ticket_num > available_seats) {
if (accept_queue == "false") {
if (accept_queue == "false" || ticket_num > seats_data.max_seats) {
LOG->debug("no enough seats");
response_stream << "[" << command_id << "] -1";
return response_stream.str();