diff --git a/src/include/data.h b/src/include/data.h index 991b05d..f5884c1 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -41,5 +41,6 @@ struct CoreTrainData { struct SeatsData { uint32_t seat[99]; + uint32_t max_seats; }; #endif \ No newline at end of file diff --git a/src/train_system.cpp b/src/train_system.cpp index 75b4099..cb03b1a 100644 --- a/src/train_system.cpp +++ b/src/train_system.cpp @@ -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); diff --git a/src/transaction_system.cpp b/src/transaction_system.cpp index 2aa2921..92c2912 100644 --- a/src/transaction_system.cpp +++ b/src/transaction_system.cpp @@ -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();