家政预约小程序05服务管理

目录

  • [1 设计数据源](#1 设计数据源)
  • [2 后台管理](#2 后台管理)
  • [3 后端API](#3 后端API)
  • [4 调用API](#4 调用API)
  • 总结

家政预约小程序的核心是展示家政公司提供的各项服务的能力,比如房屋维护修缮,家电维修,育婴,日常保洁等。用户在选择家政服务的时候,价格,评价是影响用户选择的核心要素。因此在小程序的首要需要展示用户关心的核心内容。

1 设计数据源

为了显示服务的内容,我们先需要设计数据源用来存储数据。打开控制台,点击数据模型,点击新建

输入数据源的名称,服务管理,点击创建

数据源创建好之后,需要添加列,首先我们添加服务的名称,类型选择文本

在添加的列上点击向右插入列,添加服务描述,类型选择文本

在首页显示的时候为了吸引用户,我们添加两个价格,一个是划线价格,一个是优惠价格,类型选择数字

为了在列表上显示,我们添加一个图片字段,类型选择图片

然后添加一个销量,类型选择数字

通常小程序可以按照综合进行排序,我们设置一个综合评分,类型选择数字

在添加一个服务详情,类型选择富文本

添加一个是否在首页展示的字段,类型选择布尔值

最后添加一个服务分类,类型选择关联关系,选择我们的服务分类表

2 后台管理

数据源创建好之后,我们就可以开发后台管理功能,先创建一个服务管理页面,从模板新建

选择对应的数据模型,模板会自动的生成增删改查的页面

切换到页面布局,我们配置我们的导航菜单

点开刚才配置的菜单,将标题修改为服务管理

3 后端API

我们这里录入数据的时候,需要先计算一下服务的综合得分。我们综合得分的技术规则是按三个指标进行计算,分别是价格、销量和评价。每个指标分配不同的权重,最终求一个总体的得分。

而且综合得分是一个动态的指标,在每次顾客购买服务和做出评价后,重新计算当前服务的综合得分并进行更新。

像这种有规则的我们称之为业务逻辑,需要使用API进行开发,在小程序侧对应的事件中进行调用。

点击APIs,点击新建

选择自定义代码

输入方法的名称和标识

因为销量、价格、评价的数量级不一样,为了实现可比较,我们用minMax算法实现,以下是minMax算法的逻辑

比如价格作为一项指标公式是,评价后的价格分=(当前服务价格-最低服务价格)/(最高服务价格-最低服务价格)

然后总分=销量评价分权重+价格评价分权重+评价分*权重

首先我们需要传入当前产品的价格,设置入参,输入price

然后定义一个常量用来获取我们的入参

bash 复制代码
const price = params.price

接着定义一个变量用来返回计算的结果,初始化为0

bash 复制代码
  let score = 0

接着我们获取服务的所有数据,可以调用分页方法

bash 复制代码
const services = await context.callModel({
    name:'fwgl_u9ms0al',
    methodName:'wedaGetRecords',
    params:{
      pageSize:1000
    }
  })

默认不设置页码默认取10条,我们这里设置1000基本就把服务全获取到了

通过分页方法会把所有字段都获取到,我们这里只关心服务的价格,使用数组的map方法我们处理一下返回结果,让数组里只包含价格

bash 复制代码
const records = services.records.map(item=>(item.yhjg))

接着我们就要处理一下各种情况,比如我没录入数据的情况下,那我就直接设定价格分为0,如果只有一条数据因为分母会变成0所以也让价格分变成0

bash 复制代码
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格式,这里我们将结果包装成一个对象,属性放置我们的返回结果

bash 复制代码
return {score:Number(score.toFixed(2))};

代码写好之后,点击方法测试,输入入参,看一下我们的计算结果

点击运行测试就可以看到执行的结果,点击出参自动映射,我们的API就开发好了

4 调用API

在我们的编辑界面,我们添加一个按钮调用一下API,在综合评分字段旁边添加一个普通容器,将该字段放入普通容器中,并添加一个按钮

在代码区定义两个变量,一个是数字类型,一个是对象类型

选中综合得分,设置输入值,绑定我们的score

然后设置按钮,我们设置一个链式调用,先判断我们的优惠价格有没有输入,如果没有我就提示一个错误信息

如果输入了,我就调用我的API,并且传入我们的参数,并将结果赋值给我们的result对象

赋值成功后将API的调用结果赋值给我们的score变量

这样就实现了一个计算综合得分的效果

总结

本篇我们介绍了服务管理功能的开发,编写了一个小的算法用来计算综合得分,然后讲解了如何通过事件的链式调用去获取我们的综合得分。虽然这个算法不见得和实际贴合,但是主要是演示一下微搭前后端开发的一个过程,结合你自己的业务就可以实现自己想要的逻辑出来。

相关推荐
Oo_Amy_oO6 小时前
【极限编程(XP)】
低代码·极限编程
逆天的蝈蝈8 小时前
开源与商业的碰撞TPFLOW与Gadmin低代码的商业合作
低代码·开源
勤研科技8 小时前
低代码环境中的领域与根实体解析
低代码
ZOHO项目管理软件8 小时前
低代码解锁跨平台应用开发新境界
低代码
丁总学Java8 小时前
微信小程序,点击bindtap事件后,没有跳转到详情页,有可能是app.json中没有正确配置页面路径
微信小程序·小程序·json
说私域10 小时前
基于开源 AI 智能名片、S2B2C 商城小程序的用户获取成本优化分析
人工智能·小程序
mosen86810 小时前
Uniapp去除顶部导航栏-小程序、H5、APP适用
vue.js·微信小程序·小程序·uni-app·uniapp
qq229511650210 小时前
微信小程序的汽车维修预约管理系统
微信小程序·小程序·汽车
尚梦17 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
BPM_宏天低代码21 小时前
低代码 BPA:简化业务流程自动化的新趋势
运维·低代码·自动化