IDEA+Java+SSM+Mysql+JSP实现Web宠物商城系统(上)

简介: IDEA+Java+SSM+Mysql+JSP实现Web宠物商城系统

一、系统介绍


1.开发环境


开发工具:IDEA2018


JDK版本:jdk1.8


Mysql版本:8.0.13


2.技术选型


Java+Spring+SpringMVC+Mybatis+JSP+Mysql


3.系统功能


用户


1.注册


2.登录


3.浏览商品


4.购买商品


5.评论


管理员


1.登录


2.用户查看


3.一级分类管理


4.二级分类管理


5.商品管理


6.订单管理


7.留言管理


二、系统展示


1.用户-主页面


70aa46e7fe8f4acb9f4a1a6ab93dd887.jpg


2.用户-注册


3511d2b0134644c6ac20cfbe1fd16874.jpg


3.用户-登录


2e5edfedf67d4378be568c6551d31a44.jpg


4.用户-商品分类


295c3cf1e1ba46a29abd251d46f8a9d9.jpg


5.用户-查看商品


694a2201155345b4b883463845dbac41.jpg


6.用户-提交订单


aabc55f06e94496aa56bdb02125aae5c.jpg


7.用户-支付货款


7d61ab7ff45b49b2bbf483d31c33e8b3.jpg


8.用户-留言板


67edc13545054742bc72570ff594f396.jpg


9.管理员-登录


eea6916096444fb5880290e67803cd6c.jpg


10.管理员-用户查看


9eabc5e975f64029a980cbed624bba60.jpg


11.管理员-一级分类管理


1a368862cb7d42a7b8bb73498488ebac.jpg


12.管理员-二级分类管理


1bf73b5d48744396b7b7eedb84c542ae.jpg


13.管理员-商品管理


38c6dd801a85441792ff37b9893eb024.jpg


14.管理员-订单管理


6d59766dfbf849ef94c1020f3c85a471.jpg


15.管理员-留言管理


852a484df15e420495c4f082b2126ed4.jpg


三、部分代码


AdminController

package com.shop.controller;
import java.io.File;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import com.shop.Utils.PageBean;
import com.shop.Utils.UUIDUtiils;
import com.shop.po.Adminuser;
import com.shop.po.Category;
import com.shop.po.Categorysecond;
import com.shop.po.Message;
import com.shop.po.Orders;
import com.shop.po.Product;
import com.shop.po.User;
import com.shop.service.CategorySecondService;
import com.shop.service.CategoryService;
import com.shop.service.MessageService;
import com.shop.service.OrderService;
import com.shop.service.ProductService;
import com.shop.service.UserService;
@Controller
public class AdminController {
    @Autowired
    private UserService userService;
    @Autowired
    public CategoryService categoryService;
    @Autowired
    public CategorySecondService categorySecondService;
    @Autowired
    public ProductService productService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private MessageService messageService;
    @RequestMapping("/admin/admin_findAll")
    public String admin_findAll(Model model, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        List<User> userList = userService.admin_findAll();
        model.addAttribute("userList", userList);
        return "admin/user/list";
    }
    @RequestMapping("/admin/adminCategory_findAll")
    public String adminCategory_findAll(Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        List<Category> categoryList = categoryService.adminbFindCategory();
    /*for (Category category : categoryList) {
      System.out.println(category.getCname());
    }*/
        model.addAttribute("categoryList", categoryList);
        return "admin/category/list";
    }
    @RequestMapping("/admin/adminCategory_add")
    public String adminCategory_add(Model model, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
//    List<Category> categoryList = categoryService.adminbFindCategory();
//    model.addAttribute("categoryList", categoryList);
        return "admin/category/add";
    }
    @RequestMapping("/admin/adminCategory_save")
    public String adminCategory_save(@RequestParam String cname, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Category addCategory = new Category();
        addCategory.setCname(cname);
        categoryService.addCategory(addCategory);
        return "redirect:/admin/adminCategory_findAll.action";
    }
    @RequestMapping("/admin/adminCategory_edit")
    public String adminCategory_delete(@RequestParam int cid, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Category existCategory = categoryService.findCategory(cid);
        model.addAttribute("existCategory", existCategory);
        return "admin/category/edit";
    }
    @RequestMapping("/admin/adminCategory_update")
    public String adminCategory_update(@RequestParam int cid,
                                       @RequestParam String cname, HttpServletRequest request) {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Category category = new Category();
        category.setCid(cid);
        category.setCname(cname);
        categoryService.adminCategory_update(category);
        return "redirect:/admin/adminCategory_findAll.action";
    }
    @RequestMapping("/admin/adminCategory_delete")
    public String adminCategory_delete(@RequestParam int cid, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        categorySecondService.adminCategorySecond_deleteByCid(cid);
        categoryService.deleteCategoryByCid(cid);
        return "redirect:/admin/adminCategory_findAll.action";
    }
    // admin 的二级分类的管理
    @RequestMapping("/admin/adminCategorySecond_findAllByPage")
    public String adminCategorySecond_findAllByPage(@RequestParam int page, Model model, HttpServletRequest request) {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        PageBean<Categorysecond> csPageBean = categorySecondService
                .adminCategorySecond_findAllByPage(page);
    /*List<Categorysecond> list = csPageBean.getList();
    for (Categorysecond categorysecond : list) {
      System.out.println(categorysecond.getCsname());
    }*/
        model.addAttribute("csPageBean", csPageBean);
        return "admin/categorysecond/list";
    }
    @RequestMapping("admin/adminCategorySecond_addPage")
    public String adminCategorySecond_addPage(Model model, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        List<Category> categoryList = categoryService.adminbFindCategory();
        model.addAttribute("categoryList", categoryList);
        return "admin/categorysecond/add";
    }
    @RequestMapping("admin/adminCategorySecond_save")
    public String adminCategorySecond_save(@RequestParam String csname, @RequestParam int cid, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Categorysecond categorysecond = new Categorysecond();
        categorysecond.setCsname(csname);
        categorysecond.setCid(cid);
        categorySecondService.adminCategorySecond_save(categorysecond);
        return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
    }
    @RequestMapping("admin/adminCategorySecond_edit")
    public String adminCategorySecond_edit(@RequestParam int csid, Model model, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Categorysecond findByCsid = categorySecondService.findByCsid(csid);
        model.addAttribute("findByCsid", findByCsid);
        return "admin/categorysecond/edit";
    }
    @RequestMapping("admin/adminCategorySecond_update")
    public String adminCategorySecond_update(@RequestParam String csname, @RequestParam int csid, HttpServletRequest request) {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Categorysecond categorysecond = new Categorysecond();
        categorysecond.setCsname(csname);
        categorysecond.setCsid(csid);
        categorySecondService.adminCategorySecond_update(categorysecond);
        return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
    }
    @RequestMapping("admin/adminCategorySecond_delete")
    public String adminCategorySecond_delete(@RequestParam int csid, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        categorySecondService.adminCategorySecond_delete(csid);
        return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
    }
    //admin的商品管理
    @RequestMapping("/admin/adminProduct_findAllByPage")
    public String adminProduct_findAllByPage(@RequestParam int page, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        PageBean<Product> allProPageBean = productService.findAllProduct(page);
        model.addAttribute("allProPageBean", allProPageBean);
        return "admin/product/list";
    }
    @RequestMapping("/admin/adminProduct_addPage")
    public String adminProduct_addPage(Model model, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        //查询出所有的二级分类
        List<Categorysecond> cslist = categorySecondService.findAll();
    /*for (Categorysecond categorysecond : cslist) {
      System.out.println(categorysecond.getCsname());
    }*/
        model.addAttribute("cslist", cslist);
        return "admin/product/add";
    }
    @RequestMapping("/admin/adminProduct_save")
    public String adminProduct_save(Product product, HttpServletRequest request, MultipartFile file) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        product.setPdate(new Date());
//    上传图片
        if (file != null) {
            String path = request.getServletContext().getRealPath(
                    "/products");
            String uploadFileName = file.getOriginalFilename();
            String fileName = UUIDUtiils.getUUID() + uploadFileName;
            File diskFile = new File(path + "//" + fileName);
            file.transferTo(diskFile);
            product.setImage("products/" + fileName);
        }
        System.out.println(product.getImage());
        productService.adminProduct_save(product);
        return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
    }
    @RequestMapping("admin/adminProduct_deletecs")
    public String adminProduct_deletecs(@RequestParam int pid, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        productService.adminProduct_deletecs(pid);
        return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
    }
    /**
     * 编辑商品
     *
     * @param pid
     * @param model
     * @param request
     * @return
     * @throws Exception
     */
    @RequestMapping("admin/adminProduct_edit")
    public String adminProduct_edit(@RequestParam int pid, Model model, HttpServletRequest request) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Product product = productService.finbProductByPid(pid);
        model.addAttribute("findByPid", product);
        //查询出所有的二级分类
        List<Categorysecond> cslist = categorySecondService.findAll();
        model.addAttribute("cslist", cslist);
        return "admin/product/edit";
    }
    @RequestMapping("/admin/adminProduct_update")
    public String adminProduct_update(Product product, HttpServletRequest request, MultipartFile file) throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        product.setPdate(new Date());
//    上传图片
        if (file != null) {
            String path = request.getServletContext().getRealPath(
                    "/products");
            String uploadFileName = file.getOriginalFilename();
            String fileName = UUIDUtiils.getUUID() + uploadFileName;
            File diskFile = new File(path + "//" + fileName);
            file.transferTo(diskFile);
            product.setImage("products/" + fileName);
        }
        productService.adminProduct_update(product);
        return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
    }
    /**
     * 订单管理模块
     **/
    @RequestMapping("/admin/adminOrder_findAllByPage")
    public String adminOrder_findAllByPage(@RequestParam int page, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(page);
        model.addAttribute("pageBean", allProPageBean);
        return "admin/order/list";
    }
    //adminOrder_findByState
    @RequestMapping("/admin/adminOrder_findByState")
    public String adminOrder_findByState(@RequestParam int page, @RequestParam int state, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(state, page);
        model.addAttribute("pageBean", allProPageBean);
        return "admin/order/list";
    }
    //订单详情
    //adminOrder_findOrderItem
    @RequestMapping("/admin/adminOrder_findOrderItem")
    public String adminOrder_findOrderItem(@RequestParam int oid, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        Orders orderItems = orderService.findOrderByOid(oid);
        model.addAttribute("orderItems", orderItems);
        return "admin/order/list";
    }
    //更新订单状态
    @RequestMapping("/admin/adminOrder_updateState")
    public String adminOrder_updateState(@RequestParam int oid, @RequestParam int status, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        orderService.updateOrderStatus(oid, status);
        return "redirect:/admin/adminOrder_findAllByPage.action?page=1";
    }
    //后台留言管理
    @RequestMapping("/admin/adminMessage_findAllByPage")
    public String adminMessage_findAllByPage(@RequestParam int page, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        PageBean<Message> pageBean = messageService.findAllMessageByPage(page);
        model.addAttribute("pageBean", pageBean);
        return "admin/message/list";
    }
    @RequestMapping("/admin/adminMessage_delete")
    public String adminOrder_updateState(@RequestParam int messageid, Model model, HttpServletRequest request)
            throws Exception {
        Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
        if (adminuserLogin == null) {
            request.getSession().setAttribute("message", "对不起您还没有登录");
            return "admin/index";
        }
        messageService.deleteMessage(messageid);
        return "redirect:/admin/adminMessage_findAllByPage.action?page=1";
    }
}


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
10月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
819 1
|
10月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
1234 0
|
11月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
1130 64
|
11月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
635 1
|
9月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
635 4
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
392 104
|
JavaScript 前端开发 API
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
本文介绍了HarmonyOS应用开发中的HML、CSS和JS语法。HML作为标记语言,支持数据绑定、事件处理、列表渲染等功能;CSS用于样式定义,涵盖尺寸单位、样式导入、选择器及伪类等特性;JS实现业务逻辑,包括ES6语法支持、对象属性、数据方法及事件处理。通过具体代码示例,详细解析了页面构建与交互的实现方式,为开发者提供全面的技术指导。
432 104