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 { struct SeatsData {
uint32_t seat[99]; uint32_t seat[99];
uint32_t max_seats;
}; };
#endif #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++) { for (int i = 0; i < core_train_data.stationNum - 1; i++) {
seats_data.seat[i] = core_train_data.seatNum; 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; int day_count = core_train_data.saleDate_end - core_train_data.saleDate_beg + 1;
for (int i = 0; i < day_count; i++) { for (int i = 0; i < day_count; i++) {
seats_data_storage.Put(std::make_pair(train_id_hash, i), seats_data); 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]); available_seats = std::min(available_seats, (int)seats_data.seat[j]);
} }
if (ticket_num > available_seats) { if (ticket_num > available_seats) {
if (accept_queue == "false") { if (accept_queue == "false" || ticket_num > seats_data.max_seats) {
LOG->debug("no enough seats"); LOG->debug("no enough seats");
response_stream << "[" << command_id << "] -1"; response_stream << "[" << command_id << "] -1";
return response_stream.str(); return response_stream.str();