最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

探花交友項(xiàng)目總結(jié)

2023-07-20 11:15 作者:黑馬程序員黃埔訓(xùn)練營  | 我要投稿

使用技術(shù):

該項(xiàng)目主打陌生人交友,為了達(dá)到最好的效果,登錄上我們使用了用戶使用成本最低的手機(jī)驗(yàn)證碼登錄。作為項(xiàng)目主打的陌生人交友上面,我們做了推薦好友,推薦朋友圈,漂流瓶,附近的人,智能推薦,大數(shù)據(jù)分析等功能,除了這些之外還有市面上交友軟件常用的實(shí)時(shí)通信,小視頻等一些交友功能。其中使用了SpringBoot作為主框架,數(shù)據(jù)庫上使用了mysql,MongoDB,Redis,后期維護(hù)的時(shí)候加入了ElasticSearch,使用dubbo和RocketMq作為遠(yuǎn)程調(diào)用工具,還使用一些第三方工具。

登錄:

描述1:

完成功能:當(dāng)用戶登錄時(shí),會(huì)根據(jù)用戶登錄的手機(jī)號(hào)發(fā)送驗(yàn)證碼,驗(yàn)證通過后,會(huì)給用戶一個(gè)唯一的token值,下次用戶訪問其他模塊時(shí)會(huì)帶上這個(gè)token,用來驗(yàn)證身份。

具體實(shí)現(xiàn)

1.填寫手機(jī)號(hào)碼,發(fā)送驗(yàn)證碼;技術(shù):阿里云短信發(fā)送服務(wù),發(fā)送成功后將驗(yàn)證碼存入redis中,鍵名為指定字符串加手機(jī)號(hào)碼,值為用戶的驗(yàn)證碼。發(fā)送失敗則返回錯(cuò)誤結(jié)果返回前端;

2.用戶填寫驗(yàn)證碼;傳入?yún)?shù)為驗(yàn)證碼和用戶的手機(jī)號(hào),在redis中查找之前存入的鍵值對,如果能能匹配上,則表示用戶驗(yàn)證碼正確,查詢不到則表示驗(yàn)證碼過期,值錯(cuò)誤則表示驗(yàn)證碼輸入錯(cuò)誤;

3.登錄成功后,去數(shù)據(jù)庫查找是否用該用戶信息(使用手機(jī)號(hào)查找),如果沒有,則表示該用戶為新用戶,需要先完善個(gè)人信息。生成唯一的token(運(yùn)用jwt技術(shù)),發(fā)送登錄成功的消息給前端,返回值為token和該用戶是否為新用戶。

4.當(dāng)該用戶為新用戶的時(shí)候,會(huì)跳轉(zhuǎn)到完善個(gè)人信息的頁面,傳入的參數(shù)為用戶信息和token(當(dāng)生成token之后,該用戶的所有請求都會(huì)帶上此token),首先判斷該用戶的token,找到對應(yīng)的用戶,如果失敗,則返回登錄失敗。token驗(yàn)證成功之后,判斷用戶上傳的圖片是否為人臉(運(yùn)用虹軟人臉識(shí)別技術(shù)),判斷成功之后,將該照片存儲(chǔ)到阿里云OSS上,然后將該用戶的信息存入數(shù)據(jù)庫中,登錄成功。

優(yōu)化:我們每次訪問其他模塊時(shí),都需要校驗(yàn)token,通過token值獲取用戶信息。這部分代碼重復(fù)度很高,我們可以設(shè)置一個(gè)攔截器,當(dāng)前端傳入的請求參數(shù)中需要token時(shí),我們對該請求進(jìn)行攔截,直接根據(jù)該token值查找用戶,然后將該用戶的信息存入當(dāng)前線程中,當(dāng)我們需要用到用戶信息時(shí),直接在當(dāng)前線程中直接獲取即可。

描述2:

具體實(shí)現(xiàn):有用到第三方接口 阿里的短信驗(yàn)證碼發(fā)送,虹軟的人臉識(shí)別,SSO系統(tǒng),SSM框架,redis ,mysql用戶發(fā)送請求后,我們會(huì)將用戶的手機(jī)號(hào)通過阿里的短信發(fā)送平臺(tái)發(fā)送一條驗(yàn)證碼給用戶,并將驗(yàn)證碼和手機(jī)號(hào)存入到我們的redis中,當(dāng)用戶攜帶驗(yàn)證碼登錄的時(shí)候,我們會(huì)將用的手機(jī)號(hào)和驗(yàn)證碼發(fā)送到SSO系統(tǒng)中并且在redis緩存中校驗(yàn)驗(yàn)證碼是否正確,如果不正確就直接返回到登錄頁面, 如果正確就登錄成功,并在redis 中將該用戶的驗(yàn)證碼刪除,登錄成功后我們會(huì)將用的手機(jī)號(hào)在mysql 數(shù)據(jù)的用戶表中查詢,看該用戶是否存在, ?如果存在就證明是老用戶,生成一個(gè)token返回給用戶,以后用戶每次請求都要攜帶token在sso系統(tǒng)中查詢,只要查詢匹配后才能繼續(xù)操作。登錄成功后在mysql中查詢不到該用戶就證明是新用戶,并且跳轉(zhuǎn)到用戶信息注冊頁面,完善個(gè)人信息,并將該用戶的資料寫入到mysql數(shù)據(jù)庫中,隨后通過第三方接口虹軟人臉識(shí)別驗(yàn)證是否為人像,如果是則登錄成功,sso系統(tǒng)生成token并返回給用戶,如果不是,這重新返回完善換個(gè)人信息頁面.

描述3:

1、關(guān)于注冊登錄,首先需要儲(chǔ)存用戶電話號(hào)碼,和用戶信息等數(shù)據(jù)庫,這里我選用的是MySql數(shù)據(jù)庫存儲(chǔ),還有通過阿里云的sso用戶信息管理系統(tǒng),驗(yàn)證碼選擇的是一個(gè)阿里云三方服務(wù)sso系統(tǒng),通過阿里云收費(fèi)服務(wù)來完成,其中還利用了相關(guān)faceEngine人臉識(shí)別技術(shù)輔助注冊!

2、還有就是用戶信息管理與用戶服務(wù)之間的相互調(diào)用和驗(yàn)證,使用單點(diǎn)登錄系統(tǒng)。這里就需要產(chǎn)生一個(gè)令牌token,我們利用的是md5加密技術(shù)來隨機(jī)生成token,設(shè)置過期時(shí)間,儲(chǔ)存到Redis當(dāng)中,導(dǎo)入Redis相關(guān)jar包,利用RedisTemplate的相關(guān)方法,還有攔截器來保證token的一致性和用戶sso系統(tǒng)與server系統(tǒng)通信。

今日佳人:

描述1:

具體實(shí)現(xiàn):用到SSO系統(tǒng),SSM框架redis ,mysql,大數(shù)據(jù)的推送系, dubbo,zookeeper ,mongodb, ?先進(jìn)行token校驗(yàn),成功后在數(shù)據(jù)庫中查詢到當(dāng)前用戶的id,使用dubbo遠(yuǎn)程調(diào)用 并將該用戶的在mongodb推薦表中進(jìn)行查詢,通過查詢到推薦用戶轉(zhuǎn)發(fā)到推薦系統(tǒng)中, 推薦系統(tǒng)進(jìn)行推薦,按緣分值得高地進(jìn)行降序的排序,并將緣分值最高的用戶id在mysql數(shù)據(jù)庫中進(jìn)行查詢用戶詳細(xì)信息,封裝成vo對象返回給前端, 并存在redis中,如果沒有查詢到用戶,則給出一個(gè)默認(rèn)的用戶id,并補(bǔ)全信息返回。推薦列表則將查詢的用戶id通過推薦系統(tǒng)推薦的用戶按照緣分值進(jìn)行降序排序,取前12位,在數(shù)據(jù)庫中補(bǔ)全用戶信息, ?如果沒有查詢到,則給出默認(rèn)值。

描述2:

通過用戶id,查找mongodb數(shù)據(jù)庫recommend_quanzi(圈子推薦表)中的userId(推薦的用戶Id)和score(推薦得分)這兩個(gè)字段,查詢出最佳用戶.如果這個(gè)推薦用戶recommendUser對象為空,就直接返回空回去.如果不為空,則把recommendUser對象中的userId賦值到返回前端需要的返回值對象todayBest中去,將推薦表recommend_quanzi中的score(推薦得分)向下取整,并封裝到對象todayBest中去.如果todayBest對象為空,就給出默認(rèn)的推薦用戶返回.否則,根據(jù)todayBest對象中的id去查詢mysql數(shù)據(jù)庫userInfo表中的用戶,并將userInfo表中的用戶信息封裝到todayBest對象中去,并返回給前端.

描述3:

首先后臺(tái)會(huì)有一個(gè)推薦系統(tǒng),它會(huì)計(jì)算用戶的各種行為,以及用戶的各種信息,比如學(xué)歷,性別等等,計(jì)算之后,我們會(huì)把這個(gè)結(jié)果寫入MongoDB中,然后去dubbo服務(wù)中查詢MongoDB里面的數(shù)據(jù),把緣分值最高的用戶查詢出來并返回,然后service服務(wù)通過rpc去調(diào)用Dubbo拿到數(shù)據(jù)返還給用戶并展示出來.

用戶推薦:

描述1:

當(dāng)用戶登錄成功后會(huì)直接將其導(dǎo)航到主頁面,也就是用戶推薦頁面。其中用戶推薦分為單人推薦和推薦列表,我們會(huì)將當(dāng)前用戶的資料和數(shù)據(jù)庫中的其他用戶資料進(jìn)行大數(shù)據(jù)計(jì)算,根據(jù)和當(dāng)前用戶的匹配度計(jì)算緣分值,緣分值最高的為今日最佳推薦。如果用戶為新用戶我們會(huì)將域設(shè)定好的表經(jīng)行展示。

朋友圈:

朋友全也分為朋友的朋友圈和推薦的朋友全,我們會(huì)根據(jù)用戶朋友圈的點(diǎn)贊.評論.喜歡來經(jīng)行計(jì)分,在用戶訪問推薦朋友圈的時(shí)候根據(jù)記分情況經(jīng)行推薦。

描述1:

朋友圈是分為推薦朋友圈和好友朋友圈,因?yàn)榕笥讶Φ淖x多寫少原因,我們使用了多表寫,少表查的原則。其中在發(fā)布圈子的時(shí)候會(huì)將朋友圈信息存入指定的表中,還會(huì)將發(fā)布的朋友圈寫進(jìn)好友的時(shí)間線表中,在查詢好友朋友圈的時(shí)候會(huì)直接查詢自己的時(shí)間線表,這樣會(huì)很直接的減少查詢壓力。 ?在推薦朋友圈中我們使用RocketMq技術(shù)將對應(yīng)朋友圈的所有點(diǎn)贊,評論,喜歡,瀏覽。都放入消息隊(duì)列中經(jīng)行異步儲(chǔ)存。同樣的我們會(huì)利用大數(shù)據(jù)的技術(shù)將信息經(jīng)行處理,將處理后的朋友圈id存入Redis中,在查詢的時(shí)候會(huì)直接調(diào)用Redis中的數(shù)據(jù)經(jīng)行數(shù)據(jù)庫查詢,并將查詢到的數(shù)據(jù)設(shè)置一個(gè)較長的時(shí)間存入Redis中。 ?在朋友圈中的所有點(diǎn)贊,評論,喜歡都會(huì)被記錄,在每次訪問的時(shí)候都會(huì)實(shí)時(shí)顯示是否點(diǎn)贊/喜歡和對應(yīng)的數(shù)量。在點(diǎn)擊評論后會(huì)進(jìn)入評論界面,評論界面中會(huì)顯示該朋友圈的詳細(xì)信息和所有的評論,用戶可以對評論經(jīng)行點(diǎn)贊,也可以自己發(fā)布評論。

描述2:

圈子點(diǎn)贊,喜歡:

先獲取本線程:先獲取本線程已經(jīng)登陸的用戶信息

圈子點(diǎn)贊:

他點(diǎn)贊的時(shí)候,通過發(fā)布動(dòng)態(tài)用戶的id去查詢有誰給自己點(diǎn)了贊,如果點(diǎn)贊的用戶里面有本線程登錄用戶的id,則不能重復(fù)點(diǎn)贊,如果沒有該用戶,則可以進(jìn)行點(diǎn)贊,點(diǎn)完贊以后,還會(huì)把該用戶的id,該條動(dòng)態(tài)的id,點(diǎn)贊類型加到里面,如果之前沒有緩存過圈子的點(diǎn)贊數(shù),則在MongoDB里面查詢出該圈子的點(diǎn)贊數(shù),并且保存到redis里面,如果之前存過點(diǎn)贊數(shù),則將該點(diǎn)數(shù)加一,記錄當(dāng)前用戶角色已經(jīng)點(diǎn)過的贊.取消點(diǎn)贊:取消點(diǎn)贊的話,因?yàn)槭侨∠c(diǎn)贊,所以只有已經(jīng)點(diǎn)過贊了:直接根據(jù)動(dòng)態(tài)id,本線程用戶ID,點(diǎn)贊類型查詢出內(nèi)容,移除該用戶信息就好 更新redis中的點(diǎn)贊數(shù) ? -1從redis中刪除當(dāng)前用戶的點(diǎn)贊記錄

圈子評論:

查詢評論列表:首先要把評論列表查詢出來,有的話就傳回來,沒有的話就沒有嘛提交評論:就把用戶如書的內(nèi)容保存嘛,true就是保存好了,false就是報(bào)錯(cuò)了

圈子評論點(diǎn)贊:

評論點(diǎn)贊:流程跟圈子點(diǎn)贊一樣,沒有的話就把他的信息存進(jìn)去,看看redis里面有沒有數(shù)據(jù),沒有的話就順路把數(shù)據(jù)存進(jìn)去,有的話就點(diǎn)贊加一.評論取消點(diǎn)贊:redis里面肯定是有數(shù)據(jù)的嘛,直接點(diǎn)贊減一就好了

小視頻:

跟市面上的視頻類原件基本類似,點(diǎn)贊,喜歡,關(guān)注,評論功能都有。

附近的人:

描述1:

我們會(huì)將所有用戶的位置信息定時(shí)的存入MongoDB中,在用戶查詢附近其他用戶時(shí)調(diào)用MongoDB中的坐標(biāo)查詢。

描述2:

應(yīng)用百度地圖服務(wù)中的經(jīng)緯度來,longitude和latitude,調(diào)用circle方法來判斷周圍注冊的用戶之間的距離,來搜索附近的人。

好友推薦:

我們會(huì)根據(jù)用戶填寫的基本資料使用大數(shù)據(jù)的技術(shù)經(jīng)行緣分值計(jì)算,將計(jì)算出的多個(gè)用戶id和緣分值存入Redis中,查詢時(shí)先會(huì)判斷Redis中是否擁有登錄用戶的推薦好友。如果有,會(huì)將數(shù)據(jù)取出,根據(jù)用戶id去數(shù)據(jù)庫中查詢用戶好友的基本信息經(jīng)行展示。如果沒有,會(huì)經(jīng)行臨時(shí)計(jì)算緣分值,此時(shí)雖然計(jì)算不精致卻可以盡快反應(yīng)。在任意界面點(diǎn)擊其他用戶可以查看其基本信息和發(fā)布過的非公開朋友圈,在其他用戶界面可以點(diǎn)擊聊一下申請?zhí)砑雍糜选?/span>

實(shí)時(shí)通信:

?因?yàn)樵搼?yīng)用使用的是環(huán)信接口實(shí)現(xiàn)實(shí)時(shí)通信,所以只需要將指定參數(shù)發(fā)送到環(huán)信即可。我們會(huì)在用戶第一次登錄成功之后將用戶id注冊到環(huán)信中,在其他用戶向當(dāng)前用戶發(fā)送好友請求時(shí)我們也會(huì)調(diào)用環(huán)信接口向當(dāng)前用戶發(fā)送信息。而且在程序中只要用戶雙方都點(diǎn)擊過喜歡對方我們就會(huì)將雙方添加為好友,同時(shí)將好友信息存入數(shù)據(jù)庫,也會(huì)調(diào)用環(huán)信的添加好友接口,當(dāng)用戶之間成為好友后就可以進(jìn)行實(shí)時(shí)通信了。

用戶模塊:

當(dāng)用戶進(jìn)入用戶模塊后,可以查詢用戶詳細(xì)信息,也可以根據(jù)單個(gè)用戶ID,名字,地址獲查詢單個(gè)用戶,點(diǎn)擊查看功能可以對用戶進(jìn)行凍結(jié)和解凍操作具體實(shí)現(xiàn):用到的技術(shù)框架SSM ,redis,mysql,dubbo,Mongodb,zookeeper查詢用戶信息在數(shù)據(jù)庫中有3個(gè)表,分別是用戶日志表,userinfo表,用戶表,并將查詢的數(shù)據(jù)封裝到pojo實(shí)體類中, 在service層中把有需要的字段封裝成一個(gè)vo對象返回給controller層同時(shí)返回給前端, 當(dāng)用戶點(diǎn)擊查看功能的時(shí)候,前端傳入該用戶的id,并通過該用戶的id在數(shù)據(jù)庫中查詢相應(yīng)的字段也是封裝在pojo實(shí)體類中, 然后用dubbo遠(yuǎn)程調(diào)用查詢Mongodb中的用戶操作表和喜歡表,通過我的喜歡的用戶ID查詢到我的喜歡數(shù),通過我自己的id查詢到喜歡我的用戶數(shù),通過我喜歡的id查詢喜歡我的id ?查詢到相互喜歡的用戶數(shù),將該數(shù)據(jù)封裝到返回的vo對象中, 在將mysql數(shù)據(jù)庫的userinfo表也查詢出來封裝在vo對象中返回給頁面.

凍結(jié)和解凍:

當(dāng)點(diǎn)擊凍結(jié)時(shí),先查詢r(jià)edis數(shù)據(jù)庫中有沒有該用戶如果存在則表示已經(jīng)凍結(jié) 直接返回?cái)?shù)據(jù),如果不存在 則通過該用戶的id查詢到當(dāng)前用戶,將數(shù)據(jù)庫中狀態(tài)的字段改為凍結(jié)狀態(tài)隨后將當(dāng)前用戶的id,凍結(jié)時(shí)間,原因存入凍結(jié)表中并且把改用戶的id也同時(shí)存入到redis數(shù)據(jù)庫中給頁面返回操作成功的提示解凍的時(shí)候,先查詢r(jià)edis中是否存在該用戶,如果不存在,則表示已經(jīng)解凍,直接返回?cái)?shù)據(jù),如果存在,則在redis中刪除掉當(dāng)前的用戶id并且通過當(dāng)前用戶的id 查詢凍結(jié)表中的用戶信息,刪除當(dāng)前表中的信息.


探花交友項(xiàng)目總結(jié)的評論 (共 條)

分享到微博請遵守國家法律
临朐县| 洛川县| 聊城市| 靖安县| 通化市| 闽清县| 育儿| 奇台县| 衢州市| 碌曲县| 勃利县| 九龙县| 澜沧| 哈巴河县| 长顺县| 沈阳市| 永福县| 承德市| 陵水| 常宁市| 玉山县| 宣汉县| 锦州市| 阿合奇县| 岑巩县| 安远县| 皋兰县| 湟中县| 华阴市| 富蕴县| 溧阳市| 乌兰浩特市| 北京市| 攀枝花市| 江西省| 双鸭山市| 古田县| 宜良县| 阿城市| 新和县| 雅安市|