文末获取源码
开发语言:Java
框架:springboot
技术:JSP
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7/8.0
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括校园外卖配送系统的网络应用,在国外网上管理系统已经是很普遍的方式,不过国内的网上管理系统可能还处于起步阶段。校园外卖配送系统采用java技术,基于mysql开发,实现了个人中心,用户管理,配送员管理,美食分类管理,特色美食管理,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理,系统管理等内容进行管理,本系统具有良好的兼容性和适应性,为用户提供更多的校园外卖配送信息,也提供了良好的平台,从而提高系统的核心竞争力。
本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的开发心得。
通过前面的功能分析可以将校园外卖配送系统的功能分为管理员,用户和配送员三个部分,系统的主要功能包括个人中心,用户管理,配送员管理,美食分类管理,特色美食管理,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理,系统管理等内容。本系统是针对已注册登录的用户看到满意的校园外卖配送信息进行操作而设计的。
1、用户的功能及权限
用户登录注册后,进入系统对个人中心,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理等功能进行操作管理。
2、配送员的功能及权限
用户登录注册后,进入系统对个人中心,订单信息管理,配送接单管理,取消配送管理,送达通知管理等功能进行操作管理。
3、管理员的功能及权限
用户信息的添加和管理,校园外卖配送详细信息添加和管理和文档信息添加和管理以及网站信息管理,这些都是管理员的功能。
系统功能结构图是系统设计阶段,系统功能结构图只是这个阶段一个基础,整个系统的架构决定了系统的整体模式,是系统的根据。校园外卖配送系统的整个设计结构如图
用户登录系统,通过输入用户名、密码,选择角色并点击登录进行系统登录操作,如图
在用户注册页面通过填写用户账号,密码,确认密码,用户姓名,联系方式等信息完成用户注册,如图
管理员登录系统后,可以对个人中心,用户管理,配送员管理,美食分类管理,特色美食管理,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理,系统管理等功能模块进行相应操作,如图
在用户管理页面可以对用户账号,用户姓名,照片,性别,联系方式等信息进行查看,修改和删除等操作,如图
在配送员管理页面可以对配送账号,配送姓名,头像,性别,联系电话,身份证等信息进行查看,修改和删除等操作,如图
在美食分类管理页面可以对美食分类信息进行查看,修改和删除等操作,如图
在订单信息管理页面可以对订单编号,美食名称,图片,美食分类,价格,数量,总金额,配送地址,订单状态,下单时间,用户账号,用户姓名,联系方式,是否支付等信息进行查看,修改和删除等操作,如图
在特色美食管理页面可以对美食名称,图片,美食分类,口味,特色,主食材,价格,数量等信息进行查看,修改,查看评论和删除等操作,如图
在轮播图管理页面可以对名称,值等信息进行查看和修改等操作,如图
用户登录系统后,可以对个人中心,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理等功能模块进行相应操作,如图
在订单信息管理页面可以对订单编号,美食名称,图片,美食分类,价格,数量,总金额,配送地址,订单状态,下单时间,用户账号,用户姓名,联系方式,是否支付等信息进行撤销订单,查看和删除等操作,如图
在订单取消管理页面可以对订单编号,美食名称,图片,美食分类,总金额,取消原因,取消时间,用户账号,用户姓名,是否审核,审核回复,是否支付等信息进行查看和删除操作,如图
在配送接单管理页面可以对订单编号,美食名称,图片,配送地址,配送状态,用户账号,联系方式,配送账号,配送姓名,联系电话,取单时间,是否审核,审核回复等信息进行查看和删除操作,如图
配送员登录系统后,可以对个人中心,订单信息管理,配送接单管理,取消配送管理,送达通知管理等功能进行相应操作,如图
在取消配送管理页面可以对订单编号,美食名称,取消原因,取消时间,配送账号,用户账号等信息进行查看和删除等操作,如图
在配送接单管理页面可以对配送状态,是否审核,审核回复等信息进行取消配送,送达通知,查看和删除等操作,如图
/**
* 订单取消
* 后端接口
* @author
* @email
* @date 2022-03-26 17:40:36
*/
@RestController
@RequestMapping("/dingdanquxiao")
public class DingdanquxiaoController {
@Autowired
private DingdanquxiaoService dingdanquxiaoService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map params,DingdanquxiaoEntity dingdanquxiao,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
dingdanquxiao.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper ew = new EntityWrapper();
PageUtils page = dingdanquxiaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dingdanquxiao), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map params,DingdanquxiaoEntity dingdanquxiao,
HttpServletRequest request){
EntityWrapper ew = new EntityWrapper();
PageUtils page = dingdanquxiaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dingdanquxiao), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( DingdanquxiaoEntity dingdanquxiao){
EntityWrapper ew = new EntityWrapper();
ew.allEq(MPUtil.allEQMapPre( dingdanquxiao, "dingdanquxiao"));
return R.ok().put("data", dingdanquxiaoService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(DingdanquxiaoEntity dingdanquxiao){
EntityWrapper< DingdanquxiaoEntity> ew = new EntityWrapper< DingdanquxiaoEntity>();
ew.allEq(MPUtil.allEQMapPre( dingdanquxiao, "dingdanquxiao"));
DingdanquxiaoView dingdanquxiaoView = dingdanquxiaoService.selectView(ew);
return R.ok("查询订单取消成功").put("data", dingdanquxiaoView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
DingdanquxiaoEntity dingdanquxiao = dingdanquxiaoService.selectById(id);
return R.ok().put("data", dingdanquxiao);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
DingdanquxiaoEntity dingdanquxiao = dingdanquxiaoService.selectById(id);
return R.ok().put("data", dingdanquxiao);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody DingdanquxiaoEntity dingdanquxiao, HttpServletRequest request){
dingdanquxiao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(dingdanquxiao);
dingdanquxiaoService.insert(dingdanquxiao);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody DingdanquxiaoEntity dingdanquxiao, HttpServletRequest request){
dingdanquxiao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(dingdanquxiao);
dingdanquxiaoService.insert(dingdanquxiao);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody DingdanquxiaoEntity dingdanquxiao, HttpServletRequest request){
//ValidatorUtils.validateEntity(dingdanquxiao);
dingdanquxiaoService.updateById(dingdanquxiao);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
dingdanquxiaoService.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 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 wrapper = new EntityWrapper();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
}
int count = dingdanquxiaoService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
server:
port: 8080
servlet:
context-path: /jspmv0k22
spring:
devtools:
restart:
enabled: true #设置开启热部署
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3308/jspmv0k22?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
mvc:
view:
prefix: /WEB-INF/pages/
suffix: .jsp #jsp视图解析
resources:
static-locations:
#mybatis:
## mapper-locations: classpath:/mapper/*.xml
## type-aliases-package: com.pojo
# mapper-locations: mapper/*.xml
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
auto-mapping-behavior: full
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:/mapper/*.xml