Java项目:(小程序)超豪华在线点餐系统(weixin-java-mp+VUE+iview+bootstrap)

news/2024/7/9 23:54:39 标签: vue, java, 小程序, weixin-java-mp, bootstrap

源码获取:博客首页 "资源" 里下载!

一、项目简述

本系统功能包括:

一:商品模块:商品添加、规格设置,商品上下架等

二:订单模块:下单、购物车、支付,发货、收货、退款 等

三:用户模块:登陆、注册等

四:其他等

二、项目运行

环境配置:

1.1 springframework4.3.7.RELEASE

1.2 mybatis3.1.0、MyBatis-Plus 3.1.0

1.3 shirol.3.2

1.4 servlet3.1.0

1.5 druid1.0.28

1.6 weixin-java-mp3.2.0

1.7 MybatisPlus3.1.0

1.8 lombok等等。

项目技术:

2.1 Vue2.5.1

2.2 iview

2.3 layer3.0.3

2.4 jquery2.2.4

2.5 bootstrap3.3.7等等。

 

订单管理控制层:

/**
 * 订单管理控制层
 */

@Controller
public class OrderController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private UserService userService;
    @Autowired
    private ProductService productService;

    /**
     * 去购物车页面
     */
    @PostMapping("/toCart")
    public String toDetail(HttpSession session, @RequestParam("id") Integer[] id, String buyNum, Model model) {
        System.out.println("111111111111111:" + id[0]);
        Integer buyCount = Integer.parseInt(buyNum);
        List<Product> productList = productService.findProductsById(id);
        Map<Product, Integer> cartMap = (Map<Product, Integer>) session.getAttribute("cart");
        for (Product product : productList) {
            cartMap.put(product, buyCount);
        }
        session.setAttribute("cart", cartMap);
        session.setAttribute("buyCount", 0);
        return "/pages/order/cart";
    }

    /**
     * 去我的购物车
     */
    @GetMapping("/toMyCart")
    public String tocart() {
        return "/pages/order/cart";
    }

    /**
     * 从购物车删除
     */
    @PostMapping("/toDelete")
    public String toDelete(Integer productId, HttpSession session, Model model) {
        Product product = productService.findProductById(productId);
        System.out.println(product);
        ((Map<Product, Integer>) session.getAttribute("cart")).remove(product);
        System.out.println("size:" + ((Map<Product, Integer>) session.getAttribute("cart")).size());
        return "/pages/order/cart";
    }

    /**
     * 去支付订单页面
     */
    @PostMapping("/toOrder")
    public String toOrder(HttpSession session, String[] buyNum, Model model,@RequestParam("id") Integer[] id,
                          @RequestParam("checkId") Integer[] checkId) {
        //1-获取session中用户基本信息 和详细信息
        User user = (User) session.getAttribute("user");
        UserInfo dbUserInfo = userService.findAdressByUserId(user.getId().toString());
        //2-将购物车内的*全部*商品id和对应购买数量放入map中   key:商品id  value:购买数量
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < id.length; i++){
            map.put(id[i],Integer.parseInt(buyNum[i]));
        }
        //3-创建我的订单map集合  key:product产品信息 value:购买数量
        Subject subject = SecurityUtils.getSubject();
        Map<Product, Integer> myCartMap = new HashMap<>();
        subject.getSession().setAttribute("myCartMap", myCartMap);
        Map<Product, Integer> myOrder = (HashMap<Product, Integer>) session.getAttribute("myCartMap");
        //4-从存储有全部商品和购买数量的map中 取出 被选中的信息(checkbox)放到我的订单map中
        for (Integer cId :checkId){
            Product dbProduct = productService.findProductById(cId);
            myOrder.put(dbProduct,map.get(cId));
        }
        model.addAttribute("myOrder", myOrder);
        model.addAttribute("userInfo", dbUserInfo);
        return "pages/order/pay_order";
    }

    /**
     * 支付订单
     */
    @PostMapping("/order")
    public String order(HttpServletRequest request, HttpServletResponse response,
                        String addressInfo, @RequestParam("id") Integer[] ids, HttpSession session) throws Exception {
        response.setContentType("text/html;charset=utf-8");
        //1-生成订单编号
        String orderId = UUID.randomUUID().toString();
        User user = (User) session.getAttribute("user");
        Map<Product, Integer> myCartMap = (Map<Product, Integer>) session.getAttribute("myCartMap");
        //1-保存订单信息
        orderService.saveOrder(user,ids, myCartMap, orderId);
        //--------------------------------------支付操作未实现--------------------------
        //2-支付成功后修改订单状态
        orderService.updateOrderStatus(0, orderId);
        //3-清空购物车
        List<Product> list = productService.findProductsById(ids);
        for (Product product:list) {
            myCartMap.remove(product);
        }
        System.out.println("size:"+myCartMap.size());

        return "pages/order/confirm";
    }
}

 

用户管理控制层:

/**
 * 用户管理控制层
 *
 */

@Controller
public class UserController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private UserService userService;
    @Autowired
    private EvaService evaService;
    @Autowired
    private LeaveService leaveService;

    /**
     * 去用户中心
     */
    @GetMapping("/toUserCenter")
    public String userCenter(Model model,HttpSession session){
        User user = (User) session.getAttribute("user");
        User userInfos = userService.findUserInfo(user.getId());
        model.addAttribute("userInfos",userInfos);
        return "/pages/user/user_center";
    }

    /**
     * 去我的订单
     */
    @RequestMapping("/toUserOrder")
    public String toUserOrder(@RequestParam(required=true,defaultValue="1") Integer page, HttpSession session, Model model){
        User users = (User) session.getAttribute("user");
        User user = userService.findUserInfo(users.getId());
        //PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
        PageHelper.startPage(page, 3);
        List<Order> orderList = orderService.findOrderListByUserId(users.getId());
        PageInfo<Order> p = new PageInfo<Order>(orderList);
        model.addAttribute("page", p);
        model.addAttribute("orderList",orderList);
        model.addAttribute("user",user);
        return "/pages/user/user_orderlist";
    }    /**
     * 显示收货地址
     * @param model
     * @return
     */
    @RequestMapping("/userAddress")
    public String userAddress(Model model, HttpSession session) {

        User user = (User) session.getAttribute("user");
        User userInfos = userService.findUserInfo(user.getId());
        model.addAttribute("userInfos",userInfos);
        return "/pages/user/user_address";
    }
    /**
     *
     *更新收货地址
     */
    @RequestMapping("/updateAddress")
    public String updateAddress(User user,Model model){
        userService.updateAddress(user);
        return "redirect:/userAddress";
    }

    /**
     * 显示个人中心信息
     * @param model
     * @return
     */
    @RequestMapping("/userAccount")
    public String userAccount(Model model,HttpSession session){
        User user = (User) session.getAttribute("user");
        User userInfos = userService.findUserInfo(user.getId());
        model.addAttribute("userInfos",userInfos);
        return "/pages/user/user_account";
    }

    /**
     * 跳转修改密码界面
     * @return
     */
    @RequestMapping("/updatePassword")
    public String updatePassword(){
        return "/pages/user/user_password";
    }

    /**
     * 修改密码
     * @param oldPwd 旧密码
     * @param newPwd 新密码
     * @param comfirmPwd 确认密码
     * @param model 数据
     * @return
     */
    @RequestMapping("/savePassword")
    public String  saveAddress(
            String oldPwd, String newPwd, String comfirmPwd,Model model,HttpSession session){
       /* User user = (User) session.getAttribute("user");
        if(user == null){
            return "/login";
        }
        User userInfo = userService.findUserInfo(user.getUserId());
        String dbPwd = userInfo.getPassword();
        if(StringUtils.isEmpty(oldPwd) && StringUtils.isEmpty(newPwd) && StringUtils.isEmpty(comfirmPwd)){
            //输入为空
            model.addAttribute("errorInfo","输入为空!");
            return "/pages/user/user_password";
        }else if(!dbPwd.equals(oldPwd)){
            //旧密码不对
            model.addAttribute("errorInfo","旧密码不对!");
            return "/pages/user/user_password";
        }else if(!newPwd.equals(comfirmPwd)){
            //两次密码输入不一致
            model.addAttribute("errorInfo","两次输入密码不一致!");
            return "/pages/user/user_password";
        }else{
            //输入合法,进入修改密码
            userService.updatePwd(comfirmPwd);*/
            return "redirect:/userAccount";
    }

    /**
     * 跳转修改更换手机号界面
     * @return
     */
    @RequestMapping("/updateTel")
    public String updateTel(){
        return "/pages/user/user_telephone";
    }

    /*
     * 更换手机号
     * @param newTel
     * @return
     */
    @RequestMapping("/saveTelephone")
    public String saveTel(String newTel,Model model,HttpSession session){
      /*  String regexMobile = "^((17[0-9])|(14[0-9])|(13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
        User user = (User) session.getAttribute("user");
        if(user == null){
            return "/login";
        }

        if(!newTel.matches(regexMobile)){
            model.addAttribute("msg","格式不对!");
            return "/pages/user/user_telephone";
        }
        userService.updateTel(newTel,user.getUserId());
        model.addAttribute("msg","修改成功");*/
        return "redirect:/userAccount";
    }

    /**
     * 解绑手机号
     * @return
     */
    @RequestMapping("/deleteTel")
    public String deleteTel(HttpSession session){
       /* User user = (User) session.getAttribute("user");
        userService.deleteTel(user.getUserId());*/
        return "redirect:/userAccount";
    }

    /**
     * 跳转到更换邮箱界面
     * @return
     */
    @RequestMapping("/updateEmail")
    public String updateEmail(){
        return "/pages/user/user_email";
    }

    /**
     * 更换邮箱
     * @param newEmail 新邮箱
     * @return
     */
    @RequestMapping("/saveEmail")
    public String saveEmail(String newEmail,Model model,HttpSession session){
        String regexEmail = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
        User user = (User) session.getAttribute("user");
        if(user == null){
            return "/login";
        }
        if (!newEmail.matches(regexEmail)){
            model.addAttribute("msg","格式错误!");
            return "/pages/user/user_email";
        }
       /* userService.updateEmail(user.getUserId(),newEmail);*/
        return "redirect:/userAccount";
    }

    /**
     * 修改订单状态
     * @param status
     * @param orderId
     * @return
     */
    @RequestMapping("/updateOrderStatus")
    public String updateOrderStatus(Integer status,String orderId){
        orderService.updateOrderStatus(status,orderId);
        return "redirect:/toUserOrder";
    }

    /**
     * 跳转评价页面
     */
    @RequestMapping("/toEvaluate")
    public String toEvaluate(String orderId,Integer status,Model model){
        List<String> productNameList = new ArrayList<>();
        orderService.findProductByOrderId(orderId).forEach((product) -> {
            productNameList.add(product.getProductName());
        });
        model.addAttribute("productNameList",productNameList);
        model.addAttribute("orderId",orderId);
        model.addAttribute("status",status);
        return "/pages/user/evaluate";
    }


    /**
     * 发布评论
     */
    @RequestMapping("/saveEva")
    public String saveEva(String orderId,String content,Integer status){
        evaService.saveEva(orderId,content,status);
        return "redirect:/toEvaList";
    }

    /**
     * 用户评价列表
     * @return
     */
    @RequestMapping("/toEvaList")
    public String toEvaList(@RequestParam(required=true,defaultValue="1") Integer page,Model model){
        PageHelper.startPage(page, 4);
        List<Evaluate> evaList = evaService.findAllEvaList();
        //PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
        PageInfo<Evaluate> p=new PageInfo<Evaluate>(evaList);
        model.addAttribute("page", p);
        model.addAttribute("evaList",evaList);
        return "/pages/user/evaluate_list";
    }

    @RequestMapping("/createLeave")
    public String createLeave(String content,HttpSession session){
        User user = (User)session.getAttribute("user");
        leaveService.createLeave(content,user);
        return "redirect:/index";
    }
    @RequestMapping("/aboutUs")
    public String aboutUs(){
        return "/pages/other/about_us";
    }
    @RequestMapping("/userLogout")
    public String userLogout(HttpSession httpSession){
        //将user对象从session域中删除
        httpSession.removeAttribute("user");
        //页面应该跳转到登陆页面
        return "redirect:/index";
    }
}

商品业务控制层:

/**
 *  前端product模块相关的controller
 */
@Controller
public class ProductController {

    @Autowired
    private ProductService productService;

    @RequestMapping("/toList")
    public String toList(@RequestParam(required = true, defaultValue = "1") Integer page, Model model) {
        PageHelper.startPage(page, 6);
        List<Product> productList = productService.findAllProductListByStatus(1);
        List<Product> hotProductList = productService.findHotProductList();
        model.addAttribute("productList", productList);
        model.addAttribute("hotProductList", hotProductList);
        PageInfo<Product> p = new PageInfo<>(productList);
        model.addAttribute("page", p);
        return "/pages/list/list1";
    }

    /**
     * 查询商品种类名信息;查询热门商品信息;
     * 获取数据,然后跳转到list.jsp页面并回显数据
     * 根据输入的查询条件查询商品,然后跳转到list.jsp页面并回显数据
     * 获取查询条件(商品的名称(product_name), 商品的种类(name))
     * 商品的最低价格(minprice)及最高价格(maxprice)
     */
    @PostMapping("/findProductByCondition")
    public String findProductByCondition(@RequestParam(required = true, defaultValue = "1") Integer page, String product_name, String name, Double minprice, Double maxprice, Model model) {
        PageHelper.startPage(page, 4);
        List<Product> productConditionList = productService.findProductByCondition(product_name,name,minprice,maxprice);
        List<Product> HotProductList = productService.findHotProductList();
        PageInfo<Product> p = new PageInfo<Product>(productConditionList);
        model.addAttribute("productList", productConditionList);
        model.addAttribute("HotProductList", HotProductList);
        model.addAttribute("pages", p);
        return "/pages/list/list";
    }
    @GetMapping("/searchByConditition")
    public String searchByConditition(@RequestParam(required = true, defaultValue = "1") Integer page,String keyword, Model model){
        PageHelper.startPage(page, 4);
        List<Product> productConditionList = productService.searchByConditition(keyword);
        List<Product> HotProductList = productService.findHotProductList();
        PageInfo<Product> p = new PageInfo<Product>(productConditionList);
        model.addAttribute("productList", productConditionList);
        model.addAttribute("HotProductList", HotProductList);
        model.addAttribute("keyword",keyword);
        model.addAttribute("pages", p);
        return "/pages/list/list3";
    }
    /**
     * 查询商品种类名信息;查询热门商品信息;
     * 获取数据,然后跳转到list.jsp页面并回显数据
     * 根据输入的查询条件查询商品,然后跳转到list.jsp页面并回显数据
     * 获取查询条件(商品的名称(product_name), 商品的种类(name))
     * 商品的最低价格(minprice)及最高价格(maxprice)
     */
    @PostMapping("/findProductByCondition2")
    public String findProductByCondition2(@RequestParam(required = true, defaultValue = "1") Integer page, String kindId, String product_name, String name, Double minprice, Double maxprice, Model model) {
        PageHelper.startPage(page, 4);
        List<Product> productConditionList = productService.findProductByCondition(product_name, name, minprice, maxprice);
        List<Product> HotProductList = productService.findHotProductList();
        PageInfo<Product> p = new PageInfo<Product>(productConditionList);
        model.addAttribute("productList", productConditionList);
        model.addAttribute("kindId", kindId);
        model.addAttribute("HotProductList", HotProductList);
        model.addAttribute("pages", p);
        return "/pages/list/list2";
    }
    @GetMapping("/findProductByCategory")
    public String findProductByCategory(@RequestParam(required = true, defaultValue = "1") Integer page,Integer kindId,Model model){
        PageHelper.startPage(page, 4);
        List<Product> productList = productService.findProductByCategory(kindId);
        List<Product> HotProductList = productService.findHotProductList();
        PageInfo<Product> p = new PageInfo<Product>(productList);
        model.addAttribute("productList", productList);
        model.addAttribute("kindId", kindId);
        model.addAttribute("HotProductList", HotProductList);
        model.addAttribute("pages", p);
        return "/pages/list/list2";
    }

    /**
     * 跳转到商品详情页面
     * @return
     */
    @GetMapping("/toDetail")
    public String toDetail(Integer id, Model model){
        //1-根据商品id查询商品信息
        Product product = productService.findProductById(id);
        //2-查询热门商品信息列表
        List<Product> hotProductList = new ArrayList<>();
            //2-1-从热门商品表中取出两个
        productService.findProductBannerByCount(2).forEach(productBanner -> {
            Product dbProduct = productService.findProductById(productBanner.getProductId());
            if(dbProduct != null){
                hotProductList.add(dbProduct);
            }
        });
        model.addAttribute("product",product);
        model.addAttribute("HotProductList",hotProductList);
        //3-跳转到商品详情页面
        return "/pages/list/detail";
    }
}

 源码获取:博客首页 "资源" 里下载!


http://www.niftyadmin.cn/n/1554444.html

相关文章

Java项目:(小程序)网上商城系统(weixin-java-mp+VUE+iview+bootstrap)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 本系统功能包括&#xff1a; 一&#xff1a; 商品模块&#xff1a;商品添加、规格设置&#xff0c;商品上下架等 二&#xff1a;订单模块&#xff1a;下单、购物车、支付&#xff0c;发货、…

linux显示文件后缀名命令,Linux学习笔记(ctrl命令find命令文件后缀名)

Linux学习笔记(ctrl命令find命令文件后缀名)Linux学习笔记(ctrl命令&#xff0c;find命令&#xff0c;文件后缀名)一、Ctrl命令1.ctrl 一些用法。ctrl d 退出一个终端ctrl c 退出一个命令ctrl a 光标从头开始ctrl u 光标前面的命令全部删除ctrl d 光标后的命令一个一个字符删除…

linux系统编程实训总结,Linux下C编程基础之实验内容及小结

标签&#xff1a;c编程(73)Linux(1545)1&#xff0e;实验目的通过指定指令的vi操作练习&#xff0c;使读者能够熟练使用vi中的常见操作&#xff0c;并且熟悉vi的3种模式&#xff0c;如果读者能够熟练掌握实验内容中所要求的内容&#xff0c;则表明对vi的操作已经很熟练了。2&am…

Java项目:(小程序)前台+后台相结合水果商城系统(spring+spring mvc+mybatis+layui+微信小程)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 本系统功能包括&#xff1a; 水果商城系统前台展示&#xff0c;分类后买&#xff0c;下单&#xff0c;支付&#xff0c;发货&#xff0c; 地址等等&#xff0c;后台商品上传&#xff0c;用户管…

Linux系统输入i的意思,Linux I/O (输入/输出)重定向的基本工作原理

欢迎&#xff0c;来自IP地址为&#xff1a;223.242.15.15 的朋友Linux系统管理有一个十分重要又非常有趣的话题&#xff0c;那就是输入/输出重定向。这一命令行特性可以让输入或者输出重新定向到文件&#xff0c;也可把多条命令通过被称为“命令管道”的管道连接起来。我们在系…

Java项目:(小程序)前台+后台相结合在线点餐系统(spring+spring mvc+mybatis+layui+微信小程)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 本系统功能包括&#xff1a; 1 .微信小程序扫码点单 2 .微信小程序外卖点单 3 .后台可对微信小程序主页进行自定义&#xff08;如颜色、布局、 图片等&#xff09; 4 .支持微信支付与…

springboot医院挂号小程序

医院挂号系统 springboot医院挂号系统小程序 java医院挂号小程序 技术&#xff1a; 基于springbootvue小程序医院挂号系统的设计与实现 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;…

linux系统新加了一块硬盘,linux新加了一块硬盘怎么挂载

推荐回答挂载好新硬盘后输入fdisk-l命令看当前磁盘信息可以看到除了当前的第一块硬盘外还有一块sdb的第二块硬盘&#xff0c;然后用fdisk/dev/sdb进行分区进入fdisk命令&#xff0c;输入h可以看到该命令的帮助&#xff0c;按n进行分区这里输入e即分为逻辑分区&#xff0c;按p即…