void RohonDealer::placeOrder(Order *order) { int ref; //放入map中,执行相应动作,开启等待线程 TRACE_LOG("RohonDealer::placeOrder, orderid:%s.",order->getId().c_str()); if(!started) { TRACE_LOG("RohonDealer::placeOrder failed. RohonDealer not started."); order->setRejected(); return; } //放入map中 EnterCriticalSection(&cs); RohonDealerInventory* pInventory = addInventory(order); if(pInventory == NULL) { //orderID与正在处理中的重复,要拒绝这次下单请求 LeaveCriticalSection(&cs); TRACE_LOG("RohonDealer::placeOrder failed. orderID is duplicated."); //order->setRejected(); return; } //分配localRef ref = pUserSpi->getCurOrderRef(); pInventory->localRef = ref; LeaveCriticalSection(&cs); //执行下单动作 if(0 != pUserSpi->InsertOrder(ref,order)) { //下单直接失败 EnterCriticalSection(&cs); delInventory(pInventory); LeaveCriticalSection(&cs); TRACE_LOG("RohonDealer::placeOrder failed. 下单直接失败"); order->setRejected(); return; } return; }
void menuInventory() { fclose(fdel); fclose(fi1); FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin); system("cls"); fclose(fi1); system("color 3f"); printBorders(95,31); printline(95,4); gtc(30,2); printf("INVENTORY MANAGEMENT SYSTEM FOR POS"); gtc(5,6); printf ("ID ITEM NAME PRICE"); fi1=fopen("mainInv.data","rb"); int start=8; int twopage=0; while(fread(&inv1,sizeof(inv1),1,fi1)==1) { gtc(5,start); printf("%d",inv1.itemID); gtc(30,start); printf("%s",inv1.pName); gtc(76,start); printf("PHP %.2f",inv1.price); start++; if(start==29) { twopage=1; break; } } gtc(4,29); printf("\xb10"); gtc(6,29);printf("Add an Item."); gtc(26,29);printf("Delete an Item."); ; gtc(46,29);printf("Edit an Item.") ; gtc(66,29);printf("Go back to menu."); if (twopage==1) { gtc(30,3);printf("2nd Page available [PRESS DOWN ARROW]"); } else { } int a,curs=4; while(getch()!=13) //THIS PART OMG. { FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin); a=getch(); if (a==0 || a==0xE0) a=getch(); if (a==27) { break; } else if (a==75) { FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin); if(curs!=4) { gtc(curs,29); printf(" "); curs-=20; gtc(curs,29); printf("\xb10"); } } else if (a==77) { FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin); if (curs!=64) { gtc(curs,29); printf(" "); curs+=20; gtc(curs,29); printf("\xb10"); } } else if(a==80) { if(twopage==1) { FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin); system("cls"); system("color 3f"); printBorders(95,31); printline(95,4); gtc(30,2); printf("INVENTORY MANAGEMENT SYSTEM FOR POS"); gtc(5,6); printf ("ID ITEM NAME PRICE"); int start1=8; while(fread(&inv1,sizeof(inv1),1,fi1)==1) { gtc(5,start1); printf("%d",inv1.itemID); gtc(30,start1); printf("%s",inv1.pName); gtc(76,start1); printf("PHP %.2f",inv1.price); start1++; } int a1,curs1=4; while(getch()!=13) //THIS PART OMG. { a1=getch(); if (a1==0 || a1==0xE0) a1=getch(); if (a1==27) { break; } else if (a1==72) { menuInventory(); } } } } } switch(curs) { case 4: addInventory(); break; case 24: delInventory(); break; case 44: editInventory(); break; case 64: menu(); exit(0); break; } getch(); }
void EditInventory::deleteInventory(const Inventory &inventory) { addInventory(inventory); }