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;
}
}