基于java+ssm+vue的外卖微信小程序

项目介绍

随着科技的进步,微信小程序慢慢进入了生活当中,由于轻便快捷,方便使用,基于微信这个大平台,使得小程序飞速发展,趋于成熟,因此,针对用户对外卖点餐方面的需求,特开发了本外卖小程序。

该外卖小程序分为小程序前端和Java后端系统,遵循数据前后端交互,相互分离。前端小程序应用官方提供的API文档,主要功能为查看外卖菜品信息、外卖点餐以及管理个人订单等。后端系统则是由Java语言实现,基于B/S结构,使用MySQL数据库开发,使得管理员、商家后台界面简单整洁,便于管理员和商家使用和管理。

本外卖小程序拥有界面简洁、操作简单易懂,管理方便,功能齐全等优点,具有很高的应用价值。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,微信开发者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net

系统实现

5.1微信端功能模块的实现
5.1.1注册登录界面
未有账号的用户可进行注册操作,注册后可进入登录界面进行登录系统,注册登录界面展示如图5-1所示。
在这里插入图片描述

图5-1 注册登录界面图

5.1.2首页界面
用户通过微信平台打开本外卖小程序,登录后进入了系统的首页,在首页用户可查看所有菜品,首页界面展示如图5-2所示。
在这里插入图片描述

图5-2 首页界面图

5.1.3商家界面
用户在商家界面可查看所有商家,并可选择查看详情,商家界面展示如图5-3所示。
在这里插入图片描述

图5-3 商家界面图

5.1.4菜品详情界面
用户可选择菜品查看菜品详情信息,并可进行加入购物车和立即购买操作,菜品详情界面展示如图5-4所示。
在这里插入图片描述

图5-4 菜品详情界面图

5.1.5购物车界面
用户在购物车界面可查看购物车已有菜品信息,并可对其进行删除、修改数量或者结算操作,购物车界面如图5-5所示。
在这里插入图片描述

图5-5 购物车界面图

5.1.6我的订单界面
用户在我的订单界面可查看个人订单信息,我的订单界面如图5-6所示。
在这里插入图片描述

图5-6 我的订单界面图

5.1.7用户信息界面
用户可修改个人信息,用户信息界面如图5-7所示。
在这里插入图片描述

图5-7 用户信息界面图

5.2服务端功能模块的实现
5.2.1服务端登录界面
管理员和商家要想进入对于角色后台必须进行登录操作,服务端登录界面展示如图5-8所示。
在这里插入图片描述

图5-8 服务端登录界面图

5.2.2用户管理界面
管理员可进行查看、修改和删除用户信息,用户管理界面展示如图5-9所示。
在这里插入图片描述

图5-9 用户管理界面图

5.2.3商家管理界面
管理员可增删改查商家信息,商家管理界面展示如图5-10所示。添加商家界面展示如图5-11所示。
在这里插入图片描述

图5-10商家管理界面图
在这里插入图片描述

图5-11添加商家界面图

5.2.4菜品信息管理界面
商家可增删改查菜品信息,管理员可查看、修改和删除菜品信息,菜品信息管理界面展示如图5-12所示,添加菜品信息界面展示如图5-13所示。
在这里插入图片描述

图5-12 菜品信息管理界面图
在这里插入图片描述

图5-13 添加菜品信息界面图

5.2.5菜品分类管理界面
商家可增删改查菜品分类信息,管理员可查看、修改和删除菜品分类信息,菜品分类管理界面展示如图5-14所示。
在这里插入图片描述

图5-14 菜品分类管理界面图

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.OrdersEntity;
import com.entity.view.OrdersView;

import com.service.OrdersService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 订单
 * 后端接口
 * @author 
 * @email 
 * @date
 */
@RestController
@RequestMapping("/orders")
public class OrdersController {
    @Autowired
    private OrdersService ordersService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,OrdersEntity orders, 
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		orders.setUserid((Long)request.getSession().getAttribute("userId"));
    	}

        EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
		PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,OrdersEntity orders, HttpServletRequest request){
        EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
		PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( OrdersEntity orders){
       	EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
      	ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
        return R.ok().put("data", ordersService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(OrdersEntity orders){
        EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
 		ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
		OrdersView ordersView =  ordersService.selectView(ew);
		return R.ok("查询订单成功").put("data", ordersView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody OrdersEntity orders, HttpServletRequest request){
    	orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(orders);
    	orders.setUserid((Long)request.getSession().getAttribute("userId"));

        ordersService.insert(orders);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody OrdersEntity orders, HttpServletRequest request){
    	orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(orders);

        ordersService.insert(orders);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody OrdersEntity orders, HttpServletRequest request){
        //ValidatorUtils.validateEntity(orders);
        ordersService.updateById(orders);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        ordersService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<OrdersEntity> wrapper = new EntityWrapper<OrdersEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}


		int count = ordersService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

论文参考

在这里插入图片描述

目 录
1 绪 论 1
1.1课题背景 1
1.2设计原则 1
1.3论文组织结构 2
2系统关键技术 3
2.1微信小程序 3
2.2微信小程序API接口 3
2.3 JavaScript简介 3
2.4 MYSQL数据库 4
3系统分析 5
3.1可行性分析 5
3.1.1 技术可行性 5
3.1.2经济可行性 5
3.1.3操作可行性 5
3.1.4时间可行性 5
3.2系统性能分析 6
3.3 系统功能分析 6
3.4系统流程分析 8
3.4.1注册流程 8
3.4.2登录流程 9
3.4.3添加信息流程 10
4系统设计 11
4.1系统设计要求 11
4.2系统结构设计 11
4.3系统顺序图设计 12
4.3.1 登录顺序图 12
4.3.2 注册顺序图 12
4.4数据库设计 13
4.4.1数据库概念结构设计 13
4.4.2数据库逻辑结构设计 15
5 系统的实现 18
5.1微信端功能模块的实现 18
5.1.1注册登录界面 18
5.1.2首页界面 18
5.1.3商家界面 19
5.1.4菜品详情界面 20
5.1.5购物车界面 21
5.1.6我的订单界面 22
5.1.7用户信息界面 23
5.2服务端功能模块的实现 24
5.2.1服务端登录界面 24
5.2.2用户管理界面 25
5.2.3商家管理界面 25
5.2.4菜品信息管理界面 26
5.2.5菜品分类管理界面 27
6系统测试 28
6.1测试任务 28
6.2测试的原则 28
6.3测试的目标 29
6.4测试方法 30
6.5测试结论 30
结 论 31
参考文献 32
谢 辞 33

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q_2781179521

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值