負(fù)責(zé)中興c300窄帶項(xiàng)目線卡驅(qū)動(dòng)開發(fā)
1:窄帶相關(guān)功能開發(fā)及維護(hù)
2:e1線卡開發(fā)
3:時(shí)鐘功能開發(fā)
4:機(jī)電管理etmb,mirrow功能開發(fā)
● 本項(xiàng)目是一個(gè)電商項(xiàng)目。
● 開發(fā)工具:linux,tomcat,mysql,idea
● 開發(fā)技術(shù):dubbo,springboot,mybatis,zookeeper,elasticsearch,redis,activemq等
● 后臺(tái)模塊(manager)
三級(jí)分類查詢
平臺(tái)屬性增刪改查
上傳spu(spu信息,圖片,銷售屬性,銷售屬性值),圖片存儲(chǔ)在fastdfs,鏈接存儲(chǔ)在數(shù)據(jù)庫
上傳spu下的sku(sku信息,選擇spu中的圖片,關(guān)聯(lián)spu中的屬性,關(guān)聯(lián)平臺(tái)屬性中的屬性)
● 詳情模塊(item)
查詢sku信息傳遞給前端頁面
查詢sku對(duì)應(yīng)spu下的銷售屬性以及屬性值傳遞給前端頁面
查詢spu下的所有sku信息,生成每個(gè)skuid與銷售屬性組成的鍵值對(duì),再將所有鍵值對(duì)轉(zhuǎn)化成字符串傳遞給前端頁面,前端頁面將字符串轉(zhuǎn)回map,當(dāng)選擇屬性時(shí)生成銷售屬性組成的字符串查詢出skuid,跳轉(zhuǎn)到該skuid詳情。
● 搜索模塊(search)
在kibana中新增搜索規(guī)則。
將mysql中的數(shù)據(jù)同步到elasticsearch。
通過三級(jí)分類id,搜索sku。
通過關(guān)鍵字,利用ik分詞器搜素sku。
將搜索頁面sku的全部平臺(tái)屬性值提取出來,根據(jù)平臺(tái)屬性值生成平臺(tái)屬性和屬性值組成類型的集合A,將集合傳遞給前端頁面生成屬性框并生成一個(gè)面包屑集合B。
當(dāng)點(diǎn)擊屬性框時(shí),集合B添加該屬性值以及復(fù)制鏈接,并以集合B屬性集合作為檢索條件重新進(jìn)行檢索。
當(dāng)點(diǎn)擊面包屑時(shí),刪除面包屑上對(duì)應(yīng)的屬性值,更改鏈接重新檢索。
● 購物車模塊(cart)
未登入時(shí)將訂單信息存入cookie,如果cookie中有該商品了就在數(shù)量上進(jìn)行增加,如果cookie沒有該商品就在cookie中新增登入時(shí)將cookie中的數(shù)據(jù)合并到數(shù)據(jù)庫,同時(shí)寫入redis。
● 訂單模塊(order)
從數(shù)據(jù)庫查詢用戶的訂單信息。
購物車結(jié)算時(shí)將選中商品展現(xiàn),查詢收貨地址展現(xiàn)以及計(jì)算總金額。為了防止在多線程時(shí)訂單重復(fù)提交的問題,如果redis沒有交易碼可以提交并生成交易碼,如果有交易碼就不能提交。
提交訂單生成一個(gè)訂單信息存入數(shù)據(jù)庫。
● 用戶模塊(user)
實(shí)現(xiàn)用戶登入退出,獲取用戶信息和關(guān)聯(lián)的收貨地址信息
● 登錄模塊(passport)
單點(diǎn)登入:從數(shù)據(jù)庫獲取用戶信息用jwt算法進(jìn)行加密生成token存入cookie。
社交登入:本項(xiàng)目采用微博登入,點(diǎn)擊登入跳轉(zhuǎn)到微博登入授權(quán)頁面,用戶授權(quán)返回一個(gè)授權(quán)碼code,用code和秘鑰向微博換取access_token,再用access_token換取用戶信息,將用戶信息加密生成token存入cookie并將用戶信息存入數(shù)據(jù)庫。
驗(yàn)證中心:由于一些模塊需要用戶登入才能訪問,如購物車(登入不登入都能訪問),結(jié)算,訂單,支付。本項(xiàng)目采用一個(gè)注解式攔截器對(duì)這些模塊進(jìn)行攔截同時(shí)在注解上設(shè)置一個(gè)參數(shù)判斷是否必須登入才能訪問。當(dāng)攔截到請(qǐng)求時(shí)獲取請(qǐng)求路徑returnUrl并從cookie中獲取token進(jìn)行解密檢查用戶信息是否存在,如果存在說明已經(jīng)登入,放行。如果不存在說明沒有登入,將用戶打回登入界面并傳遞returnUrl當(dāng)?shù)侨氤晒r(shí)跳轉(zhuǎn)到returnurl(購物車即使沒有登入也能訪問,如果登入會(huì)獲取用戶信息)。
● 支付模塊(payment)
本項(xiàng)目調(diào)用支付寶支付接口。配置alipayClient信息:支付寶公鑰,回調(diào)鏈接,私鑰,appid等。
提交訂單時(shí)從數(shù)據(jù)庫獲取訂單信息,通過alipayClient寫入訂單信息生成表單同時(shí)生成支付信息存入數(shù)據(jù)庫。
對(duì)于更新支付狀態(tài)有兩種方式。
第一種等待支付寶回調(diào),有時(shí)候可能無法及時(shí)回調(diào)。
第二種是主動(dòng)查詢,在生成支付表單單時(shí)用activemq發(fā)送一個(gè)延時(shí)消息(每10秒發(fā)送一次,發(fā)送5次),在服務(wù)端接收到消息后檢查支付狀態(tài),如果支付成功就會(huì)更新支付信息。同時(shí)可以實(shí)現(xiàn)分布式事務(wù)。
● 秒殺模塊(seckill)
做了一個(gè)使用redis和redission的一個(gè)壓力測試
● 本項(xiàng)目是一個(gè)眾籌項(xiàng)目
● 開發(fā)工具eclipse,tomcat,mysql
● 開發(fā)技術(shù)spring,springmvc,mybatis,activiti5,jquery等
● 登入模塊
(1)登入/退出:根據(jù)所選登入類型到響應(yīng)的表中查詢賬號(hào)密碼信息,若驗(yàn)證通過跳轉(zhuǎn)到管理員/會(huì)員頁面并將用戶信息放入session域。退出時(shí)清除session域
(2)登入攔截:配置登入攔截器。在攔截器中設(shè)置不需要攔截的uri,當(dāng)用戶通過前端控制器訪問時(shí),uri在不需要攔截范圍內(nèi)放行,否則判斷用戶是否登入若沒有登入重定向到登入頁面
(3)權(quán)限攔截:配置權(quán)限攔截器。配置一個(gè)監(jiān)聽器在項(xiàng)目啟動(dòng)時(shí)從數(shù)據(jù)庫權(quán)限表獲取所有權(quán)限對(duì)應(yīng)的allUri放入session域中,當(dāng)用戶通過前端控制器訪問時(shí),獲取訪問路徑uri,如果uri不在allUri內(nèi),再從數(shù)據(jù)庫獲取該用戶訪問權(quán)限userUris,如果uri不在userUri內(nèi)打回登入界面,否則放行
● 利用activiti5部署流程
(1)通過監(jiān)聽器在服務(wù)器啟動(dòng)時(shí)創(chuàng)建流程引擎
(2)通過ioc容器獲取流程引擎
(3)創(chuàng)建bpmn流程圖,部署流程定義
● 會(huì)員模塊
(1)申請(qǐng)實(shí)名認(rèn)證:查詢ticket(記錄審核狀態(tài),步驟),如果為空生成一條數(shù)據(jù),如果不為空獲取步驟信息跳轉(zhuǎn)到該步驟。
(2)賬戶類型選擇:選擇賬戶類型,更新用戶信息及步驟信息。
(3)實(shí)名認(rèn)證:輸入個(gè)人信息,更新用戶信息及步驟。
(4)資質(zhì)文件上傳:查詢所選類型需要的資質(zhì),生成不同的資質(zhì)上傳表單,上傳資質(zhì)。生成資質(zhì)信息,更新步驟。
(5)輸入郵箱:輸入郵箱地址,更新用戶信息,更新步驟。生成隨機(jī)驗(yàn)證碼,創(chuàng)建帶(郵箱,驗(yàn)證碼,用戶信息,通過監(jiān)聽器,拒絕監(jiān)聽器)的流程實(shí)例,進(jìn)入發(fā)送郵件任 務(wù)自動(dòng)發(fā)送驗(yàn)證碼到用戶郵箱。
(6)輸入驗(yàn)證碼:輸入驗(yàn)證碼進(jìn)行驗(yàn)證碼校驗(yàn),如果正確領(lǐng)取審核驗(yàn)證碼任務(wù),完成審核驗(yàn)證碼任務(wù)。更新用戶信息及步驟信息。
● 管理員模塊
(1)權(quán)限管理:
用戶維護(hù):實(shí)現(xiàn)管理員的增刪查改,以及分配角色
角色維護(hù):實(shí)現(xiàn)角色的增刪查改,以及分配權(quán)限
許可維護(hù):用ztree實(shí)現(xiàn)多級(jí)權(quán)限的增刪查改
(2)業(yè)務(wù)管理:
資質(zhì)維護(hù):資質(zhì)增刪改查
分類管理:對(duì)不同的會(huì)員類型分類不同的資質(zhì)
(3)實(shí)名認(rèn)證審核模塊:
查詢所有分配的所有任務(wù),展現(xiàn)出來。
對(duì)某一任務(wù)進(jìn)行審核,設(shè)置用戶變量,通過設(shè)置flag變量為true完成任務(wù),拒絕設(shè)置flag變量為false完成任務(wù)。
根據(jù)flag的值觸發(fā)相應(yīng)的監(jiān)聽器,更新用戶信息及步驟