package Ġcom . su q ir . was ais chedule . logic Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . live Data Ċ import Ġcom . su q ir . was ais chedule . Sample Application Like . Companion . context Ċ import Ġcom . su q ir . was ais chedule . logic . bean . Table Bean Ċ import Ġcom . su q ir . was ais chedule . logic . database . App Database Ċ import Ġcom . su q ir . was ais chedule . logic . model . Student Schedule Response Ċ import Ġcom . su q ir . was ais chedule . logic . model . Student Score Response Ċ import Ġcom . su q ir . was ais chedule . logic . model . Teacher Schedule Response Ċ import Ġcom . su q ir . was ais chedule . logic . network . Wa S ai Network Ċ import Ġcom . su q ir . was ais chedule . ui . schedule _ import . parser . Wf ust Parser Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ /** Ċ Ġ* ĠAuthor : ĠSu q ir Ċ Ġ* ĠDate : Ġ 2 0 2 0 / 8 / 9 Ġ 1 5 : 0 0 Ċ Ġ* ĠDesc : Ġ å¤ĸéĥ¨ ç»Łä¸Ģ è°ĥçĶ¨ åħ¥ åı£ Ċ Ġ**/ Ċ object ĠRepository Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠtableName Ġ= Ġ" æľª åĳ½åĲį " ĊĠĠĠ Ġprivate Ġval Ġdata Base Ġ= ĠApp Database . get Database ( context ) ĊĠĠĠ Ġprivate Ġval Ġtable Dao Ġ= Ġdata Base . table Dao () ĊĠĠĠ Ġprivate Ġval Ġcourse Dao Ġ= Ġdata Base . course Dao () ĊĊĠĠĠ Ġfun Ġget Notice Info () Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . get Notice Info () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . status Ġ== Ġ" success ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( response . data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" èİ·åıĸ å¤±è´¥ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Don ate List () Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . get Don ate List () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . status Ġ== Ġ" success ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( response . data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" èİ·åıĸ å¤±è´¥ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Html ( school : ĠString , Ġtype : ĠString , Ġhtml : ĠString , Ġqq : ĠString ) Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" hh hh h ", Ġ" Repository Ġpost Html :") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . post Html ( school , Ġtype , Ġhtml , Ġqq ) ĊĠĠĠĠĠĠĠ ĠResult . success ( response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Apply School () Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . get Apply School () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . status Ġ== Ġ" success ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( response . data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" èİ·åıĸ å¤±è´¥ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Student Score ( xh : ĠString , Ġx n : ĠString , Ġx q : ĠString ) Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġneed Exit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġscore List Ġ= ĠArrayList < Student Score Response . Score Item >() ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! need Exit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . get Student Score ( xh , Ġx n , Ġx q , Ġoffset . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore List . addAll ( response . list ). also Ġ{ Ġoffset ++ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Exit Ġ= Ġ( response . total Pages Ġ== Ġresponse . cur Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( need Exit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( score List ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" æĵįä½ľ å¤±è´¥ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Y kt Record LiveData ( x gh : ĠString , Ġoffset : ĠString ) Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . getY kt Record ( x gh , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġif Ġ( response . list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( response ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" åĪĹè¡¨ ä¸ºç©º ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Te achers LiveData ( query : ĠString ) Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= Ġget AccessToken () ĊĠĠĠĠĠĠĠ Ġif Ġ( accessToken . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġte achers Response Ġ= ĠW a S ai Network . get Te achers ( query , ĠaccessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( te achers Response . data . te achers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( te achers Response . data . te achers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" æĵįä½ľ å¤±è´¥ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" access _ token Ġis Ġnull ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget AccessToken ( username : ĠString Ġ= Ġ" 2 0 1 7 0 1 0 1 0 1 0 1 "): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= ĠW a S ai Network . get AccessToken ( username ) ĊĠĠĠĠĠĠĠ Ġreturn ĠaccessToken . data . accessToken ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġimport Student Schedule ( context : ĠContext , Ġx h : ĠString , Ġx n : ĠString , Ġx q : ĠString , Ġtable Id : ĠInt , Ġnew Flag : ĠBoolean ) Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġneed Exit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcourse List Ġ= ĠArrayList < Student Schedule Response . Student Course Item >() ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! need Exit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . get Student Schedule ( xh , Ġx n , Ġx q , Ġoffset . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtableName Ġ= Ġresponse . list [ 0 ]. xm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse List . addAll ( response . list ). also Ġ{ Ġoffset ++ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Exit Ġ= Ġresponse . total Pages Ġ== Ġresponse . cur Page ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( need Exit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsave We ike Schedule ( context , Ġtable Id , Ġnew Flag , Ġcourse List ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( result ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" æĵįä½ľ å¤±è´¥ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġimport Teacher Schedule ( context : ĠContext , Ġgh : ĠString , Ġx n : ĠString , Ġx q : ĠString , Ġtable Id : ĠInt , Ġnew Flag : ĠBoolean ) Ġ= Ġfire ( Dispatch ers . IO ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġneed Exit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcourse List Ġ= ĠArrayList < Teacher Schedule Response . Teacher Course Item >() ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! need Exit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠW a S ai Network . get Teacher Schedule ( gh , Ġx n , Ġx q , Ġoffset . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtableName Ġ= Ġresponse . list [ 0 ]. jsx m ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse List . addAll ( response . list ). also Ġ{ Ġoffset ++ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Exit Ġ= Ġresponse . total Pages Ġ== Ġresponse . cur Page ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( need Exit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsave We ike Schedule ( context , Ġtable Id , Ġnew Flag , Ġcourse List ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( result ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" æĵįä½ľ å¤±è´¥ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġ< T > Ġsave We ike Schedule ( context : ĠContext , Ġtable Id : ĠInt , Ġnew Flag : ĠBoolean , Ġresponse List : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwe ike Parser Ġ= ĠW f ust Parser ( response List ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwe ike Parser . save Course ( context , Ġtable Id ) Ġ{ Ġbase List , Ġdetail List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! new Flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Dao . cover Import ( base List , Ġdetail List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Dao . insert Table ( Table Bean ( id Ġ= Ġtable Id , ĠtableName Ġ= ĠtableName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Dao . insert Courses ( base List , Ġdetail List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġfire ( context : ĠCor outine Context , Ġblock : Ġsuspend Ġ() Ġ-> ĠResult < T >) Ġ= Ġlive Data ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure < T >( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} Ċ }