ssm+layui实现smbms供应商管理(代码)

文章介绍了使用Laiuimini模板在SpringBoot项目中设计RESTfulAPI,涉及Controller、Service、Mapper接口以及实体类的实现,包括Provider和User的CRUD操作,同时展示了登录功能的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

界面展示:


目录结构

----------------------------------------------------------------------------------------------

利用 laiuimini 模板对相应模块进行修改:

controller

provider

package com.hz.controller;

import com.hz.pojo.Provider;
import com.hz.service.ProviderService;
import com.hz.utils.ResultAJAX;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/pro")
public class ProviderController {

    @Autowired
    private ProviderService providerService;

    @RequestMapping("/findProviderList")
    @ResponseBody
    public ResultAJAX findProviderList(
            @RequestParam(value = "page",defaultValue = "1") Integer page,
            @RequestParam(value = "limit",defaultValue = "10") Integer limit,
            String proName,
            String proDesc){

        return providerService.findProviderList(page,limit,proName,proDesc);
    }


    @RequestMapping("/findProviderById/{id}")
    @ResponseBody
    public ResultAJAX findProviderById(@PathVariable("id") Long id){
        return providerService.findProviderById(id);
    }

    @RequestMapping("/updateProvider")
    @ResponseBody
    public  ResultAJAX updateProvider(Provider provider){

        return providerService.updateProvider(provider);
    }

    @RequestMapping("/insertProvider")
    @ResponseBody
    public ResultAJAX insertProvider(Provider provider){

        return providerService.insertProvider(provider);
    }

    @RequestMapping("/deleteProvider/{id}")
    @ResponseBody
    public ResultAJAX deleteProvider(@PathVariable("id") Integer id){

        return providerService.deleteProvider(id);
    };


}

user

package com.hz.controller;

import com.hz.service.UserService;
import com.hz.utils.ResultAJAX;
import org.apache.ibatis.annotations.Param;
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.ResponseBody;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/userLogin")
    @ResponseBody
    public ResultAJAX userLogin(
            String userCode,
            String userPassword){
        return userService.userLogin(userCode,userPassword);
    }



}

mapper

provider

package com.hz.mapper;

import com.hz.pojo.Provider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface ProviderMapper {

    /**
     * 条件查询供应商信息
     */

    public abstract List<Provider> findProviderList(
            @Param("pyl") Integer pyl,
            @Param("limit") Integer limit,
            @Param("proName") String proName,
            @Param("proDesc") String proDesc
    );

    /**
     * 获得总记录数
     * @return
     */
    public abstract int findProviderListCount(
            @Param("proName")String proName,
            @Param("proDesc")String proDesc);


    /**
     * 根据供应商ID 获得单个对象
     */
    public abstract Provider findProviderById(Long id);

    /**
     * 保存
     */
    public abstract int updateProvider(Provider provider);

    /**
     *根据id删除用户
     */
    public abstract int deleteProvider(Integer id);

    /**
     * 新增
     */
    public abstract int insertProvider(Provider provider);

}

user

package com.hz.mapper;

import com.hz.pojo.User;
import org.apache.ibatis.annotations.Param;

/**
 * 用户登录
 */
public interface UserMapper {

    /**
     * 用户登录
     */
    public abstract User userLogin(
            @Param("userCode") String userCode,
            @Param("userPassword") String userPassword);

}


实体类略过


service

provider

package com.hz.service;

import com.hz.pojo.Provider;
import com.hz.utils.ResultAJAX;

import java.util.List;

public interface ProviderService {


    /**
     * 条件查询
     */

    public abstract ResultAJAX findProviderList(Integer page,Integer limit,String proName,String proDesc);


    /**
     * 查
     */
    public abstract ResultAJAX findProviderById(Long id);

    /**
     * 保存
     */
    public abstract ResultAJAX updateProvider(Provider provider);

    /**
     * 新增
     */
    public abstract ResultAJAX insertProvider(Provider provider);

    /**
     * 删除
     */
    public abstract ResultAJAX deleteProvider(Integer id);
}
package com.hz.service.impl;

import com.hz.mapper.ProviderMapper;
import com.hz.pojo.Provider;
import com.hz.service.ProviderService;
import com.hz.utils.ResultAJAX;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProviderServiceImpl implements ProviderService {

    @Autowired
    private ProviderMapper providerMapper;

    @Override
    public ResultAJAX findProviderList(Integer page,Integer limit,String proName,String proDesc) {
        //偏移量 = (当前页-1)*每页记录数
        int pyl = (page-1)*limit;
        List<Provider> providerList =   providerMapper.findProviderList(pyl,limit,proName,proDesc);
        //总记录数
        int count = providerMapper.findProviderListCount(proName,proDesc);
        return ResultAJAX.successLayui(count ,providerList);
    }

    @Override
    public ResultAJAX findProviderById(Long id) {

        return ResultAJAX.success(providerMapper.findProviderById(id));
    }
    //更新
    @Override
    public ResultAJAX updateProvider(Provider provider) {

        if (providerMapper.updateProvider(provider)>=1){
            return ResultAJAX.success();
        }else {
            return ResultAJAX.error();
        }
    }
    //新增
    @Override
    public ResultAJAX insertProvider(Provider provider) {

        return ResultAJAX.success(providerMapper.insertProvider(provider));
    }
    //删除
    @Override
    public ResultAJAX deleteProvider(Integer id) {

        return ResultAJAX.success(providerMapper.deleteProvider(id));
    }


}

----------------------------------------------------------------------------

user

package com.hz.service;

import com.hz.utils.ResultAJAX;

public interface UserService {

    public abstract ResultAJAX userLogin(String userCode,String userPassword);

}
package com.hz.service.impl;

import com.hz.mapper.UserMapper;
import com.hz.service.UserService;
import com.hz.utils.ResultAJAX;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public ResultAJAX userLogin(String userCode, String userPassword) {

        if (userMapper.userLogin(userCode,userPassword)!=null){
            return ResultAJAX.success(userMapper.userLogin(userCode,userPassword));
        }else{
            return ResultAJAX.error();
        }
    }


}


 utils工具类

package com.hz.utils;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class ResultAJAX {

    private Integer code;
    private String msg;
    private Integer count;
    private Object data;

    public ResultAJAX(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public static ResultAJAX successLayui(Integer count,Object data){
        return  new ResultAJAX(0,"操作成功",count,data);
    }

    public static ResultAJAX success(){
        return  new ResultAJAX(0,"操作成功",null);
    }
    public static ResultAJAX success(Object data){
        return  new ResultAJAX(0,"操作成功",data);
    }

    public static ResultAJAX error(){
        return  new ResultAJAX(1,"操作失败",null);
    }
}

页面部分

        js部分

login

<script>
    layui.use(['form'], function () {
        var form = layui.form,
            layer = layui.layer;

        // 登录过期的时候,跳出ifram框架
        if (top.location != self.location) top.location = self.location;

        // 粒子线条背景
        $(document).ready(function(){
            $('.layui-container').particleground({
                dotColor:'#7ec7fd',
                lineColor:'#7ec7fd'
            });
        });

        // 进行登录操作
        form.on('submit(login)', function (data) {
            data = data.field;

            $.post("/user/userLogin",data,function (res) {
                if (res.code==0){
                    layer.msg('登录成功', function () {
                        window.location = '/views/index.html';
                    })
                }else {
                    layer.msg('用户名或密码错误');
                }
            },"json");

            if (data.userCode == '') {
                layer.msg('用户名不能为空');
                return false;
            }
            if (data.userPassword == '') {
                layer.msg('密码不能为空');
                return false;
            };
            return false;
        });
    });
</script>

index

<script>
    layui.use(['jquery', 'layer', 'miniAdmin','miniTongji'], function () {
        var $ = layui.jquery,
            layer = layui.layer,
            miniAdmin = layui.miniAdmin,
            miniTongji = layui.miniTongji;

        var options = {
            iniUrl: "/statics/api/init.json",    // 初始化接口
            clearUrl: "/statics/api/clear.json", // 缓存清理接口
            urlHashLocation: true,      // 是否打开hash定位
            bgColorDefault: false,      // 主题默认配置
            multiModule: true,          // 是否开启多模块
            menuChildOpen: false,       // 是否默认展开菜单
            loadingTime: 0,             // 初始化加载时间
            pageAnim: true,             // iframe窗口动画
            maxTabNum: 20,              // 最大的tab打开数量
        };
        miniAdmin.render(options);

        // 百度统计代码,只统计指定域名
        miniTongji.render({
            specific: true,
            domains: [
                '99php.cn',
                'layuimini.99php.cn',
                'layuimini-onepage.99php.cn',
            ],
        });

        $('.login-out').on("click", function () {
            layer.msg('退出登录成功', function () {
                window.location = 'page/login-3.html';
            });
        });

        var tableReload = function () {

        }

    });

    var table;
    var parentTable = function (obj) {
        table = obj;
    }

    //刷新table
    var TableReload = function () {
        table.reload();//刷新父级页面
    }
    
</script>

add

<script>
    layui.use(['form'], function () {
        var form = layui.form,
            layer = layui.layer,
            $ = layui.$;

        //监听提交,将数据添加
        form.on('submit(saveBtn)', function (data) {

            var url ="/pro/insertProvider";

            $.post(url,data.field,function(res){
                parent.layer.msg(res.msg,{
                    icon:parseInt(res.code)==0?1:2,
                    shade:0.5,
                    time:2000 //设置2秒后自动关闭
                },function () {
                    parent.TableReload();
                    parent.layer.closeAll();
                });

            },"json");


            return false;
        });

    });
</script>

edit

<script>
    layui.use(['form'], function () {
        var form = layui.form,
            layer = layui.layer,
            $ = layui.$;

        var id = getUrlParam("id");

        $.getJSON("/pro/findProviderById/"+id,{},function (res) {
            //给表单赋值
            form.val("formGetValue",res.data);
        });

        //监听提交(确认保存)
        form.on('submit(saveBtn)', function (data) {

            var url ="/pro/updateProvider";

            // if (id==''){
            //     //插入
            //     url = "/pro/insertProvider";
            // }

            $.post(url,data.field,function(res){

                   parent.layer.msg(res.msg,{
                       icon:parseInt(res.code)==0?1:2,
                       shade:0.5,
                       time:2000 //设置2秒后自动关闭
                   },function () {
                       parent.TableReload();
                       parent.layer.closeAll();
                   });

            },"json");

            return false;
        });

    });


    function getUrlParam(name)
    {
        //构造一个含有目标参数的正则表达式对象
        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
        //匹配目标参数
        var r = window.location.search.substr(1).match(reg);
        //返回参数值
        if (r!=null) return unescape(r[2]); return null;
    }

</script>

list

<script>

    layui.use(['form', 'table'], function () {
        var $ = layui.jquery,
            form = layui.form,
            table = layui.table;

        var tb = table.render({
            elem: '#currentTableId',
            url: '/pro/findProviderList',
            toolbar: '#toolbarDemo',
            defaultToolbar: ['filter', 'exports', 'print', {
                title: '提示',
                layEvent: 'LAYTABLE_TIPS',
                icon: 'layui-icon-tips'
            }],
            cols: [[
                {type: "checkbox", width: 50},
                {field: 'id', width: 80, title: 'ID', sort: true},
                {field: 'proCode', width: 150, title: '供应商编码'},
                {field: 'proName', width: 150, title: '供应商名称'},
                {field: 'proDesc', width: 300, title: '供应商描述'},
                {field: 'proContact', width: 100, title: '联系人'},
                {field: 'proPhone', width: 150, title: '联系电话'},
                {field: 'creationDate', width: 150, title: '创建时间'},
                {title: '操作', minWidth: 100, toolbar: '#currentTableBar', align: "center",fixed:"right"}
            ]],
            limits: [10, 15, 20, 25, 50, 100],
            limit: 10,
            page: true,
            skin: 'line'
        });

        parent.parentTable(tb);


        // 监听搜索操作
        form.on('submit(data-search-btn)', function (data) {

            //var result = JSON.stringify(data.field);

            //执行搜索重载
            table.reload('currentTableId', {
                page: {
                    curr: 1
                }
                , where:data.field

            }, 'data');

            return false;
        });

        /**
         * toolbar监听事件
         */
        table.on('toolbar(currentTableFilter)', function (obj) {

            if (obj.event === 'add') {  // 监听添加操作
                var index = parent.layer.open({
                    title: '添加供应商',
                    type: 2,
                    shade: 0.2,
                    maxmin:true,
                    shadeClose: true,
                    area: ['70%', '70%'],
                    content: '/views/provider/providerAdd.html',
                });


            } else if (obj.event === 'delete') {  // 监听删除操作
                var checkStatus = table.checkStatus('currentTableId')
                    , data = checkStatus.data;
                layer.alert(JSON.stringify(data));
            }
        });
        //监听表格复选框选择
        table.on('checkbox(currentTableFilter)', function (obj) {
            console.log(obj)
        });
        table.on('tool(currentTableFilter)', function (obj) {
            var data = obj.data;

            if (obj.event === 'edit') {
                var index = parent.layer.open({
                    title: '编辑用户',
                    type: 2,
                    shade: 0.2,
                    maxmin:true,
                    shadeClose: true,
                    area: ['50%', '50%'],
                    content: '/views/provider/providerEdit.html?id='+data.id,
                });
                return false;

            } else if (obj.event === 'delete') {
                parent.layer.confirm('确定删除此数据吗?', {
                    title: "操作提示",
                    btn: ['确定', '取消'] //可以无限个按钮
                    ,btn3: function(index, layero){
                        //按钮【按钮三】的回调
                    }
                }, function(index, layero){
                    //按钮【按钮一】的回调
                    //发送需要删除的id
                    $.post("/pro/deleteProvider/"+data.id,function(res){
                        parent.layer.msg(res.msg,{
                            icon:parseInt(res.code)==0?1:2,
                            shade:0.5,
                            time:2000 //设置2秒后自动关闭
                        },function () {
                            parent.TableReload();
                            layer.closeAll();
                        });
                    },"json");
                }, function(index){
                    //按钮【按钮二】的回调
                });

            }
        });

    });
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚人钊呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值