類摩拜等共享小程序,架構設計與編碼實現(單機版)

前言

這是報告!7至8月中旬項目總結!以前的一個全棧負責的小程序項目。18年初的時候,因爲一我的設計並搭建設計到前端實現,因此一開始的時候可能對數據庫沒有什麼經驗,在改業務的時候,數據庫的設計真的是有點頭大。還有對於本文不是教你一句一句代碼敲出一個項目,而是將項目的思路給你,由你去修改出之後更加適合本身的架構或業務實現思路。前端

這是一個真實的創業項目,不過如今已經結束了,緣由種種······git

項目業務與UI切圖

因爲如今已經終止了,因此也沒有在線上運行,因此我就給你們看看大體的UI圖github

  • 一、首頁,與共享型同樣,定位,獲取硬件座標

圖片描述

  • 二、硬件是一個書櫃,裏面固定放了24本書,因此你點擊首頁的圖書logo能夠看到那個書櫃裏面的書籍(每一個書櫃都是不同的)

圖片描述

  • 三、點擊圖書,就是圖書詳情還有書評,用戶點擊「當即借閱」,書櫃會打開對應圖書的櫃子門

圖片描述

  • 四、借閱過的用戶,能夠進行書評功能

圖片描述

  • 五、與其餘共享app同樣,也有押金和卡包功能

圖片描述

  • 六、其他的大同小異

以上就是基本的業務,其他能夠由讀者本身發揮web

架構與設計

嗯,直接上一個簡易版的圖紙spring

圖片描述

一、先後端分離,不論是應用仍是後臺數據都是API形式
二、微信與支付寶(app版)都是使用sdk,後期換了GitHub上一些開源工具包、卡包能夠作成小系統
三、core,二維碼模塊,須要針對每臺設備作定製生成,後臺作了二維碼系統,小程序接口有介紹,二維碼模式下添加每臺機的惟一參數進行數據請求
四、netty與單片機硬件的通訊,TCP/IP協議,自定義通訊規則,幀頭+ID+數據類型+內容+CRC16加密串+幀尾,netty作了不少很好封裝,須要整理一些思路和實現(具體看本人GitHub項目:UncleCatMySelf/ssmnetty
五、數據庫與緩存Redis,因爲單機版,在沒有實際用戶量要求的狀況下,沒有使用多餘的成本去作分佈式、數據庫主從庫、併發等等
六、Netty的數據操做與數據庫有關須要在Future中的線程執行,使用了原生JDBC操做CRUD,沒有使用mybatis的spring注入。數據庫

接下來我會盡量細講,可是不是手把手教學(提起這個點是由於有些大學生但願看的技術型文章內容太豐富了···)小程序

技術分解

業務主體與思路

首先,這個有區別與電商類應用,這裏沒有很明顯的商品與庫存的概念,由於儘管是ISBN相同的一本書,它們投放的(書櫃)箱子能夠是不同的,用戶拿到手的書本即便名字內容同樣,可是它們之間是不對等的,因此每一本書都要有惟一ID,書櫃投放的設備也是同樣,每生產一臺機子,都有惟一ID與通訊ID、並生成對應的二維碼,用戶掃碼進入小程序看到的數據是針對這個書櫃的圖書segmentfault

netty通訊模塊

個人一個失誤,使用的netty5.0版,可是其實5是一個捨棄的版本,可是最後仍是運行正常,不過我的以爲若是要使用netty仍是用4主版較好。netty通訊框架對於接入的channel會自動生成id,咱們須要在第一次通訊的接收信息時,校驗通訊協議(CRC16加密、幀頭、幀尾等)是否正常,若是正常須要本身定義一個相似group的堆去從新存放咱們的合法channel並改它的系統通訊ID,接着須要作什麼數據操做,相似開鎖、設備報警等信息就future中處理,若是涉及數據庫的操做,則用JDBC。後端

支付卡包

對於這個模塊想說的甚少,押金就是一個判斷校驗,有作過微信支付的朋友均可以作出來,何況如今Github上有挺多資源了。月卡、季卡我沒有設計的很好,不是一個模塊(詳見個人另外一文章:真實項目之【邀請碼活動模塊】實現思路),而是一個和系統一塊兒的功能代碼,很慶幸在以後我從新作了修改,設計爲系統模塊。api

通用開發架構

對於API的返回規範ResultVO、與定製ResultVOUtil(success、error)等api返回協議、Exception全局監控、API攔截權限、後臺增刪改查數據校驗、系統日誌等等細節,這裏不作一一講解,有web開發經驗的都有一些瞭解了。

總結

最後,因爲項目中止了,我不能給你們看實際產品效果,可是上線一個月的階段功能均正常,如下是項目的代碼目錄,均爲本人手敲、(摸索)設計完成。
圖片描述


若是有你有幫助,歡迎關注本人技術公衆號或者點贊本文,謝謝。
圖片描述

相關文章
相關標籤/搜索