“學(xué)長(zhǎng)認(rèn)證模塊”Java代碼2.0官方版要點(diǎn)講解【在線實(shí)習(xí)·吾研第一期】
大家好,我是小拿。
本期來(lái)看看“在線實(shí)習(xí)”吾研項(xiàng)目學(xué)長(zhǎng)學(xué)姐認(rèn)證模塊中Java同學(xué)代碼的官方改進(jìn)版的要點(diǎn)。
因?yàn)槭琼?xiàng)目第一期,同學(xué)們交的1.0代碼有一些架構(gòu)上或者說(shuō)規(guī)范上的一些問題。
本期代碼2.0呢,大家都有一些改正。
但是有一些邏輯上的要點(diǎn),還是沒有那么清楚地實(shí)現(xiàn)。
那么今天就來(lái)看一下大家改進(jìn)版的方案叭~
?01?
那么認(rèn)證呢分兩種,一種是郵箱認(rèn)證,一種是校園卡的認(rèn)證。
但是校園卡它有個(gè)圖片的上傳,現(xiàn)在大家都采用的是移動(dòng)端 base64 的一種字節(jié)的上傳。
這個(gè)上傳的話,我們前端現(xiàn)在依賴的是Vant 的上傳框架。
所以它基本上在上傳圖片之后,就會(huì)激發(fā)一個(gè)上傳的動(dòng)作。
所以在校園卡的這個(gè)模塊兒,我們是需要把上傳圖片的這個(gè)接口單獨(dú)的拎出來(lái),而不是說(shuō)把所有東西都集中在認(rèn)證的時(shí)候一起傳上來(lái)。
傳完之后的細(xì)節(jié)大家想清楚,一定是傳完之后用我們的服務(wù)器端?,F(xiàn)在如果大家沒有一個(gè)遠(yuǎn)程的OSS或者別的,可以存到服務(wù)器的本地。
那反正之后一定要把這個(gè)圖片的細(xì)節(jié),比如名稱返回給我們的前端,然后在接口里面去傳的這個(gè)圖片,去找到這個(gè)圖片。
?02?

大拿老師點(diǎn)評(píng):
1. 首先,接口就是這樣的一個(gè)code,主要是在驗(yàn)證的時(shí)候用,這前面是一個(gè)對(duì)象,上傳的其他的所有的元素就是用對(duì)象來(lái)實(shí)現(xiàn)。
2. 這里是一個(gè)技巧,如果參數(shù)比較多的時(shí)候,我們就可以把它包裝成一個(gè)對(duì)象,參數(shù)比較少的時(shí)候,直接寫出來(lái)就好。
3. 還是那句話,我們Java 同學(xué)做好了接口,一定要去調(diào)用一下能否跑得通、邏輯是否正確、能否存到數(shù)據(jù)庫(kù)里面,然后再提?,F(xiàn)在有很多的工具都可以去模擬調(diào)用。
4. 然后呢,因?yàn)槲覀儍?nèi)部是大家作品的一個(gè)改進(jìn)版,所以這個(gè)地方缺一個(gè)校驗(yàn),但是校驗(yàn)并不麻煩,這里面就不給出來(lái)了。
03

大拿老師點(diǎn)評(píng):
1. 要確定這個(gè)code存不存在,我們這實(shí)現(xiàn)了一個(gè)latest,我們說(shuō)五分鐘呢,因?yàn)檫@個(gè)邏輯不是特別強(qiáng)烈,所以五分鐘直接封裝到這個(gè)Service 里面去了。
2. 在vercode 里面判斷是不是過期時(shí)間,有同學(xué)說(shuō)這個(gè)emailService 直接放到這個(gè)認(rèn)證模塊里面,這樣是不行的。功能還是耦合太強(qiáng)了。因?yàn)榭赡軇e的地方要發(fā)郵件。
3. 所以一定要注意Service 是一個(gè)通用的部分,會(huì)多處調(diào)用。但是如果你把它直接放到一個(gè)業(yè)務(wù)里面去,它可能就不是同一個(gè)東西了。尤其是這種短信啊、郵件啊,這些是一些非常常見的一些通用的基礎(chǔ)模塊,所以判斷一定很重要。
4. 然后一定要注意它的狀態(tài),是要去查一下狀態(tài),查完之后一定要先判空啊,判空的時(shí)候可以插入。
?04?

大拿老師點(diǎn)評(píng):
1. 注意傳的是一個(gè)String,他傳的是一個(gè)字節(jié)符,所以大家去看一下怎么把六十四位的字節(jié)符轉(zhuǎn)化成圖片,并且上傳到一個(gè)位置上去。
2. 這個(gè)地方我們同學(xué)把它單獨(dú)拎出來(lái),然后放到一個(gè) Base64 里面去。
3. 然后注意一定要給我們前端返回這個(gè)地址。要不然在認(rèn)證模塊的時(shí)候就圖片就對(duì)應(yīng)不上去了。那么最后認(rèn)證的環(huán)節(jié),我們?nèi)斯と?fù)審或者怎么樣,他就關(guān)聯(lián)不起來(lái)啊。
05

大拿老師點(diǎn)評(píng):
1. 其實(shí)開發(fā)是這樣的,你只要知道難點(diǎn)在哪個(gè)地方,只要不是邏輯特別復(fù)雜的功能難點(diǎn),實(shí)際上都可以找到解決方案。
2. 來(lái)看一下圖片轉(zhuǎn)化的一個(gè)格式。很常見的把它的 image 的圖標(biāo)轉(zhuǎn)化一下,最后拼上一個(gè)后綴。
3. 注意后面把它生成文件,用了文件的體系。我們官方用的是阿里云的文件存儲(chǔ),我們放到OSS里面去,但是你也可以直接放到本地。
?06?

大拿老師點(diǎn)評(píng):
1. 然后再來(lái)看幾個(gè)工具,比如說(shuō)枚舉類。很多同學(xué)對(duì)枚舉不是很了解。
2. 比如說(shuō)這個(gè)認(rèn)證狀態(tài),未認(rèn)證、審核中、認(rèn)證失敗、認(rèn)證成功,實(shí)際上這個(gè)枚舉還是比較簡(jiǎn)單。
3. 如果再?gòu)?fù)雜的話,可以自己去加參數(shù),比如說(shuō)他的下一步動(dòng)作是什么,能不能做什么事情。
那么本期的幾個(gè)難點(diǎn),就在這幾個(gè)過程里面:上傳認(rèn)證、提交認(rèn)證以及返回值、圖片上傳等等。
大家一定把這幾個(gè)點(diǎn)的代碼再給規(guī)范一下,包括接口。這些重點(diǎn)實(shí)際上才是你的能力,或者說(shuō)你不管在校招面試也好,還是在工作中也好,才是你真正的開發(fā)能力。
我們同學(xué)其實(shí)大家的投入度都?jí)颍?strong>所以大家把這個(gè)重點(diǎn)再去聚焦一下。那么相信這個(gè)項(xiàng)目的提高還是非常的到位的。