RBAC从零开始--用户管理之添加

需要的js插件

bootstrap-select.min.js
bootstrap-select.min.css
jquery-ui.min.js
jquery-ui.min.css
toastr.min.js
toastr.min.css

jquery-ui.min.js/css下载地址
toastr.min.js/css下载地址


user-mgmt.jsp

......
<!-- 添加弹出层 modal -->
<div class="modal right fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title" id="myModalLabel">添加用户</h4>
            </div>
            <div class="modal-body">

                <div class="form-group">
                    <div class="row">
                        <label class="control-label col-sm-2">用户名</label>
                        <input id="user-name" class="form-control col-sm-9" placeholder="输入用户名..." />
                        <p class="name-img"></p>

                    </div>
                </div>

                <div class="form-group">
                    <div class="row">
                        <label class="control-label col-sm-3">管理员</label>
                        <label class="radio-inline col-xs-4 col-sm-4">
                            <input type="radio" name="is-admin" value="1" checked></label>
                        <label class="radio-inline col-xs-4 col-sm-4">
                            <input type="radio" name="is-admin" value="0"></label>
                    </div>
                </div>

                <div class="form-group">
                    <div class="row">
                        <label class="control-label col-sm-2">邮箱</label>
                        <input type="email" id="user-email" class="form-control col-sm-9"/>
                        <p class="email-img"></p>
                    </div>
                </div>

                <div class="form-group">
                    <div class="row">
                        <label class="control-label col-sm-3">用户状态</label>
                        <label class="radio-inline col-xs-4 col-sm-4">
                            <input type="radio" name="user-status" value="1" checked>有效
                        </label>
                        <label class="radio-inline col-xs-4 col-sm-4">
                            <input type="radio" name="user-status" value="0">无效
                        </label>
                    </div>
                </div>

                <div class="form-group">
                    <div class="row set-role">
                        <label class="control-label col-sm-3">设置角色</label>
                        <select id="role-select-1" class="col-sm-8 form-control selectpicker show-tick" data-live-search="true">
                        </select>
                    </div>
                </div>

            </div>

            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                <button type="button" class="btn btn-primary add-user">确定</button>
            </div>
        </div>
    </div>
</div>
......

user-mgmt.js

//添加用户,是否通过所有校验(用户名、邮箱唯一性等等),false代表没有通过校验
var insertCheck = true;

//存储角色信息
var roles = {};

//获取所有角色信息
function initRoles() {
    $.ajax({
        type: 'GET' ,
        url: '/role/getAll' ,
        dataType: 'json' ,
        success: function (res) {
            if (res.code != 200) {
                toastr.error(res.msg);
            } else {
                var roles = res.data;


                $('#role-select-1').append('<option value="0">请选择</option>');
                $('#role-select-2').append('<option value="0">请选择</option>');
                for (var index in roles) {
                    var role = roles[index];
                    var id = role.id;
                    var name = role.name;
                    $('#role-select-1').append("<option value='" + id + "'>" + name + "</option>");
                    $('#role-select-2').append("<option value='" + id + "'>" + name + "</option>");
                }


                $('.selectpicker').selectpicker('refresh');
            }
        }
    });
}

//初始化toastr插件
function initToastr() {
    toastr.options = {
        "closeButton": false , //是否显示关闭按钮
        "debug": false , //是否使用debug模式
        "positionClass": "toast-top-center" , //弹出窗的位置
        "showDuration": "300" , //显示的动画时间
        "hideDuration": "1000" , //消失的动画时间
        "timeOut": "2000" , //展现时间
        "extendedTimeOut": "1000" , //加长展示时间
        "showEasing": "swing" ,  //显示时的动画缓冲方式
        "hideEasing": "linear" , //消失时的动画缓冲方式
        "showMethod": "fadeIn" , //显示时的动画方式
        "hideMethod": "fadeOut"  //消失时的动画方式
    };
}

$('.add-user').click(function () {

    if (!insertCheck) {
        toastr.warning('参数校验不通过!');
        return;
    }

    var userName = $('#user-name').val();
    var isAdmin = $("input[name='is-admin']:checked").val();
    var status = $("input[name='user-status']:checked").val();
    var email = $('#user-email').val();

    if (userName == undefined || userName == "") {
        toastr.warning('用户名不能为空!');
        return;
    }

    if (email == undefined || email == "") {
        toastr.warning('用户邮箱不能为空!');
        return;
    }

    $('#addModal').modal('hide');

    var user = {
        name : userName ,
        status : status == 1 ? true : false ,
        email : email ,
        isAdmin : isAdmin == 1 ? true : false
    };

    var roleId =  $('button[data-id=role-select-1] .filter-option').attr("value");

    if (roleId == "0" || roleId == undefined || roleId == null) {
        toastr.warning('请选择用户角色!');
        return;
    }

    $.ajax({
        type: 'POST' ,
        url: '/user/add' ,
        data: JSON.stringify({
            user : user ,
            roleId : roleId
        }) ,
        contentType: "application/json" ,
        dataType: 'json' ,
        success: function (res) {
            if (res.code != 200) {
                toastr.error(res.msg);
            } else {
                toastr.info(res.msg);
                $table.bootstrapTable('refresh');
            }
        }
    });
});

//校验邮箱
function isEmail(strEmail) {

    if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) {
        return true;
    }
    return false;
}

//校验用户名的唯一性
$('#user-name').blur(function () {

    $('.name-img').empty();

    var name = $('#user-name').val();

    if (name == undefined || name == null || name == '') {
       return;
    }

    $.ajax({
       type: 'POST' ,
       url: '/user/getByName' ,
       data: {name : name},
       dataType: 'json' ,
       success: function (res) {
           if (res.code != 200) {
               insertCheck = false;
               $('.name-img').append('<img src="/resources/images/wrong.png" width="20px" height="20px"/>');
               toastr.error(res.msg);
           } else {
               insertCheck = true;
               $('.name-img').append('<img src="/resources/images/right.png" width="20px" height="20px"/>');
           }
       }
    });

});

//校验邮箱的唯一性
$('#user-email').blur(function () {

    $('.email-img').empty();

    var email = $('#user-email').val();


    if (email == undefined || email == null || email == '') {
        return;
    }

    if (!isEmail(email)) {
        toastr.warning("邮箱格式不正确!");
        return;
    }

    $.ajax({
        type: 'POST' ,
        url: '/user/getByEmail' ,
        data: {email : email},
        dataType: 'json' ,
        success: function (res) {
            if (res.code != 200) {
                insertCheck = false;
                $('.email-img').append('<img src="/resources/images/wrong.png" width="20px" height="20px"/>');
                toastr.error(res.msg);
            } else {
                insertCheck = true;
                $('.email-img').append('<img src="/resources/images/right.png" width="20px" height="20px"/>');
            }
        }
    });

});

//下拉列表选中
$('#role-select-1 , #role-select-2').on('changed.bs.select ' , function (event, clickedIndex) {
    var roleId = event.delegateTarget.options[clickedIndex].value;
    //设置属性
    $('button[data-id=role-select-1] .filter-option').attr("value" , roleId);
    $('button[data-id=role-select-2] .filter-option').attr("value" , roleId);
});

//拖拽modal-header,modal移动
$('#addModal').draggable({
    cursor: "move",
    handle: '.modal-header'
});

GeneralResponse.java

package com.xll.util;

/**
 * 一个统一返回的类,封装了返回给前端页面的信息
 * @author lonely.xia
 * @date 2017/10/17
 */
public class GeneralResponse<T> {

    /** 返回给页面的数据 */
    T data;

    /** 返回操作执行的结果 */
    String msg;

    /** 返回执行的状态码,操作执行成功一律返回200 */
    int code;

    public GeneralResponse(String msg , int code) {
        this.msg = msg;
        this.code = code;
    }

    public GeneralResponse() {}

    public void setData(T data) {
        this.data = data;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public T getData() {
        return data;
    }

    public String getMsg() {
        return msg;
    }

    public int getCode() {
        return code;
    }
}

ResponseEnum.java

package com.xll.enums;

 /**
 * 响应状态码枚举
 * Created by lonely.xia on 2017/10/17.
 */
public enum ResponseEnum {

    INSERT_SUCCESS("插入成功" , 200) ,
    INSERT_FAIL("插入失败" , -101) ,
    INSERT_OR_UPDATE_ROLE_NAME_DUPLICATION("插入或更新重复角色名" , -102) ,
    UPDATE_SUCCESS("更新成功" , 200) ,
    UPDATE_FAIL("更新失败" , -201) ,
    SELECT_SUCCESS("查询成功" , 200) ,
    SELECT_FAIL("查询失败" , -301) ,
    DELETE_SUCCESS("删除成功" , 200) ,
    DELETE_FAIL("删除失败" , -401) ,
    INSERT_NAME_OR_EMAIL_DUPLICATION("插入重复用户名或邮箱" , -501) ,
    UPDATE_NAME_DUPLICATION("更新的用户名已存在" , -601) ,
    UPDATE_EMAIL_DUPLICATION("更新的用户邮箱已存在" , -701) ,
    INSERT_OR_UPDATE_TITLE_DUPLICATION("插入或更新重复的权限TITLE" , -502) ,
    OK("成功" , 200);

    private String name;
    private int code;


    private ResponseEnum(String name , int code) {
        this.name = name;
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public int getCode() {
        return code;
    }

}

UserController.java

@ResponseBody
@RequestMapping(value = "/getByName" , method = RequestMethod.POST)
public GeneralResponse<Integer> getByName(HttpServletRequest request , @RequestParam String name) {

    User result = userService.getByName(name);

    if (result != null) {
        return new GeneralResponse<>(ResponseEnum.INSERT_NAME_OR_EMAIL_DUPLICATION.getName()
                , ResponseEnum.INSERT_NAME_OR_EMAIL_DUPLICATION.getCode());
    }

    return new GeneralResponse<>(ResponseEnum.OK.getName() , ResponseEnum.OK.getCode());

}

@ResponseBody
@RequestMapping(value = "/getByEmail" , method = RequestMethod.POST)
public GeneralResponse<Integer> getByEmail(HttpServletRequest request , @RequestParam String email) {

    User result = userService.getByEmail(email);

    if (result != null) {
        return new GeneralResponse<>(ResponseEnum.INSERT_NAME_OR_EMAIL_DUPLICATION.getName()
                , ResponseEnum.INSERT_NAME_OR_EMAIL_DUPLICATION.getCode());
    }

    return new GeneralResponse<>(ResponseEnum.OK.getName() , ResponseEnum.OK.getCode());

}

@SystemLog(description = "添加用户")
@ResponseBody
@RequestMapping(value = "/add" , method = RequestMethod.POST)
public GeneralResponse<Integer> add(HttpServletRequest request , @RequestBody UserDTO userDTO) {

    User user = userDTO.getUser();

    Integer roleId = userDTO.getRoleId();

    LOG.info("插入用户数据为[用户名:{},用户邮箱:{},角色ID:{}]" , user.getName() , user.getEmail() , roleId);

    User result = userService.getUserByNameOrEmail(user);

    if (result != null) {
        return new GeneralResponse<>(ResponseEnum.INSERT_NAME_OR_EMAIL_DUPLICATION.getName()
                , ResponseEnum.INSERT_NAME_OR_EMAIL_DUPLICATION.getCode());
    }

    Integer count = userService.insert(user);

    if (count == 0) {
        return new GeneralResponse<>(ResponseEnum.INSERT_FAIL.getName() , ResponseEnum.INSERT_FAIL.getCode());
    }

    count = userRoleService.insert(user.getId() , roleId);

    if (count == 0) {
        return new GeneralResponse<>(ResponseEnum.INSERT_FAIL.getName() , ResponseEnum.INSERT_FAIL.getCode());
    }

    return new GeneralResponse<>(ResponseEnum.INSERT_SUCCESS.getName() , ResponseEnum.INSERT_SUCCESS.getCode());

}

UserServiceImpl.java

@Override
public User getUserByNameOrEmail(User user) {

    UserExample userExample = new UserExample();
    UserExample.Criteria nameCriteria = userExample.createCriteria();
    nameCriteria.andNameEqualTo(user.getName());

    UserExample.Criteria emailCriteria = userExample.createCriteria();
    emailCriteria.andEmailEqualTo(user.getEmail());

    userExample.or(emailCriteria);

    List<User> userList = userDao.selectByExample(userExample);

    if (userList == null || userList.size() == 0) {
        return null;
    }

    return userList.get(0);

}

@Override
public Integer insert(User user) {
    return userDao.insert(user);
}

@Override
public User getByName(String name) {

    UserExample userExample = new UserExample();
    UserExample.Criteria criteria = userExample.createCriteria();
    criteria.andNameEqualTo(name);

    List<User> userList = userDao.selectByExample(userExample);

    if (userList == null || userList.size() == 0) {
        return null;
    }

    return userList.get(0);
}

@Override
public User getByEmail(String email) {

    UserExample userExample = new UserExample();
    UserExample.Criteria criteria = userExample.createCriteria();
    criteria.andEmailEqualTo(email);

    List<User> userList = userDao.selectByExample(userExample);

    if (userList == null || userList.size() == 0) {
        return null;
    }

    return userList.get(0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值