点菜微信小程序开发,实操案例,附源码

点菜微信小程序开发简介

随着互联网技术逐渐的深入到生活,人们的生活消费习惯,已经发生很大的变化。就餐厅用餐而言,互联网技术和移动互联网技术的应用也己相关普及,比如早几年前就出现的餐厅点餐系统,就通过信息化的技术手段代替原来纸质菜单点餐的传统方式。这种方式一是可以方便顾客实现点餐叫号,二是方便商家进行人单合一的统一管理,减少了报单出错率,提升了用户的体验,所以得以大面积的应用和普及。

而移动互联网的出现,让智能手机的赋能更大广泛,腾讯微信适时推出微信小程序,使得智能手机的用户可以通过微信进行相应的信息化管理和参与,比如目前大面积应用的小程序商城,就将商业的业态从传统的PC互联网直接植入手机移动互联网,这种轻量级的APP应用,极大的方便使用者,也给商家通过微信带了大量的流量。

微信小程序的功能推出,极大方便了全国2亿多的微信用户,在这个生态体系上构建了一个宠大的商业帝国,而小程序开发的应用,又快速的渗透到各个行业。在餐饮行业的信息化应用,也发生了一系统变化,比如通过微信小程序实现用户自助点餐功能,这就极大的方便了用户,减少了点餐的距离限制,用户可以在餐厅打开手机微信小程序进行点餐,也可以在去餐厅的途中或者甚至在家就可以点餐,打破了时空的限制,更加的灵活方便。经过调查和实地分析,基于对微信小程序的研究,开发了这套微信小程序点餐系统,为餐饮业的信息化建设添砖加瓦。

根据上述对微信小程序点餐系统的功能性需求分析,设计出了微信小程序点餐系统的功能结构图,如下图1-1所示。
点菜微信小程序开发前台用户登陆小程序,采用微信账户绑定登陆实现。目前由于测试账户没开通此权限,只能用开发者的身份来进行测试进行。前台用户可以在手机小程序上浏览系统发布的餐品,实现完整的订餐流程。看中相应的餐品可以添加到购物车中,然后下单购买,并可以查看相关的订单信息。

后台用户必须登陆方可进行相应的操作,主要进行相应的业务数据管理。

用户管理:可以管理前端和后端的用户信息,进行相应的数据增删改查操作。

餐品管理:可以管理点餐系统发布的餐品信息,进行相应的数据增删改查操作。

订单管理:对前端用户的下单信息进行相应的管理操作。

分类管理:主要实现对前端点餐显示的餐品分类管理。

系统管理:主要可以实现对系统的相关基本信息的管理操作。

点菜微信小程序环境介绍

扫描二维码关注公众号,回复: 14886506 查看本文章

后台开发:

语言环境:Java: jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat: tomcat8.5.31

开发工具:IDEA或eclipse

前端开发:

开发工具:微信开发者工具

开发技术:微信小程序

整体采用前后端分离开发,前后端单独测试

点菜微信小程序系统展示

3.1 微信小程序功能模块的展示

3.1.1 前台首页展示

微信小程序点餐前端主要就是实现点餐操作,主要包含预约点餐、菜单浏览、电话订餐、客服个模块。具体操作界面展示如下图4-1所示。
点菜微信小程序开发`package com.imooc.controller;

import com.imooc.constant.CookieConstant;
import com.imooc.constant.RedisConstant;
import com.imooc.dataobject.SellerInfo;
import com.imooc.enums.ResultEnum;
import com.imooc.exception.SellException;
import com.imooc.form.SellerForm;
import com.imooc.repository.SellerInfoRepository;
import com.imooc.utils.CookieUtil;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;

import lombok.extern.slf4j.Slf4j;

@RestController
@RequestMapping(“/admin”)
@Slf4j
public class AdminUserController {

@Autowired
SellerInfoRepository repository;

/**
 * 后台用户登陆操作
 * @param phone
 * @param password
 * @param response
 * @return
 */
@GetMapping("/loginAdmin")
public String loginAdmin(@RequestParam("phone") String phone,
                         @RequestParam("password") String password,
                         HttpServletResponse response) {
    SellerInfo sellerInfo = repository.findByPhone(phone);
    log.info("商家信息={}", sellerInfo);
    if (sellerInfo != null && sellerInfo.getPassword().equals(password)) {
        String token = UUID.randomUUID().toString();
        log.info("登录成功的token={}", token);
        Integer expire = RedisConstant.EXPIRE;
        //3. 设置token至cookie
        CookieUtil.set(response, CookieConstant.TOKEN, token, expire);
        return "登录成功";
    } else {
        throw new SellException(ResultEnum.LOGIN_FAIL);
    }
}

@GetMapping("/logout")
public ModelAndView logout(HttpServletRequest request,
                           HttpServletResponse response,
                           Map<String, Object> map) {
    //1. 从cookie里查询
    Cookie cookie = CookieUtil.get(request, CookieConstant.TOKEN);
    if (cookie != null) {
        //2. 清除cookie
        CookieUtil.set(response, CookieConstant.TOKEN, null, 0);
    }
    map.put("msg", ResultEnum.LOGOUT_SUCCESS.getMessage());
    map.put("url", "/sell/seller/order/list");
    return new ModelAndView("common/success", map);
}

/*
 * 页面相关
 * */

@GetMapping("/list")
public ModelAndView list(Map<String, Object> map) {
    List<SellerInfo> categoryList = repository.findAll();
    map.put("categoryList", categoryList);
    return new ModelAndView("admin/list", map);
}

@GetMapping("/index")
public ModelAndView index(@RequestParam(value = "sellerId", required = false) Integer sellerId,
                          Map<String, Object> map) {
    SellerInfo sellerInfo = repository.findBySellerId(sellerId);
    map.put("category", sellerInfo);

    return new ModelAndView("admin/index", map);
}

/**
 * 保存/更新
 */
@PostMapping("/save")
public ModelAndView save(@Valid SellerForm form,
                         BindingResult bindingResult,
                         Map<String, Object> map) {
    log.info("SellerForm={}", form);
    if (bindingResult.hasErrors()) {
        map.put("msg", bindingResult.getFieldError().getDefaultMessage());
        map.put("url", "/sell/admin/index");
        return new ModelAndView("common/error", map);
    }
    SellerInfo sellerInfo = new SellerInfo();
    try {
        if (form.getSellerId() != null) {
            sellerInfo = repository.findBySellerId(form.getSellerId());
        }
        BeanUtils.copyProperties(form, sellerInfo);
        repository.save(sellerInfo);
    } catch (SellException e) {
        map.put("msg", e.getMessage());
        map.put("url", "/sell/admin/index");
        return new ModelAndView("common/error", map);
    }

    map.put("url", "/sell/admin/list");
    return new ModelAndView("common/success", map);
}

}`

项目总结

微信小程序点餐系统的使用者主要包含两种用户角色,其一是管理员角色,其二是前台用户角色,这两个角色的具体功能如下:

管理员角色:管理员登录微信小程序点餐系统后台管理后可以进行相应的管理操作,主要包含:用户管理、餐品管理、订单管理、分类管理等操作;

前台用户角色:前台用户登录微信小程序点餐系统后可以进行餐品浏览、添加购物车、在线点餐、个人订单管理等操作。

系统整体功能完整,根据微信小程序点餐系统需求分析,进行了微信小程序点餐系统概要设计,并在此基础上进行详细设计。完成了整个项目的详细设计后,就开始了项目的编码阶段。

猜你喜欢

转载自blog.csdn.net/juzilvpai/article/details/125095202