医院药品管理系统开源项目-03 【后台主体 供应商管理】

一、创建后台主体

1.1 编写后台页面

<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>医院药品管理系统</title>
    <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
    <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
</head>
<body class="layui-layout-body">
<!--顶部-->
<div class="layui-layout layui-layout-admin">
    <div class="layui-header">
        <div class="layui-logo"><b>医院药品管理系统</b></div>
        <!-- 头部区域(可配合layui已有的水平导航) -->
        <ul class="layui-nav layui-layout-left">
            <li class="layui-nav-item"><a href="">首页</a></li>
            <li class="layui-nav-item"><a lay-href="/druginfo">商品管理</a></li>
            <li class="layui-nav-item"><a href="">用户</a></li>
            <li class="layui-nav-item">
                <a href="javascript:;">其它系统</a>
                <dl class="layui-nav-child">
                    <dd><a href="">邮件管理</a></dd>
                    <dd><a href="">消息管理</a></dd>
                    <dd><a href="">授权管理</a></dd>
                </dl>
            </li>
        </ul>
        <ul class="layui-nav layui-layout-right">
            <li class="layui-nav-item">
                <a href="javascript:;">
                    <img src="http://t.cn/RCzsdCq" class="layui-nav-img">
                    清风
                </a>
                <dl class="layui-nav-child">
                    <dd><a href="">基本资料</a></dd>
                    <dd><a href="">安全设置</a></dd>
                </dl>
            </li>
            <li class="layui-nav-item"><a href="">注销</a></li>
        </ul>
    </div>
    
    <!--左侧菜单-->
    <div class="layui-side layui-bg-black">
        <!--可以滚动-->
        <div class="layui-side-scroll">
            <!--lay-accordion="true" 菜单可以折叠-->
            <ul class="layui-nav layui-nav-tree" lay-accordion="true">
                <li class="layui-nav-item">
                    <a href="javascript:;" class="layui-icon layui-icon-home layui-nav-item"> 药品库存管理</a>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;" class="layui-icon layui-icon-set-fill layui-nav-item"> 药品销售管理</a>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;" class="layui-icon layui-icon-date layui-nav-item"> 药品明细查询</a>

                    <!--二级菜单-->
                    <dl class="layui-nav-child">
                        <dd><a href="#" class="site-demo-active" lay-href="http://www.baidu.com/" data-id="1" data-title="药品信息">药品信息</a> </dd>
                        <dd><a href="#" class="site-demo-active" lay-href="/supplier" data-id="2" data-title="供应商信息">供应商信息</a> </dd>
                    </dl>
                </li>
            </ul>
        </div>
    </div>

    <!--右侧主体部分-->
    <div class="layui-body">
        <!--tab标签可以出现多个-->
        <div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin: 0;">
            <!--标签列表-->
            <ul class="layui-tab-title"></ul>
            <!--标签内容-->
            <div class="layui-tab-content"></div>
        </div>
    </div>

    <!--页面底部区域-->
    <div class="layui-footer" align="center">
        医院药品管理系统 -- 底部固定区域
    </div>
</div>
<script th:src="@{/static/layui/layui.js}"></script>
<script>

</script>
</body>
</html>

1.2 编写注销跳转

UserController

    /**
     * 注销跳转到登录页面
     * @return toLogin.html
     */
    @RequestMapping(value = "/logout")
    public String logout(){
        //获取session
        Subject subject = SecurityUtils.getSubject();
        //清除session
        subject.logout();
        //重定向到登录页面
        return "redirect:/login";
    }

进行注销测试

1.3 设置二级菜单

点击左侧菜单右侧转向对应页面

<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>医院药品管理系统</title>
    <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
    <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
</head>
<body class="layui-layout-body">
<!--顶部-->
<div class="layui-layout layui-layout-admin">
    <div class="layui-header">
        <div class="layui-logo"><b>医院药品管理系统</b></div>
        <ul class="layui-nav layui-layout-right">
            <li class="layui-nav-item " ><a href="/logout"> 退出系统</a> </li>
        </ul>
    </div>
    <!--左侧菜单-->
    <div class="layui-side layui-bg-black">
        <!--可以滚动-->
        <div class="layui-side-scroll">
            <!--lay-accordion="true" 菜单可以折叠-->
            <ul class="layui-nav layui-nav-tree" lay-accordion="true">
                <li class="layui-nav-item">
                    <a href="javascript:;" class="layui-icon layui-icon-home layui-nav-item"> 药品库存管理</a>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;" class="layui-icon layui-icon-set-fill layui-nav-item"> 药品销售管理</a>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;" class="layui-icon layui-icon-date layui-nav-item"> 药品明细查询</a>

                    <!--二级菜单-->
                    <dl class="layui-nav-child">
                        <dd><a href="#" class="site-demo-active" lay-href="http://www.baidu.com/" data-id="1" data-title="药品信息">药品信息</a> </dd>
                        <dd><a href="#" class="site-demo-active" lay-href="/supplier" data-id="2" data-title="供应商信息">供应商信息</a> </dd>
                    </dl>
                </li>
            </ul>
        </div>
    </div>

    <!--右侧主体部分-->
    <div class="layui-body">
        <!--tab标签可以出现多个-->
        <div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin: 0;">
            <!--标签列表-->
            <ul class="layui-tab-title"></ul>
            <!--标签内容-->
            <div class="layui-tab-content"></div>
        </div>
    </div>

    <!--页面底部区域-->
    <div class="layui-footer" align="center">
        医院药品管理系统 -- 底部固定区域
    </div>
</div>
<script th:src="@{/static/layui/layui.js}"></script>
<script>
    layui.use(['element','layer','jquery'],function () {
        var element = layui.element;
        var $ = layui.$;
        //左侧菜单树叶点击事件
        $('.site-demo-active').on('click',function () {
            var dataid = $(this);
            //判断右侧是否有tab
            if($(".layui-tab-title li[lay-id]").length<=0){
                //没有tab,直接打开新的tab
                active.tabAdd(dataid.attr('lay-href'),dataid.attr('data-id'),dataid.attr('data-title'));
            }else{
                //判断该tab项是否已经存在
                var isExist = false;
                $.each($(".layui-tab-title li[lay-id]"),function () {
                    //如果点击左侧菜单栏传入的id在右侧tab项中的lay-id可以找到,说明该tab项已经打开
                    if($(this).attr("lay-id") == dataid.attr("data-id")){
                        isExist = true;
                    }
                });
                if(isExist == false){
                    //不存在当前id对应的tab,直接打开新的tab
                    active.tabAdd(dataid.attr('lay-href'),dataid.attr('data-id'),dataid.attr('data-title'));
                }
            }
            //不管是不是新增了tab,最后都要转到要打开的选项页面
            active.tabChange(dataid.attr("data-id"));
        });

        //配置active,绑定几项事件,后面可以用active调用这些事件
        var active = {
            //新增tab项
            //url是页面地址,id对应data-id,name对应标题
            tabAdd: function (url,id,name) {
                element.tabAdd('demo',{
                    title:name,
                    <!--显示区域-->
                    content:'<iframe data-frameid="'+id+'" scrolling="auto" frameborder="0" src="'+url+'" style="width:100%;height:700px;"></iframe>',
                    id:id
                });
            },
            //根据id切换到指定的tab
            tabChange: function (id) {
                element.tabChange('demo',id);
            },
            //关闭指定的tab
            tabDelete: function (id) {
                element.tabDelete('demo',id);
            }
        }
    });
</script>
</body>
</html>

测试:
在这里插入图片描述

二、编写供应商管理

2.1编写供应商页面

<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>供应商信息管理</title>
    <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
    <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
    <!--定义列数据-->
    <script type="text/html" id="indexTpl">
        {{d.LAY_TABLE_INDEX+1}}
    </script>
</head>

<body class="layui-layout-body">
    <!--页面自适应宽度-->
    <div class="layui-fluid">
        <!--每一行高度间距-->
        <div class="layui-row layui-col-space15">
            <!--每一列的宽度-->
            <div class="layui-col-md12">
                <!--layui的卡片元素-->
                <div class="layui-card">
                    <!--标题-->
                    <div class="layui-card-header">供应商信息列表</div>
                    <!--主体内容-->
                    <div class="layui-card-body">
                        <!--主体内容放入body,有就显示没有就隐藏-->
                        <table class="layui-hide" id="main-table" lay-filter="main-table"></table>
                        <script type="text/html" id="toolbarDemo">
                            <span class="layui-inline" lay-event="add"><i class="layui-icon">&#xe654;</i> </span>
                            <!--点击事件的监听-->
                            <span class="layui-inline" style="width: 240px;">
                                <input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off">
                            </span>
                            <!--查询搜索框-->
                            <span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch">
                                <!--查询按钮-->
                                <i class="layui-icon">&#xe615;</i>查询
                            </span>
                        </script>
                        <script type="text/html" id="barDemo">
                            <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
                            <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
                        </script>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script th:src="@{/static/layui/layui.js}"></script>
    <script>
        layui.use(['table','form'],function () {
            var $ = layui.$;
            var table = layui.table;
            <!--对后台做出查询-->
            table.render({
                elem: '#main-table',
                height: 650,
                //拼接访问地址
                url: '/supplier/supplierQueryPage',
                //请求参数
                method: 'POST',
                //是否分写
                page: true,
                //指定id
                id: 'table-load',
                toolbar: '#toolbarDemo',
                //有哪些列
                cols: [
                    [
                    {title: '序号',templet: '#indexTpl',width: 60,align:'center'},
                    {field:'name',title:'供应商名称',algin:'center',width:350},
                    {field:'content',title:'描述',algin:'center',width:600},
                    {field:'createtime',title:'创建时间',algin:'center',width:250,
                    templet:"<div>{{layui.util.toDateString(d.createtime,'yyyy-MM-dd HH:mm:ss')}}</div>"},
                    {title:'操作',align:'center',toolbar:'#barDemo',fixed:'right'}
                    ]
                ]
            });

            //监听头工具栏事件
            //监听当前事件
            table.on('toolbar(main-table)',function (obj) {
                switch (obj.event) {
                    case 'add':
                        layer.open({
                            type: 2,
                            title: '新增供应商信息',
                            content: '/supplier/supplierPage',
                            shade:[0.8,'#393d49'],
                            area:['600px','400px'],
                            btn:['确定','取消'],
                            yes:function (index,layero) {
                                var iframeWindow = window['layui-layer-iframe'+index];
                                var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                //监听提交
                                iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                    var field = data.field;
                                    $.ajax({
                                        url: '/supplier/supplierAdd',
                                        data: field,
                                        async: false,
                                        cache: false,
                                        success: function (str) {
                                            if(str.code === 0){
                                                table.reload('table-load');
                                            }
                                            layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                        }
                                    });
                                    layer.close(index);     //关闭弹层
                                });
                                submit.trigger('click');
                            },
                            success:function (layero,index) {
                                
                            }
                        });
                        break;
                    case 'querySearch':
                        var param = $('#param').val();
                        table.reload('table-load',{
                            where: {
                                param: param
                            }
                        });
                        $('#param').val(param);
                        break;
                }
            });

            //监听编辑、删除
            //监听当前表的对象
            table.on('tool(main-table)',function (obj) {
                var data = obj.data;
                //监听事件
                switch (obj.event) {
                    //
                    case 'edit':
                        layer.open({
                            type: 2,
                            title: '编辑供应商信息',
                            content: '/supplier/supplierQueryById?id=' +data.id,
                            shade:[0.8,'#393d49'],
                            area:['600px','400px'],
                            btn:['确定','取消'],
                            yes:function (index,layero) {
                                var iframeWindow = window['layui-layer-iframe'+index];
                                var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                //监听提交
                                iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                    var field = data.field;
                                    $.ajax({
                                        url: '/supplier/supplierEdit',
                                        data: field,
                                        async: false,
                                        cache: false,
                                        success: function (str) {
                                            if(str.code === 0){
                                                table.reload('table-load');
                                            }
                                            layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                        }
                                    });
                                    layer.close(index);     //关闭弹层
                                });
                                submit.trigger('click');
                            },
                            success:function (layero,index) {

                            }
                        });
                        break;
                    case 'del':
                        layer.confirm('确认要删除吗?',function (index) {
                            $.ajax({
                                url: '/supplier/supplierDelById?id=' +data.id,
                                data: null,
                                async: false,
                                cache: false,
                                success: function (str) {
                                    table.reload('table-load');
                                    layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                }
                            });
                        })
                        break;
                }
            });
        });
    </script>
</body>
</html>

2.2 创建供应商实体类

Supplier

package com.dh.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 供应商
 */
@Data
@TableName(value = "supplier") //mybatis的声明,对应的表
public class Supplier implements Serializable {
    /*主键*/
    @TableField(value = "id") //对应的是id
    //设置主键,主键自增
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;

    /*用户名*/
    private String name;

    /*供应商描述*/
    private String content;

    /*创建时间*/
    private Date createtime;
}

2.3 创建mapper接口

供应商的增删改查mapper

package com.dh.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dh.pojo.Supplier;
import org.apache.ibatis.annotations.Mapper;

/**
 * 供应商的增删改查mapper
 */

@Mapper
public interface SupplierMapper extends BaseMapper<Supplier> {
}

2.4 创建sevice业务层

package com.dh.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dh.pojo.Supplier;

import java.util.List;

/**
 * 供应商的service接口
 */
public interface SupplierService extends IService<Supplier> {

    /**
     * 查询所有供应商信息
     * @return
     */
    public List<Supplier> querySupplierList();

    /**
     * 分页查询供应商数据
     * @param pageNum 第几页
     * @param pageSize 每页多少条数据
     * @param param 查询参数-供应商名称
     * @return
     */
    public IPage<Supplier> selectSupplierPage(int pageNum,int pageSize,String param);

    /**
     * 新增一条供应商信息
     * @param supplier
     * @return 返回一条数据
     */
    public int addSupplier(Supplier supplier);

    /**
     * 修改一条供应商信息
     * @param supplier
     */
    public int updateSupplier(Supplier supplier);

    /**
     * 根据主键id查询一个供应商信息
     * @param id 供应商
     */
    public Supplier querySupplierById(Integer id);

    /**
     * 根据主键id删除一个供应商信息
     * @param id 供应商
     */
    public int DeleteSupplierById(Integer id);

}

Impl 实现类

package com.dh.service.Impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dh.mapper.SupplierMapper;
import com.dh.pojo.Supplier;
import com.dh.service.SupplierService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 供应商SupplierService实现类
 */
@Service
public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> implements SupplierService {

    @Autowired
    private  SupplierMapper supplierMapper;

    /**
     * 查询所有供应商
     *
     * @return
     */
    @Override
    public List<Supplier> querySupplierList() {
        return supplierMapper.selectList(null);
    }

    /**
     * 分页查询供应商数据
     *
     * @param pageNum  第几页
     * @param pageSize 每页多少条数据
     * @param param    查询参数-供应商名称
     * @return
     */
    @Override
    public IPage<Supplier> selectSupplierPage(int pageNum, int pageSize, String param) {
        QueryWrapper<Supplier> queryWrapper = new QueryWrapper<>();
        if(StringUtils.isNotBlank(param)){
            //查询供应商名称
            queryWrapper.like("name",param);
        }
        //定义分页参数配置,pageNum传入第几页、pageSize页面大小
        Page<Supplier> page = new Page<>(pageNum,pageSize);
        //返回查询结果
        return supplierMapper.selectPage(page,queryWrapper);
    }

    /**
     * 新增一条供应商信息
     *
     * @param supplier
     */
    @Override
    public int addSupplier(Supplier supplier) {
        return supplierMapper.insert(supplier);
    }

    /**
     * 修改一条供应商信息
     *
     * @param supplier
     */
    @Override
    public int updateSupplier(Supplier supplier) {
        return supplierMapper.updateById(supplier);
    }

    /**
     * 根据主键id查询一个供应商对象
     *
     * @param id
     * @return
     */
    @Override
    public Supplier querySupplierById(Integer id) {
        return supplierMapper.selectById(id);
    }

    /**
     * 根据主键id删除一个供应商对象
     *
     * @param id
     * @return
     */
    @Override
    public int DeleteSupplierById(Integer id) {
        return supplierMapper.deleteById(id);
    }
}

2.5 编写controller控制层

package com.dh.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dh.common.ResultMapUtil;
import com.dh.pojo.Supplier;
import com.dh.service.SupplierService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 供应商相关的控制层
 */
@Controller
@RequestMapping(value = "/supplier") //设置公共的返回地址
public class SupplierController {

    @Autowired
    private SupplierService supplierService;

    /**
     * 1.转向供应商页面
     */
    @RequestMapping
    public String supplier(){
        return "/supplier";
    }

    /**
     *
     * 2.分页查询供应商列表
     * @param param 查询参数 供应商名字
     * @param pageNum 当前页面是第几页
     * @param pageSize 每一页的大小
     * @return
     */
    @RequestMapping(value = "/supplierQueryPage")
    @ResponseBody
    public Object supplierQueryPage(String param, @RequestParam(defaultValue = "1")int pageNum, @RequestParam(defaultValue = "10")int pageSize){
        try{
            //去service层查询参数配置
            IPage<Supplier> iPage = supplierService.selectSupplierPage(pageNum,pageSize,param);
            //5.封装到方法中
            return ResultMapUtil.getHashMapMysqlPage(iPage);
        } catch (Exception e){//返回错误的结果
            return ResultMapUtil.getHashMapException(e);
        }
    }
}

2.6 编写ResultMapUtil

package com.dh.common;

import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.HashMap;

/**
 * 给前端返回的JSON格式数据
 */
public class ResultMapUtil {
    /**
     * 登录返回结果
     */
    public static HashMap<String,Object> getHashMapLogin(String msg,String code){
        HashMap<String,Object> resultMap = new HashMap<>();
        resultMap.put("msg",msg);
        resultMap.put("code",code);
        if ("1".equals(code)){
            resultMap.put("icon", 1);
        }else {
            resultMap.put("icon", 3);
        }
        resultMap.put("anim", 4);
        return resultMap;
    }

    /**
     * 3.分页查询结果
     * @param object
     * @return
     */
    public static HashMap<String,Object> getHashMapMysqlPage(IPage<?> object){//IPage<?>支持所有泛型
        //定义返回值
        HashMap<String,Object> resultMap = new HashMap<>();
        //返回成功为 0
        resultMap.put("code",0);
        //默认没有内容
        resultMap.put("msg","");
        //获取数据,当前对象的数据
        resultMap.put("count",object.getTotal());
        //传入当前数据到 data
        resultMap.put("data",object.getRecords());
        return resultMap;
    }

    /**
     * 4.异常数据统一处理
     * @param e 传入异常信息
     * @return
     */
    public static HashMap<String,Object> getHashMapException(Exception e){
        HashMap<String,Object> resultMap = new HashMap<>();
        resultMap.put("code",0);
        //把异常信息返回给前端
        resultMap.put("msg",e.getMessage());
        return resultMap;
    }

2.7 运行测试效果

SQL中编写一条数据
在这里插入图片描述

运行测试:
在这里插入图片描述


2.8 增加功能

2.8.1 创建新增页面

supplierPage.html

<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>供应商信息</title>
    <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
    <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-card">
            <div class="layui-card-body" style="padding: 15px;">
                <form class="layui-form layui-form-pane" action="">
                    <!--判断传入的参数-->
                    <input name="id" th:value="${obj?.id}" class="layui-input layui-hide"/>
                    <!--获取供应商名称-->
                    <div class="layui-form-item">
                        <label class="layui-form-label">供应商名称</label>
                        <div class="layui-input-block">
                            <input type="text" name="name" th:value="${obj?.name}" lay-verify="required" placeholder="请输入供应商名称" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <!--获取供应商描述-->
                    <div class="layui-form-item">
                        <label class="layui-form-label">供应商描述</label>
                        <div class="layui-input-block">
                            <textarea name="content" th:text="${obj?.content}" lay-verify="required" placeholder="请输入供应商描述" autocomplete="off" class="layui-textarea"></textarea>
                        </div>
                    </div>
                    <!--提交按钮,提交参数-->
                    <div class="layui-form-item layui-hide">
                        <input type="button" lay-submit lay-filter="LAY-front-submit" id="LAY-front-submit" value="确认">
                    </div>
                </form>
            </div>
        </div>
    </div>
    <script th:src="@{/static/layui/layui.js}"></script>
    <script>
        layui.use(['form'],function () {
            var $ = layui.$;

        });
    </script>
</body>
</html>

2.8.2 增加功能

SupplierController

   /**
     * 6.转向供应商新增页面
     */
    @RequestMapping(value = "/supplierPage")
    public String supplierPage(){
        return "/supplierPage";
    }


    /**
     * 7.添加一个供应商
     * @return
     */
    @RequestMapping(value = "/supplierAdd")
    @ResponseBody
    public Object supplierAdd(Supplier supplier){
        try{
        //获取当前时间
        supplier.setCreatetime(new Date());
        //执行保存
        int i = supplierService.addSupplier(supplier);
        return ResultMapUtil.getHashMapSave(i);
        } catch (Exception e){
            return ResultMapUtil.getHashMapException(e);
        }
    }

2.8.3 编写ResultMapUtil

 /**
     * 8.保存成功的统一返回格式
     * @param i
     * @return
     */
    public static HashMap<String,Object> getHashMapSave(int i){
        HashMap<String,Object> resultMap = new HashMap<>();
        if(i == 0){
            resultMap.put("msg","保存失败");
            resultMap.put("code",1);
            resultMap.put("icon",5);
            resultMap.put("anim",6);
        }else {
            resultMap.put("msg","保存成功");
            resultMap.put("code",0);
            resultMap.put("icon",1);
            resultMap.put("anim",4);
        }
        return resultMap;
    }

运行测试:
在这里插入图片描述
在这里插入图片描述

2.9 修改功能

2.9.1 根据id删除

    /**
     * 转向供应商编辑页面
     * 根据id查询,required 必须存在
     */
    @RequestMapping(value = "/supplierQueryById")
    public String supplierQueryById(@RequestParam(name = "id",required = true)Integer id, Model model){
        //根据Id 获取查询当前对象
        Supplier supplier = supplierService.querySupplierById(id);
        //把查询的数据,存入model中
        model.addAttribute("obj",supplier);
        return "/supplierPage";
    }

    /**
     * 修改一个供应商
     */
    @RequestMapping(value = "/supplierEdit")
    @ResponseBody
    public Object supplierEdit(Supplier supplier){
        try{
            int i = supplierService.updateSupplier(supplier);
            return ResultMapUtil.getHashMapSave(i);
        } catch (Exception e){//失败就报异常
            return ResultMapUtil.getHashMapException(e);
        }
    }

2.9.2 测试:

在这里插入图片描述
在这里插入图片描述

2.10 删除功能

2.10.1 根据id删除

/**
     * 11.删除一个供应商
     */
    @RequestMapping(value = "/supplierDelById")
    @ResponseBody
    public Object supplierDelById(Integer id){
        try{
            int i = supplierService.DeleteSupplierById(id);
            return ResultMapUtil.getHashMapDel(i);
        } catch (Exception e){
            return ResultMapUtil.getHashMapException(e);
        }
    }

2.10.2 编写ResultMapUtil

    /**
     * 12.删除成功的统一返回格式
     */
    public static HashMap<String,Object> getHashMapDel(int i){
        HashMap<String,Object> resultMap = new HashMap<>();
        //等于0就保存成功
        if(i == 0){
            resultMap.put("msg","删除失败");
            resultMap.put("code",1);
            resultMap.put("icon",5);
            resultMap.put("anim",6);
        }else {
            resultMap.put("msg","删除成功");
            resultMap.put("code",0);
            resultMap.put("icon",1);
            resultMap.put("anim",4);
        }
        return resultMap;
    }

测试:
在这里插入图片描述
在这里插入图片描述


项目下载

git地址:

https://gitee.com/light_as_breeze/jt/tree/master/src/main

微信公众号:

微信公众号:淡若清风丶
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值