历时三个月,我发布了一款外卖返钱小程序

近几年,推广外卖红包爆火,各种推广外卖红包的公众号层出不穷。于是,我就在想外卖红包究竟是怎么一回事。就这样,我带着问题开始了关于外卖红包的研究。

在研究的过程中,我开始了解商品联盟、推广分成、cps等一系列相关的术语。最后,我明白外卖红包其实就是推广分成,外卖平台会对某些店铺设置隐藏奖励,用户通过分享的链接领取红包进行下单后,分享者会获得一定的收入。了解这些后,我便着手如何将这些隐藏的分成让利给下单的用户,因此也就有了下面的小程序。

“天省宝”小程序提供了一键解决今天吃什么难题,美团外卖和饿了么隐藏红包领取,以及领取红包下单后可获得分成奖励。

代码技术

服务端:使用PHP+MySQL编写服务端接口

前端:使用UniApp开发并封装成微信小程序

界面截图介绍

一、外卖红包

提供美团和饿了么外卖红包领取,下单可获得分成(平台只抽取极少一部分分成,作为开发和日常维护费用)

领取饿了么红包

在这里插入图片描述

领取美团外卖红包

在这里插入图片描述

二、今天吃什么

提供一键解决今天吃什么难题,可随机抽取不同时间段的菜品

在这里插入图片描述

随机抽取菜品,我使用的是定时器setInterval进行多次获取菜品

<template>
<view class="food-top"><view class="food-title flex-center">今天{{row.time_text && row.time_text != '不限' ? row.time_text: ''}}<textclass="ml5">{{formData.name}}</text>{{startLoading ? '!': '?'}}</view><view class="food-start"><view class="start-text" @click="chooseMenu()">{{buttonText}}</view></view>
</view>
<script>
// 声明定时器
var timer = null;
export default {components: {},data() {return {buttonText: "开始", // 按钮文字row: {cate_id: 0, // 就餐类型idtime_text: '', // 就餐类型文字},// 抽取菜品结果formData: {name: '什么'},cateList: []};},onLoad() {this.getList();},onHide() {this.endMenu()},onUnload() {this.endMenu()},methods: {getList() {this.$api.get('/api/food/menuList', this.queryForm).then(res => {this.foodList = res.data.list;this.cateList = res.data.cate_list;this.row = res.data.row;});},// 选择类型selectCate(item) {this.playSound()this.queryForm.cate_id = item.idthis.$global.showToast('成功选择“' + item.name + '”类型,请开始选择')this.initMenu()},// 随机选择菜单chooseMenu() {this.playSound()if (this.buttonText == '开始' || this.buttonText == '换一个') {// 开始选择this.startMenu()} else {// 结束选择this.buttonText = '换一个'this.startLoading = truethis.endMenu()this.recordMenu()}},// 记录手动选择结果recordMenu() {// menuChoosethis.$api.get('/api/food/menuChoose', this.formData).then(res => {// console.log(res.data.length)if (res.data.msg) {this.$global.showToast(res.data.msg)}});},// 初始化菜单initMenu() {this.buttonText = '开始'this.formData.name = '什么'this.startLoading = falseclearInterval(timer)this.getList()},// 开始选择startMenu() {this.buttonText = '停'this.startLoading = falsetimer = setInterval(() => {let row = this.getRandValue(this.foodList)// console.log(row)this.formData.name = row.name}, 50)},// 结束选择endMenu() {// 记录选择结果 清楚定时clearInterval(timer)},getRandValue(list = []) {let arr = listlet index = Math.floor((Math.random() * arr.length))return arr[index];},}
};
</script>
</template>

三、我的页面

提供分成提现、收益明细和排行、好友等相关功能

在这里插入图片描述

收益明细页面,展示了最近10天内的收益、累计总收益和近30日的收益

在这里插入图片描述

收益明细的柱状图使用的是echarts官方提供的小程序版本echarts-for-weixin组件。详细代码如下:

<template>
// 2. 页面使用echarts组件
<uni-ec-canvas class="uni-ec-canvas" id="year-canvas" ref="yearCanvas" canvas-id="year-canvas" :ec="ec"></uni-ec-canvas>
</template>
<script>
// 1. 需要引入echarts相关的组件
import uniEcCanvas from '@/pagesMine/components/cloud/uni-ec-canvas/uni-ec-canvas.vue';
import * as echarts from '@/pagesMine/components/cloud/uni-ec-canvas/echarts.min.js';
var chart = null;
export default {components: {// 注册echarts组件uniEcCanvas},data() {return {// 格式化echarts组件为柱状图样式ec: {lazyLoad: true},optionYear: {tooltip: {trigger: 'axis',axisPointer: {// 坐标轴指示器,坐标轴触发有效type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'}},grid: {//设置 上下左右距离dom容器距离 控制图标大小left: '1%',right: '1%',bottom: '2%',top: '8%',//是否显示刻度标签 true显示containLabel: true},//直角坐标系配置//设置x轴配置xAxis: {type: 'category',axisTick: {show: false,alignWithLabel: true},nameTextStyle: {color: '#666666'},axisLabel: {show: true,interval: 0,// rotate: 40,textStyle: {color: '#666',fontSize: '10',fontWeight: 'bold'}},axisLine: {lineStyle: {color: '#666',width: 1}},data: ['寿险', '重疾', '意外', '医疗', '年金']},//设置y轴配置yAxis: {type: 'value',axisLine: {show: false //y轴线消失},axisLabel: {show: true,textStyle: {color: '#666',fontSize: '10'}},axisTick: {show: false}},series: [{type: 'line',data: [20, 50, 40, 10, 20],smooth: true,areaStyle: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: '#6f9989'},{offset: 1,color: '#c4d7c7'}])},itemStyle: {color: '#6f9989',lineStyle: {color: '#6f9989'}},label: {show: true,position: 'top',formatter: params => {// console.log(params);if (params.data > 0) {return params.data;} else {return '';}},color: '#666666',fontStyle: 'PingFang SC',fontWeight: 'bold',fontSize: '12'}}]}};},onLoad(options) {this.getIncome();},methods: {// 获取服务端数据 并进行绘图getIncome() {this.$api.get('/api/person/incomeStatistics', {}).then(res => {this.row = res.data;this.optionYear.xAxis.data = res.data.income_day[0];this.optionYear.series[0].data = res.data.income_day[1];// 获取不到 canvas实例this.$nextTick(() => {setTimeout(() => {this.$refs.yearCanvas.init(this.initYearChart);}, 300);});this.isLoading = false;},rs => {this.isLoading = false;});},// 绘成柱状图initYearChart(canvas, width, height, canvasDpr) {// console.log(canvas, width, height, canvasDpr);chart = echarts.init(canvas, null, {width: width,height: height,devicePixelRatio: canvasDpr});canvas.setChart(chart);chart.setOption(this.optionYear);return chart;},}
}
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot3+vue3从0到1开发实战项目(一)

一. 可以在本项目里面自由发挥拓展 二. 知识整合项目使用到的技术 后端开发 &#xff1a; Validation, Mybatis,Redis, Junit,SpringBoot3 &#xff0c;mysql&#xff0c;Swagger, JDK17 &#xff0c;项目部署 前端开发&#xff1a; Vue3&#xff0c;Vite&#xff0c;Router…

DNS的各种进阶新玩法

你们好&#xff0c;我的网工朋友&#xff0c;今天和你聊聊DNS。 01 什么是DNS&#xff1f; mac地址诞生&#xff0c;可是太不容易记忆了&#xff0c;出现了简化了IP形式&#xff0c;它被直接暴露给外网不说&#xff0c;还让人类还是觉得比较麻烦&#xff0c;干脆用几个字母算了…

【Git】一文教你学会 submodule 的增、删、改、查

添加子模块 $ git submodule add <url> <path>url 为想要添加的子模块路径path 为子模块存放的本地路径 示例&#xff0c;添加 r-tinymaix 为子模块到主仓库 ./sdk/packages/online-packages/r-tinymaix 路径下&#xff0c;命令如下所示&#xff1a; $ git subm…

用自己热爱的事赚钱,是多么的幸福

挖掘天赋可能有些困难&#xff0c;但挖掘爱好就简单多啦&#xff01;最幸福的事情就是能用自己喜欢的事情赚钱。 我们要说的是一个博主&#xff0c;他非常喜欢骑自行车&#xff0c;虽然他的工作是在外贸公司做销售&#xff0c;但每当有空时&#xff0c;他都会骑自行车。而且他…

Go iota简介

当声明枚举类型或定义一组相关常量时&#xff0c;Go语言中的iota关键字可以帮助我们简化代码并自动生成递增的值。本文档将详细介绍iota的用法和行为。 iota关键字 iota是Go语言中的一个预定义标识符&#xff0c;它用于创建自增的无类型整数常量。iota的行为类似于一个计数器…

3款免费次数多且功能又强大的国产AI绘画工具

hi&#xff0c;同学们&#xff0c;本期是我们第55 期 AI工具教程 最近两个月&#xff0c;国内很多AI绘画软件被关停&#xff0c;国外绝大部分AI绘画工具费用不低&#xff0c;因此 这两天我 重新整理 国产 AI绘画 工具 &#xff0c; 最终 筛选了 3款功能强大&#xf…

LeeCode前端算法基础100题(3)- N皇后

一、问题详情&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后…

虚拟机系列:vmware和Oracle VM VirtualBox虚拟机的区别,简述哪一个更适合我?以及相互转换

一. VMware和Oracle VM VirtualBox虚拟机的区别主要体现在以下几个方面: 首先两种软件的安装使用教程如下: VMware ESXI 安装使用教程 Oracle VM VirtualBox安装使用教程 商业模式:VMware是一家商业公司,而Oracle VM VirtualBox是开源软件; 功能:VMware拥有更多的功能和…

Leetcode200. 岛屿数量

Every day a Leetcode 题目来源&#xff1a;200. 岛屿数量 解法1&#xff1a;深度优先搜索 设目前指针指向一个岛屿中的某一点 (i, j)&#xff0c;寻找包括此点的岛屿边界。 从 (i, j) 向此点的上下左右 (i1,j)&#xff0c;(i-1,j)&#xff0c;(i,j1)&#xff0c;(i,j-1) …

“圆柱-计算公式“技术支持网址

该软件可以计算圆柱的底面圆周长、底面积、侧面积和体积。 您在使用中有遇到任何问题都可以和我们联系。我们会在第一时间回复您。 邮箱地址&#xff1a;elmo30zeongmail.com 谢谢&#xff01;

如何将本地websocket发布至公网并实现远程访问?

本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…

VR云游:让旅游产业插上数字化翅膀,打造地方名片

自多地入冬降温以来&#xff0c;泡温泉成了许多人周末度假的选择&#xff0c;在气温持续走低的趋势下&#xff0c;温泉游也迎来了旺季&#xff1b;但是依旧有些地区温度依旧温暖&#xff0c;例如南京的梧桐美景也吸引了不少游客前去打卡&#xff0c;大家穿着汉服与金黄的树叶合…

【AI考证笔记】NO.1人工智能的基础概念

以下部分内容来自于百度智能云人才认证培训讲义&#xff0c;腾讯等也有人工智能类似的讲义&#xff0c;限时免费&#xff0c;也就是不报考&#xff0c;也能系统学习&#xff0c;课程做的都是不错的。有感兴趣的朋友&#xff0c;可以去检索学习。 本系列是学习笔记&#xff0c;…

6个常用的聚类评价指标

评估聚类结果的有效性&#xff0c;即聚类评估或验证&#xff0c;对于聚类应用程序的成功至关重要。它可以确保聚类算法在数据中识别出有意义的聚类&#xff0c;还可以用来确定哪种聚类算法最适合特定的数据集和任务&#xff0c;并调优这些算法的超参数(例如k-means中的聚类数量…

C语言——从键盘输人三角形的三个边长 a、b、c,求出三角形的面积。

从键盘输人三角形的三个边长 a、b、c,求出三角形的面积。求三角形的面积用公式areasqrt(s*(s-a)*(s-b)*(s-c)),其中 s1/2(a十bc)。注:要求对输人三角形的三个边长做出有效性判断。 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<math.h> int main…

前置微小信号放大器在生物医学中有哪些应用

前置微小信号放大器在生物医学领域中具有广泛的应用。生物医学信号通常具有较小的振幅和较低的幅频响应&#xff0c;因此需要借助放大器来增强信号以便进行准确的测量、监测和分析。以下是前置微小信号放大器在生物医学中的主要应用。 心电图&#xff08;ECG&#xff09;放大器…

Spring第一课,了解IDEA里面的文件,回顾Cookie和Session,获取Session,Cookie,Header的方式

目录 IDEA第一课&#xff08;熟悉里面内容&#xff09; 建立连接 -RequestMapping 路由映射 请求 1.传递单个参数​编辑 2.多个参数​编辑 3.传递数组 4.传递一个集合&#xff0c;但是这里我们传递的时候发生了500的错误 简单介绍JSON 回顾Cookie和S…

js检测dom变化的方法:MutationObserver

前言 检测一个原生dom的变化,如一个div的颜色,大小,所在位置,内部元素的属性是否变化,更深层dom树上的变化等等。 都可以使用一个window上暴露出来的一个api:MutationObserver 语法 官方地址:MutationObserver.MutationObserver() - Web API 接口参考 | MDN 使用new Mutat…

【大数据】Docker部署HMS(Hive Metastore Service)并使用Trino访问Minio

本文参考链接置顶&#xff1a; Presto使用Docker独立运行Hive Standalone Metastore管理MinIO&#xff08;S3&#xff09;_hive minio_BigDataToAI的博客-CSDN博客 一. 背景 团队要升级大数据架构&#xff0c;需要摒弃hadoop&#xff0c;底层使用Minio做存储&#xff0c;应用…

干货 | 携程酒店基于血缘元数据的数据流程优化实践

作者简介 九号&#xff0c;携程数据技术专家&#xff0c;关注数据仓库架构、数据湖、流式计算、数据治理。 一、背景 元数据MetaData狭义的解释是用来描述数据的数据&#xff0c;广义的来看&#xff0c;除了业务逻辑直接读写处理的那些业务数据&#xff0c;所有其它用来维持整个…