注册用户

Register Controller GET

@GetMapping("/register")
public String getRegisterPage() {
    return "/site/register";
}

Resigter Controller POST

@PostMapping("/register")
public String register(Model model, User user)  {
    Map<String, Object> map = userService.register(user);
    if(map == null || map.isEmpty()) {
        model.addAttribute("msg", "注册成功,请激活");
        model.addAttribute("target", "/index");
        return "/site/operate-result";
    }
    model.addAttribute("usernameMsg", map.get("usernameMsg"));
    model.addAttribute("passwordMsg", map.get("passwordMsg"));
    model.addAttribute("emailMsg", map.get("emailMsg"));
    return "/site/register";
}

Register UserService

public Map<String, Object> register(User user) {
    Map<String,Object> map = new HashMap<>();

    if(user == null) {
        throw new IllegalArgumentException("参数不能为空");
    }
    if(StringUtils.isBlank(user.getUsername())) {
        map.put("usernameMsg", "账号不能为空");
        return map;
    }
    if(StringUtils.isBlank(user.getPassword())) {
        map.put("passwordMsg", "密码不能为空");
        return map;
    }
    if(StringUtils.isBlank(user.getEmail())) {
        map.put("emailMsg", "邮箱不能为空");
        return map;
    }
    // 验证账号
    User u = userMapper.selectByEmail(user.getEmail());
    if(u != null) {
        map.put("emailMsg", "邮箱已经被注册");
        return map;
    }
    // 注册账号
    user.setSalt(CommunityUtil.generateUUID().substring(0, 5));
    user.setPassword(CommunityUtil.md5(user.getPassword() + user.getSalt()));
    user.setType(0);
    user.setStatus(0);
    user.setActivationCode(CommunityUtil.generateUUID().substring(0,4));
    user.setHeaderUrl(String.format("<http://images.nowcoder.com/head/%dt.png>", new Random().nextInt(1000)));
    user.setCreateTime(new Date());
    userMapper.insertUser(user);

    // 激活邮件
    Context context = new Context();
    context.setVariable("email", user.getEmail());
    String url = domain + "/activation/" + user.getId() + "/" + user.getActivationCode();
    context.setVariable("url", url);
    String content = templateEngine.process("/mail/activation.html", context);
    mailClient.sendMail(user.getEmail(), "激活邮箱", content);
    return map;
}

激活用户

变量类接口

public interface CommunityConstant {
    /**
     * 激活成功
     */
    int ACTIVATION_SUCCESS = 0;
    /**
     * 重复激活
     */
    int ACTIVATION_REPEAT = 1;
    /**
     *激活失败
     */
    int ACTIVATION_FAILURE = 2;

    /**
     * 没有用户
     */
    int ACTIVATION_NULL = 3;
}

激活用户 Controller

@GetMapping("/activation/{userId}/{code}")
public String activation(Model model, @PathVariable("userId") int userId, @PathVariable("code") String code) {
    int result = userService.activation(userId, code);
    if(result == ACTIVATION_SUCCESS) {
        model.addAttribute("msg", "激活成功");
        model.addAttribute("target", "/login");
    }else if(result == ACTIVATION_NULL) {
        model.addAttribute("msg", "用户不存在");
        model.addAttribute("target", "/index");
    } else if(result == ACTIVATION_REPEAT) {
        model.addAttribute("msg", "重复激活");
        model.addAttribute("target", "/index");
    }else {
        model.addAttribute("msg", "验证码不正确");
        model.addAttribute("target", "/index");
    }
    return "/site/operate-result";
}

激活用户 Sevice

public int activation(int userId, String code) {
    User user = userMapper.selectById(userId);
    if(user == null) {
        return ACTIVATION_NULL;
    }
    if(user.getStatus() == 1) {
        return ACTIVATION_REPEAT;
    }else if(code.equals(user.getActivationCode())) {
        userMapper.updateStatus(userId, 1);
        return ACTIVATION_SUCCESS;
    }else {
        return ACTIVATION_FAILURE;
    }
}