若依非分离版-第五十七章:用户数据导入前后端源码拆解

、界面操作

1、点击左侧菜单,选择用户管理,点击右侧工作区的导入

2、下载的数据模版

3、配置好上传数据模版后,选择文件

4、导入成功

实现代码拆解

1、导入按钮代码

  <a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:user:import">
    <i class="fa fa-upload"></i> 导入
</a>

具体路径截图:

// 导入数据
importExcel: function(formId, width, height) {
    table.set();    
    var currentId = $.common.isEmpty(formId) ? 'importTpl' : formId;    
    var _width = $.common.isEmpty(width) ? "400" : width;    
    var _height = $.common.isEmpty(height) ? "230" : height;
    top.layer.open({        
        type: 1,        
        area: [_width + 'px', _height + 'px'],        
        fix: false,        //不固定
        maxmin: true,        
        shade: 0.3,        
        title: '导入' + table.options.modalName + '数据',       
        content: $('#' + currentId).html(),        
        btn: ['<i class="fa fa-check"></i> 导入', '<i class="fa fa-remove"></i> 取消'],       
         // 弹层外区域关闭
        shadeClose: true,        
        btn1: function(index, layero){            
        var file = layero.find('#file').val();            
        if (file == '' || (!$.common.endWith(file, '.xls') && !$.common.endWith(file, '.xlsx'))){
                $.modal.msgWarning("请选择后缀为 “xls”或“xlsx”的文件。");                return false;
         }            
         var index = top.layer.load(2, {shade: false});
            $.modal.disable();            
            var formData = new FormData(layero.find('form')[0]);
            $.ajax({                
                url: table.options.importUrl,                
                data: formData,                
                cache: false,                
                contentType: false,                
                processData: false,                
                type: 'POST',                
                success: function (result) {                    
                if (result.code == web_status.SUCCESS) {
                       $.modal.close(index);
                        $.modal.closeAll();
                        $.modal.alertSuccess(result.msg);
                        $.table.refresh();
                 } else if (result.code == web_status.WARNING) {
                       $.modal.close(index);
                        $.modal.enable();
                        $.modal.alertWarning(result.msg)
                 } else {
                        $.modal.close(index);
                        $.modal.enable();
                        $.modal.alertError(result.msg);
                    }
                },                
                complete: function () {
                   layero.find('#file').val('');
                }
            });
        }
    });
},

如上述,是具体导入执行函数。

如上述代码第7行top.layer.open。打开一个层,其中层的大小通过如下两段代码设置

var _width = $.common.isEmpty(width) ? "400" : width;

var _height = $.common.isEmpty(height) ? "230" : height;

如上述代码第19行,绑定提交按钮方法。具体处理逻辑:

1、判断文件后缀是否为 “xls”或“xlsx”的文件。

2、设置遮罩层。

3、将文件上传到后台。其中后台的路径配置是url: table.options.importUrl,

importUrl的配置在user.html里面的options配置里面

java 后台处理方法

上传的处理函数的文件处理路径入下截图:

@Log(title = "用户管理", businessType = BusinessType.IMPORT)@RequiresPermissions("system:user:import")@PostMapping("/importData")@ResponseBodypublic AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception{
    ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
    List<SysUser> userList = util.importExcel(file.getInputStream());
    String message = userService.importUser(userList, updateSupport, getLoginName());    return AjaxResult.success(message);
}

MultipartFile file: 读取上传文件的数据。

ExcelUtil:初始化execl处理的工具类

util.importExcel(file.getInputStream());读取execl文件,并返回List<SysUser>对象

userService.importUser:将列表数据插入到数据库表里面。

数据库表模型

CREATE TABLE `sys_user` (  
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',  
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID',  
`login_name` varchar(30) NOT NULL COMMENT '登录账号',  
`user_name` varchar(30) DEFAULT '' COMMENT '用户昵称',  
`user_type` varchar(2) DEFAULT '00' COMMENT '用户类型(00系统用户 01注册用户)',  
`email` varchar(50) DEFAULT '' COMMENT '用户邮箱',  
`phonenumber` varchar(11) DEFAULT '' COMMENT '手机号码',  
`sex` char(1) DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',  
`avatar` varchar(100) DEFAULT '' COMMENT '头像路径',  
`password` varchar(50) DEFAULT '' COMMENT '密码',  
`salt` varchar(20) DEFAULT '' COMMENT '盐加密',  
`status` char(1) DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',  
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',  
`login_ip` varchar(128) DEFAULT '' COMMENT '最后登录IP', 
 `login_date` datetime DEFAULT NULL COMMENT '最后登录时间',  
 `pwd_update_date` datetime DEFAULT NULL COMMENT '密码最后更新时间',  
 `create_by` varchar(64) DEFAULT '' COMMENT '创建者',  
 `create_time` datetime DEFAULT NULL COMMENT '创建时间',  
 `update_by` varchar(64) DEFAULT '' COMMENT '更新者',  
 `update_time` datetime DEFAULT NULL COMMENT '更新时间',  
 `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户信息表';


未来计划

1、ruoyi非分离版本拆解

2、ruoyi-vue-pro:讲解工作流

3、ruoyi-vue-pro:支付模块,电商模块

4、基于ruoyi-vue-pro项目开发

5、JEECG低代码开发平台

请关注我,本星球会持续推出更多的开源项目代码解析,如有更好的意见请留言回复或者私信。

来源: 互联网
本文观点不代表源码解析立场,不承担法律责任,文章及观点也不构成任何投资意见。

赞 ()

相关推荐

发表回复

评论列表

点击查看更多

    联系我们

    在线咨询: QQ交谈

    微信:13450247865

    邮件:451255340#qq.com

    工作时间:周一至周五,9:30-18:30,节假日休息

    微信