springboot+mybatis+jsp易买网商城系统源码

【286】springboot+mybatis+jsp易买网商城系统源码

 开发工具:idea 或eclipse
 数据库mysql5.7+
 数据库链接工具:navcat,小海豚等
  技术:springboot+mybatis+jsp

package cn.easybuy.controller;


import cn.easybuy.SecurityUtils;
import cn.easybuy.pojo.News;
import cn.easybuy.pojo.Product;
import cn.easybuy.pojo.ProductCategory;
import cn.easybuy.pojo.User;
import cn.easybuy.service.INewsService;
import cn.easybuy.service.IProductCategoryService;
import cn.easybuy.service.IProductService;
import cn.easybuy.service.IUserService;
import cn.easybuy.utils.Pager;
import cn.easybuy.utils.ProductCategoryVo;
import cn.easybuy.utils.ShoppingCart;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;

import javax.servlet.http.HttpSession;
import java.util.*;

/**
 * <p>
 * 首页前端控制器
 * </p>
 *
 * @author 黄嘉豪 and 钟佳慧
 * @since 2020-06-22
 */
@Controller
@RequestMapping("")
public class HomeController {
    @Autowired
    private IProductCategoryService productCategoryService;
    @Autowired
    private IProductService productService;
    @Autowired
    private INewsService newsService;
    @Autowired
    private IUserService userService;

    /**
     * 加载分类
     *
     * @author 黄嘉豪
     */
    private void loadingProductCategoryVoList(Model model) {

        List<ProductCategoryVo> productCategoryVoList1 = new ArrayList<>();

        //获取所有一级分类
        for (ProductCategory category1 : productCategoryService.queryProductCategoryListByType(1)) {

            ProductCategoryVo productCategoryVo1 = new ProductCategoryVo();
            //设置一级分类
            productCategoryVo1.setProductCategory(category1);

            List<ProductCategoryVo> productCategoryVoList2 = new ArrayList<>();
            //获取当前一级分类下的二级分类
            for (ProductCategory category2 : productCategoryService.queryProductCategoryListByParentId(category1.getId(), 2)) {

                ProductCategoryVo productCategoryVo2 = new ProductCategoryVo();
                //设置二级分类
                productCategoryVo2.setProductCategory(category2);

                List<ProductCategoryVo> productCategoryVoChildList2 = new ArrayList<>();
                //获取当前二级分类下的三级分类
                for (ProductCategory productCategory3 : productCategoryService.queryProductCategoryListByParentId(category2.getId(), 3)) {
                    ProductCategoryVo productCategoryVo3 = new ProductCategoryVo();
                    //设置三级分类
                    productCategoryVo3.setProductCategory(productCategory3);
                    productCategoryVoChildList2.add(productCategoryVo3);
                }

                productCategoryVo2.setProductCategoryVoList(productCategoryVoChildList2);

                productCategoryVoList2.add(productCategoryVo2);
            }
            //查询一级分类下的所有商品 并设置
            productCategoryVo1.setProductList(productService.getProductList(1, 6, category1.getId(), 1));
            productCategoryVo1.setProductCategoryVoList(productCategoryVoList2);
            productCategoryVoList1.add(productCategoryVo1);
        }
        model.addAttribute("productCategoryVoList", productCategoryVoList1);
    }

    /**
     * 加载新闻
     *
     * @author 黄嘉豪
     */
    private void loadingNews(Model model) {
        //获取新闻
        List<News> news = newsService.queryNewsList(1, 5);
        model.addAttribute("news", news);
    }

    /**
     * 重定向首页
     *
     * @author 钟佳慧
     */
    @RequestMapping("/")
    public String home() {
        return "redirect:Home";
    }

    /**
     * 首页
     *
     * @author 黄嘉豪
     */
    @RequestMapping("Home")
    public String home(Model model) {

        loadingProductCategoryVoList(model);
        loadingNews(model);
        return "pre/index";
    }


    /**
     * 登录或注销用户
     *
     * @author 钟佳慧
     */
    @RequestMapping("Login")
    public String login(@RequestParam(value = "action", required = false) String action, HttpSession session) {
        //判断是否注销
        if ("loginOut".equals(action)) {
            // 删除用户
            session.removeAttribute("loginUser");
            // 删除购物车
            session.removeAttribute("cart");
        }
        //登录
        return "pre/login";
    }

    /**
     * 登录
     *
     * @author 钟佳慧
     */
    @RequestMapping("/doLogin")
    public String doLogin(@RequestParam("loginName") String loginName, @RequestParam("password") String password, HttpSession session) {
        //获取用户
        User user = userService.getUser(loginName);
        //判断密码是否一致
        if (user != null && Objects.equals(user.getPassword(), SecurityUtils.md5Hex(password))) {
            //设置用户
            session.setAttribute("loginUser", user);
            //设置购物车为空
            session.setAttribute("cart", new ShoppingCart());
            //登录成功 返回首页
            return "redirect:Home";
        }
        //登录失败 继续登录
        return "pre/login";
    }

    /**
     * 注册界面
     *
     * @author 钟佳慧
     */
    @RequestMapping("Register")
    public String register() {
        //注册
        return "/pre/register";
    }

    /**
     * 注册
     *
     * @author 钟佳慧
     */
    @RequestMapping("/doRegister")
    @ResponseBody
    public Object doRegister(User user) {
        Map<String, Object> result = new HashMap<>();
        //设置为普通用户
        user.setType(0);
        //加密密码
        user.setPassword(SecurityUtils.md5Hex(user.getPassword()));
        //添加用户
        boolean isSc = userService.add(user);
        result.put("status", isSc ? 1 : 0);
        result.put("message", isSc ? "注册成功" : "注册失败");
        return result;
    }


    /**
     * 分类显示商品
     *
     * @author 黄嘉豪
     */
    @RequestMapping("Product")
    public String product(Model model, @RequestParam(value = "action") String action
            , @RequestParam(value = "category", required = false) Integer category
            , @RequestParam(value = "level", required = false) Integer level
            , @RequestParam(value = "keyWord", required = false) String keyWord
            , @RequestParam(value = "currentPage", required = false) Integer currentPage
            , @RequestParam(value = "rowPerPage", required = false) Integer rowPerPage
            , @RequestParam(value = "id", required = false) Integer id
    ) {

        currentPage = currentPage == null ? 1 : currentPage;

        switch (action) {
            //商品列表
            case "queryProductList":

                rowPerPage = rowPerPage == null ? 4 : rowPerPage;
                int productCount;
                String url;
                List<Product> productList;

                if (keyWord == null && level == null) {
                    //显示所有
                    productList = productService.getProductList(currentPage, rowPerPage);
                    productCount = productService.queryProductCount();
                    url = "Product?action=queryProductList";
                } else if (keyWord == null) {
                    //分类查询
                    productList = productService.getProductList(currentPage, rowPerPage, category, level);
                    productCount = productService.queryProductCount(category, level);
                    url = "Product?action=queryProductList&level=" + level + "&category=" + category;
                } else if (level == null) {
                    //搜索 模糊查询
                    productList = productService.getProductList(currentPage, rowPerPage, keyWord);
                    productCount = productService.queryProductCount(keyWord);
                    url = "Product?action=queryProductList&keyWord=" + keyWord;
                } else {
                    // 分类搜索
                    productList = productService.getProductList(currentPage, rowPerPage, keyWord, category, level);
                    productCount = productService.queryProductCount(keyWord, category, level);
                    url = "Product?action=queryProductList&level=" + level + "&category=" + category + "&keyWord=" + keyWord;
                }
                Pager pager = new Pager(productCount, rowPerPage, currentPage);
                pager.setUrl(url);

                model.addAttribute("productList", productList);
                model.addAttribute("pager", pager);
                model.addAttribute("total", productCount);
                model.addAttribute("keyWord", keyWord);
                //加载分类
                loadingProductCategoryVoList(model);
                return "/pre/product/queryProductList";
            //商品详情
            case "queryProductDeatil":
                //获取商品
                Product product = productService.getProductById(id);
                //加载分类
                loadingProductCategoryVoList(model);
                model.addAttribute("product", product);
                return "/pre/product/productDeatil";
            default:
                return "redirect:Home";
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值