SpringBoot高校餐厅缴费系统
创始人
2025-06-01 22:39:42
0

SpringBoot高校餐厅缴费系统

帮朋友基于SpringBoot鲜花商城系统,订制开发了一套适用于高校餐厅缴费系统;添加的功能如下:
1.商品搜索功能
2.个人中心
3.购物车下单改造
4.支付宝功能接入
5.管理员板块校园卡管理功能

本系统涉及到的技术主要如下
后台:SpringBoot+JPA
前台:bootstrap+layui+thymeleaf模板引擎
数据库:MySQL8.0

有需要源代码的可以私信!

一、功能介绍

1.用户端

1.1.登录

1.2.商品搜索

1.3.查看商品详情

1.4.购物车

1.5.我的订单

1.6.个人中心

2.商家端

2.1.用户管理

2.2.校园卡管理

2.3.分类管理

2.4.商品管理

2.5.订单管理

二、使用说明

1.新增学生

1.1.商家新增学生

在这里插入图片描述

1.2.学生充值

在这里插入图片描述

在这里插入图片描述

2.学生商品搜索

学生端网站首页
在这里插入图片描述

学生端搜索功能
在这里插入图片描述

3.商品详情

在这里插入图片描述

4.购物车

4.1.加入购物车

在这里插入图片描述

4.2.购物车下单

在这里插入图片描述

5.我的订单

5.1.校验校园卡状态

校园卡状态为挂失,不可以支付
在这里插入图片描述

5.2.校验校园卡余额

校园卡余额不足,不可以支付

在这里插入图片描述

商家端充值1000,就可以支付了;

5.3.接入支付宝

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

商家端:充值后1100,消费750,剩余350,没毛病;

在这里插入图片描述

6.个人中心

6.1.账户名不可重复

在这里插入图片描述

6.2.账户名密码修改

6.3.挂失

在这里插入图片描述

7.商家端

在这里插入图片描述

三、附录

沙箱支付简介

1.配置沙箱支付

第一步:
1)登陆支付宝:https://open.alipay.com/
2)首页找到进入管理中心 -> 开发工具推荐选择【沙箱】
3)下载安装支付宝开放平台开发助手:
https://opendocs.alipay.com/common/02kipk
4)打开本地支付宝开放平台助手 -> 密钥工具 -> 生成密钥 -> 以默认方式(RSA2和PKCS8)生成应用私钥和应用公钥
5)在沙箱应用的开发信息中选择自定义密钥生成支付宝公钥(基于应用公钥生成支付宝公钥)第二步:配置沙箱账号(买家)并完成手动充值
https://open.alipay.com/develop/sandbox/account第三步:下载沙箱支付宝(只支持安卓)
https://open.alipay.com/develop/sandbox/tool/alipayclint沙箱工具 -> 支付宝客户端沙箱版 -> 请使用浏览器中的扫码功能扫描下载注:请使用Android手机扫码下载支付宝客户端沙箱版;如需登录,请访问沙箱账号,在商家信息中获取帐密

沙箱支付应用

实现思路

1.完成支付宝沙箱支付功能接入
2.支付成功后变更订单状态

1.完成支付宝沙箱支付功能接入

根据官方网站开发文档进行支付宝支付接入

https://opendocs.alipay.com/common/02kg69

AlipayConfig.java

package com.javaxl.config;import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
import com.javaxl.entity.Order;/*** 支付宝沙箱支付*/
public class AlipayConfig {public String goAlipay(Order order){Integer orderid = order.getId();String subject = order.getName();double totalAmount = order.getTotal();try {// 1. 设置参数(全局只需设置一次)Factory.setOptions(aliconfig());// 2. 发起API调用(subject商品标题、outTradeNo订单编号、totalAmount总金额、returnUrl异步通知地址)AlipayTradePagePayResponse response = Factory.Payment.Page().pay(subject+"",orderid+"",totalAmount+"",
//                            "http://localhost:8081/page/ok.html");  //支付成功之后的异步通知(跳出到自己系统的哪个位置)"http://localhost:8080/mall/order/pay.do?orderId="+orderid);  //支付成功之后的异步通知(跳出到自己系统的哪个位置)System.out.println(response.body);return response.body;}  catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}private Config aliconfig(){Config config=new Config();//沙箱支付宝地址config.gatewayHost="openapi.alipaydev.com";//协议https   httpclientsconfig.protocol="https";//应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号config.appId="2016093000634935";//支付宝公钥config.alipayPublicKey="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy/NfwxWr2SfktLUekBR+3w/MUjz1mnW7/wzTOkN1WWIx4i4Ak2m7XDl+evV76FPCcj40HfqgLXxxSVW5a1cCwJ8Z9EgEd7dd1J0EW6slx0v1XMHoPQgOkEVijSWZLLjVhw9x88IWtPTr93YGHYWgR7T9S0M58ABrXPO5eoRxjDdkPCdzyDSmeVixzXZcrhCBHsUMJqipEr8NQA6Iz8QYRYBvQxtkv8j7NZcu+tFfWZ0EPswbsYp/ie+LFjFxTKsov27aduM466Q9ECOYRhCJvB0IbTyY/KYc/VT8TvZIyBA3JP1w2KYoUnKgc5sAGt7ifVXjH3jc8rrC4rWeUIGVFQIDAQAB";//签名方式config.signType="RSA2";//商户私钥(应用私钥),您的PKCS8格式RSA2私钥config.merchantPrivateKey="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCvYd7rfO6O7P4ZdD7X/eqqr5J9fB08rGl7juyyn7c2/RAdjtg4Em4te6Jh4dLkHcQLIf5c4AQCfhqjlHX8fQbHt0MaQNIoeKtCOwJUd43XgaD+8CI+DFdFChA8ILL5KJYCZ6JonIbssayhjcIyLqnKi4D10cKJwekAV44YHHK51YGvn/OIMtOEzv+GglXDJeMjMEGBSWIjffZI2PTx8IP4eRTLSYbf7I6fo0y4vlxQrEqTpiSPGpBPjx/ws5A125UaEzkU6eNfnpC5AsHj7mV8JxXkObc9P0sxmC5jGr+zlG7UhY1ECgHnCioP8W0nwH2mmFuC9Tk7axkOtFGnROpRAgMBAAECggEAUBLdVqMpwDPQKAr9DlyuIdQbjBN4vdTyLCmrRDrLyd1s2DH54k/34ehK0WnrgZ9dfL++hOT6r7CntPv5ipgC2nh/uKLT0QqXFpweijYzmqtiuEMnPzEfPzRDCVDcpgmzw9FRQ3YD3FmaugAhJAxOFV3wOUvWCFNycGeJRtTmRJXHLSssMp4aCgM0ClwNsoxJFhTQGk/PHDWOoFH5apAzPLuesc6zU/zn7ooEpAyCjUfUUKVCjK0GQuNqQXJhDoEu48NcvGvkjNTWER//u2tZ77rzipLyF+UP6I7Zls/WsD/BNsq3JMGCjflpfuiwDK30HZ7VKAwNBg3CbOIhuEWV4QKBgQDUkDRzBPcnoaBRWRCJMjphkQLqDbuaTW2V6HWGST7fuBrEidtqeCr4KvoBx4sKowxPAOsBkkDzpTCDc3dlNOKgT5ScK6OoAAB3qvy1X8i46/KR5VDdQrhs4fxMFPybZS6mI9BUcZ/URGHQkmtBPWCive/8qK9LI5g1veh/bUamlQKBgQDTOJ8mHb6ILOu5VnWLwtDz55Rq6gyha+aRF9Cai2LCyXBEm5gOy8k4UJvILZwwLSavaEgoFl3OA8uVG17zXizGI0yggaTQZ81Mw9ig6LwAR2gcqmBVPX1xHF8jXVoAPDRjfX6sEfFhIJQyeWGzEJnJZAD/6ZPLM9hcAx+2R9MxzQKBgEoFZZ5gLklIyXFKmK2OJjJvsxoaaigTqoO3jaWTwCdcD0Y904DCFASTwrf36v1rRhAE+9FyQtgVwE0mWn+N6RV2YQP5VmZcic0iaBopHtb2o2QW/Q/v+hVApQFBla3vkE0ez594afYbUgy10E/Jtes2RWowu8povMqKNXqabS35AoGBAIYtUexEuOSIpLX31nQSLerDEeVZCO0CPlWtazbBlNtoW4k5zj6X9htwGYXwc2enRwvmku/kRXK5tnniCU9QY+D6S5MqyCgbyK8bOmH9dnA27ExJbyi3BxjzjPxKMQI1PJJ3BiEIxO2OZJYrxYSa5xaoEHqBRwGuzaKl2V9SATeBAoGAUKAXdBXBXSeoRnsZqi/N7sV1gSjpxkJV9nijqKYANE3RR8NnlWYh/mT+PiWR+UQhV3eUvBBGUmXg+uIL7xanhPVluWjWzGBwTKvpK06hMb/gN2RUR25FNizZDHzav1T86dbIFFoUTIsVbLtRDn4rZOIg/YHDbgmfVihgimbVtQE=";return config;}
}

web层

// 数据库修改订单状态@RequestMapping("pay.do")public String pay(int orderId, HttpServletResponse response) throws IOException {orderService.pay(orderId);return "mall/order/list";}// 接入支付宝完成支付功能@RequestMapping("prePay.do")@ResponseBodypublic String prePay(int orderId, HttpServletRequest request, HttpServletResponse response) throws IOException {Order order = orderService.findOne(orderId);AlipayConfig ac = new AlipayConfig();String goAlipay = ac.goAlipay(order);// 获取当前登录用户User user = (User) request.getSession().getAttribute("user");User u = userService.findById(user.getId());user.setMoney(u.getMoney() - order.getTotal());// 修改余额UserMapper userMapper = new UserMapper();try {userMapper.updateMoney(user);} catch (Exception e) {e.printStackTrace();}return goAlipay;}// 校验用户是否能够支付(如果是挂失状态、余额不足不可支付)@PostMapping("checkUserPay.do")@ResponseBodypublic ResultBean checkUserPay(int orderId, HttpServletRequest request, HttpServletResponse response)throws IOException {// 检查挂失状态UserMapper um = new UserMapper();ResultBean rs = new ResultBean<>();// 1.挂失状态 2.余额不足try {Map userInfo = um.queryUserByOrderId(orderId);String state = userInfo.get("state").toString();// 余额double money = Double.parseDouble(userInfo.get("money").toString());// 支付金额double total = Double.parseDouble(userInfo.get("total").toString());if (!"正常".equals(state)) {rs.setState(1);}else if (money < total) {rs.setState(2);}} catch (Exception e) {e.printStackTrace();}return rs;}

前端order/list.html变更如下

支付会引发页面跳转,所以要将ajax请求换成页面跳转的方式
//付款function pay(id) {$.ajax({type: "POST",url: "checkUserPay.do",data: "orderId=" + id,// 你的formidasync: false,error: function (request) {alert("Connection error");},success: function (result) {debugger;if (result.state == 1) {alert("用户处于挂失状态,不可以进行消费!");return;} else if (result.state == 2) {alert("用户余额不足,不可以进行消费!");return;}location.href = "prePay.do?orderId=" + id;}});
//             $.get("prePay.do?orderId=" + id, function (data) {
//                 if (data.state == 0) {
//                     layer.msg("付款成功!");
//                     window.setTimeout(function () {
//                         window.location.reload();
//                     },500);
//                 } else {
//                     layer.msg(data.message);
//                 }
//             });}

OrderController.java代码变更如下

@RequestMapping("/addOrder")
@ResponseBody
public String addOrder(User user,HttpServletRequest req,OrderDto orderDto){//获取购物车ShopCar shopCar = this.getShopCar(user.getId(), req);//获取结算商品集合List shopCarItems = this.getShopCarItems(shopCar, orderDto.getGids());//生成订单及订单项orderDto.setUserId(Long.parseLong(user.getId()));orderService.addOrder(orderDto,shopCarItems);//从购物车中删除已结算的商品shopCar.delete(orderDto.getGids());//跳转支付页面(下节课内容)AlipayConfig alipayConfig = new AlipayConfig();return alipayConfig.goAlipay(orderDto);
}

相关内容

热门资讯

最新或2023(历届)党的18...  下面是小编给大家整理的关于今年十八届五中全会的黑板报资料,希望对有需要的朋友有所帮助。  十八届五...
最新或2023(历届)十八届五...  下面是小编给大家整理的关于十八届五中全会精神要点的黑板报内容:第十八届五中全会精神要点解读,希望对...
最新或2023(历届)中共十八...   党的十八届五中全会于最新或2023(历届)10月26日至29日在京举行。全会审议通过了《中共中央...
最新或2023(历届)十八届五...   根据今年10月12日中央政治局会议的决定,党的十八届五中全会于10月26日至29日在北京召开。会...
最新或2023(历届)党的十八...   今年的十八届五中全会已经圆满落幕了,下面是小编给大家整理的关于十八届五中全会精神的黑板报内容:十...
最新或2023(历届)最美孝心... 小编今天给大家整理的相关黑板报内容是关于最美孝心少年事迹的相关资料简述,希望对大家有所帮助,欢迎阅读...
最新或2023(历届)最美孝心...   以下是小编给大家整理的最新或2023(历届)最美孝心少年黑板报内容:最新或2023(历届)最美孝...
最新或2023(历届)寻找最美...   寻找最美孝心少年黑板报内容:有孝心,不论天涯海角700字作文  俗话说“百善孝为先”,“孝”是中...
最新或2023(历届)寻找最美...  今天小编给大家分享的内容是关于最美孝心少年黑板报的资料:最美孝心少年观后感作文,希望对同学们有所帮...
最新或2023(历届)最美孝心...   很多学校的学生经过精心安排,在观看最美孝心少年事迹之后,各班相继出了《寻找最美孝心少年》黑板报。...
最新或2023(历届)寻找最美...  10月27日,中央电视台最新或2023(历届)“众里寻你——寻找最美孝心少年”大型公益活动颁奖典礼...
最新或2023(历届)全国消防...  一年一度的119消防日即将到来,最新或2023(历届)的主题是:参与社区消防 建设平安家园。关于消...
最新或2023(历届)全国消防... 每年的11月9日是中国的全国消防日,日期其实就是我们的火灾报警电话"119".所以最新或2023(历...
最新或2023(历届)最美孝心...   以下是小编给大家整理的关于最美孝心少年黑板报资料,主要是关于最美孝心少年事迹材料范文,希望对大家...
最新或2023(历届)学校11...   最新或2023(历届)是第25个消防日,最新或2023(历届)的主题是:参与社区消防 建设平安家...
最新或2023(历届)12月4...   2001年,中共中央、国务院决定将我国现行宪法实施日12月4日,作为每年的全国法制宣传日。在这一...
最新或2023(历届)世界艾滋...   12月1日是一年一度的世界艾滋病日。最新或2023(历届)世界艾滋病日是第28个世界艾滋病日。以...
最新或2023(历届)世界艾滋...   最新或2023(历届)12月1日是第28个“世界艾滋病日”。国务院防治艾滋病工作委员会办公室(简...
最新或2023(历届)中小学冬...   防火灾  防止火灾事故是各生产单位安全生产中的重点,须做好以下几项工作:  1、加强防火安全教育...
最新或2023(历届)校园世界...   世界艾滋病日是为了提高公众对艾滋病的认识,共同对抗艾滋病在全球传播,世界卫生组织1988年组织召...