package Ġcom . q ing zh u . message server . domain . query Ċ Ċ import Ġcom . q ing zh u . common . domain . shared . Range Query Ċ import Ġcom . q ing zh u . common . page . Page Param Ċ import Ġorg . apache . lucene . search . join . Score Mode Ċ import Ġorg . elasticsearch . index . query . Bool QueryBuilder Ċ import Ġorg . elasticsearch . index . query . Query Builders Ċ import Ġorg . springframework . data . elasticsearch . core . query . Native Search QueryBuilder Ċ Ċ data Ġclass ĠCon versation Query ( ĊĠĠĠ Ġvar Ġorganization Id : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĊĠĠĠ Ġval Ġkeyword : ĠString ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĹ¶éĹ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtime Range : ĠRange Query < String > ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è´£ ä»» å®¢ æľį ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstaff IdList : ĠList < Long > ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĴ ¨ è¯¢ ç±»åŀĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcategory List : ĠList < String > ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å®¢ æľį ç»Ħ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstaff GroupId List : ĠList < Long > ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æİ¥ å¾ħ ç»Ħ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsh unt IdList : ĠList < Long > ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĢ» æ¶Īæģ¯ æĿ¡ æķ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtotal Message Count : ĠRange Query < Int > ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĨ é¡µ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġpage : ĠPage Param Ġ= ĠPage Param (), ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠçĶ¨æĪ· Ġid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠuserId : ĠLong ?, Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġbuild Search Query (): ĠNative Search QueryBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġquery Ġ= ĠNative Search QueryBuilder () ĊĠĠĠĠĠĠĠ Ġvar Ġbool QueryBuilder Ġ= ĠBool QueryBuilder () ĊĠĠĠĠĠĠĠ Ġif Ġ( this . keyword . isNull OrEmpty (). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġand Query Ġ= ĠQuery Builders . bool Query () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should ( Query Builders . multi Match Query ( this . keyword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuery Builders . nested Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" chat Messages ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuery Builders . multi Match Query ( this . keyword ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScore Mode . Avg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġquery . with Query ( and Query ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( organization Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool QueryBuilder Ġ= Ġbool QueryBuilder . must ( Query Builders . terms Query (" organization Id ", Ġorganization Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( this . time Range Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool QueryBuilder Ġ= Ġbool QueryBuilder . must ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuery Builders . range Query (" startTime ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( this . time Range . from , Ġthis . time Range . include Lower ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to ( this . time Range . to , Ġthis . time Range . include Upper ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . staff IdList . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool QueryBuilder Ġ= Ġbool QueryBuilder . must ( Query Builders . terms Query (" staff Id ", Ġ* this . staff IdList . to Long Array ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . staff GroupId List . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool QueryBuilder Ġ= Ġbool QueryBuilder . must ( Query Builders . terms Query (" from GroupId ", Ġ* this . staff GroupId List . to Long Array ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . sh unt IdList . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool QueryBuilder Ġ= Ġbool QueryBuilder . must ( Query Builders . terms Query (" from Sh unt Id ", Ġ* this . sh unt IdList . to Long Array ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( userId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool QueryBuilder Ġ= Ġbool QueryBuilder . must ( Query Builders . terms Query (" userId ", ĠuserId )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġquery . with Page able ( page . to Page able ()). with Filter ( bool QueryBuilder ) ĊĠĠĠĠĠĠĠ Ġreturn Ġquery ĊĠĠĠ Ġ} Ċ } Ċ