本文所做的主要工作内容是微信小程序点餐程序的设计与实现。前端是基于微信小程序实现,小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,无需安装卸载。
这篇博客介绍微信点餐小程序菜单界面的布局、逻辑处理、数据处理。
点餐小程序菜单界面的布局代码如下

<view class="container">  <view wx:for="{{menus}}" wx:key="id" class="section"><view class="flex-wrp" style="flex-direction:row;"><image style="width: 500rpx; height: 200rpx; background-color: #eeeeee;" mode="aspectFill" src="{{item.image}}" bindtap="preview" data-imgsrc="{{item.image}}" ></image><view class="flex-item"><text>{{item.name}}</text>\n<text class="flex-desc">{{item.description}}</text>\n<text class="red">¥ {{item.price}}</text></view>   </view><button type='primary' bindtap="onbuy" data-id="{{item.id}}">购买</button>  </view><!--section-->
</view><!--container-->

逻辑处理代码部分

var common = require('../../utils/common.js')
var app = getApp();
Page({data: {menus: null},onLoad: function (options) {// 页面初始化 options为页面跳转所带来的参数var that = thiswx.request({url: common.baseUrl + 'index.php/api/menu/get_menus',header: {'content-type': 'application/json'},success: function (res) {that.setData({menus: res.data})}});},preview: function (e) {var imgsrc = e.target.dataset.imgsrc;wx.previewImage({current: imgsrc, // 当前显示图片的http链接urls: [imgsrc] // 需要预览的图片http链接列表})},onShareAppMessage: function () {return {title: '我在微餐厅点菜,快来啊',path: '/pages/menu/index'}},onbuy: function (e) {var id = e.target.dataset.id;wx.request({url: common.baseUrl + 'index.php/api/Shopping/add',method: 'get',data: {uid: app.d.userId,id:id},header: {'content-type': 'application/json'},success: function (res) {if (res.data.status == 1){wx.showToast({title: '添加成功',duration: 2000});}else{wx.showToast({title: res.data.err,duration: 2000});}},fail: function (e) {wx.showToast({title: e.data.err,duration: 2000});}});}
})

后端数据处理代码如下

<?php
// 本类由系统自动生成,仅供测试用途
namespace Api\Controller;
use Think\Controller;
class ShoppingController extends Controller {//***************************//  会员获取购物车列表接口//***************************public function index(){$shopping=M("shopping_char");$product=M("menu");$user_id = intval($_REQUEST['user_id']);if (!$user_id) {echo json_encode(array('status'=>0));exit();}/*$shop = $shopping->where(''.$qz.'shopping_char.uid='.intval($user_id))->join('left join __SHANGCHANG__ on __SHANGCHANG__.id = __SHOPPING_CHAR__.shop_id')->distinct(''.$qz.'shopping_char.shop_id')->field(''.$qz.'shangchang.id,'.$qz.'shangchang.name,'.$qz.'shangchang.logo')->select();foreach ($shop as $n=>$v){$shop[$n]['logo'] = __DATAURL__.$v['logo'];$shop[$n]['slist']=$shopping->where(''.$qz.'shopping_char.uid='.intval($user_id).' and '.$qz.'shopping_char.shop_id='.intval($v['id']))->join('LEFT JOIN __PRODUCT__ ON __SHOPPING_CHAR__.pid = __PRODUCT__.id')->field(''.$qz.'shopping_char.id,'.$qz.'product.id as proid,'.$qz.'product.name,'.$qz.'product.num as pnum,'.$qz.'product.price_yh,'.$qz.'product.photo_x,'.$qz.'shopping_char.num,'.$qz.'shopping_char.buff,'.$qz.'shopping_char.price')->select();//获取产品规格名称foreach ($shop[$n]['slist'] as $k=>$vl){$key=explode(',', $vl['buff']);foreach ($key as $m=>$val){$buff_text=M('guige')->where('id='.intval($val))->getField('name');$shop[$n]['slist'][$k]['g_name'] .= '&nbsp;'.$buff_text;}$shop[$n]['slist'][$k]['photo_x'] = __DATAURL__.$vl['photo_x'];}}*/$cart = $shopping->where('uid='.intval($user_id))->field('id,uid,pid,price,num')->select();foreach ($cart as $k => $v) {$pro_info = $product->where('id='.intval($v['pid']))->field('name,image')->find();$cart[$k]['pro_name']=$pro_info['name'];$cart[$k]['photo_x']=$pro_info['image'];}echo json_encode(array('status'=>1,'cart'=>$cart));exit();}//购物车商品删除public function delete(){$shopping=M("shopping_char");$cart_id=intval($_REQUEST['cart_id']);$check_id = $shopping->where('id='.intval($cart_id))->getField('id');if (!$check_id) {echo json_encode(array('status'=>1));exit();}$res = $shopping->where('id ='.intval($cart_id))->delete(); // 删除if($res){echo json_encode(array('status'=>1));exit();}else{echo json_encode(array('status'=>0));exit();}}//***************************//  会员修改购物车数量接口//***************************public function up_cart(){$shopping=M("shopping_char");$uid = intval($_REQUEST['user_id']);$cart_id = intval($_REQUEST['cart_id']);$num=intval($_REQUEST['num']);if (!$uid || !$cart_id || !$num) {echo json_encode(array('status'=>0,'err'=>'网络异常.'.__LINE__));exit();}$check = $shopping->where('id='.intval($cart_id))->find();if (!$check) {echo json_encode(array('status'=>0,'err'=>'购物车信息错误!'));exit();}$data=array();$data['num']=$num;$res = $shopping->where('id ='.intval($cart_id).' AND uid='.intval($uid))->save($data);if ($res) {echo json_encode(array('status'=>1,'succ'=>'操作成功!'));exit();}else{echo json_encode(array('status'=>0,'err'=>'操作失败.'));exit();}}//多个购物车商品删除public function qdelete(){$uid = intval($_REQUEST['uid']);if (!$uid) {echo json_encode(array('status'=>0,'err'=>'网络异常,请稍后再试.'));exit();}$shopping=M("shopping_char");$cart_id=trim($_REQUEST['cart_id'],',');if (!$cart_id) {echo json_encode(array('status'=>0,'err'=>'网络错误,请稍后再试.'));exit();}$res = $shopping->where('id in ('.$cart_id.') AND uid='.intval($uid))->delete(); // 删除if($res){echo json_encode(array('status'=>1));exit();}else{echo json_encode(array('status'=>0,'err'=>'操作失败.'));exit();}}//添加购物车public function add(){$uid = intval($_REQUEST['uid']);if (!$uid) {echo json_encode(array('status'=>0,'err'=>'登录状态异常.'));exit();}$pid = intval($_REQUEST['id']);$num = 1;if (!intval($pid) || !intval($num)) {echo json_encode(array('status'=>0,'err'=>'参数错误.'));exit();}//加入购物车$check = $this->check_cart(intval($pid));if ($check['status']==0) {echo json_encode(array('status'=>0,'err'=>$check['err']));exit;}$check_info = M('menu')->where('id='.intval($pid).' AND status=1')->find();//判断库存if (!$check_info) {echo json_encode(array('status'=>0,'err'=>'没有这个商品!'));exit;}$shpp=M("shopping_char");// $shu=trim($_POST['val'],',');// if($shu){//     //判断用户是否已经选择完规格,未选完则提示错误//   $a = explode(',', $check_info['pro_buff']);//  $b = explode(',', $shu);//   if (count($a)!==count($b) || in_array('0', $b)) {//         echo json_encode(array('status'=>0,'err'=>'请选择规格.'));//       exit;//     }// }else{//    if ($check_info['pro_buff']) {//      echo json_encode(array('status'=>0,'err'=>'请选择规格.'.__LINE__));//  }// }//判断购物车内是否已经存在该商品$data = array();$cart_info = $shpp->where('pid='.intval($pid).' AND uid='.intval($uid))->field('id,num')->find();if ($cart_info) {$data['num'] = intval($cart_info['num'])+intval($num);$shpp->where('id='.intval($cart_info['id']))->save($data);$res = $cart_info['id'];}else{$data['pid']=intval($pid);$data['num']=intval($num);$data['addtime']=time();$data['uid']=intval($uid);$data['shop_id']=intval($check_info['shop_id']);$ptype = 1;if (intval($check_info['pro_type'])) {$ptype = intval($check_info['pro_type']);}$data['type']=$ptype;$data['price'] = $check_info['price'];$res=$shpp->add($data);}if($res){echo json_encode(array('status'=>1,'cart_id'=>$res)); //该商品已成功加入您的购物车exit;}else{echo json_encode(array('status'=>0,'err'=>'加入失败.'));exit;}}//***************************//  会员立即购买下单接口//***************************public function check_shop(){$cart_id = trim($_REQUEST['cart_id'],',');$id=explode(',',$cart_id);if (!$cart_id) {echo json_encode(array('status'=>0));exit();}foreach ($id as $k=>$v){$shoop[$k]=M("shopping_char")->where('id ='.intval($v))->field('shop_id,pid')->find();}foreach($shoop as $key => $value){$result[$key] = M("product")->where('id='.intval($value['pid']))->field('id,price,price_yh')->select();$price[] = i_array_column($result[$key], 'price_yh');}//dump($price);exit;foreach($price as $keys => $va){$str .= implode(",", $va).",";}$str = trim($str, ",");$parr = explode(",", $str);if(array_sum($parr) && in_array("0", $parr)){echo json_encode(array('status'=>0));exit();}$names = i_array_column($shoop, 'shop_id');$arr=array_unique($names);$val= sizeof($arr);if($val=='1'){echo json_encode(array('status'=>1));exit();}else{echo json_encode(array('status'=>2));exit();}  }//购物车添加。删除检测公共方法public function check_cart($pid){//检查产品是否存在或删除$check_info = M('menu')->where('id='.intval($pid).' AND status=1')->find();if (!$check_info) {return array('status'=>0,'err'=>'商品不存在或已下架.');}return array('status'=>1);}   /*去除HTNL标签*/public function html_entity($array){foreach ($array as $key => $value) {$array[$key]['content'] = strip_tags(html_entity_decode($value['content']));}return $array;}}

下面展示下部分界面截图




今天就先介绍这些吧,接下来只要有空我就会详细介绍微信点餐小程序的登录、数据展示、支付等设计思想和逻辑实现。今天就分享到这里吧!

微信点餐小程序设计与实现(一)相关推荐

  1. “李记餐厅”微信点餐小程序+后台管理系统

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 "李记餐厅"微信点餐小程序+后台管理系统 效果视频 http ...

  2. 【毕业设计之微信小程序系列】基于APP的微信点餐小程序的设计与实现

    基于APP的微信点餐小程序的设计与实现 摘 要 本文介绍了一种基于APP的微信点餐小程序的设计与实现方法.该系统利用微信公众号作为用户入口,用户可以通过微信扫码进入点餐系统,选择菜品.下单.支付等操作 ...

  3. 微信点餐小程序开发_分享微信点餐小程序可以实现哪些功能

    线下餐饮实体店都开始摸索发展网上订餐服务.最多人选择的是入驻外卖平台,但抽成高,推广还要另买流量等问题,也让不少商家入不敷出.在这种情况下,建立自己的微信订餐小程序,做自己的私域流量是另一种捷径.那么 ...

  4. Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台

    由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下 前五章是部署笔记,后面是知识点的详细讲解,大家可以先看部署笔记,部署起来后,再跟着详细知识学习. 第 ...

  5. 微信点餐小程序(外卖配送)解决方案

    点餐小程序.餐厅小程序,连接线下服务场景,使用方便体验好,打造营销+会员+点餐+支付+外卖等一体化服务开发解决方案 一.开发成本低,用户易获取,流程体验好 ● 商家无需高昂的开发费用,简单几步授权绑定 ...

  6. 微信点餐小程序怎么做?微信小程序点餐系统制作

    顾客不用排队等待,打开微信扫一扫二维码,就能通过微信点餐支付,对于大部分餐厅来说,都已经成为常见的现象,小程序彻底融入了我们的生活,小程序也已经成为餐饮行业必备的工具.通过餐饮小程序,不仅可以让用户获 ...

  7. 基于微信教室预约小程序设计与实现开题答辩PPT

    基于微信教室预约小程序设计与实现开题答辩PPT

  8. 基于微信企业公司小程序设计与实现开题答辩PPT

    基于微信企业公司小程序设计与实现开题答辩PPT

  9. 分享微信点餐小程序搭建步骤_微信点餐功能怎么做

    线下餐饮实体店都开始摸索发展网上订餐服务.最多人选择的是入驻外卖平台,但抽成高,推广还要另买流量等问题,也让不少商家入不敷出.在这种情况下,建立自己的微信订餐小程序,做自己的私域流量是另一种捷径.那么 ...

最新文章

  1. WSS 代码执行的权限提升
  2. 学python好不好-Python就业前景好不好?学Python好找工作吗?
  3. 比较不错的一个ios找茬游戏源码
  4. ruby动态new对象
  5. sklearn:sklearn.GridSearchCV函数的简介、使用方法之详细攻略
  6. ROS安装配置相关问题
  7. boost::container模块实现显式实例表的测试程序
  8. jquery选择器:与、或逻辑
  9. UVa 11475 - Extend to Palindrome
  10. 程序员面试金典 - 面试题 02.05. 链表求和
  11. DataView数据视图的使用 winform
  12. 依赖反转原理,IoC容器和依赖注入:第2部分
  13. Delphi中一些DLL的运用。
  14. Python程序-打印斐波拉契数列
  15. 大数据应用能力层次模型
  16. java九宫格代码_Java实现九宫格的简单实例
  17. 《李尔王》:重拾李尔王的话语权力
  18. 吴式太极拳的特点-和基础要求
  19. matlab画双曲线的四种方法
  20. 让物体沿椭圆轨道运动

热门文章

  1. model.train()与model.eval()的用法、Dropout原理、relu,sigmiod,tanh激活函数、nn.Linear浅析
  2. oracle误删了表怎么恢复数据,oracle误删除表或者表数据的恢复方法总结
  3. golang内幕之协程状态切换
  4. 数仓理论知识之什么是度量,什么是粒度,什么是事实,什么是维度
  5. hoolilaw解读:在美国如何应对交通罚单
  6. TCP/IP 第1章 概 述
  7. Waited long enough for: ServiceRecord 问题解决
  8. delphi android 蓝牙,Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)
  9. 嵌入式开发QT教程-5集 纯代码编写UI界面
  10. python异常值处理四分位法_Python清除异常值四分位法