基于javaweb的SSM+Maven在线点餐系统(java+ssm+jsp+mysql+maven+layui)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

030023072402

040023072402

050023072402

060023072402

070023072402

基于javaweb的SSM+Maven在线点餐系统(java+ssm+jsp+mysql+maven+layui)

一、项目简述

功能包括: 前台实现:用户浏览菜单、菜品分类筛选、查看菜单详 情、添加购物车、购物车结算、会员券、个人订单查询等 等。 后台实现:餐系管理、菜品管理、订单管理、系统管理、 酉己备员管理等。 系统分为:高或管理员、顾客、厨师、配送员等等。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
    //查找该用户下首选的地址
AddressEntity address = addressMapper.selectDefaultedAddressByUserId(vo.getUserId());
if (addressMapper.addAddress(vo) > 0){
if (vo.getDefaulted()==1 && address!=null) {
//修改该地址为非首选
addressMapper.modifyAddressUndefaulted(address.getAddressId());
}
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "地址新增成功");
}else {
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "地址新增失败");
}
return map;
}

/**
* 修改地址
* @param vo
* @param session
* @return
*/
@Override
public Map<String, Object> modifyAddress(AddressVo vo, HttpSession session) {
vo.setUserId(((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId());
Map<String, Object> map = new HashMap<>(16);
AddressEntity address = addressMapper.selectDefaultedAddressByUserId(vo.getUserId());
if (addressMapper.modifyAddress(vo) > 0) {
if (vo.getDefaulted()==1 && address!=null) {
//修改该地址为非首选
addressMapper.modifyAddressUndefaulted(address.getAddressId());
}
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "地址修改成功");
}else {
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "地址修改失败");
}
return map;
}

/**
* 删除地址
* @param addressId
* @return
*/
@Override
public Map<String, Object> deleteAddress(Long addressId) {
Map<String, Object> map = new HashMap<>(16);
if (addressMapper.deleteAddress(addressId) > 0) {
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "地址删除成功");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 * @param vo
* @return
*/
@Override
public LayuiTableDataResult findAddressListByUserId(AddressVo vo) {
PageHelper.startPage(vo.getPage(), vo.getLimit());
List<AddressEntity> addressList = addressMapper.findAddressListByUserId(vo);
PageInfo<AddressEntity> pageInfo = new PageInfo<>(addressList);
return new LayuiTableDataResult(pageInfo.getTotal(), pageInfo.getList());
}

/**
* 添加地址
* @param vo
* @param session
* @return
*/
@Override
public Map<String, Object> addAddress(AddressVo vo, HttpSession session) {
vo.setUserId(((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId());
Map<String, Object> map = new HashMap<>(16);
//查找该用户下首选的地址
AddressEntity address = addressMapper.selectDefaultedAddressByUserId(vo.getUserId());
if (addressMapper.addAddress(vo) > 0){
if (vo.getDefaulted()==1 && address!=null) {
//修改该地址为非首选
addressMapper.modifyAddressUndefaulted(address.getAddressId());
}
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "地址新增成功");
}else {
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "地址新增失败");
}
return map;
}

/**
* 修改地址
* @param vo
* @param session
* @return
*/
@Override
public Map<String, Object> modifyAddress(AddressVo vo, HttpSession session) {
vo.setUserId(((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        } else {
map.put(SystemConstant.FLAG, false);
map.put(SystemConstant.MESSAGE, "【" + vo.getTitle() + "】菜单信息修改失败");
}
return map;
}

/**
* 删除菜单
* @param menuId
* @return
*/
@Override
public Map<String, Object> deleteMenu(Integer menuId) {
Map<String, Object> map = new HashMap<>(16);
//删除菜单前先查询是否还有角色仍有使用该菜单的权限
if (menuMapper.countRoleByMenuId(menuId) == 0){
//删除菜单
menuMapper.deleteMenu(menuId);
map.put(SystemConstant.FLAG, true);
map.put(SystemConstant.MESSAGE, "菜单删除成功");
}else {
map.put(SystemConstant.FLAG, false);
map.put(SystemConstant.MESSAGE, "仍有角色拥有该菜单的使用权限,删除失败");
}
return map;
}

}
package edu.jmu.sudi.service.impl;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
        order.setRealName(((String) map.get("realName")));
order.setPhone(((String) map.get("phone")));
if (map.get("ticketId")!=null && ((String) map.get("ticketId"))!=""){
order.setTicketId(Long.parseLong((String) map.get("ticketId")));
order.setCheap(ticketMapper.findTicketById(Long.parseLong((String) map.get("ticketId"))).getCheap());
}
//1.3 获取当前用户的购物车,判断日供量
List<ShopcartEntity> shopcart = shopcartMapper.findAllShopcartByUserId(order.getUserId());
// for (ShopcartEntity shopcartEntity : shopcart) {
// //1. 查找当日该菜品剩余供量
// Integer todaySale = orderMapper.findTodaySale(shopcartEntity.getFoodId());
// //2. 判断购买量是否大于剩余供量
// if (shopcartEntity.getNumCount() > shopcartEntity.getDayStock()-todaySale){
// //2.1 购买量大于剩余供量:提示供量不足
// String msg = "很抱歉,【" + shopcartEntity.getFoodName() + "】供量不足您的" + shopcartEntity.getNumCount() + "需求";
// map.put(SystemConstant.MESSAGE, msg);
// return map;
// }else if (shopcartEntity.getNumCount() == shopcartEntity.getDayStock()-todaySale){
// //2.2 购买量等于剩余供量:允许购买,并且下架菜品
// foodMapper.foodOffShelf(shopcartEntity.getFoodId(), "自动下架");
// }
// }

try {
//1.2 生成订单
if (orderMapper.generateOrder(order) <= 0) {
throw new RuntimeException();
}
Integer totalCount = 0;
BigDecimal totalPrice = new BigDecimal(0);
//根据当前用户的购物车,生成订单细则
for (ShopcartEntity item : shopcart) {
OrderDetailEntity orderDetail = new OrderDetailEntity();
orderDetail.setSkuId(item.getSkuId());
orderDetail.setOrderId(order.getOrderId());
orderDetail.setAmount(item.getNumCount());
orderDetail.setItemPrice(item.getSkuPrice().multiply(new BigDecimal(item.getNumCount())));
totalCount += orderDetail.getAmount();
totalPrice = totalPrice.add(orderDetail.getItemPrice());

//3. 菜品销量增加
//3.1 根据skuId查找菜品spu的Id
FoodSkuEntity foodSku = foodSkuMapper.findFoodSkuBySkuId(item.getSkuId());
//3.2 增加SPU销量 和 SKU销量 + 1.3 生成订单细则
if (orderDetailMapper.generateOrderDetail(orderDetail) <= 0 ||
foodMapper.addSaleCount(foodSku.getFoodId(), item.getNumCount()) <= 0 ||
foodSkuMapper.addSkuSale(item.getSkuId(), item.getNumCount()) <= 0){
throw new RuntimeException();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41


/**
* 菜品SPU管理控制器
*/
@RestController
@RequestMapping("/backstage/food")
public class FoodManageController {

@Autowired
private FoodService foodService;

/**
* 根据页面条件查询菜品SPU信息列表
* @param vo
* @return
*/
@RequestMapping("/list")
public String findFoodListByPage(FoodVo vo){
LayuiTableDataResult foodListByPage = foodService.findFoodListByPage(vo);
return JSON.toJSONString(foodListByPage);
}

/**
* 菜品图片上传
* @param foodImage
* @return
*/
@RequestMapping("/uploadFile")
public String uploadFile(MultipartFile foodImage) {
Map<String, Object> map = foodService.uploadFile(foodImage);
return JSON.toJSONString(map);
}

/**
* 添加菜品SPU信息并且生成菜品SKU信息
* @param mapStr
* @return
*/
@RequestMapping("/add")
public String addFood(@RequestParam String mapStr, FoodVo vo, HttpSession session) {


项目链接:
https://javayms.github.io?id=011422282105200cc
https://javayms.pages.dev?id=011422282105200cc