package Ġio . lex cao . book store . domain . payment Ċ Ċ import Ġmu . K Logging Ċ import Ġorg . springframework . data . repository . findById OrNull Ċ import Ġjavax . inject . Named Ċ import Ġjavax . persistence . Entity NotFoundException Ċ Ċ /** Ċ Ġ* Ġ åķĨåĵģ åºĵ åŃĺ çļĦ é¢Ĩ åŁŁ æľįåĬ¡ Ċ Ġ*/ Ċ @ Named Ċ class ĠStock p ile Service ( ĊĠĠĠ Ġval Ġrepository : ĠStock p ile Repository Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® äº§åĵģ æŁ¥è¯¢ åºĵ åŃĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetBy ProductId ( productId : ĠInt ): ĠStock p ile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . findById OrNull ( productId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠEntity NotFoundException ( productId . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è´§ çī© åĶ® åĩº ĊĠĠĠĠ Ġ* Ġä»İ åĨ » ç»ĵ çĬ¶æĢģ çļĦ è´§ çī© ä¸Ń æī £ åĩı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdecrease ( productId : ĠInt , Ġamount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstock Ġ= ĠgetBy ProductId ( productId ) ĊĠĠĠĠĠĠĠ Ġstock . decrease ( amount ) ĊĠĠĠĠĠĠĠ Ġrepository . save ( stock ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" åºĵ åŃĺ åĩº åºĵ ï¼Į åķĨåĵģ ï¼ļ {} ï¼Į æķ°éĩı ï¼ļ {}", ĠproductId , Ġamount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è´§ çī© å¢ŀåĬł ĊĠĠĠĠ Ġ* Ġ å¢ŀåĬł æĮĩå®ļ æķ°éĩı è´§ çī© èĩ³ æŃ£å¸¸ è´§ çī© çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrease ( productId : ĠInt , Ġamount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstock Ġ= ĠgetBy ProductId ( productId ) ĊĠĠĠĠĠĠĠ Ġstock . increase ( amount ) ĊĠĠĠĠĠĠĠ Ġrepository . save ( stock ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" åºĵ åŃĺ åħ¥ åºĵ ï¼Į åķĨåĵģ ï¼ļ {} ï¼Į æķ°éĩı ï¼ļ {}", ĠproductId , Ġamount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è´§ çī© åĨ » ç»ĵ ĊĠĠĠĠ Ġ* Ġä»İ æŃ£å¸¸ è´§ çī© ä¸Ń ç§»åĬ¨ æĮĩå®ļ æķ°éĩı èĩ³ åĨ » ç»ĵ çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrozen ( productId : ĠInt , Ġamount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstock Ġ= ĠgetBy ProductId ( productId ) ĊĠĠĠĠĠĠĠ Ġstock . frozen ( amount ) ĊĠĠĠĠĠĠĠ Ġrepository . save ( stock ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" åĨ » ç»ĵ åºĵ åŃĺ ï¼Į åķĨåĵģ ï¼ļ {} ï¼Į æķ°éĩı ï¼ļ {}", ĠproductId , Ġamount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è´§ çī© è§£ åĨ » ĊĠĠĠĠ Ġ* Ġä»İ åĨ » ç»ĵ è´§ çī© ä¸Ń ç§»åĬ¨ æĮĩå®ļ æķ°éĩı èĩ³ æŃ£å¸¸ çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġth aw ed ( productId : ĠInt , Ġamount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstock Ġ= ĠgetBy ProductId ( productId ) ĊĠĠĠĠĠĠĠ Ġstock . th aw ed ( amount ) ĊĠĠĠĠĠĠĠ Ġrepository . save ( stock ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" è§£ åĨ » åºĵ åŃĺ ï¼Į åķĨåĵģ ï¼ļ {} ï¼Į æķ°éĩı ï¼ļ {}", ĠproductId , Ġamount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® è´§ çī© æķ°éĩı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Amount ( productId : ĠInt , Ġamount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstock Ġ= ĠgetBy ProductId ( productId ) ĊĠĠĠĠĠĠĠ Ġstock . amount Ġ= Ġamount ĊĠĠĠĠĠĠĠ Ġrepository . save ( stock ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ