package Ġcom . my world . s we alth . web . service Ċ Ċ import Ġcom . my world . s we alth . common . Api Result Ċ import Ġcom . my world . s we alth . common . Result Util Ċ import Ġcom . my world . s we alth . common . StringUtil Ċ import Ġcom . my world . s we alth . common . User Context Holder Ċ import Ġcom . my world . s we alth . data . entity . Tweet Ċ import Ġcom . my world . s we alth . data . entity . Tweet Comment Ċ import Ġcom . my world . s we alth . data . entity . Tweet Photo Ċ import Ġcom . my world . s we alth . data . repository . Tweet Comment Repository Ċ import Ġcom . my world . s we alth . data . repository . Tweet Photo Repository Ċ import Ġcom . my world . s we alth . data . repository . Tweet Repository Ċ import Ġcom . my world . s we alth . data . repository . UserProfile Repository Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . data . domain . Page Request Ċ import Ġorg . springframework . data . domain . Page able Ċ import Ġorg . springframework . data . domain . Sort Ċ import Ġorg . springframework . jdbc . core . Bean Property Row Mapper Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . jdbc . core . named param . Named Parameter Jdbc Template Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ import Ġkotlin . collections . ArrayList ĊĊ Ċ @ Service Ċ class ĠTweet ServiceImpl Ġ: ĠTweet Service Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLog Manager . getRoot Logger () ĊĠĠĠ Ġprivate Ġval ĠMY TW E ET _ PREFIX Ġ= Ġ" MY WE ET " ĊĠĠĠ Ġprivate Ġval ĠT WE ET _ COMMENT _ PREFIX Ġ= Ġ" T COM NT " ĊĠĠĠ Ġprivate Ġval ĠT WE ET _ PH OTO _ PREFIX Ġ= Ġ" TP H OTO " ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtweet Repository : ĠTweet Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtweet Comment Repository : ĠTweet Comment Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtweet Photo Repository : ĠTweet Photo Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Profile Repository : ĠUser Profile Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġjdbc Template : ĠJdbc Template ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnamed Parameter Jdbc Template : ĠNamed Parameter Jdbc Template ĊĊĊĠĠĠ Ġoverride Ġfun Ġshow Social List ( pageSize : ĠInt , Ġpage Index : ĠInt , Ġuser W id : ĠString ?): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage able : ĠPage able Ġ= ĠPage Request . of ( page Index , ĠpageSize , ĠSort . Direction . DESC , Ġ" create Time ") ĊĠĠĠĠĠĠĠ Ġval Ġtotal Num : ĠLong ĊĠĠĠĠĠĠĠ Ġval Ġtweets : ĠMutable List < Tweet > ĊĠĠĠĠĠĠĠ Ġif Ġ( user W id . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtweet Paged Ġ= Ġtweet Repository . findAll ( page able ) Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æķ°æį® ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets Ġ= Ġtweet Paged . content ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Num Ġ= Ġtweet Paged . total Elements ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtweet Paged Ġ= Ġtweet Repository . findBy User W id ( user W id , Ġpage able ) Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æķ°æį® ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets Ġ= Ġtweet Paged . content ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Num Ġ= Ġtweet Paged . total Elements ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( tweet : ĠTweet Ġin Ġtweets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Count Ġ= Ġtweet . view Count Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweet . view Count Ġ= Ġview Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweet Repository . save ( tweet ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( num Ġ= Ġtotal Num , Ġdata Ġ= Ġtweets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Social List Watch ( pageSize : ĠInt , Ġpage Index : ĠInt ): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple User Ġ= ĠUser Context Holder . getUser Context () ĊĠĠĠĠĠĠĠ Ġval Ġuser W id Ġ= Ġsimple User . wid Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æĿĥéĻĲ ") ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Option Ġ= Ġuser Profile Repository . findById ( user W id ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! user Profile Option . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" è¯· åħĪ è®¾ç½® ä¸ªäºº ä¿¡æģ¯ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Ġ= Ġuser Profile Option . get () ĊĠĠĠĠĠĠĠ Ġvar Ġwatch User W ids Ġ= Ġuser Profile . watch User W ids !! ĊĠĠĠĠĠĠĠ Ġwatch User W ids Ġ= Ġwatch User W ids . substring ( 0 , Ġwatch User W ids . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġwatch List Ġ= Ġwatch User W ids . split (',') ĊĠĠĠĠĠĠĠ Ġval Ġwatch List Need Ġ: ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġfor Ġ( one : ĠString Ġin Ġwatch List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch List Need . add ("' $ one '") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwatch List String Ġ= Ġwatch List Need . join ToString (",") ĊĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" SELECT Ġcount (*) ĠFROM Ġtweet ĠWHERE Ġuser _ wid ĠIN Ġ($ watch List String )" ĊĠĠĠĠĠĠĠ Ġif Ġ( page Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Count Ġ= Ġjdbc Template . query For Object ( sql , ĠInteger :: class . java ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" ================ =========== Ġ æĢ» åħ± è®°å½ķ æľī ï¼Į {}", Ġtotal Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( total Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī åħ³æ³¨ ä¿¡æģ¯ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġpage Index Ġ* ĠpageSize ĊĠĠĠĠĠĠĠ Ġvar Ġsql Need Ġ= Ġsql . replace (" count (* )", Ġ"* ") ĊĠĠĠĠĠĠĠ Ġsql Need Ġ= Ġ"$ sql Need ĠORDER ĠBY Ġcreate _ time ĠDESC Ġlimit Ġ$ start ,$ pageSize " ĊĠĠĠĠĠĠĠ Ġlog . info (" sql è¯Ńåı¥ æĺ¯ ï¼ļ {}", Ġsql Need ) ĊĠĠĠĠĠĠĠ Ġval Ġtweets : ĠMutable List < Tweet > Ġ= Ġjdbc Template . query ( sql Need , ĠBean Property Row Mapper ( Tweet :: class . java )) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( data Ġ= Ġtweets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġquery Show Social List ( pageSize : ĠInt , Ġpage Index : ĠInt , Ġuser W id : ĠString ?): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġpage Index Ġ* ĠpageSize ĊĠĠĠĠĠĠĠ Ġval Ġsql Count Ġ= Ġ" SELECT Ġcount (*) ĠFROM Ġtweet " ĊĠĠĠĠĠĠĠ Ġval Ġtotal Count Ġ= Ġjdbc Template . query For Object ( sql Count , ĠInteger :: class . java ) ĊĠĠĠĠĠĠĠ Ġlog . info (" ================ =========== Ġ æĢ» åħ± è®°å½ķ æľī ï¼Į {}", Ġtotal Count ) ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" SELECT Ġ* ĠFROM Ġtweet ĠORDER ĠBY Ġcreate _ time ĠDESC Ġlimit Ġ$ start ,$ pageSize " ĊĠĠĠĠĠĠĠ Ġlog . info (" sql è¯Ńåı¥ æĺ¯ ï¼ļ {}", Ġsql ) ĊĠĠĠĠĠĠĠ Ġval Ġtweets : ĠMutable List < Tweet > Ġ= Ġjdbc Template . query ( sql , ĠBean Property Row Mapper ( Tweet :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( data Ġ= Ġtweets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġquery Show Social List _ example One ( pageSize : ĠInt , Ġpage Index : ĠInt , Ġuser W id : ĠString ?): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġpage Index Ġ* ĠpageSize ĊĠĠĠĠĠĠĠ Ġval Ġsql Count Ġ= Ġ" SELECT Ġcount (*) ĠFROM Ġtweet " ĊĠĠĠĠĠĠĠ Ġval Ġtotal Count Ġ= Ġjdbc Template . query For Object ( sql Count , ĠInteger :: class . java ) ĊĠĠĠĠĠĠĠ Ġlog . info (" ================ =========== Ġ æĢ» åħ± è®°å½ķ æľī ï¼Į {}", Ġtotal Count ) ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" SELECT Ġid ĠAS Ġid , Ġnickname ĠAS Ġnickname ĠFROM Ġtweet ĠORDER ĠBY Ġcreate _ time ĠDESC Ġlimit Ġ$ start ,$ pageSize " ĊĠĠĠĠĠĠĠ Ġlog . info (" sql è¯Ńåı¥ æĺ¯ ï¼ļ {}", Ġsql ) ĊĠĠĠĠĠĠĠ Ġval Ġtweets Ġ= Ġnamed Parameter Jdbc Template . jdbc Template . query ( sql . trim Margin ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs , Ġ_ Ġ-> ĠTweet ( id Ġ= Ġrs . getString ( 1 ), Ġnickname Ġ= Ġrs . getString ( 2 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( data Ġ= Ġtweets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġquery Show Social List _ example Two ( pageSize : ĠInt , Ġpage Index : ĠInt , Ġuser W id : ĠString ?): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġpage Index Ġ* ĠpageSize ĊĠĠĠĠĠĠĠ Ġval Ġsql Count Ġ= Ġ" SELECT Ġcount (*) ĠFROM Ġtweet " ĊĠĠĠĠĠĠĠ Ġval Ġtotal Count Ġ= Ġjdbc Template . query For Object ( sql Count , ĠInteger :: class . java ) ĊĠĠĠĠĠĠĠ Ġlog . info (" ================ =========== Ġ æĢ» åħ± è®°å½ķ æľī ï¼Į {}", Ġtotal Count ) ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" SELECT Ġ* ĠFROM Ġtweet ĠORDER ĠBY Ġcreate _ time ĠDESC Ġlimit Ġ$ start ,$ pageSize " ĊĠĠĠĠĠĠĠ Ġlog . info (" sql è¯Ńåı¥ æĺ¯ ï¼ļ {}", Ġsql ) ĊĠĠĠĠĠĠĠ Ġval Ġtweets : ĠMutable List < Tweet > Ġ= Ġjdbc Template . query ( sql , ĠBean Property Row Mapper ( Tweet :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( data Ġ= Ġtweets ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġtweet Photo ( id : ĠString , Ġresponse : ĠHttpServletResponse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġtweet Photo Repository . findById ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Utils . copy ( ByteArray InputStream ( file . get (). file Byte ), Ġresponse . output Stream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . contentType Ġ= Ġ" image / jpeg " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Social Comments ( tweet W id : ĠString , Ġtweet User W id : ĠString , ĠpageSize : ĠInt , Ġpage Index : ĠInt ): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple User Ġ= ĠUser Context Holder . getUser Context () ĊĠĠĠĠĠĠĠ Ġval Ġuser W id Ġ= Ġsimple User . wid Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æĿĥéĻĲ ") ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Ġ= Ġuser Profile Repository . exists ById And Watch User W ids Containing ( user W id , Ġtweet User W id ) ĊĠĠĠĠĠĠĠ Ġvar Ġmsg Ġ= Ġ" false " ĊĠĠĠĠĠĠĠ Ġif Ġ( user Profile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Ġ= Ġ" true " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpage able : ĠPage able Ġ= ĠPage Request . of ( page Index , ĠpageSize , ĠSort . Direction . DESC , Ġ" create Time ") ĊĠĠĠĠĠĠĠ Ġval Ġtweet Comment Paged Ġ= Ġtweet Comment Repository . findBy Tweet W id ( tweet W id , Ġpage able ) Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æķ°æį® ") ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( msg Ġ= Ġmsg , Ġnum Ġ= Ġtweet Comment Paged . total Elements , Ġdata Ġ= Ġtweet Comment Paged . content ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġcomment On Social ( tweet W id : ĠString , Ġid At : ĠString , Ġcomment er W id : ĠString , Ġcomment at W id : ĠString , Ġcomment : ĠString ): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple User Ġ= ĠUser Context Holder . getUser Context () ĊĠĠĠĠĠĠĠ Ġval Ġuser W id Ġ= Ġsimple User . wid Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æĿĥéĻĲ ") ĊĠĠĠĠĠĠĠ Ġif Ġ( user W id Ġ!= Ġcomment er W id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" æĿĥéĻĲ ä¸į åĮ¹éħį ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ æī¾ åĩº è¯Ħè®º èĢħ çļĦ ä¸ªäºº èµĦ æĸĻ ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Option Ġ= Ġuser Profile Repository . findById ( user W id ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! user Profile Option . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" è¯· æĽ´æĸ° ä¸ªäºº èµĦ æĸĻ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Ġ= Ġuser Profile Option . get () ĊĊĠĠĠĠĠĠĠ Ġval Ġtweet Option Ġ= Ġtweet Repository . findById ( tweet W id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tweet Option . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtweet Ġ= Ġtweet Option . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġtweet . comment Count Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweet . comment Count Ġ= Ġcount Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweet Repository . save ( tweet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwid Ġ= ĠT WE ET _ COMMENT _ PREFIX Ġ+ Ġ'-' Ġ+ Ġcomment er W id Ġ+ Ġ'-' Ġ+ Date (). time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtweet Comment Ġ= ĠTweet Comment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġwid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtweet W id Ġ= Ġtweet W id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid At Ġ= Ġid At , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġcomment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment er W id Ġ= Ġcomment er W id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment at W id Ġ= Ġcomment at W id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnickname Ġ= Ġuser Profile . nickname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġuser Profile . position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompany Ġ= Ġuser Profile . company ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweet Comment Repository . save ( tweet Comment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( data Ġ= Ġwid ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī è¯¥ åįļå®¢ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Show Social ( anonymous : ĠInt , Ġcontent : ĠString ): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple User Ġ= ĠUser Context Holder . getUser Context () ĊĠĠĠĠĠĠĠ Ġval Ġuser W id Ġ= Ġsimple User . wid Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æĿĥéĻĲ ") ĊĊĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Option Ġ= Ġuser Profile Repository . findById ( user W id ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! user Profile Option . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" è¯· æĽ´æĸ° ä¸ªäºº èµĦ æĸĻ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Ġ= Ġuser Profile Option . get () ĊĊĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠDate (). time ĊĠĠĠĠĠĠĠ Ġval Ġwid Ġ= ĠMY TW E ET _ PREFIX Ġ+ Ġ"-" Ġ+ Ġuser W id Ġ+ Ġ"-" Ġ+ ĠcurrentTime ĊĠĠĠĠĠĠĠ Ġval Ġtweet Ġ= ĠTweet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġwid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanonymous Ġ= Ġanonymous , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser W id Ġ= Ġuser W id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnickname Ġ= Ġuser Profile . nickname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompany Ġ= Ġuser Profile . company , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġuser Profile . position , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreateTime Ġ= ĠcurrentTime ) ĊĠĠĠĠĠĠĠ Ġtweet Repository . save ( tweet ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success ( data Ġ= Ġwid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupload Tweet Photo Base 6 4 ( blog Id Detail : ĠString , Ġbase 6 4 s : ĠArray < String >): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple User Ġ= ĠUser Context Holder . getUser Context () ĊĠĠĠĠĠĠĠ Ġval Ġuser W id Ġ= Ġsimple User . wid Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æĿĥéĻĲ ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtweet Option Ġ= Ġtweet Repository . findById ( blog Id Detail ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! tweet Option . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" æĹł æŃ¤ ä¿¡æģ¯ ï¼Į ä¸įèĥ½ ä¸Ĭä¼ł çħ§ çīĩ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnew Num Ġ= Ġbase 6 4 s . size ĊĠĠĠĠĠĠĠ Ġval Ġthe Num Ġ= Ġtweet Photo Repository . count By Tweet W id ( blog Id Detail ) ĊĠĠĠĠĠĠĠ Ġif Ġ( the Num Ġ+ Ġnew Num Ġ> Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" æľĢ å¤ļ åıªèĥ½ ä¸Ĭä¼ł 9 å¼ł çħ§ çīĩ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtweet Ġ= Ġtweet Option . get () ĊĠĠĠĠĠĠĠ Ġvar Ġtweet Photos Ġ= Ġtweet . tweet Photos ĊĠĠĠĠĠĠĠ Ġfor Ġ( base 6 4 Ġin Ġbase 6 4 s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto W id Ġ= Ġsave Tweet Photo ( blog Id Detail , Ġbase 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweet Photos Ġ= Ġ"$ tweet Photos $ photo W id ," ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtweet . tweet Photos Ġ= Ġtweet Photos ĊĠĠĠĠĠĠĠ Ġtweet Repository . save ( tweet ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Tweet Photo ( blog Id Detail : ĠString , Ġbase 6 4 : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple User Ġ= ĠUser Context Holder . getUser Context () ĊĠĠĠĠĠĠĠ Ġval Ġuser W id Ġ= Ġsimple User . wid ĊĠĠĠĠĠĠĠ Ġval Ġbase 6 4 Bytes Ġ= ĠString Util . base 6 4 ToBytes ( base 6 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġbase 6 4 Bytes . size ĊĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠDate (). time ĊĠĠĠĠĠĠĠ Ġval Ġwid Ġ= ĠT WE ET _ PH OTO _ PREFIX Ġ+ ĠcurrentTime Ġ+ Ġ(( Math . random () Ġ* Ġ 9 Ġ+ Ġ 1 ) Ġ* Ġ 1 0 0 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġtweet Photo Ġ= ĠTweet Photo ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġwid , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= Ġ" BASE 6 4 -$ currentTime . jpg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension Type Ġ= Ġ" image / jpeg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser W id Ġ= Ġuser W id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweet W id Ġ= Ġblog Id Detail , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Byte Ġ= Ġbase 6 4 Bytes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreateTime Ġ= ĠcurrentTime ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtweet Photo Repository . save ( tweet Photo ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdel Show Social ( id : ĠString , Ġuser W id : ĠString ): ĠApi Result < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple User Ġ= ĠUser Context Holder . getUser Context () ĊĠĠĠĠĠĠĠ Ġval Ġthe User W id Ġ= Ġsimple User . wid Ġ?: Ġreturn ĠResult Util . failure (- 2 , Ġ" æ²¡æľī æĿĥéĻĲ ") ĊĠĠĠĠĠĠĠ Ġif Ġ( user W id Ġ!= Ġthe User W id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" æĿĥéĻĲ ä¸į åĮ¹éħį ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtweet Option Ġ= Ġtweet Repository . findById ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! tweet Option . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" ä¸įåŃĺåľ¨ è¯¥ å¾®åįļ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtweet User W id Ġ= Ġtweet Option . get (). user W id ĊĠĠĠĠĠĠĠ Ġif Ġ( user W id Ġ!= Ġtweet User W id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Util . failure (- 2 , Ġ" æĹł æĿĥ åĪłéĻ¤ åĪ« äººçļĦ å¾®åįļ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtweet Comment Repository . delete All By Tweet W id ( id ) ĊĠĠĠĠĠĠĠ Ġtweet Photo Repository . delete All By Tweet W id ( id ) ĊĠĠĠĠĠĠĠ Ġtweet Repository . delete ById ( id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Util . success () ĊĠĠĠ Ġ} Ċ } Ċ