用户数据校验的实现

业务需求

当用户在注册时,如果输入用户名,则应该向sso单点登录系统发起请求,校验用户数据是否存在.
如果存在则提示用户.
如果存在则提示用户:
image.png

业务接口文档说明

image.png

前端JS分析

url分析
image.png
JS分析

 $.ajax({
                url : "http://sso.jt.com/user/check/"+escape(pin)+"/1?r=" + Math.random(),
                dataType : "jsonp",
                success : function(data) {
                    checkpin = data.data?"1":"0";
                    if(data.status == 200){
                         if (!data.data) {
                            validateSettings.succeed.run(option);
                            namestate = true;
                         }else {
                            validateSettings.error.run(option, "该用户名已占用!");
                            namestate = false;
                         }
                    }else{
                          validateSettings.error.run(option, "服务器正忙,请稍后!");
                          namestate = false;
                    }

                }
            });

编辑SSO UserController

/**
 * 业务说明: jt-web服务器获取jt-sso数据, JSONP跨域请求
 * URL地址:http://sso.jt.com/user/check/{param}/{type}
 * 参数: param参数,需要校验的数据, type校验的类型
 * 返回值结果:SysResult对象
 * 真是的返回值: callback(SysResult的JSON)
 *
 */@RequestMapping("/check/{param}/{type}")
public JSONPObject checkUser(@PathVariable String param,
                           @PathVariable Integer type,
                           String callback){
    //true表示数据存在, false表示数据可以使用
 boolean flag=userService.checkUser(param,type);
    //int a=1/0; 测试JSONP全局异常
 return new JSONPObject(callback, SysResult.success(flag));
}

编辑sso-service

/**
 * 判断依据:根据用户名查询,如果结果>0表示用户已经存在
 * @param param
 * @param type
 * @return
 */
@Override
public boolean checkUser(String param, Integer type) {
    //将type类型转换为具体字段信息 1=username 2=phone 3=email String column=columnMap.get(type);
    QueryWrapper queryWrapper=new QueryWrapper<>();
    queryWrapper.eq(column, param);
    Integer count = userMapper.selectCount(queryWrapper);
    return count>0;//return count>0?true:false;
}

页面效果展示

image.png

你可能感兴趣的