淘淘商城——单点登录之用户注册

首先我们还是看关于单点登录接口文档中关于用户注册接口的说明,如下图所示。请求方式是POST类型,URL为我们明确指定好了,参数有四个,需要校验完合法性之后再提交。
这里写图片描述
以上接口文档写的还算明了,大家就凑合着看吧!
由于用户注册只涉及到单表操作,因此我们使用逆向工程生成的dao层代码即可。
下面我们来编写Service层的代码。首先在taotao-sso-interface工程的UserRegisterService接口中添加一个用户注册的方法,如下图所示。
这里写图片描述
紧接着在taotao-sso-service工程的UserRegisterServiceImpl实现类中实现该用户注册方法。
这里写图片描述
为方便大家复制,现将UserRegisterServiceImpl实现类的代码贴出。

/**
 * 用户注册处理Service
 * <p>Title: UserRegisterServiceImpl</p>
 * <p>Description: </p>
 * <p>Company: www.itcast.cn</p> 
 * @version 1.0
 */
@Service
public class UserRegisterServiceImpl implements UserRegisterService {

    @Autowired
    private TbUserMapper userMapper;

    @Override
    public TaotaoResult checkUserInfo(String param, int type) {
        TbUserExample example = new TbUserExample();
        Criteria criteria = example.createCriteria();
        // 判断要校验的数据类型,来设置不同的查询条件
        // 1、2、3分别代表username、phone、email
        if (type == 1) {
            criteria.andUsernameEqualTo(param);
        } else if (type == 2) {
            criteria.andPhoneEqualTo(param);
        } else if (type == 3) {
            criteria.andEmailEqualTo(param);
        }
        // 执行查询
        List<TbUser> list = userMapper.selectByExample(example);
        if (list == null || list.size() == 0) {
            return TaotaoResult.ok(true);
        }
        return TaotaoResult.ok(false);
    }

    @Override
    public TaotaoResult createUser(TbUser user) {
        // 校验数据的合法性
        if (StringUtils.isBlank(user.getUsername()) 
                || StringUtils.isBlank(user.getPassword())) {
            return TaotaoResult.build(400, "用户名和密码不能为空");
        }
        // 校验用户名是否重复
        TaotaoResult taotaoResult = checkUserInfo(user.getUsername(), 1);
        boolean flag = (boolean) taotaoResult.getData();
        if (!flag) {
            return TaotaoResult.build(400, "用户名重复");
        }
        // 校验手机号是否重复
        if (user.getPhone() != null) { // 注意:空串也算有值
            taotaoResult = checkUserInfo(user.getPhone(), 2);
            if (!(boolean) taotaoResult.getData()) {
                return TaotaoResult.build(400, "手机号重复");
            }
        }
        // 校验邮箱是否重复
        if (user.getEmail() != null) { // 注意:空串也算有值
            taotaoResult = checkUserInfo(user.getEmail(), 3);
            if (!(boolean) taotaoResult.getData()) {
                return TaotaoResult.build(400, "邮箱重复");
            }
        }
        // 补全TbUser对象的属性
        user.setCreated(new Date());
        user.setUpdated(new Date());
        // 把密码进行MD5加密
        String md5Pass = DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
        user.setPassword(md5Pass);
        // 插入到数据库
        userMapper.insert(user);
        // 返回结果
        return TaotaoResult.ok();
    }

}

至此Service层的代码便编写完毕!
下面我们接着来编写Controller层的代码。 在taotao-sso-web工程的UserController类中添加如下图所示标注的代码。
这里写图片描述
注意:GET请求不需要在RequestMapping注解中指定,但是POST就需要指定了。
Controller层代码编写好了之后,现在我们来测试下这个用户注册接口是否好使。由于我们修改过taotao-sso-interface和taotao-sso-service,因此我们需要重新把taotao-sso打包到本地Maven仓库。
下面我们启动taotao-sso工程以及taotao-sso-web工程,启动成功之后,我们使用一个测试工具来测试POST请求(浏览器地址栏是不能模拟POST请求的),POST请求是要带参数的,参数的名称必须与下图tb_user表中框住的四个字段一样。
这里写图片描述
这个测试工具是什么呢?其实我也是第一次使用,就是下图所示的这个jar包。
这里写图片描述
按道理来讲,双击它是可以运行的,但是如果你的电脑安装的是解压版的JDK,那么双击它是不能运行的,这时怎么办呢?方法总是有的,你可以创建一个批处理文件,例如start.bat,其内容为:

start java -jar restclient-ui-3.5-jar-with-dependencies.jar

创建完毕,双击该bat文件,即可看到如下图所示界面。
这里写图片描述
我们在URL一栏中输入http://localhost:8088/user/register,类型选择POST,如下图所示。
这里写图片描述
我们点击”Body”一栏,点击下拉框会出现下拉菜单让我们选择,我们选择”String body”。
这里写图片描述
选择”String body”后如下图所示,默认的content-type是”text/plain”,我们要把它改成表单类型。
这里写图片描述
我们按照如下图所示更改content-type类型。
这里写图片描述
下面我们添加参数,如下图所示,添加四个参数。
这里写图片描述
添加完之后,点击”Generate”,如下图所示。
这里写图片描述
下面发送请求,如下图所示,可以看到返回的提示是用户名重复了。
这里写图片描述
其实我们输入的四个参数的值都是在数据库表中存在的,除了密码,其它三个都会报不能重复的错误,要想不报错,我们要把用户名、电话、邮箱三个参数都修改下,改成数据库中不存在的数据,如下图所示。可以看到返回的状态码是200,说明成功了。
这里写图片描述
我们可以到数据库表中查看一下,发现数据库表中已经有新注册用户的信息了。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/a_blackmoon/article/details/80535665