106 lines
3.6 KiB
Java
106 lines
3.6 KiB
Java
package com.quinn.controller;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.quinn.pojo.Invite;
|
|
import com.quinn.pojo.User;
|
|
import com.quinn.pojo.UserInfo;
|
|
import com.quinn.service.InviteService;
|
|
import com.quinn.service.UserInfoService;
|
|
import com.quinn.service.UserService;
|
|
import com.quinn.utils.QuinnUtils;
|
|
import com.quinn.vo.RegisterForm;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
@Controller
|
|
public class LoginController {
|
|
|
|
@Autowired
|
|
InviteService inviteService;
|
|
@Autowired
|
|
UserService userService;
|
|
@Autowired
|
|
UserInfoService userInfoService;
|
|
|
|
@GetMapping({"/","/index"})
|
|
public String index(){
|
|
return "index";
|
|
}
|
|
|
|
@GetMapping({"/auto"})
|
|
public String auto(){
|
|
return "index";
|
|
}
|
|
|
|
@GetMapping("/toLogin")
|
|
public String toLogin(){
|
|
return "login";
|
|
}
|
|
|
|
@GetMapping("/register")
|
|
public String toRegister(){
|
|
return "register";
|
|
}
|
|
|
|
// 注册业务
|
|
@PostMapping("/register")
|
|
public String register(RegisterForm registerForm,Model model){
|
|
QuinnUtils.print("注册表单信息:"+registerForm.toString());
|
|
// 表单密码重复判断
|
|
if (!registerForm.getPassword().equals(registerForm.getRepassword())){
|
|
model.addAttribute("registerMsg","密码输入有误");
|
|
return "register";
|
|
}
|
|
// 用户名已存在
|
|
User hasUser = userService.getOne(new QueryWrapper<User>().eq("username", registerForm.getUsername()));
|
|
if (hasUser!=null){
|
|
model.addAttribute("registerMsg","用户名已存在");
|
|
return "register";
|
|
}
|
|
|
|
// 验证邀请码
|
|
Invite invite = inviteService.getOne(new QueryWrapper<Invite>().eq("code", registerForm.getCode()));
|
|
if (invite==null){
|
|
model.addAttribute("registerMsg","邀请码不存在");
|
|
return "register";
|
|
}else {
|
|
// 邀请码存在,判断邀请码是否有效
|
|
if (invite.getStatus()==1){
|
|
model.addAttribute("registerMsg","邀请码已被使用");
|
|
return "register";
|
|
}else {
|
|
// 构建用户对象
|
|
User user = new User();
|
|
user.setUid(QuinnUtils.getUuid()); // 用户唯一id
|
|
user.setRoleId(2);
|
|
user.setUsername(registerForm.getUsername());
|
|
// 密码加密
|
|
String bCryptPassword = new BCryptPasswordEncoder().encode(registerForm.getPassword());
|
|
user.setPassword(bCryptPassword);
|
|
user.setGmtCreate(QuinnUtils.getTime());
|
|
user.setLoginDate(QuinnUtils.getTime());
|
|
// 保存对象!
|
|
userService.save(user);
|
|
QuinnUtils.print("新用户注册成功:"+user);
|
|
|
|
// 激活邀请码
|
|
invite.setActiveTime(QuinnUtils.getTime());
|
|
invite.setStatus(1);
|
|
invite.setUid(user.getUid());
|
|
inviteService.updateById(invite);
|
|
|
|
// todo: 用户信息
|
|
userInfoService.save(new UserInfo().setUid(user.getUid()));
|
|
|
|
// 注册成功,重定向到登录页面
|
|
return "redirect:/toLogin";
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|