這是報告!7至8月中旬項目總結!以前的一個全棧負責的小程序項目。18年初的時候,因爲一我的設計並搭建設計到前端實現,因此一開始的時候可能對數據庫沒有什麼經驗,在改業務的時候,數據庫的設計真的是有點頭大。還有對於本文不是教你一句一句代碼敲出一個項目,而是將項目的思路給你,由你去修改出之後更加適合本身的架構或業務實現思路。前端
這是一個真實的創業項目,不過如今已經結束了,緣由種種······git
因爲如今已經終止了,因此也沒有在線上運行,因此我就給你們看看大體的UI圖github
以上就是基本的業務,其他能夠由讀者本身發揮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
個人一個失誤,使用的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開發經驗的都有一些瞭解了。
最後,因爲項目中止了,我不能給你們看實際產品效果,可是上線一個月的階段功能均正常,如下是項目的代碼目錄,均爲本人手敲、(摸索)設計完成。
若是有你有幫助,歡迎關注本人技術公衆號或者點贊本文,謝謝。