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

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

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+mysql的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等等。

                //将user信息保存到session中
                session.setAttribute(SystemConstant.USERLOGIN, userLogin);
                map.put(SystemConstant.LOGINFLAG, true);
            }else {
                //密码错误
                map.put(SystemConstant.LOGINFLAG, false);
                map.put(SystemConstant.MESSAGE, "密码错误!");
            }
        }else {
            //用户名不存在
            map.put(SystemConstant.LOGINFLAG, false);
            map.put(SystemConstant.MESSAGE, "用户名不存在!");
        }
        return map;
    }

    /**
     * 用户退出登录时的业务逻辑
     * @param session
     */
    @Override
    public void exit(HttpSession session) {
        UserEntity user = (UserEntity)session.getAttribute(SystemConstant.USERLOGIN);
        //保存用户登出信息
        userMapper.setLogoutSuccessInfo(user.getUserId());
        session.removeAttribute(SystemConstant.USERLOGIN);
    }

    /**
     * 根据页面条件查询用户列表
     * @param vo
     * @return
     */
    @Override
    public LayuiTableDataResult findUserListByPage(UserVo vo) {
        //设置分页信息
        PageHelper.startPage(vo.getPage(), vo.getLimit());
        //调用分页查询的方法
        List<UserEntity> userList = userMapper.findUserListByPage(vo);
        //创建分页对象,将查询到的数据放进去
        PageInfo<UserEntity> pageInfo = new PageInfo<>(userList);
        //返回数据
        return new LayuiTableDataResult(pageInfo.getTotal(), pageInfo.getList());
    }

    /**
     * 后台添加用户
     * @param vo
     * @return
     */
    @Override
    public Map<String, Object> addUser(UserVo vo) {
                map.put(SystemConstant.FLAG, true);
                map.put(SystemConstant.MESSAGE, "新增菜品SPU信息成功,请尽快完善该菜品的SKU信息");
            }else {
                map.put(SystemConstant.FLAG, false);
                map.put(SystemConstant.MESSAGE, "新增菜品SPU信息失败!");
            }
        }else {
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "新增菜品SPU信息失败");
        }
        return map;
    }

    /**
     * 生成菜品规格信息和SKU信息
     * @param foodParamList
     * @param foodId
     * @return
     */
    @Override
    public boolean generateSku(List<Map<String, Object>> foodParamList, Long foodId, String foodName) {
        try{
            //生成一个二维数组
            String[][] foodattrArr = new String[foodParamList.size()][];
            for (int i = 0; i < foodParamList.size(); i++) {
                //将Map映射转换成json字符串
                String json = JSON.toJSONString(foodParamList.get(i), true);
                Long attrId = Long.parseLong(foodParamList.get(i).get("attrId").toString());
                //将json数组转换成List集合
                List<String> foodvalueList = JSON.parseArray(JSON.parseObject(json).getString("foodvalueArr"), String.class);
                foodattrArr[i] = new String[foodvalueList.size()];
                for (String foodvalueName : foodvalueList) {
                    //将菜品规格添加到规格表中
                    String name = ((String) JSONObject.parseObject(foodvalueName).get("foodvalueName"));
                    foodvalueMapper.addFoodvalue(foodId, attrId, name);
                    foodattrArr[i][foodvalueList.indexOf(foodvalueName)] = name;
                }
            }
            //遍历二维数组,拼接SKU名称,生成菜品SKU信息
            List<StringBuilder> skuName = new ArrayList<>();
            List<StringBuilder> skuNameList = FoodSkuUtil.buildSku(foodattrArr, foodName, skuName);
            for (StringBuilder sb : skuNameList) {
                foodSkuMapper.addFoodSku(sb.toString(), foodId);
            }
            return true;
        }catch (Exception e) {
            return false;
        }
    }
 */
@Service
@Transactional
public class TicketTypeServiceImpl implements TicketTypeService {

    @Autowired
    private TicketTypeMapper ticketTypeMapper;

    /**
     * 根据页面条件查询优惠券类型集合
     * @param vo
     * @return
     */
    @Override
    public LayuiTableDataResult findTicketTypeListByPage(TicketTypeVo vo) {
        PageHelper.startPage(vo.getPage(), vo.getLimit());
        List<TicketTypeEntity> ticketTypeListByPage = ticketTypeMapper.findTicketTypeListByPage(vo);
        PageInfo<TicketTypeEntity> pageInfo = new PageInfo<>(ticketTypeListByPage);
        return new LayuiTableDataResult(pageInfo.getTotal(), pageInfo.getList());
    }

    /**
     * 新增优惠券类型
     * @param vo
     * @param session
     * @return
     */
    @Override
    public Map<String, Object> addTicketType(TicketTypeVo vo, HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        String username = ((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUsername();
        vo.setLastModifyBy(username);
        if (ticketTypeMapper.addTicketType(vo) > 0) {
            map.put(SystemConstant.FLAG, true);
            map.put(SystemConstant.MESSAGE, "新增优惠券类型成功");
        }else {
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "新增优惠券类型失败");
        }
        return map;
    }

    /**
     * 修改优惠券类型
     * @param vo
     * @param session
     * @return
        Map<String, Object> map = new HashMap<>(16);
        //不可以父级菜单就是本身,直接返回修改错误
        if (vo.getPid().equals(vo.getId())){
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "修改菜单失败,您不可以选择本身作为父级菜单");
            return map;
        }
        if (menuMapper.modifyMenu(vo) >= 1){
            map.put(SystemConstant.FLAG, true);
            map.put(SystemConstant.MESSAGE, "【" + vo.getTitle() + "】菜单信息修改成功");
        } 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;
    }

}

            treeNodes.add(treeNode);
        }
        return new LayuiTableDataResult(treeNodes);
    }

    /**
     * 对该角色的菜单权限进行授权
     * @param menuIds
     * @param roleId
     * @return
     */
    @Override
    public Map<String, Object> grantMenu(String menuIds, Long roleId) {
        Map<String, Object> map = new HashMap<>(16);
        try {
            //将菜单ID拆分出来
            String[] menuIdArr = menuIds.split(",");
            //删除该角色的所有已有菜单权限
            roleMapper.deleteAllMenuByRoleId(roleId);
            for (String menuId : menuIdArr) {
                //对角色进行菜单授权
                roleMapper.grantMenu(roleId, Integer.parseInt(menuId));
            }
            map.put(SystemConstant.MESSAGE, "角色菜单关系授权成功");
        } catch (Exception e) {
            map.put(SystemConstant.MESSAGE, "角色菜单关系授权失败");
        }
        return map;
    }

    /**
     * 删除角色
     * @param roleId
     * @return
     */
    @Override
    public Map<String, Object> deleteRole(Long roleId) {
        Map<String, Object> map = new HashMap<>(16);
        //判断角色下是否还有用户,有的话不准删除
        if (roleMapper.countUserByRoleId(roleId) == 0){
            //删除该角色的所有菜单授权
    public Map<String, Object> findAllShopcartByUserId(HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        Long userId = ((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId();
        List<ShopcartEntity> shopcartByUserId = shopcartMapper.findAllShopcartByUserId(userId);
        map.put("shopcart", shopcartByUserId);
        return map;
    }

    /**
     * 新增该用户某个SKU菜品的数量
     * @param shopcartId
     * @return
     */
    @Override
    public Map<String, Object> addNumCountOne(Long shopcartId) {
        Map<String, Object> map = new HashMap<>(16);
        if (shopcartMapper.addNumCountOne(shopcartId) > 0) {
            map.put(SystemConstant.FLAG, true);
        }else {
            map.put(SystemConstant.FLAG, false);
        }
        return map;
    }

    /**
     * 减少该用户某个SKU菜品的数量
     * @param shopcartId
     * @return
     */
    @Override
    public Map<String, Object> reduceNumCountOne(Long shopcartId) {
        Map<String, Object> map = new HashMap<>(16);
        if (shopcartMapper.reduceNumCountOne(shopcartId) > 0) {
            map.put(SystemConstant.FLAG, true);
        }else {
            map.put(SystemConstant.FLAG, false);
        }
        return map;
    }

    /**
     * 删除购物车的某一个条目
     * @param shopcartId
     * @return
     */
    @Override
    public Map<String, Object> deleteShopcart(Long shopcartId) {
        Map<String, Object> map = new HashMap<>(16);
                        }
                        //4. 添加投诉记录
                        if (complaintMapper.addComplaint(vo) <= 0){
                            throw new RuntimeException();
                        }
                        map.put(SystemConstant.FLAG, true);
                        map.put(SystemConstant.MESSAGE, "您的投诉已收到,很抱歉为您造成困扰,我们将针对您的投诉尽快做出处理");
                        return map;
                    }
                }
                //2.2 投诉类型为菜品投诉
                case 2:{
                    //根据SKU编号查询菜品信息
                    FoodSkuEntity sku = skuMapper.findFoodSkuBySkuId(Long.parseLong(vo.getTarget()));
                    if (foodMapper.addFaultCountOne(sku.getFoodId()) <= 0){
                        throw new RuntimeException();
                    }else {
                        //3. 修改订单为已投诉
                        if (orderMapper.complainted(order.getOrderId()) <= 0){
                            throw new RuntimeException();
                        }
                        //4. 修改投诉对象为sku名称而不是sku编号
                        vo.setTarget(sku.getSkuName());
                        //5. 添加投诉记录
                        if (complaintMapper.addComplaint(vo) <= 0){
                            throw new RuntimeException();
                        }
                        map.put(SystemConstant.FLAG, true);
                        map.put(SystemConstant.MESSAGE, "您的投诉已收到,很抱歉为您造成困扰,我们将针对您的投诉尽快做出处理");
                        return map;
                    }
                }
                //2.3 投诉类型为其他
                default:
                    //1. 修改订单为已投诉
                    if (orderMapper.complainted(order.getOrderId()) <= 0){
                        throw new RuntimeException();
                    }
                    //2. 添加投诉记录
                    if (complaintMapper.addComplaint(vo) <= 0){
                        throw new RuntimeException();
                    }
                    map.put(SystemConstant.FLAG, true);
                    map.put(SystemConstant.MESSAGE, "您的投诉已收到,很抱歉为您造成困扰,我们将针对您的投诉尽快做出处理");
                    return map;
            }
        }catch (RuntimeException e){
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "投诉失败");
        }
        return map;

    /**
     * 菜品图片上传
     * @param foodImage
     * @return
     */
    @Override
    public Map<String, Object> uploadFile(MultipartFile foodImage) {
        //用于存储LayUI文件上传所必须的键值
        Map<String, Object> map = new HashMap<>(16);
        //判断一下文件是否为空
        if (!foodImage.isEmpty()) {
            //将文件重命名
            String newFileName = FileUploadUtil.rename(foodImage);
            //全部文件都放在一个文件夹下不好管理,所以以日期作为文件夹进行管理
            //组装路径
            String finalPath = new SimpleDateFormat("yyyyMMdd").format(new Date()) + "/" + newFileName;
            //获得文件对象,参数1:文件上传的路径,参数2:文件名称(包括文件夹)
            File path = new File(SystemConstant.UPLOADPATH + SystemConstant.FOODPATH, finalPath);
            if (!path.getParentFile().exists()) {
                //如果文件夹不存在,就创建文件夹
                path.getParentFile().mkdirs();
            }
            try {
                //将文件保存到磁盘中
                foodImage.transferTo(path);
                /*
                 * 严格按照LayUI规定传递所必须的参数
                 */
                map.put("code", 0);
                map.put("msg", "文件上传成功");
                Map<String, Object> dataMap = new HashMap<>(16);
                //图片路径
                dataMap.put("src", "/meal/upload/food/" + finalPath);
                //鼠标悬停时显示的文本
                dataMap.put("title", newFileName);
                //保存图片路径,不包括前面的文件夹,从模块文件夹起始
                dataMap.put("imagePath", SystemConstant.FOODPATH + finalPath);
                map.put("data", dataMap);
            } catch (IOException e) {
                e.printStackTrace();
            }

/**
 * 评论服务层实现类
 */
@Service
@Transactional
public class CommentServiceImpl implements CommentService {

    @Autowired
    private CommentMapper commentMapper;
    @Autowired
    private OrderDetailMapper orderDetailMapper;
    @Autowired
    private FoodMapper foodMapper;
    @Autowired
    private UserMapper userMapper;

    /**
     * 用户发表评论
     * @param session
     * @param vo
     * @return
     */
    @Override
    public Map<String, Object> addComment(CommentVo vo, HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        Long userId = ((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId();
        vo.setUserId(userId);
        try {
            //1. 增加评论
            if (commentMapper.addComment(vo) <= 0) {
                throw new RuntimeException();
            }
            //2.1 根据细则编号查询对应细则
            OrderDetailEntity orderDetail = orderDetailMapper.findOrderDetailById(vo.getOrderDetailId());
            //2.2 增加一条该菜品的评论数(一定要先加一条,否则如果是没人评价的菜品会报除零异常 直接GG)
     * @param ticketTypeId
     * @return
     */
    @Override
    public Map<String, Object> deleteTicketType(Long ticketTypeId) {
        Map<String, Object> map = new HashMap<>(16);
        if (ticketTypeMapper.deleteTicketType(ticketTypeId) > 0) {
            map.put(SystemConstant.FLAG, true);
            map.put(SystemConstant.MESSAGE, "优惠券类型删除成功");
        }else {
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "优惠券类型删除失败,仍有用户已领取该券未使用");
        }
        return map;
    }

}

/**
 * 用户地址管理服务层实现类
 */
@Service
@Transactional
public class AddressServiceImpl implements AddressService {

    @Autowired
    private AddressMapper addressMapper;

    /**
     * 查找该角色的所有地址信息
    @Override
    public Map<String, Object> addShopcart(Long skuId, Integer numCount, HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        Long userId = ((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId();
        //先要查询一下该用户的购物车中是否有该菜品SKU信息,有的话合并,没有的话才加上去
        ShopcartEntity record = shopcartMapper.findShopcartRecord(userId, skuId);
        if (record==null) {
            //封装实体类
            ShopcartEntity shopcart = new ShopcartEntity();
            shopcart.setNumCount(numCount);shopcart.setUserId(userId);shopcart.setSkuId(skuId);
            if (shopcartMapper.addShopcart(shopcart) > 0) {
                map.put(SystemConstant.FLAG, true);
                map.put(SystemConstant.MESSAGE, "菜品已经添加到购物车中啦!");
            }else {
                map.put(SystemConstant.FLAG, false);
                map.put(SystemConstant.MESSAGE, "菜品添加到购物车失败");
            }
        }else {
            if (shopcartMapper.addNumCount(record.getShopcartId(), numCount) > 0) {
                map.put(SystemConstant.FLAG, true);
                map.put(SystemConstant.MESSAGE, "购物车中该菜品数量修改成功!");
            }else {
                map.put(SystemConstant.FLAG, false);
                map.put(SystemConstant.MESSAGE, "菜品添加到购物车失败");
            }
        }
        return map;
    }

    /**
     * 查找该用户下的所有购物车信息
     * @param session
     * @return
     */
    @Override
    public Map<String, Object> findAllShopcartByUserId(HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        Long userId = ((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId();
        List<ShopcartEntity> shopcartByUserId = shopcartMapper.findAllShopcartByUserId(userId);
        map.put("shopcart", shopcartByUserId);
    public Map<String, Object> receiveTicket(Long ticketTypeId, HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        //根据编号查询优惠券类别
        TicketTypeEntity ticketType = ticketTypeMapper.findTicketTypeById(ticketTypeId);
        UserEntity user = (UserEntity) session.getAttribute(SystemConstant.USERLOGIN);
        //判断用户的积分够不够领取
        if (user.getScore() < ticketType.getNeedScore()){
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "很抱歉,您的积分不足以兑换该优惠券");
            return map;
        }
        //如果剩余不足返回失败
        if ((ticketType.getTicketNum()-ticketType.getReceive()) <= 0) {
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "很抱歉,该优惠券被抢光啦");
            return map;
        }
        //领取成功添加优惠券领取记录,扣除用户积分,优惠券类别已领取数+1
        if (ticketMapper.addTicket(ticketTypeId, ticketType.getLiveTime(), user.getUserId())>0 &&
            userMapper.modifyUserScore(-ticketType.getNeedScore(), user.getUserId())>0 &&
            ticketTypeMapper.addReceiveOne(ticketTypeId)>0) {
            user.setScore(user.getScore()-ticketType.getNeedScore());
            session.setAttribute(SystemConstant.USERLOGIN, user);
            map.put(SystemConstant.FLAG, true);
            map.put(SystemConstant.MESSAGE, "优惠券领取成功");
        }else {
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "优惠券领取失败");
        }
        return map;
    }

    /**
     * 根据页面信息查询优惠券领取记录
     * @param vo
     * @return
     */
    @Override
    public LayuiTableDataResult findTicketListByPage(TicketVo vo) {
        //查询过期的优惠券,设置其状态为过期
        List<Long> ticketOutTime = ticketMapper.findTicketIdListOutTime();
        for (Long ticketId : ticketOutTime) {
            ticketMapper.setOutTime(ticketId);
        }
        PageHelper.startPage(vo.getPage(), vo.getLimit());

@Service
@Transactional
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleMapper roleMapper;

    @Autowired
    private MenuMapper menuMapper;

    /**
     * 根据页面的条件查询角色列表
     * @param vo
     * @return
     */
    @Override
    public LayuiTableDataResult findRoleListByPage(RoleVo vo) {
     * @return
     */
    @Override
    public boolean generateSku(List<Map<String, Object>> foodParamList, Long foodId, String foodName) {
        try{
            //生成一个二维数组
            String[][] foodattrArr = new String[foodParamList.size()][];
            for (int i = 0; i < foodParamList.size(); i++) {
                //将Map映射转换成json字符串
                String json = JSON.toJSONString(foodParamList.get(i), true);
                Long attrId = Long.parseLong(foodParamList.get(i).get("attrId").toString());
                //将json数组转换成List集合
                List<String> foodvalueList = JSON.parseArray(JSON.parseObject(json).getString("foodvalueArr"), String.class);
                foodattrArr[i] = new String[foodvalueList.size()];
                for (String foodvalueName : foodvalueList) {
                    //将菜品规格添加到规格表中
                    String name = ((String) JSONObject.parseObject(foodvalueName).get("foodvalueName"));
                    foodvalueMapper.addFoodvalue(foodId, attrId, name);
                    foodattrArr[i][foodvalueList.indexOf(foodvalueName)] = name;
                }
            }
            //遍历二维数组,拼接SKU名称,生成菜品SKU信息
            List<StringBuilder> skuName = new ArrayList<>();
            List<StringBuilder> skuNameList = FoodSkuUtil.buildSku(foodattrArr, foodName, skuName);
            for (StringBuilder sb : skuNameList) {
                foodSkuMapper.addFoodSku(sb.toString(), foodId);
            }
            return true;
        }catch (Exception e) {
            return false;
        }
    }

    /**
     * 修改菜品SPU信息
     * @param vo
     * @param session
     * @return
     */
    @Override
    public Map<String, Object> modifyFood(FoodVo vo, HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        return map;
    }

    /**
     * 新增该用户某个SKU菜品的数量
     * @param shopcartId
     * @return
     */
    @Override
    public Map<String, Object> addNumCountOne(Long shopcartId) {
        Map<String, Object> map = new HashMap<>(16);
        if (shopcartMapper.addNumCountOne(shopcartId) > 0) {
            map.put(SystemConstant.FLAG, true);
        }else {
            map.put(SystemConstant.FLAG, false);
        }
        return map;
    }

    /**
     * 减少该用户某个SKU菜品的数量
     * @param shopcartId
     * @return
     */
    @Override
    public Map<String, Object> reduceNumCountOne(Long shopcartId) {
        Map<String, Object> map = new HashMap<>(16);
        if (shopcartMapper.reduceNumCountOne(shopcartId) > 0) {
            map.put(SystemConstant.FLAG, true);
        }else {
            map.put(SystemConstant.FLAG, false);
        }
        return map;
    }

    /**
     * 删除购物车的某一个条目
     * @param shopcartId
     * @return
     */
    @RequestMapping("/menuManage.html")
    public String menuManage(){
        return "menu/menuManage";
    }

    /**
     * 跳转到配送员管理界面
     * @return
     */
    @RequestMapping("/deliverManage.html")
    public String deliverManage(){
        return "deliver/deliverManage";
    }

    /**
     * 跳转到菜品类别管理界面
     * @return
     */
    @RequestMapping("/foodtypeManage.html")
    public String foodtypeManage(){
        return "food/foodtypeManage";
    }

    /**
     * 跳转到菜品规格组管理界面
     * @return
     */
    @RequestMapping("/foodattrManage.html")
    public String foodattrManage(){
        return "food/foodattrManage";
    }

    /**
     * 跳转到菜品SPU管理界面
     * @return
     */
    @RequestMapping("/foodManage.html")
    public String foodManage(){
        return "food/foodManage";
    }

    /**
     * 跳转到菜品SKU管理界面
     * @return
     */
    @RequestMapping("/foodSkuManage.html")
    public String foodSkuManage(){
        return "food/foodSkuManage";
    }

    /**
     * 跳转到优惠券类别管理界面
     * @return
@Service
@Transactional
public class ComplaintServiceImpl implements ComplaintService {

    @Autowired
    private ComplaintMapper complaintMapper;
    @Autowired
    private DeliverMapper deliverMapper;
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private FoodMapper foodMapper;
    @Autowired
    private FoodSkuMapper skuMapper;

    /**
     * 用户发表投诉
     * @param vo
     * @param session
     * @return
     */
    @Override
    public Map<String, Object> addComplaint(ComplaintVo vo, HttpSession session) {
        Map<String, Object> map = new HashMap<>(16);
        Long userId = ((UserEntity) session.getAttribute(SystemConstant.USERLOGIN)).getUserId();
        vo.setUserId(userId);
        //1. 根据订单编号查询订单
        OrderEntity order = orderMapper.findOrderById(vo.getOrderId());
        //2. 判断投诉的类型
        try {
            switch (vo.getComplaintType()){
                //2.1 投诉类型为配送员投诉
                case 1:{
                    if (deliverMapper.addFaultCountOne(order.getDeliverId()) <= 0){
                        map.put(SystemConstant.FLAG, false);
                        map.put(SystemConstant.MESSAGE, "投诉失败,该订单还无配送员接单");
                        return map;
                    }else {
                        //3. 修改订单为已投诉
                        if (orderMapper.complainted(order.getOrderId()) <= 0){
                            throw new RuntimeException();
                        }
                        //4. 添加投诉记录
                        if (complaintMapper.addComplaint(vo) <= 0){
                            throw new RuntimeException();
                        }
            //删除该角色
            if (roleMapper.deleteRole(roleId) >= 1){
                map.put(SystemConstant.FLAG, true);
                map.put(SystemConstant.MESSAGE, "角色删除成功");
                return map;
            }
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "角色删除失败");
        }else {
            map.put(SystemConstant.FLAG, false);
            map.put(SystemConstant.MESSAGE, "仍有用户使用该角色,角色删除失败");
        }
        return map;
    }

}

/**
 * 投诉 服务层实现类
 */
@Service
@Transactional
public class ComplaintServiceImpl implements ComplaintService {

    @Autowired
    private ComplaintMapper complaintMapper;
    @Autowired
    private DeliverMapper deliverMapper;

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值