周永圣 孫雯 侯峰裕 楊磊 楊晉 張小貝
摘 要: 車險中介云平臺的費用管理系統(tǒng)實現(xiàn)了車險平臺公司根據(jù)各大保險公司的傭金和成本政策靈活調(diào)整比例,方便運維人員及時配置費用數(shù)據(jù),把握市場信息。介紹費用管理系統(tǒng)利用的前端Vue.js技術(shù)、Spring、Mybatis等框架技術(shù),結(jié)合Dubbo、Zookeeper等中間件,搭建了一個SOA系統(tǒng)。本系統(tǒng)實現(xiàn)了前后端分離,結(jié)構(gòu)合理,界面清晰友好,方便了運維人員的日常工作。
關(guān)鍵詞: 中介云平臺; Spring; Vue.js
中圖分類號: ? ? ? 文獻(xiàn)標(biāo)志碼:
Design and Implementation of Expense Management System for Vehicle
Insurance Intermediary Cloud Platform
ZHOU Yongsheng1,2, SUN Wen1,2, HOU Fengyu1,2, YANG Lei1,2, YANG Jin1,2, ZHANG Xiaobei1,2
(1. School of Communication & Information Engineering, Shanghai University; 2. Shanghai Institute
for Advanced Communication and Data Science, Shanghai 200444)
Abstract: The expense management system of the auto insurance intermediary cloud platform has realized that the auto insurance platform company flexibly adjusted the proportion according to the commissions and cost policies of major insurance companies, facilitated the operation and maintenance personnel to timely allocate cost data and grasp market information. This paper introduces the front-end Vue.js technology and Spring, Mybatis and other framework technologies used in the expense management system, and combines middleware such as Dubbo and Zookeeper to build an SOA system. The system realizes the separation of the front and rear ends, the structure is reasonable, the interface is clear and friendly, and the daily work of the operation and maintenance personnel is convenient.
Key words: Intermediary cloud platform; Spring; Vue.js
0 引言
據(jù)統(tǒng)計,截至2017年底,全國機(jī)動車保有量達(dá)3.10億輛,機(jī)動車駕駛?cè)诉_(dá)3.85億人,這意味著車險具有龐大的市場。而在當(dāng)前移動互聯(lián)網(wǎng)的潮流下,“互聯(lián)網(wǎng)+車險”無疑是最優(yōu)組合。通過手機(jī)端APP購買車險相比于傳統(tǒng)方式更加具有靈活、便捷的特點。然而,各家保險公司針對不同的地區(qū)、不同類型的車輛(新保、續(xù)保、風(fēng)險車型等)、不同的保險經(jīng)代公司等多個因素會制定不同的費用政策,那么為其配套相應(yīng)的費用管理平臺是非常必要的。
本文主要介紹了車險中介云平臺的費用管理系統(tǒng)的設(shè)計與實現(xiàn)。該系統(tǒng)可讓運維人員根據(jù)險種(商業(yè)險、交強(qiáng)險)、車輛類型(新保、續(xù)保、風(fēng)險車型)、地區(qū)等去配置費用政策,通過將不同的費用政策添加到各個大V渠道,實現(xiàn)對大V賬號費用政策的靈活管理。整個系統(tǒng)使用了RPC框架,便于后期的維護(hù)與拓展。
1 關(guān)鍵技術(shù)簡介
1.1 Vue.js
Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。它與其他大型框架不同的是,Vue被設(shè)計為可以自底向上逐層應(yīng)用。Vue的核心庫只關(guān)注于視圖層,不僅易于上手,還便于與第三方庫或者是既有項目進(jìn)行整合。此外,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫進(jìn)行整合時,Vue也完全能夠為復(fù)雜的單頁應(yīng)用提供驅(qū)動。Vue響應(yīng)式框架原理如圖1所示[1]。
Vue.js是整個前端工程的基礎(chǔ)視圖層框架,主要解決前端數(shù)據(jù)綁定問題。與傳統(tǒng)的基于jQuery的繁雜DOM選擇器相比,Vue.js的響應(yīng)式雙向綁定數(shù)據(jù),實時反映數(shù)據(jù)的真實變化并映射到目標(biāo)虛擬DOM上,避免了傳統(tǒng)前端開發(fā)中DOM選擇器復(fù)雜的操作,大大簡化了前端開發(fā)流程,提升了開發(fā)效率,降低了開發(fā)成本和周期。
Vue-router是Vue.js官方發(fā)布的一款路由插件,與Vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用。與傳統(tǒng)的頁面跳轉(zhuǎn)相比,Vue-router是通過組件之間的切換來實現(xiàn)頁面的切換與跳轉(zhuǎn)。此外,HTML5里引入了新的API,history.pushState和history.replaceState,可以通過這個新的接口做到無刷新訪問頁面的同時修改頁面的URL,讓Vue.js能夠動態(tài)調(diào)整頁面路徑,方便頁面切換,提高了用戶體驗。在本文介紹的系統(tǒng)中,使用其開發(fā)用戶友好的前端頁面,達(dá)到前后端分離的目標(biāo)。
1.2 Spring框架
Spring是一個開源框架,它是為了解決企業(yè)級應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring的核心是控制反轉(zhuǎn)(IOC)和面向切面(AOP),應(yīng)用了控制反轉(zhuǎn),一個對象就不需要自己創(chuàng)建或者查找依賴對象,其依賴對象會通過被動的方式傳遞進(jìn)來,極大地降低了對象之間的耦合,減化了企業(yè)級項目的復(fù)雜性。此外,Spring是一個分層架構(gòu)的框架,分層架構(gòu)允許開發(fā)人員為其項目選擇合適的組件,不排斥各種優(yōu)秀的開源框架,比如Hibernate、Mybatis等。在本文介紹的系統(tǒng)中,使用Spring與Dubbo和Mybatis進(jìn)行整合使用,提高了開發(fā)效率。
1.3 Dubbo
Dubbo[2]是由阿里巴巴集團(tuán)提供的一個分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。其核心主要包含三個部分:遠(yuǎn)程通訊、集群容錯和自動發(fā)現(xiàn)。Dubbo與Spring是無縫集成的,只需要簡單的配置信息,Dubbo就可以提供透明化的遠(yuǎn)程方法調(diào)用,如同調(diào)用本地方法一般;軟負(fù)載均衡及容錯機(jī)制,降低成本,減少單點;服務(wù)自動注冊與發(fā)現(xiàn),注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑地添加或刪除服務(wù)提供者。在本文介紹的系統(tǒng)中,Dubbo與Zookeeper結(jié)合使用,暴露服務(wù)接口給前端頁面。
2 系統(tǒng)架構(gòu)的構(gòu)建及數(shù)據(jù)庫的設(shè)計
本系統(tǒng)是一個基于Dubbo的分布式服務(wù)系統(tǒng)[3],由多個基礎(chǔ)服務(wù)和業(yè)務(wù)服務(wù)構(gòu)成。整個系統(tǒng)前后端分離,前端通過注冊在Zookeeper中的接口調(diào)用后臺服務(wù),完成對費用政策的處理。
2.1 系統(tǒng)架構(gòu)的構(gòu)建
對互聯(lián)網(wǎng)車險下單平臺日常運維工作的需求進(jìn)行分析,將費用管理系統(tǒng)分為費用維度配置、分享規(guī)則配置、導(dǎo)出分享規(guī)則、費用成本配置、批量生成成本方案等10個功能模塊。如圖2所示。
(1) 費用維度配置:運維人員可根據(jù)各大保險公司提供的車險報價的基礎(chǔ)維度新增費用維度,比如新車購置價、使用性質(zhì)和出現(xiàn)次數(shù)等,同時支持對基礎(chǔ)維度的靈活組合,支持對基礎(chǔ)維度和維度組合的查詢、編輯和添加功能。
(2) 分享規(guī)則配置:由于推廣車險的業(yè)務(wù)員有兩種可能,一個是團(tuán)隊業(yè)務(wù)員,業(yè)務(wù)員會有上下級關(guān)系;一個是普通業(yè)務(wù)員,不屬于任何團(tuán)隊。對于有上下級關(guān)系的業(yè)務(wù)員的賬戶,當(dāng)其出單時需要為其上上級,上級賬戶提供一定比例的傭金抽成,因而需要支持對不同地區(qū)、不同保險公司、不同業(yè)務(wù)渠道的賬戶配置一級分享比例、二級分享比例以及大V績效信息。
(3) 費用規(guī)則列表:可根據(jù)車險和非車險查詢對應(yīng)的費用規(guī)則詳細(xì)信息。
(4) 導(dǎo)出分享規(guī)則:將用戶配置的分享規(guī)則數(shù)據(jù)導(dǎo)出到Excel文件當(dāng)中,方便運維人員與保險業(yè)務(wù)員進(jìn)行線下溝通。
(5) 結(jié)算費率配置:運維人員根據(jù)基礎(chǔ)維度或者維度組合的笛卡爾乘積,按照保險公司提供的車險結(jié)算數(shù)據(jù)去配置相應(yīng)的結(jié)算比例。
(6) 費用成本配置:費用成本是指從保險公司給的出單抽成當(dāng)中去除給車險互聯(lián)網(wǎng)平臺的費用、經(jīng)代公司的費用以及第三方打款的費用。運維人員需要根據(jù)地區(qū)、方案類型、業(yè)務(wù)渠道等多個因素去配置費用成本數(shù)據(jù)。
(7) 導(dǎo)出結(jié)算方案列表:將用戶配置的結(jié)算方案數(shù)據(jù)導(dǎo)出到Excel文件當(dāng)中。
(8) 批量生成結(jié)算方案:在實際的生產(chǎn)活動中,有時需要生成大量的結(jié)算方案,逐條新增對于運維人員來說工作量偏大,因此可在系統(tǒng)下載導(dǎo)入的模板Excel,在其中一次性填寫要配置的數(shù)據(jù),將其導(dǎo)入到系統(tǒng)當(dāng)中。
(9) 導(dǎo)出成本方案列表:將用戶配置的成本方案數(shù)據(jù)導(dǎo)出到Excel文件當(dāng)中。
(10) 批量生成成本方案:在系統(tǒng)中下載導(dǎo)入成本方案的模板Excel,在其中填寫配置數(shù)據(jù),將其一次性導(dǎo)入系統(tǒng)當(dāng)中。
此外,要實現(xiàn)費用政策生效的功能,需要將配置的分享規(guī)則、費用成本和結(jié)算費率添加到下單渠道,渠道會對應(yīng)App下單的賬號。根據(jù)上述功能分塊以及考慮到后續(xù)維護(hù)和擴(kuò)展,將系統(tǒng)的實現(xiàn)架構(gòu)分表現(xiàn)層、Dubbo管理層、服務(wù)層、實體層和資源層,系統(tǒng)架構(gòu)如圖3所示。
表現(xiàn)層:為用戶提供可視化的數(shù)據(jù)展示和配置平臺,用戶在該層可以查看配置的數(shù)據(jù)。本層采用的是Vue.js技術(shù),基于axios發(fā)送Http請求,達(dá)到與后臺進(jìn)行交互的目的。
Dubbo管理層:使用Zookeeper作為注冊中心[4],負(fù)責(zé)服務(wù)的注冊、訂閱和通知功能。服務(wù)層提供的多個基礎(chǔ)服務(wù)、業(yè)務(wù)服務(wù)和技術(shù)服務(wù),使用Dubbo暴露服務(wù)接口,服務(wù)消費者通過注冊中心獲取服務(wù)提供者的地址表,并根據(jù)負(fù)載均衡算法直接調(diào)用服務(wù),實現(xiàn)了對服務(wù)的有效管理,避免了由于服務(wù)眾多而造成的混亂,便于后續(xù)的維護(hù)和擴(kuò)展。
資源層:資源層主要是Mysql數(shù)據(jù)庫和一些數(shù)據(jù)的緩存。表現(xiàn)層配置的數(shù)據(jù),通過服務(wù)層將其存到Mysql當(dāng)中。服務(wù)層與資源層的交互使用Mybatis作為持久層框架,將表現(xiàn)層采集的數(shù)據(jù)封裝為實體層中的POJO,進(jìn)一步映射成數(shù)據(jù)庫中的記錄。同時,將數(shù)據(jù)庫的查詢結(jié)果封裝為POJO,再經(jīng)JSON序列化返回到表現(xiàn)層,達(dá)到了前端數(shù)據(jù)與后臺數(shù)據(jù)庫高效地交互的目的。
2.2 數(shù)據(jù)庫的設(shè)計
根據(jù)費用管理系統(tǒng)的實際需求,結(jié)合數(shù)據(jù)庫的設(shè)計原則[5]和業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的一些關(guān)聯(lián)信息,費用管理系統(tǒng)的主要數(shù)據(jù)庫設(shè)計如下:
(1) 費用維度表:主要用來存儲保險公司所提供的費用維度信息,比如新車購置價區(qū)間、險別、車輛類型、風(fēng)險標(biāo)志等,其表結(jié)構(gòu)如表1所示。
(2) 分享規(guī)則數(shù)據(jù)表和費用成本數(shù)據(jù)表:這兩張表主要用來存儲運維人員配置的分享和成本數(shù)據(jù),以便在車險App下單時,計算金豆值(保費提成),分享規(guī)則表如表2所示,費用成本表結(jié)構(gòu)相似,不再贅述。
(3) 結(jié)算方案表:主要用來存儲根據(jù)費用維度配置的結(jié)算比例數(shù)據(jù),具體表結(jié)構(gòu)如表3所示。
3 費用管理系統(tǒng)的實現(xiàn)及效果
由于整個系統(tǒng)前后端分離,系統(tǒng)的啟動部署分為兩個部分,一是后臺接口代碼的啟動,二是前端Vue項目的啟動。后臺接口的各個組件是通過Dubbo框架來進(jìn)行交互的,每個接口通過配置文件來暴露服務(wù),通過Zookeeper來發(fā)現(xiàn)各個接口服務(wù)的具體地址,其中Dubbo配置如圖4所示。
啟動前端Vue項目,要先下載node.js,下載完成后進(jìn)行安裝,在命令行輸入npm run dev命令啟動整個Vue項目。前后臺兩者正確啟動后,整個系統(tǒng)的效果如圖5所示。
4 總結(jié)
本文介紹的費用管理系統(tǒng),根據(jù)當(dāng)前軟件開發(fā)的導(dǎo)向,實現(xiàn)了前后端分離,前端采用目前流行的Vue.js技術(shù),為用戶提供界面友好的視覺服務(wù),后臺采用Dubbo作為RPC框架,結(jié)合Zookeeper為前端請求提供Api接口服務(wù),整個系統(tǒng)層次分明,結(jié)構(gòu)合理,便于后期維護(hù)和擴(kuò)展。系統(tǒng)目前通過測試和驗收,基本滿足了運維需求,已成功上線運行。
參考文獻(xiàn)
[1] 陳巖.輕量級響應(yīng)式框架Vue.js應(yīng)用分析[J].中國管理信息化,2018,21(3):181-183.
[2] 張舵,王楠,連京維,等.運營管理平臺APP配置化功能設(shè)計與實現(xiàn)[J].工業(yè)控制計算機(jī),2018,31(10):123-124.
[3] 葉子安. 基于分布式的高性能Web站點的設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2018.
[4] 苗凡,閻志遠(yuǎn),戴琳琳.基于Zookeeper的配置管理中心設(shè)計與實現(xiàn)[J].鐵路計算機(jī)應(yīng)用,2018,27(10):26-29.
[5] 周捷,張鳳靜.軟件數(shù)據(jù)庫的設(shè)計原則[J].電子技術(shù)與軟件工程,2018(21):157.
(收稿日期: 2018.12.14)
作者簡介:周永圣(1994-),男,碩士,研究方向:Java Web開發(fā)。
孫雯(1994-),女,碩士,研究方向:通信與信息系統(tǒng)。
侯峰裕(1995-),男,碩士,研究方向:通信與信息系統(tǒng)。
楊磊(1994-),男,碩士,研究方向:通信與信息系統(tǒng)。
楊晉(1996-),男,碩士,研究方向:JavaWeb開發(fā)。
張小貝(1982-),男,教授,博士,研究方向:通信與信息系統(tǒng)。文章編號:1007-757X(2020)02-0086-04