fix a stupid error: queue for more tickets than capacity
This commit is contained in:
@ -41,5 +41,6 @@ struct CoreTrainData {
|
|||||||
|
|
||||||
struct SeatsData {
|
struct SeatsData {
|
||||||
uint32_t seat[99];
|
uint32_t seat[99];
|
||||||
|
uint32_t max_seats;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
Reference in New Issue
Block a user