概要
本系统是面向所有人的外卖点餐系统。系统用户角色可以分为管理员和用户。管理员可以登录后台管理端进行后台工作的管理,用户可以登录前台餐厅进行操作。
管理员可以管理员工信息、分类管理、导出分类信息数据表格、菜品信息管理、套餐信息管理、订单明细查询、订单管理、导出订单明细数据表格、修改个人信息等。用户可以查看菜品信息、查看菜品详情、选择菜品规格、管理购物车、收货地址管理、修改个人信息、查看订单信息、下单支付等。
整体架构流程
系统采用 Vue 前端框架加 AJAX 异步通信技术增加体验感。考虑当用户访问量过大时,数据库压力大,反应时间长,所以使用 Redis做缓存。本系统采用了前后端分离的方式,在后端框架中我们可将其看成三层结构 Web 服务层、业务逻辑服务层和持久层,前端则是用 Vue 搭建的 HTML 页面,前后端通过 Axios封装的 AJAX 技术跨域传值。数据则用 Json 格式封装,在这里前后端分离架构图如下所示。
核心业务设计
用户登录设计
微信小程序可以利用微信官方供应的登录能力,可以便利地获取用户身份标识和创立用户体系。开发者服务器根据用户标识生成自定义的登录态,用于识别用户身份然后在后续业务逻辑中进行前后端交互。为了确保应用数据的安全,开发者服务器不会将“session_key”发送到小程序,也不会向外部提供该密钥。临时登录凭证(“code” 只能使用一次。用户登录流程如下图所示。
用户下单设计
用户进入微信小程序后浏览菜品,然后添加菜品到购物车并进行下单,结算订单后用户选择是否确认订单,确认订单后将进入支付步骤,用户完成支付操作后并且商家同意接单后骑手就可以进行派送;如果商家拒绝订单,系统会自动进行退款步骤,订单将会被取消,订单费用会退还给用户。具体下单流程如下图所示。
具体代码如下:
@PostMapping("/submit")
public R<Object> aliPay(@RequestBody Orders orders){
Orders submit = ordersService.submit(orders);
long orderId = IdWorker.getId(); //生成支付订单号
AlipayBean bean = ordersService.getBean(submit,orderId);
//获得初始化的 AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AliPayConfig.gatewayUrl,
AliPayConfig.app_id, AliPayConfig.merchant_private_key, "json", AliPayConfig.charset,
AliPayConfig.alipay_public_key, AliPayConfig.sign_type);
//设置请求参数
AlipayTradePagePayRequest aliPayRequest = new AlipayTradePagePayRequest();
//商户订单号,后台可以写一个工具类生成一个订单号,必填
String order_number = new String(bean.getOut_trade_no());
//付款金额,从前台获取,必填
String total_amount = new String(bean.getTotal_amount());
//订单名称,必填
String subject = new String(bean.getSubject());
aliPayRequest.setNotifyUrl(AliPayConfig.notify_url);
aliPayRequest.setReturnUrl(AliPayConfig.return_url);
aliPayRequest.setBizContent("{\"out_trade_no\":\"" + order_number + "\","
+ "\"total_amount\":\"" + total_amount + "\","
+ "\"subject\":\"" + subject + "\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求
String result = null;
try {
result = alipayClient.pageExecute(aliPayRequest).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
支付系统设计
采用微信的 JSAPI 支付接口来实现支付功能,在支付场景中通过微信支付模块完成收款。JSAPI 支付适用于线下场所、公众号场景和 PC 网站场景。业务流程如下图所示
页面展示
小程序端用户登录授权界面
小程序端创建订单界面
后台管理系统——订单明细,支持条件查询,导出excel订单表
小结
` 提示:需要源码或文档的小伙伴请添加主页微信