<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          40天,搞定8萬(wàn)塊的智慧取餐柜項(xiàng)目

          共 6515字,需瀏覽 14分鐘

           ·

          2022-06-09 08:19

          二哥編程知識(shí)星球 (戳鏈接加入)正式上線了,來(lái)和 220 多名 小伙伴一起打怪升級(jí)吧!這是一個(gè) Java 學(xué)習(xí)指南 + 編程實(shí)戰(zhàn)的私密圈子,你可以向二哥提問(wèn)、幫你制定學(xué)習(xí)計(jì)劃、跟著二哥一起做實(shí)戰(zhàn)項(xiàng)目,沖沖沖。Java 程序員進(jìn)階之路網(wǎng)址:
          https://tobebetterjavaer.com/

          今天給大家分享一位程序員老哥 40 天接的一個(gè) 8 萬(wàn)的智慧取餐柜項(xiàng)目,非常類似快遞柜項(xiàng)目,完整解決方案也跟大家分享一下,希望給大家一些參考。

          這是取餐柜成品的樣子,硬件廠家提供的不用去開(kāi)發(fā)硬件哦,我們只開(kāi)發(fā)的軟件部分(小程序,PC 端,APP)

          下面是廠家快遞過(guò)來(lái)的測(cè)試機(jī)器 4 口,別問(wèn)我為什么跟上面的不一樣,上面的那個(gè)實(shí)在太大了啊,測(cè)試聯(lián)調(diào)只要接口 OK 就行

          流程圖先曬下,畫的很簡(jiǎn)單

          現(xiàn)在開(kāi)發(fā)項(xiàng)目都喜歡前面加個(gè)智慧,這個(gè)項(xiàng)目也是智慧 XXX

          說(shuō)白了就是一個(gè)外賣項(xiàng)目的升級(jí)版本

          這圖是用 processon 畫的

          開(kāi)發(fā)人員情況(1 人)

          • uniapp 前端 技術(shù)棧 vue 主要任務(wù) 小程序及 PC 端頁(yè)面,APP (存取 餐)
          • 后端 ? ? 技術(shù)棧 ? springboot
          • 開(kāi)發(fā)周期 40 天(設(shè)計(jì)+開(kāi)發(fā))
          • 開(kāi)發(fā)人數(shù) 1 人
          • 整體費(fèi)用是 8 萬(wàn)(不含硬件部分),這是一期的開(kāi)發(fā)費(fèi)用
          • 付款模式 5:4:1 首付:驗(yàn)收:尾款
          • 走的正規(guī)公司合同
          • 云服務(wù)器 1 臺(tái) 4 核 8G,經(jīng)費(fèi)有限先就安排 1 臺(tái),不夠后面升級(jí)
          • 維護(hù)費(fèi)用 項(xiàng)目總款項(xiàng) 10%
          • 售后維護(hù) | 域名 | 服務(wù)器 | 日常運(yùn)維 |

          技術(shù)選型

          • 核心框架:Spring Boot
          • 數(shù)據(jù)庫(kù)連接池:Druid
          • 緩存:redis
          • 前端:Vue
          • APP 小程序 Uniapp
          • 數(shù)據(jù)庫(kù):mysql
          • 服務(wù)器配置 4 核 8G
          • 硬件接口開(kāi)發(fā)聯(lián)調(diào)(云打印機(jī) 取餐柜)

          項(xiàng)目背景

          大城市里公司上班族,經(jīng)常交通通勤都 1 個(gè)多小時(shí),購(gòu)買早餐也經(jīng)常需要排很長(zhǎng)的隊(duì),很浪費(fèi)時(shí)間,本系統(tǒng)就是為了解決上班族購(gòu)買早餐難的痛點(diǎn)而誕生的。

          一線城市上班時(shí),吃早餐就很頭疼,辦公大廈樓下早餐店排隊(duì)很夸張的,浪費(fèi)了我很多寫代碼的時(shí)間呀。

          小程序

          本小程序主要功能就這些

          • 用戶下訂單
          • 騎手存餐

          下面是我們的測(cè)試體驗(yàn)版小程序,初始數(shù)據(jù)有點(diǎn)隨意

          跟普通下單外賣不同的地方就是可以選擇取餐時(shí)間和機(jī)柜

          騎手進(jìn)入本頁(yè)面點(diǎn)擊【存餐】觸發(fā) 取餐柜

          下單成功會(huì)短信通知用戶 取餐碼

          PC 端

          目前主要功能,說(shuō)白了在外賣系統(tǒng)二開(kāi)的,分系統(tǒng)管理員和商家角色

          • 商品管理 -分系統(tǒng)和商家
          • 訂單管理 -分系統(tǒng)和商家
          • 店鋪管理 -分系統(tǒng)和商家
          • 會(huì)員權(quán)限管理
          • 售后管理
          • 統(tǒng)計(jì)報(bào)表
          • 訂單物流
          • 財(cái)務(wù)管理
          • 騎手管理

          下面截圖就是開(kāi)源系統(tǒng)上面二開(kāi)的,別問(wèn)我為啥管理系統(tǒng)頁(yè)面都長(zhǎng)了差不多,前端是 Vue

          系統(tǒng)管理員角色

          商家角色

          硬件部分(取餐柜)

          主要硬件是取餐柜,這個(gè)是找的第三方現(xiàn)成的硬件廠家,對(duì)方會(huì)提供接口文檔具體的 SDK 包,我們的工作量就是接口開(kāi)發(fā)然后聯(lián)調(diào)一波。

          取餐接口(取餐柜)

          下面我把核心的存餐接口給大家列出來(lái)下

          創(chuàng)建存餐訂單

          使用場(chǎng)景

          創(chuàng)建存餐訂單

          操作名稱

          createOrder

          請(qǐng)求字段

          {
          ????"deviceId":"xxxxxxxxxxx",???//?必傳,設(shè)備ID

          ????"shopOrderId":"00000000000000",???//?必傳,商戶訂單號(hào),最多32位字符

          ????"type":1,???//非必傳,請(qǐng)求的格子類型,普通小格1、普通大格2,不傳遞默認(rèn)為1

          ????"isWarm":"1",????//?非必傳,是否開(kāi)始加熱(1-加熱【取餐時(shí)自動(dòng)關(guān)閉加熱】、不傳遞或傳遞0為不加熱)

          ????"isLight":"1",????//?非必傳,是否開(kāi)燈(1-開(kāi)燈【取餐時(shí)自動(dòng)關(guān)燈】、不傳遞或傳遞0為不開(kāi)燈)

          ????"isDisinfect":"1",????//?非必傳,是否開(kāi)始消毒(1-加熱【取餐時(shí)自動(dòng)關(guān)閉消毒】、不傳遞或傳遞0為不消毒)

          ????"takeCode":"1234",//?非必傳,支持自定義取餐碼,不傳遞?則AUV會(huì)默認(rèn)自動(dòng)生成4位取餐碼

          ????"cellId":"12",//?非必傳,支持自定義格口號(hào),不傳遞?則AUV會(huì)隨機(jī)分配格口

          }

          返回?cái)?shù)據(jù)

          存餐成功:

          {

          ????"deviceId":"xxxxxxxxxxx",???//設(shè)備ID

          ????"shopOrderId":"00000000000000",???//商戶訂單號(hào),最多32位字符

          ????"orderId":"11111111",???//存取訂單ID

          ????"cellId":"22",??//?占用的格子號(hào)

          ????"code":"1234",????//?系統(tǒng)生成的取餐碼,可以通過(guò)該值請(qǐng)求?takeByCode?接口進(jìn)行取餐操作

          ????"cellAlias":"22",?//?占用的格子號(hào)別名

          }

          訂單打印機(jī)

          小程序端下訂單后,會(huì)同步通知 XX云打印機(jī),這部分硬件市面上也是有現(xiàn)成的,購(gòu)買就行然后給云打印機(jī)系統(tǒng)進(jìn)行接口對(duì)接即可。

          硬件設(shè)備如下,也不貴 300元左右

          打印小票樣例如下

          文本打印接口

          請(qǐng)求地址:https://open-api.XXX.net/print/index

          請(qǐng)求方式:POST

          所需參數(shù)

          名 稱類 型描 述是否必傳
          client_idstring開(kāi)發(fā)者的應(yīng)用ID,在開(kāi)放平臺(tái)創(chuàng)建應(yīng)用時(shí)獲得
          access_tokenstring授權(quán)的token 必要參數(shù)
          machine_codestringX聯(lián)云打印機(jī)終端號(hào)
          contentstring打印內(nèi)容(需要urlencode),排版指令詳見(jiàn)打印機(jī)指令
          idempotenceint為?1?時(shí),origin_id?進(jìn)行冪等處理,請(qǐng)確定?origin_id 的唯一性
          origin_idstring商戶系統(tǒng)內(nèi)部訂單號(hào),要求32個(gè)字符內(nèi),只能是數(shù)字、大小寫字母 ,且在同一個(gè)client_id下唯一。詳見(jiàn)商戶訂單號(hào)
          signstring簽名 詳見(jiàn)API文檔列表-接口簽名
          idstringUUID4 詳見(jiàn)API文檔列表-uuid4
          timestampint當(dāng)前服務(wù)器時(shí)間戳(10位)

          返回詳情

          {"error":"0","error_description":"success",

          "body":{"id":"訂單號(hào)","origin_id":""}}

          {"error":"8","error_description":"打印機(jī)信息錯(cuò)誤,參數(shù)有誤"}

          {"error":"9","error_description":"連接打印機(jī)失敗,參數(shù)有誤"}

          {"error":"10","error_description":"權(quán)限不足"}

          {"error":"12","error_description":"缺少必要參數(shù)"}

          {"error":"13","error_description":"打印失敗,參數(shù)有誤"}

          {'error':'33',?'error_description':'Uuid?不合法'

          }

          核心表

          如訂單表

          DROP?TABLE?IF?EXISTS?`tp_order`;

          CREATE?TABLE?`tp_order`?(

          `order_id`?mediumint(8)?unsigned?NOT?NULL?AUTO_INCREMENT?COMMENT?'訂單?id',

          `order_sn`?varchar(20)?NOT?NULL?DEFAULT?''?COMMENT?'訂單編號(hào)',

          `master_order_sn`?varchar(20)?DEFAULT?''?COMMENT?'主訂單號(hào)',

          `user_id`?mediumint(8)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'用戶?id',

          `order_status`?tinyint(1)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'訂單狀態(tài)',

          `shipping_status`?tinyint(1)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'發(fā)貨狀態(tài)',

          `pay_status`?tinyint(1)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'支付狀態(tài)',

          `consignee`?varchar(60)?NOT?NULL?DEFAULT?''?COMMENT?'收貨人',

          `country`?int(11)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'國(guó)家',

          `province`?int(11)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'省份',

          `city`?int(11)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'城市',

          `district`?int(11)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'縣區(qū)',

          `twon`?int(11)?DEFAULT?'0'?COMMENT?'鄉(xiāng)鎮(zhèn)',

          `address`?varchar(255)?NOT?NULL?DEFAULT?''?COMMENT?'地址',

          `zipcode`?varchar(60)?NOT?NULL?DEFAULT?''?COMMENT?'郵政編碼',

          `mobile`?varchar(60)?NOT?NULL?DEFAULT?''?COMMENT?'手機(jī)',

          `email`?varchar(60)?NOT?NULL?DEFAULT?''?COMMENT?'郵件',

          `shipping_code`?varchar(32)?NOT?NULL?DEFAULT?'0'?COMMENT?'物流?code',

          `shipping_name`?varchar(120)?NOT?NULL?DEFAULT?''?COMMENT?'物流名稱',

          `pay_code`?varchar(32)?NOT?NULL?DEFAULT?''?COMMENT?'支付?code',

          `pay_name`?varchar(120)?NOT?NULL?DEFAULT?''?COMMENT?'支付方式名稱',

          `invoice_title`?varchar(256)?DEFAULT?''?COMMENT?'發(fā)票抬頭',

          `goods_price`?decimal(10,2)?NOT?NULL?DEFAULT?'0.00'?COMMENT?'商品總價(jià)',

          `shipping_price`?decimal(10,2)?NOT?NULL?DEFAULT?'0.00'?COMMENT?'郵費(fèi)',

          `user_money`?decimal(10,2)?NOT?NULL?DEFAULT?'0.00'?COMMENT?'使用余額',

          `coupon_price`?decimal(10,2)?DEFAULT?'0.00'?COMMENT?'優(yōu)惠了多少',

          `integral`?int(10)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'使用積分',

          `integral_money`?decimal(10,2)?NOT?NULL?DEFAULT?'0.00'?COMMENT?'使用積分抵多少錢',

          `order_amount`?decimal(10,2)?NOT?NULL?DEFAULT?'0.00'?COMMENT?'應(yīng)付款金額',

          `total_amount`?decimal(10,2)?DEFAULT?'0.00'?COMMENT?'訂單總價(jià)',

          `add_time`?int(10)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'下單時(shí)間',

          `confirm_time`?int(10)?DEFAULT?'0'?COMMENT?'收貨確認(rèn)時(shí)間',

          `pay_time`?int(10)?unsigned?NOT?NULL?DEFAULT?'0'?COMMENT?'支付時(shí)間',

          `shipping_time`?int(11)?DEFAULT?'0'?COMMENT?'最新發(fā)貨時(shí)間',

          `order_prom_id`?smallint(6)?NOT?NULL?DEFAULT?'0'?COMMENT?'訂單活動(dòng)?id',

          `order_prom_amount`?decimal(8,2)?NOT?NULL?DEFAULT?'0.00'?COMMENT?'訂單活動(dòng)優(yōu)惠金額',

          `discount`?decimal(10,2)?NOT?NULL?DEFAULT?'0.00'?COMMENT?'價(jià)格調(diào)整',

          `user_note`?varchar(255)?NOT?NULL?DEFAULT?''?COMMENT?'用戶備注',

          `admin_note`?varchar(255)?DEFAULT?''?COMMENT?'管理員備注',

          `parent_sn`?varchar(100)?DEFAULT?NULL?COMMENT?'父單單號(hào)',

          `store_id`?int(10)?DEFAULT?'0'?COMMENT?'店鋪?ID',

          `is_comment`?tinyint(1)?NOT?NULL?DEFAULT?'0'?COMMENT?'是否評(píng)價(jià)(0:未評(píng)價(jià);1:已評(píng)價(jià))',

          `deleted`?tinyint(1)?unsigned?zerofill?NOT?NULL,

          `is_checkout`?tinyint(1)?DEFAULT?'0'?COMMENT?'0?未結(jié)算?1?已結(jié)算',

          `qishouid`?int(11)?DEFAULT?'0',

          `jiedantime`?varchar(255)?DEFAULT?NULL,

          `youhuiid`?int(11)?DEFAULT?NULL,

          `qucantime`?varchar(255)?DEFAULT?NULL,

          `shebeiid`?varchar(255)?DEFAULT?NULL,

          `qucanshebeiid`?int(11)?DEFAULT?NULL,

          `baozhuangfei`?varchar(255)?DEFAULT?NULL,

          `qucancode`?varchar(255)?DEFAULT?NULL,

          PRIMARY?KEY?(`order_id`),

          UNIQUE?KEY?`order_sn`?(`order_sn`)?USING?BTREE,

          KEY?`user_id`?(`user_id`)?USING?BTREE,

          KEY?`order_status`?(`order_status`)?USING?BTREE,

          KEY?`shipping_status`?(`shipping_status`)?USING?BTREE,

          KEY?`pay_status`?(`pay_status`)?USING?BTREE,

          KEY?`shipping_id`?(`shipping_code`)?USING?BTREE,

          KEY?`pay_id`?(`pay_code`)?USING?BTREE

          )?ENGINE=MyISAM?AUTO_INCREMENT=485?DEFAULT?CHARSET=utf8;

          總結(jié)

          其實(shí)本系統(tǒng)技術(shù)難度不高,只要把整個(gè)解決方案確定出來(lái)了,后面的也就寫業(yè)務(wù)代碼而已,各種硬件接口開(kāi)發(fā)聯(lián)調(diào)比較費(fèi)時(shí)間,可以預(yù)測(cè)這種項(xiàng)目以后估計(jì)會(huì)越來(lái)越多,會(huì)大大提高大家的工作生活效率。

          復(fù)制粘貼,修修改改,聯(lián)機(jī)調(diào)試,幾萬(wàn)塊落袋,搞搞副業(yè)也是不錯(cuò)的,畢竟打工仔掙不了幾個(gè)錢。


          沒(méi)有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧?kù)o的港灣,我是不系之舟

          推薦閱讀

          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人免费视频 国产免费观看 | 人妻熟女一区二区三区APP下载 | 8x8x看片网站 | 色美女亚洲被日 | 男人露大鸡巴无遮挡免费视频 |