From 97e7382a6d282383ada204aa01be36c81f8a1e4a Mon Sep 17 00:00:00 2001 From: kejingfan Date: Fri, 14 Jun 2024 21:26:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E8=B4=AD=E7=A5=A8=E5=92=8C=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=AE=A2=E5=8D=95=E6=94=B9=E4=B8=BA=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E5=92=8C=E8=A7=A6=E5=8F=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project/Manager/data_source/db_user.sql | 1 + .../Manager/data_source/init_service_db.sql | 62 +++++++++++++++++- .../func/__pycache__/book.cpython-311.pyc | Bin 5703 -> 4753 bytes .../__pycache__/cancel_order.cpython-311.pyc | Bin 2710 -> 2557 bytes Project/Service/func/book.py | 27 ++------ Project/Service/func/cancel_order.py | 44 +++++-------- 6 files changed, 84 insertions(+), 50 deletions(-) diff --git a/Project/Manager/data_source/db_user.sql b/Project/Manager/data_source/db_user.sql index c6854c0..3473976 100644 --- a/Project/Manager/data_source/db_user.sql +++ b/Project/Manager/data_source/db_user.sql @@ -13,5 +13,6 @@ GRANT ALL PRIVILEGES ON ServiceDatabase.Airports TO 'serviceAgent'@'%'; GRANT ALL PRIVILEGES ON ServiceDatabase.Tickets TO 'serviceAgent'@'%'; GRANT SELECT, UPDATE (First_class_seats_remaining, Business_class_seats_remaining, Economy_class_seats_remaining) ON ServiceDatabase.Flights TO 'serviceAgent'@'%'; +GRANT EXECUTE ON PROCEDURE ServiceDatabase.AddPassengerAndTicket TO 'serviceAgent'@'%'; FLUSH PRIVILEGES; \ No newline at end of file diff --git a/Project/Manager/data_source/init_service_db.sql b/Project/Manager/data_source/init_service_db.sql index e5e23ad..9d70249 100644 --- a/Project/Manager/data_source/init_service_db.sql +++ b/Project/Manager/data_source/init_service_db.sql @@ -68,4 +68,64 @@ CREATE TABLE ServiceDatabase.Tickets ( FOREIGN KEY (PassengerID) REFERENCES Passengers(ID) ON DELETE CASCADE, FOREIGN KEY (OrderID) REFERENCES Orders(ID) ON DELETE CASCADE, CHECK (Seat_class IN ('First Class', 'Business Class', 'Economy Class')) -); \ No newline at end of file +); + +USE ServiceDatabase; + +DELIMITER // + +CREATE PROCEDURE AddPassengerAndTicket( + IN p_passenger_id VARCHAR(18), + IN p_name VARCHAR(255), + IN p_phone_number BIGINT, + IN p_seat_class VARCHAR(255), + IN p_flight_id VARCHAR(255), + IN p_price DECIMAL(7, 2), + IN p_order_id INT +) +BEGIN + -- 插入或更新乘客信息 + INSERT INTO Passengers (ID, Name, Phone_number) + VALUES (p_passenger_id, p_name, p_phone_number) + ON DUPLICATE KEY UPDATE Name=VALUES(Name), Phone_number=VALUES(Phone_number); + + -- 更新航班座位数 + IF p_seat_class = 'First Class' THEN + UPDATE Flights + SET First_class_seats_remaining = First_class_seats_remaining - 1 + WHERE ID = p_flight_id; + ELSEIF p_seat_class = 'Business Class' THEN + UPDATE Flights + SET Business_class_seats_remaining = Business_class_seats_remaining - 1 + WHERE ID = p_flight_id; + ELSEIF p_seat_class = 'Economy Class' THEN + UPDATE Flights + SET Economy_class_seats_remaining = Economy_class_seats_remaining - 1 + WHERE ID = p_flight_id; + END IF; + + -- 插入机票信息 + INSERT INTO Tickets (Price, FlightID, Seat_class, PassengerID, OrderID) + VALUES (p_price, p_flight_id, p_seat_class, p_passenger_id, p_order_id); +END // + +CREATE TRIGGER restore_seats +BEFORE DELETE ON Tickets +FOR EACH ROW +BEGIN + IF OLD.Seat_class = 'First Class' THEN + UPDATE Flights + SET First_class_seats_remaining = First_class_seats_remaining + 1 + WHERE ID = OLD.FlightID; + ELSEIF OLD.Seat_class = 'Business Class' THEN + UPDATE Flights + SET Business_class_seats_remaining = Business_class_seats_remaining + 1 + WHERE ID = OLD.FlightID; + ELSEIF OLD.Seat_class = 'Economy Class' THEN + UPDATE Flights + SET Economy_class_seats_remaining = Economy_class_seats_remaining + 1 + WHERE ID = OLD.FlightID; + END IF; +END // + +DELIMITER ; \ No newline at end of file diff --git a/Project/Service/func/__pycache__/book.cpython-311.pyc b/Project/Service/func/__pycache__/book.cpython-311.pyc index e0746abef3bb489b26715bf36565e17633ece37d..3f35b0e981af02fa8bd99a2dc14f6582c6b1e84a 100644 GIT binary patch delta 679 zcmZvYO=uHA6vt1;uCeF^7gr^Ge6DvC5?Y1A!#t^N+Tl{WD-W*OsSDabBk+y0ZIn#DV0oyon8e zSxQx;lqIDOl-5UQieu$KPbJV(R^k;UZb@;t=nd1ctKNYY$vMi@P=oN+dw1K+w5yY1qJ}u33Am}o z1OHB^7x=T`jT*rT_^d_-=P+`FEWX`5L7%jp9PvzaquuV7OfS28GA(D4>>i70vd3|m z6xvJL8oHNl=+yD4BQW6`I2NIuhSWggYm5$xIt^ruQT%Y6x?0Fy&*_84By9L@bc|zs MsD}PeV}f@41gNjH761SM delta 1461 zcmZ`%-%s0C6uvih(ll`#r-@+{(ilnx=@M94DwI-SQIodWz=ZLmv=a*%F<=$~*kP)e zDckcV4R*DyQdNnkuF@tgQeO5_jXkmTp|WWtBqXG1e}N}nP@i_4G*po7$mjUnbIy0p zxu3o1-wDz`Ivh5D`}VW=L|{Gq+q!x9Cu}J`gOiXTq>qYT;&TXF&@&iB z{T3R%B)=dx;AEgUX0|{wbAHW@yru@9TcH$(LeCISOaT0ZwIUE?8WrbOBWgBz&@bkQ zx#`5o``EnZG4Kr@1Bj64%hjNx?n!~CZ*Ipfp}@G6@eh%S@i+PG^1|vHZ^U!3o>A> z?m?YmLY>yPQOFu1@Ci*?MR>8eW8H!lvzW^W_fgKaeP;Egjl+VLZEvk7)3Pk&W(7&+ z+7q!L$EO#BAeWq5%n7O7%EBjt6et%PfU1l~2gc$fT)STmauuzu8REIvSaKk7BRU%A zK8WAt#*#6^HTw5f8nk17T?m|Yq)vlV*>j5{j;_O^ru1Sx?N4ZsZN*2<2 zIVA}TX)!0}W{0?5ZuQ3LC>P?wH4X0Ej(-^E5;2VM*S25%t_&!1Ix0?oD&#StNlBc> zY*tn>*d4*sQ`1?@Ilgt3c_T3-Wdtb^tL3ql>;LC`-@ItFK?8OUHlqdma}=do>3WIA zKg>Qky_m~MZAhlZp$|Q$-s|&-Ia!eMsio>7DS0`&?_62Rr1L_Vl5)WHx-4J5RXGF& zxgODudeq|h*#185Zow)~k;ShZ4`6%80p(K9br$M1DpH~%Dit|!H$J|#bxUgsmYRZ^ zJ5+LqR4RnR&Q^E@jXQg6UdKHA2N)JTa(=T;lIl6tdf~KZ5Gj zI~p@lVkT5(LMO?Kp1)Y%9^1Cdwml`Dj%aMS#D@3S?p?N9V+yQ;7Owsp*uJL@PpYX|_41s?h$Ti;84){3WCraWc!{$WgMMc^E}Z59({cRh7PP^5 z>7%0~-GxE;eWcSyD2kng30OJxj8DFdDc=d-JkNK57hSewKk=e3N++)oDh2UDb&$g* zpk6Z@em{YI&2(uvh`x9A1pF8&QHC)-oy1{th!sc)Y+hNfFDzzOvO=H4qgSran(sl_ Mpo9Om(jZ3s3z5W-`v3p{ diff --git a/Project/Service/func/__pycache__/cancel_order.cpython-311.pyc b/Project/Service/func/__pycache__/cancel_order.cpython-311.pyc index 9d2e09edf5b4b5a77eecb331c4f32e6740791d54..7299e3ead82f53ff9e34bd3477106356397d265e 100644 GIT binary patch delta 1029 zcma)5O-vI(6rSn+O@Fpvp)Cl;AF8+zhz6k$2%@nd2miuFHt|rpMGM^)wykg|a`8|I z2FOH=8kHD@8WN4ccreC`0VAhvQj?~Jgi8sWY~rOMF>#h(0~cT3yqWjD_r95ZGdpGd zQ(&Iuc>^F)D)_tK(Uaz)_9o&z0uqp*AIMOIvQE^=lt{_6NXv}KKp^QP%FoK2$dNUW zXg?B>#M}p>UZOjIz^-eA0yEir^mv--_PaxO)}a=GX`R${)uW+1!c4xJhsODv@FIkI z{8(2*OY9JfpX-W?*(m6SGdcj~$k-AHqHsDN_rn4_Oj{btcH#g?oP_r02CkHWuwyUB z0hE>@jxZGLFx(RM&?q-U4mqbCbWRb}`*eFND${Qe9v5l=K-Mhv%I$2LpmVIG`BV}p5YtZBE z3;TkBG*W_of0x_Sn`ZhHUmz?X#i*swo?sxL*zhN|44>gnTGG%PLIgOrEgK^4;hMP) zuX5Mt@#0y|VJIgsLq=#B|KOH}=|hZl<%ml~hf~NrZXPwOb|HQ_-k3nnByy_AnPov~ zvx+N>9*-Ktq28h0j8O%m0p2Q)_{%Mng(HUNDd?nibM zGv%_>w!;u7m&0H5w))Un^0i;<pxLJRHr(_`Ww`R=>}70;$VHf;jX)7CVUbI8Z74Se{oOU(>aGj0s)zoJ>O9P z{D8-xbe+u(u9g)#agv zudn+4ORd9>A1^(wJFaD2rD9a{oc;@nzc#;`NG9G}lipW~8=KXI_>{Do&sH-zC0nWJ z5-l}t_C&I|GwBFQHq6+=nF^j=$!K{sTPzhz8?`q%>9~D(C;skQ;y7{T)V-QmlWH#M zx>OsJE=e<|{*OLLtR$p`I9A5bX4mvEy@0+4(SZJ#jzLyGr01`&g?u%)nN<|qt>y13 z*<9YHmGb9#&1Q0CRV`Mdf<`WojdJBuNek&K%-9NFE#|iJc(0YuaNIGmnSo(@3jO*s zMcL*^NrMBh`GH+lw$+k7w0&33R`dOmNfy1zTnttOywFL>gZI&j{v&fk|AQIhE@P3# zqw<$N>i)UO0RJ7>TI?b2UTQb>XucEb@FtqF(3F9udP3k~`F`0HMlE5qb<4q%BM$J; zZ}p+g^a7ECIV*6n?db(a4w6#n>}3W{Pu`IA>g6 zHpS&O?@(yOd+2M192y%AAnf&tGt&38ha3)gh8_y{g-6Y9xa&39YZiOW=y$xE$W3S< z@p$isf4s|fzA(|Og=P&ji}lc)fdZ%USZA~Iv596ZG-IHdL&V-&+-)xIEbT3|mdK>! zZgMBJmujVYSh~G?dndVoo$Tbc_q z4G|zmt1%eJhc6Y18yZVIA^~#r+Ia$32ux$B9kFk#WqDi4-_T|;C;x)VItIrDA?$(6 b#{cym5RI364+yRP