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

目录

  • 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变量
在这里插入图片描述
这样就实现了一个计算综合得分的效果

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/633857.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【零代码智能体开发】打造一个“情感和好大师”,解决人际关系中的困扰

〇、前言 智能体技术的快速发展带动了用户需求和实际应用场景仍需进一步探索。为激发开发者的创意潜能,探索具有应用价值的智能体,“文心智能体大赛”应运而生。 文心智能体平台 是百度推出的基于文心大模型的智能体(Agent)平台…

操作系统实验1:Linux常用命令及简单C语言程序调试

1.1实验目的 了解Linux系统的组织和行为,包括 Linux的用户界面、目录结构组织、运行程序的基本方式。通过使用终端(terminal)熟悉Linux Shell 、常见命令(cd、ls、ps、chmod等)和 redirect、pipe机制。学习使用vi或者gedit等编辑器编辑一个c语言源程序,…

二叉树求解大小操作详解

目录 一、求所有结点个数 1.1 递归思路 1.2 递归分支图 1.3 递归栈帧图 1.4 C语言实现 二、求叶子结点个数 2.1 递归思路 2.2 递归分支图 2.3 递归栈帧图 2.4 C语言实现 三、求第K层的结点个数 3.1 递归思路 3.2 递归分支图 3.3 递归栈帧图 3.4 C语言实现 四、求…

C++的红黑树

目录 基本概念 插入结点的颜色 判断性质是否破坏 调整方式 u为g的右孩子 u存在且为红 u存在且为黑 u不存在 结论 红黑树结点定义 代码实现 基本概念 1、红黑树是一种特殊的二叉搜索树,每个结点会增加一个存储位表示结点的颜色(红或黑&#x…

超前预热|博睿数据将应邀出席双态IT用户大会,分享《构建云原生时代的一体化智能可观测性》

5月31日,第十二届双态IT用户大会将于成都盛大开幕,此次大会由DCMG和双态IT论坛联合主办,聚焦“信创时代的组织级云原生能力建设”和“组织级云原生运维能力建设”两大会议主题,旨在推动双态IT落地与创新,为企业数字化转…

syncthing文件夹同步与版本管理

1 前言 syncthing可以用来同步文件夹里的所有文件,并且有不错的版本管理,基本每次更改文件,20-40秒就被扫描到了,非常丝滑;这次以此来同步obsidian的插件和文件,达到多端同步; 我家里有一台台…

【C语言回顾】联合和枚举

前言1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 联合体的使用 2. 枚举2.1 枚举的声明2.2 枚举的特点2.3 枚举的使用 结语 #include<GUIQU.h> int main { 上期回顾: 【C语言回顾】结构体 个人主页&#xff1a;C_GUIQU 专栏&#xff1a;【C语言学习】 return 一键三连;…

x264 码率控制 MBtree 原理:mbtree_propagate_list 函数分析

mbtree_propagate_list 函数功能 是视频编码中宏块树传播算法的一部分,用于在编码决策过程中更新参考帧的传播成本。这个过程特别关注于如何处理运动向量(Motion Vectors, MVs)以及如何根据这些MVs对参考帧的成本进行加权,从而影响最终的编码选择。 该函数作为x264编码器…

【Android】联系人列表补充

真布局--叠起来垂直管 效果展示 部分代码&#xff08;在activity_main&#xff09;里面 <FrameLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"…

二十五、openlayers官网示例CustomOverviewMap解析——实现鹰眼地图、预览窗口、小窗窗口地图、旋转控件

官网demo地址&#xff1a; Custom Overview Map 这个示例展示了如何在地图上增加一个小窗窗口的地图并跟随着地图的旋转而旋转视角。 首先加载了一个地图。其中 DragRotateAndZoom是一个交互事件&#xff0c;它可以实现按住shift键鼠标拖拽旋转地图。 const map new Map({int…

Java分支结构详解

Java分支结构详解 前言一、if 语句基本语法表示一表示二表示三 代码示例判定一个数字是奇数还是偶数判定一个数字是正数还是负数判定某一年份是否是闰年 注意要点悬垂 else 问题代码风格问题分号问题 二、switch 语句基本语法代码示例根据 day 的值输出星期 注意事项break 不要…

QtCreator,动态曲线实例

样式图&#xff1a; .ui 在sloem1.ui文件中&#xff0c;拖入一个label控件&#xff0c; 头文件.h #include "QtGui/QPainter.h" #include "QtCore/QTimer.h"protected:bool eventFilter(QObject *obj,QEvent *event);void labelPaint();public slots: /…

Element Plus/vue3 无限级导航实现

在使用element plus 时&#xff0c;最初要使用的就是导航组件了&#xff0c;官网上看到的也就是写死的一级/二级导航&#xff0c;那么如何设计一个无限级且动态的导航呢&#xff1f;毋庸置疑&#xff0c;递归。废话不多说&#xff0c;直接看代码和效果&#xff1a; 代码&#x…

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈&#xff0c;亲爱的薅羊毛小伙伴们&#xff01; 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利&#xff01;我只花了短短两分钟&#xff0c;就搞到了一张5块钱火车票代金券&#xff0c;简直是天上掉馅饼的节奏啊&#xff01; 话不多说&#xff0c;薅羊毛的姿势给你们摆好…

树的非递归遍历(层序)

层序是采用队列的方式来遍历的 就比如说上面这颗树 他层序的就是&#xff1a;1 24 356 void LevelOrder(BTNode* root) {Que q;QueueInit(&q);if (root){QueuePush(&q, root);}while (!QueueEmpty(&q)){BTNode* front QueueFront(&q);QueuePop(&q);print…

Docker Compose使用

Docker-Compose是什么 docker建议我们每一个容器中只运行一个服务,因为doker容器本身占用资源极少&#xff0c;所以最好是将每个服务单独分割开来&#xff0c;但是这样我们又面临了一个问题&#xff1a; 如果我需要同时部署好多个服务&#xff0c;难道要每个服务单独写Docker…

202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋

202473读书笔记|《但愿呼我的名为旅人&#xff1a;松尾芭蕉俳句300》——围炉夜话&#xff0c;身顿心安&#xff0c;愿每个人都能在爱里自由驰骋 &#x1f60d;&#x1f60d;&#x1f929;&#x1f929; 译者序正文二正文三正文四正文五正文六正文七 《但愿呼我的名为旅人&…

网站笔记:huggingface——can you run it?

Can You Run It? LLM version - a Hugging Face Space by Vokturz 1 配置设置部分 Model Name就是需要测量的模型名称 GPU Vendor ——GPU供应商 Filter by RAM (按RAM过滤) 筛选出所有内存容量在选择范围之间的GPU GPU 下拉菜单选择具体的GPU型号 LoRa % trainable param…

MT3608B是一个恒定频率,6引脚SOT23电流模式升压转换器用于小型,低功耗应用的目的芯片IC

一般说明 该MT3608B是一个恒定频率&#xff0c;6引脚SOT23电流模式升压转换器用于小型&#xff0c;低功耗应用的目的。该MT3608B开关在1.2MHz&#xff0c;并允许使用微小&#xff0c;低成本的电容器和电感2毫米或更少的高度。内部软启动的结果在小浪涌电流和延长电池寿…

Linux网络——端口号理解与UDP协议

前言 在之前&#xff0c;我们学习了UDP通信与套接字编程&#xff0c;了解到需要使用端口号来表示网络中的数据需要传输到哪个进程&#xff0c;同时使用套接字的进行了UDP的通信。但当时在应用层&#xff0c;我们仅仅是浮于表面进行了初步的使用&#xff0c;今天我们来深入的理…