目錄
- 1 設計數據源
- 2 后臺管理
- 3 后端API
- 4 調用API
- 總結
家政預約小程序的核心是展示家政公司提供的各項服務的能力,比如房屋維護修繕,家電維修,育嬰,日常保潔等。用戶在選擇家政服務的時候,價格,評價是影響用戶選擇的核心要素。因此在小程序的首要需要展示用戶關心的核心內容。
1 設計數據源
為了顯示服務的內容,我們先需要設計數據源用來存儲數據。打開控制臺,點擊數據模型,點擊新建
輸入數據源的名稱,服務管理,點擊創建
數據源創建好之后,需要添加列,首先我們添加服務的名稱,類型選擇文本
在添加的列上點擊向右插入列,添加服務描述,類型選擇文本
在首頁顯示的時候為了吸引用戶,我們添加兩個價格,一個是劃線價格,一個是優惠價格,類型選擇數字
為了在列表上顯示,我們添加一個圖片字段,類型選擇圖片
然后添加一個銷量,類型選擇數字
通常小程序可以按照綜合進行排序,我們設置一個綜合評分,類型選擇數字
在添加一個服務詳情,類型選擇富文本
添加一個是否在首頁展示的字段,類型選擇布爾值
最后添加一個服務分類,類型選擇關聯關系,選擇我們的服務分類表
2 后臺管理
數據源創建好之后,我們就可以開發后臺管理功能,先創建一個服務管理頁面,從模板新建
選擇對應的數據模型,模板會自動的生成增刪改查的頁面
切換到頁面布局,我們配置我們的導航菜單
點開剛才配置的菜單,將標題修改為服務管理
3 后端API
我們這里錄入數據的時候,需要先計算一下服務的綜合得分。我們綜合得分的技術規則是按三個指標進行計算,分別是價格、銷量和評價。每個指標分配不同的權重,最終求一個總體的得分。
而且綜合得分是一個動態的指標,在每次顧客購買服務和做出評價后,重新計算當前服務的綜合得分并進行更新。
像這種有規則的我們稱之為業務邏輯,需要使用API進行開發,在小程序側對應的事件中進行調用。
點擊APIs,點擊新建
選擇自定義代碼
輸入方法的名稱和標識
因為銷量、價格、評價的數量級不一樣,為了實現可比較,我們用minMax算法實現,以下是minMax算法的邏輯
比如價格作為一項指標公式是,評價后的價格分=(當前服務價格-最低服務價格)/(最高服務價格-最低服務價格)
然后總分=銷量評價分權重+價格評價分權重+評價分*權重
首先我們需要傳入當前產品的價格,設置入參,輸入price
然后定義一個常量用來獲取我們的入參
const price = params.price
接著定義一個變量用來返回計算的結果,初始化為0
let score = 0
接著我們獲取服務的所有數據,可以調用分頁方法
const services = await context.callModel({name:'fwgl_u9ms0al',methodName:'wedaGetRecords',params:{pageSize:1000}})
默認不設置頁碼默認取10條,我們這里設置1000基本就把服務全獲取到了
通過分頁方法會把所有字段都獲取到,我們這里只關心服務的價格,使用數組的map方法我們處理一下返回結果,讓數組里只包含價格
const records = services.records.map(item=>(item.yhjg))
接著我們就要處理一下各種情況,比如我沒錄入數據的情況下,那我就直接設定價格分為0,如果只有一條數據因為分母會變成0所以也讓價格分變成0
if(records.length===0){score=0}else{records.push(price)const max_price = Math.max(...records)const min_price = Math.min(...records)if(max_price==min_price){score=0}else{console.log('min_price',min_price,'max_price',max_price)score = ((price - min_price)/(max_price-min_price))*0.4}}
計算好價格之后,最后將結果返回,注意API要求返回結果是JSON格式,這里我們將結果包裝成一個對象,屬性放置我們的返回結果
return {score:Number(score.toFixed(2))};
代碼寫好之后,點擊方法測試,輸入入參,看一下我們的計算結果
點擊運行測試就可以看到執行的結果,點擊出參自動映射,我們的API就開發好了
4 調用API
在我們的編輯界面,我們添加一個按鈕調用一下API,在綜合評分字段旁邊添加一個普通容器,將該字段放入普通容器中,并添加一個按鈕
在代碼區定義兩個變量,一個是數字類型,一個是對象類型
選中綜合得分,設置輸入值,綁定我們的score
然后設置按鈕,我們設置一個鏈式調用,先判斷我們的優惠價格有沒有輸入,如果沒有我就提示一個錯誤信息
如果輸入了,我就調用我的API,并且傳入我們的參數,并將結果賦值給我們的result對象
賦值成功后將API的調用結果賦值給我們的score變量
這樣就實現了一個計算綜合得分的效果
總結
本篇我們介紹了服務管理功能的開發,編寫了一個小的算法用來計算綜合得分,然后講解了如何通過事件的鏈式調用去獲取我們的綜合得分。雖然這個算法不見得和實際貼合,但是主要是演示一下微搭前后端開發的一個過程,結合你自己的業務就可以實現自己想要的邏輯出來。