條件過(guò)濾查詢(搜索)

過(guò)濾條件功能分析:

怎么回事小老弟,還不去敲代碼

一.分類\品牌\規(guī)格的過(guò)濾

1.功能要求:在我們的搜索頁(yè)中,當(dāng)我們輸入一個(gè)關(guān)鍵字,相關(guān)商品的屬性(品牌,分類,規(guī)格等等)就會(huì)出現(xiàn)在下面.我們要做的就是根據(jù)商品的這些屬性來(lái)就行篩選.要達(dá)到的效果是:我們點(diǎn)擊品牌\分類\規(guī)格,這些篩選條件會(huì)出現(xiàn)在面包屑中,同時(shí)相關(guān)屬性的選擇框會(huì)消失,通過(guò)一步步的篩選就能得到想要的商品

2.業(yè)務(wù)思考:怎么做這個(gè)功能呢

前臺(tái)搜索條件的構(gòu)建

①:首先我們要把商品分類\品牌\規(guī)格以map的形式放入一個(gè)集合中,方便我們做面包屑時(shí)使用,需要注意的一點(diǎn)是,我們的規(guī)格是一個(gè)集合(因?yàn)橛凶右?guī)格);所以我們?cè)谶M(jìn)行具體的業(yè)務(wù)之前需要先定義出來(lái)這個(gè)集合:{'關(guān)鍵字':'','商品分類':'','品牌':'','規(guī)格':{}}

②:下一步就是增加搜索選項(xiàng)了,我們之前有一個(gè)搜索的Map集合是searchMap,我們現(xiàn)在要做的就是往這個(gè)集合中添加元素;由于商品分類和品牌列表是一樣的,但是規(guī)格是不一樣的,規(guī)格是集合的形式,所以在這里就要進(jìn)行了一個(gè)判斷---->我們定一個(gè)addSearchResult的方法,這個(gè)方法的參數(shù)是key和Value,也就是要添加的屬性和屬性值;我們?cè)龠M(jìn)行判斷,如果key是商品分類或者品牌,我們就直接在searchMap(之前的搜索條件集合)中添加就行了;如果key是規(guī)格,我們就要再點(diǎn)上規(guī)格在進(jìn)行添加;我們?cè)谶@還要添加ng-if,為的是我們?cè)诓樵儠r(shí)如果沒(méi)有多余的屬性,就不要顯示,所以加了ng-if判斷返回結(jié)果中所屬屬性的集合是不是空的,空的就不顯示

③然后在頁(yè)面上的商品分類\品牌\規(guī)格標(biāo)簽上分別綁定上方法,里面放入的是屬性(比如分類就是category)和值,然后可以在面包屑的位置寫上searchMap集合進(jìn)行測(cè)試

④:接著就是處理面包屑了,在這里有一點(diǎn)要注意:就是我們的分類和品牌這兩個(gè)屬性是寫死的,當(dāng)我們沒(méi)有點(diǎn)擊分類或者品牌時(shí),面包屑中是不能顯示的(由于規(guī)格不能寫死所以不用處理);我們采取的措施是用ng-if標(biāo)簽判斷一下我們要處理的選項(xiàng)的集合是不是空的,只有不是空的才讓它顯示

⑤:我們可以添加搜索條件,那么我們也應(yīng)該可以撤除搜索條件,就是我們可以移除面包屑中的搜索條件,換句話說(shuō)就是我們可以有一個(gè)方法可以從searchMap集合中移除元素就行了,參照add方法再controller中增加移除方法,然后在頁(yè)面找那個(gè)的搜索條件位置調(diào)用方法就行了

⑥:接下來(lái)就是隱藏查詢面板的功能:這個(gè)功能是我們選擇完一個(gè)選項(xiàng)后,就應(yīng)該讓這個(gè)選項(xiàng)框消失,想要達(dá)到這個(gè)效果也很容易,就是再在ng-if標(biāo)簽的后面再加一個(gè)判斷就行了,但是這個(gè)判斷是什么呢?我們想什么時(shí)候才讓這個(gè)選擇面板顯示呢?就是搜索條件的集合里對(duì)應(yīng)的屬性沒(méi)有值的時(shí)候就讓它顯示,一旦有值就表示用戶已經(jīng)點(diǎn)擊了對(duì)應(yīng)的選項(xiàng),就可以隱藏了;注意:這和之前的根據(jù)查詢結(jié)果隱藏面板的條件是&&的關(guān)系,需要寫在一起;還要就是規(guī)格的判斷時(shí),讓規(guī)格的對(duì)應(yīng)選項(xiàng)為null,而分類和品牌的屬性就要讓對(duì)應(yīng)的='',因?yàn)榉诸惡推放茮](méi)有時(shí)是有占位符的

⑦:既然我們?cè)谇芭_(tái)添加或者刪除了搜索條件,那么就應(yīng)該執(zhí)行響應(yīng)的方法,再js的controller中添加或者移除添加時(shí),要執(zhí)行搜索方法,重新進(jìn)行刷新搜索

后臺(tái)過(guò)濾查詢

①:我們?cè)谇芭_(tái)建立了搜索項(xiàng),那么最終的過(guò)濾業(yè)務(wù)還是后臺(tái)來(lái)執(zhí)行;怎么執(zhí)行這個(gè)業(yè)務(wù)邏輯呢?其實(shí)和關(guān)鍵字查詢差不多,在關(guān)鍵字查詢的后面再加上每個(gè)選項(xiàng)的判斷就行了,在這個(gè)業(yè)務(wù)中主要是用SimpleFilterQuery這個(gè)類的對(duì)象進(jìn)行條件過(guò)濾

②:我們添加了過(guò)濾條件后,就要在查詢方法中修改查詢品牌和規(guī)格列表,不過(guò)在真正執(zhí)行業(yè)務(wù)之前,需要進(jìn)行判斷,先判斷從搜索條件中獲取的分類選項(xiàng)是不是空的,如果有值,就按這個(gè)分類選項(xiàng)進(jìn)行查詢;如果是空的就要從上面按照關(guān)鍵字查詢的商品分類集合中的值進(jìn)行查詢,當(dāng)然在這里面也要進(jìn)行判斷,只有這個(gè)集合的長(zhǎng)度大于0時(shí)(有值時(shí)),才進(jìn)行查詢

二. 價(jià)格區(qū)間的過(guò)濾

1.功能要求: 我們這個(gè)價(jià)格區(qū)間的搜索呢也很常見(jiàn),就是前臺(tái)頁(yè)面上,有多個(gè)價(jià)格區(qū)間,比如0-500,500-1000,1000-2000,....我們點(diǎn)擊這些區(qū)間,就會(huì)增加搜索條件來(lái)幫我們進(jìn)行商品的篩選

2.業(yè)務(wù)思考:

前臺(tái)條件的構(gòu)建:

這個(gè)功能和前面的分類品牌差不多,前臺(tái)要做的就是把用戶選中的價(jià)格區(qū)間傳到后臺(tái),這里頁(yè)面上的操作就不多敘述,注意就是:面包屑上不要忘了加上價(jià)格這個(gè)選項(xiàng);還有就是js中的controller的搜索條件的集合中加上價(jià)格,增加和刪除條件中也要加上價(jià)格這個(gè)選項(xiàng)

后臺(tái)的業(yè)務(wù)邏輯

后臺(tái)的和前面的邏輯也差不太多,就是我們要用一個(gè)數(shù)組來(lái)接收我們傳進(jìn)來(lái)的幾個(gè)區(qū)間的最小價(jià)格和最大價(jià)格,用的是一個(gè)api,就是split("-"),返回的數(shù)組中,0號(hào)元素是最小值,1號(hào)元素是最大值;這個(gè)價(jià)格的過(guò)濾就復(fù)雜在下面:我們要在這進(jìn)行兩個(gè)判斷,一個(gè)是看看最小結(jié)果是不是0,是0就不用進(jìn)行下面的邏輯(其實(shí)就是為了做出0<**<=500而不影響其他幾個(gè)區(qū)間判斷的效果),如果不等于0,就加上過(guò)濾條件:大于最小價(jià)格;同理,對(duì)于最大價(jià)格也是這樣操作,因?yàn)槲覀冏詈蟮膮^(qū)間是3000-*,后面是沒(méi)有限制的,所以判斷最大價(jià)格是不是*就可以了,是*不進(jìn)行操作,讓它只大于等于最小價(jià)格好了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碴开,一起剝皮案震驚了整個(gè)濱河市似炎,隨后出現(xiàn)的幾起案子俏扩,更是在濱河造成了極大的恐慌更啄,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件配紫,死亡現(xiàn)場(chǎng)離奇詭異柄沮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)盟广,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門闷串,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人筋量,你說(shuō)我怎么就攤上這事烹吵。” “怎么了桨武?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵肋拔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呀酸,道長(zhǎng)凉蜂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任性誉,我火速辦了婚禮窿吩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘艾栋。我一直安慰自己爆存,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布蝗砾。 她就那樣靜靜地躺著先较,像睡著了一般携冤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闲勺,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天曾棕,我揣著相機(jī)與錄音,去河邊找鬼菜循。 笑死翘地,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的癌幕。 我是一名探鬼主播衙耕,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼勺远!你這毒婦竟也來(lái)了橙喘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胶逢,失蹤者是張志新(化名)和其女友劉穎厅瞎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體初坠,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡和簸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碟刺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锁保。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖南誊,靈堂內(nèi)的尸體忽然破棺而出身诺,到底是詐尸還是另有隱情,我是刑警寧澤抄囚,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站橄务,受9級(jí)特大地震影響幔托,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜂挪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一重挑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棠涮,春花似錦谬哀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谦屑。三九已至,卻和暖如春篇梭,著一層夾襖步出監(jiān)牢的瞬間氢橙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工恬偷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悍手,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓袍患,卻偏偏與公主長(zhǎng)得像坦康,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诡延,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,938評(píng)論 2 89
  • 1 上大學(xué)時(shí)候的我風(fēng)風(fēng)火火涝焙,雷厲風(fēng)行的。有一次和同學(xué)逛街孕暇,后面來(lái)了一輛三輪車撞到同學(xué)腿上了仑撞,她當(dāng)即疼哭了,彎著腰蹲...
    笑望舒閱讀 981評(píng)論 0 1
  • 母親在我19歲時(shí)去世了妖滔,當(dāng)時(shí)我覺(jué)得我再也不會(huì)笑了∷硐現(xiàn)在每當(dāng)我想起她時(shí),我都會(huì)微笑座舍。 呵呵呵沮翔,寫的太好了 股價(jià)反應(yīng)了...
    戒定慧_ada8閱讀 180評(píng)論 0 0
  • 不知不覺(jué)到2018將要翻篇,我的心中有深深的不舍曲秉,也有對(duì)2019深深的期待采蚀。 2018中考百日誓師后,在思考自己的...
    zxyw1109閱讀 691評(píng)論 0 8
  • 昨晚我心血來(lái)潮想看看口碑很好的《請(qǐng)回答1988》承二,在此之前我一直是在別人的口中或是手機(jī)上推薦說(shuō)它好看榆鼠,但我一直都沒(méi)...
    阿踔閱讀 262評(píng)論 0 0