package Ġcn . ai hu ai edu . school . base . entity Ċ Ċ import Ġcn . ai hu ai edu . school . base . Refresh Controller Ċ import Ġcom . Reflect Util Ċ import Ġcom . google . gson . Ex clusion Strategy Ċ import Ġcom . google . gson . Field Attributes Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . RequestBody Ċ import Ġok io . Buffered Sink Ċ import Ġjava . io . Serializable Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . lang . reflect . Method Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġv icky Ġon Ġ 2 0 1 8 . 0 2 . 0 4 . Ċ Ġ* Ċ Ġ* Ġ@ Author Ġv icky Ċ Ġ* Ġ@ Date Ġ 2 0 1 8 å¹´ 0 2 æľĪ 0 4 æĹ¥ ĠĠ 1 4 : 4 0 : 2 6 Ċ Ġ* Ġ@ ClassName Ġè¯·æ±Ĥ æıĲäº¤ åŁºç¡Ģ ç±» , åĪĨ åĪ ¸ property Ċ Ġ*/ Ċ abstract Ġclass ĠMultip art Bean Ġ: ĠRequest Body , Serializable Ġ{ ĊĠĠĠ Ġvar Ġpage Index : ĠInt ? Ġ= Ġ 0 ĊĠĠĠ Ġvar ĠpageSize : ĠInt ? Ġ= Ġ 1 0 ĊĊĠĠĠ Ġconstructor () ĊĠĠĠ Ġconstructor ( page Index : ĠInt , ĠpageSize : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . page Index Ġ= Ġpage Index ĊĠĠĠĠĠĠĠ Ġthis . pageSize Ġ= ĠpageSize ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( controller : ĠRefresh Controller ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Refresh Ġ= Ġcontroller ?. is Refresh Fix able () Ġ?: Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . page Index Ġ= Ġif Ġ( is Refresh ) Ġ 1 Ġelse Ġ( controller ?. page Index Ġ?: Ġpage Index Ġ?: Ġ 0 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġthis . pageSize Ġ= Ġ( controller ?. pageSize Ġ?: ĠpageSize Ġ?: Ġ 1 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠcontentType (): ĠMediaType ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( sink : ĠBuffered Sink ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < Map < String , ĠString >>() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ}. type ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgson Skip per Ġ= ĠGson Skip per () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġclass ĠGson Skip per Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġto Map ( any : ĠMultip art Bean , Ġclazz : ĠClass < *> ): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () // . set Pretty Print ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Complex Map Key Serialization () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. disable Inner Class Serialization () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Serialization Ex clusion Strategy ( Custom Ex clusion Strategy ( any )). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgson . fromJson < Map < String , ĠString >>( gson . toJson ( any , Ġclazz ), Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠtoJson ( any : ĠMultip art Bean , Ġclazz : ĠClass < *> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () // . set Pretty Print ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Complex Map Key Serialization () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Serialization Ex clusion Strategy ( Custom Ex clusion Strategy ( any )). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgson . toJson ( any , Ġclazz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠtoJson ( any : ĠMultip art Bean , Ġmap : ĠMap < String , ĠString >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () // . set Pretty Print ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Complex Map Key Serialization () // . disable Inner Class Serialization () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Serialization Ex clusion Strategy ( Custom Ex clusion Strategy ( any )). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgson . toJson ( map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġclass ĠCustom Ex clusion Strategy ( private Ġval Ġany : ĠMultip art Bean ) Ġ: ĠEx clusion Strategy Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Skip Class ( classname : ĠClass < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclassname Ġ== ĠRefresh Controller :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Skip Field ( f : ĠField Attributes ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f Ġ== Ġnull ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f . name Ġ== Ġ" page Index " Ġ|| Ġf . name Ġ== Ġ" pageSize ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( any . page Index Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f . name Ġ== Ġ" item Mutable Type ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdc Ġ= Ġf . decl aring Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= ĠReflect Util . getFile d ( Field Attributes :: class . java , Ġ" field ", Ġf ) Ġas ? ĠField ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeclared Method : ĠMethod ? Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc . getDeclared Method (" field Ex clusion ", ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( declared Method Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclared Method . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ( declared Method . invoke ( field , Ġf . name ) Ġas ? ĠBoolean ) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġf . name Ġ== Ġ" controller " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ æīĢæľī å±ŀæĢ§ è½¬æį¢ ä¸º map ĊĠĠĠĠ Ġ* Ġretrofit è¡¨åįķ æıĲäº¤ ä½¿çĶ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Map (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgson Skip per . toMap ( this , Ġthis . java Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠtoJson RequestBody (): ĠRequest Body Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠtoJson (). to RequestBody (" application / json ; Ġcharset = utf - 8 ". to MediaType OrNull ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠtoJson (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgson Skip per . toJson ( this , Ġthis . java Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Map Json (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgson Skip per . toJson ( this , Ġto Map ()) ĊĠĠĠ Ġ} Ċ }