开发工具:IDEA,jdk1.8 数据库:mysql5.7
前端框架:layui
技术:springboot+mybatis-plus
本项目为点餐系统,主要分三个角色:用户、商户、管理员
用户前台:实现了登录、注册、菜品浏览、查看详情、加入购物车、生成订单、支付、评价、修改个人信息、修改密码、我的订单、我的评价、我的收藏、浏览记录、收货地址、退出登录等功能。
商户后台:登录、注册、修改密码、修改个人信息、系统管理(评价管理、通知公告)、订单管理(退款处理、订单配送、订单列表)、餐饮管理、退出登录。
管理员后台:登录、修改密码、修改个人信息、用户管理、角色管理、菜单管理、评价管理、字典管理、通知公告、餐饮管理、订单管理、订单统计、退出登录。
用户截图:
商户后台:
管理员后台:
/**
* 餐饮评价 信息操作处理
*
* @author IT教程资源
*/
@Controller
@RequestMapping("/user/remark")
public class UserGoodsRemarkController extends BaseController {
private String prefix = "normal";
@Autowired
private IUserOrderService userOrderService;
@Autowired
private IUserGoodsRemarkService userGoodsRemarkService;
/**
* 跳转到菜品评论页面
*
* @param orderId
* @param mmap
* @return
*/
@GetMapping("/{orderId}")
public String userGoodsRemark(@PathVariable("orderId") Long orderId, ModelMap mmap) {
UserOrder order = userOrderService.selectUserOrderById(orderId);
mmap.put("order", order);
mmap.put("menuType", "order");
mmap.put("topTitle", "用户中心");
return prefix + "/user_remark_save";
}
/**
* 查询餐饮评价列表
*
* @return
*/
@PostMapping("/list")
@ResponseBody
public TableDataInfo list() {
Long userId = this.getUserId();
startPage();
List list = userGoodsRemarkService.selectOrderRemarkForUser(userId);
return getDataTable(list);
}
/**
* 新增保存餐饮评价
*
* @param goodsId
* @param msg
* @param score
* @param orderId
* @return
*/
@PostMapping("/save")
public String addSave(Long[] goodsId, String[] msg, Integer[] score, Long orderId) {
UserGoodsRemark[] remarks = new UserGoodsRemark[goodsId.length];
for (int i = 0; i < goodsId.length; i++) {
remarks[i] = new UserGoodsRemark(orderId, goodsId[i], this.getUserId(), score[i], msg[i]);
}
userGoodsRemarkService.insertUserGoodsRemark(remarks);
return "redirect:/user/remark";
}
/**
* 删除餐饮评价
*
* @param id
* @return
*/
@GetMapping("/remove")
public String remove(Long id) {
userGoodsRemarkService.deleteUserGoodsRemarkByIds(id.toString());
return "redirect:/user/remark";
}
/**
* 删除餐饮评价(多选)
*
* @param ids
* @return
*/
@PostMapping("/remove")
@ResponseBody
public AjaxResult remove(String ids) {
return toAjax(userGoodsRemarkService.deleteUserGoodsRemarkByIds(ids));
}
/**
* 跳转用户菜品评价页面
*
* @return
*/
@RequiresPermissions("system:userGoodsRemark:view")
@GetMapping("/seller")
public String remark() {
return "/system/userGoodsRemark/userGoodsRemark";
}
/**
* 查询店家的菜品评价
*
* @param userGoodsRemark
* @return
*/
@PostMapping("/listForSeller")
@ResponseBody
public TableDataInfo listForSeller(UserGoodsRemark userGoodsRemark) {
if (!this.getUser().isAdmin()) {
userGoodsRemark.getParams().put("sellerId", this.getUserId());
}
startPage();
List list = userGoodsRemarkService.selectUserGoodsRemarkList(userGoodsRemark);
return getDataTable(list);
}
}
package com.project.web.controller.system; import java.util.List; import java.util.Map; import com.project.web.controller.common.BaseController; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.project.common.base.AjaxResult; import com.project.common.utils.ShiroUtils; import com.project.system.domain.SysMenu; import com.project.system.domain.SysRole; import com.project.system.service.ISysMenuService; /** * 菜单信息 * * @author */ @Controller @RequestMapping("/system/menu") public class MenuController extends BaseController { private String prefix = "system/menu"; @Autowired private ISysMenuService menuService; /** * 跳转菜单页面 * * @return */ @RequiresPermissions("system:menu:view") @GetMapping() public String menu() { return prefix + "/menu"; } /** * 查询菜单列表 * * @param menu * @return */ @RequiresPermissions("system:menu:list") @GetMapping("/list") @ResponseBody public Listlist(SysMenu menu) { List menuList = menuService.selectMenuList(menu); return menuList; } /** * 删除菜单 * * @param menuId * @return */ @RequiresPermissions("system:menu:remove") @PostMapping("/remove/{menuId}") @ResponseBody public AjaxResult remove(@PathVariable("menuId") Long menuId) { if (menuService.selectCountMenuByParentId(menuId) > 0) { return error(1, "存在子菜单,不允许删除"); } if (menuService.selectCountRoleMenuByMenuId(menuId) > 0) { return error(1, "菜单已分配,不允许删除"); } ShiroUtils.clearCachedAuthorizationInfo(); return toAjax(menuService.deleteMenuById(menuId)); } /** * 跳转新增菜单页面 * * @param parentId * @param mmap * @return */ @GetMapping("/add/{parentId}") public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) { SysMenu menu = null; if (0L != parentId) { menu = menuService.selectMenuById(parentId); } else { menu = new SysMenu(); menu.setMenuId(0L); menu.setMenuName("主目录"); } mmap.put("menu", menu); return prefix + "/add"; } /** * 新增保存菜单 * * @param menu * @return */ @RequiresPermissions("system:menu:add") @PostMapping("/add") @ResponseBody public AjaxResult addSave(SysMenu menu) { menu.setCreateBy(ShiroUtils.getLoginName()); ShiroUtils.clearCachedAuthorizationInfo(); return toAjax(menuService.insertMenu(menu)); } /** * 跳转修改菜单页面 * * @param menuId * @param mmap * @return */ @GetMapping("/edit/{menuId}") public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap) { mmap.put("menu", menuService.selectMenuById(menuId)); return prefix + "/edit"; } /** * 修改保存菜单 * * @param menu * @return */ @RequiresPermissions("system:menu:edit") @PostMapping("/edit") @ResponseBody public AjaxResult editSave(SysMenu menu) { menu.setUpdateBy(ShiroUtils.getLoginName()); ShiroUtils.clearCachedAuthorizationInfo(); return toAjax(menuService.updateMenu(menu)); } /** * 跳转选择菜单图标页面 * * @return */ @GetMapping("/icon") public String icon() { return prefix + "/icon"; } /** * 校验菜单名称 * * @param menu * @return */ @PostMapping("/checkMenuNameUnique") @ResponseBody public String checkMenuNameUnique(SysMenu menu) { return menuService.checkMenuNameUnique(menu); } /** * 加载角色菜单列表树 * * @param role * @return */ @GetMapping("/roleMenuTreeData") @ResponseBody public List