package top.picacho.bbs.controller.rest;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import top.picacho.bbs.common.Constants;
import top.picacho.bbs.common.ServiceResultEnum;
import top.picacho.bbs.entity.BBSUser;
import top.picacho.bbs.service.BBSUserService;
import top.picacho.bbs.util.MD5Util;
import top.picacho.bbs.util.PatternUtil;
import top.picacho.bbs.util.Result;
import top.picacho.bbs.util.ResultGenerator;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@Controller
public class BBSUserController {
@Resource
private BBSUserService bbsUserService;
/**
* 注册页面跳转
*/
@GetMapping({"/register", "/register.html"})
public String registerPage() {
return "user/reg";
}
/**
* 注册功能
*/
@PostMapping("/register")
@ResponseBody
public Result register(@RequestParam("loginName") String loginName,
@RequestParam("verifyCode") String verifyCode,
@RequestParam("nickName") String nickName,
@RequestParam("password") String password,
HttpSession httpSession) {
if (!StringUtils.hasLength(loginName)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_NAME_NULL.getResult());
}
if (!PatternUtil.isEmail(loginName)) { // 使用正则工具类处理昵称,判断是否符合邮箱格式
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_NAME_NOT_EMAIL.getResult());
}
if (!StringUtils.hasLength(password)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_PASSWORD_NULL.getResult());
}
if (!StringUtils.hasLength(verifyCode)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_VERIFY_CODE_NULL.getResult());
}
String kaptchaCode = httpSession.getAttribute(Constants.VERIFY_CODE_KEY) + "";
if (!StringUtils.hasLength(kaptchaCode) || !verifyCode.equals(kaptchaCode)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_VERIFY_CODE_ERROR.getResult());
}
String registerResult = bbsUserService.register(loginName, password, nickName);
//注册成功
if (ServiceResultEnum.SUCCESS.getResult().equals(registerResult)) {
httpSession.removeAttribute(Constants.VERIFY_CODE_KEY);// 删除session中的验证码
return ResultGenerator.genSuccessResult();
}
//注册失败
return ResultGenerator.genFailResult(registerResult);
}
/**
* 登陆页面跳转
* @return
*/
@GetMapping({"/login", "/login.html"})
public String loginPage() {
return "user/login";
}
/**
* 登陆功能
* @param loginName
* @param verifyCode
* @param password
* @param httpSession
* @return
*/
@PostMapping("/login")
@ResponseBody
public Result login(@RequestParam("loginName") String loginName,
@RequestParam("verifyCode") String verifyCode,
@RequestParam("password") String password,
HttpSession httpSession) {
if (!StringUtils.hasLength(loginName)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_NAME_NULL.getResult());
}
if (!PatternUtil.isEmail(loginName)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_NAME_NOT_EMAIL.getResult());
}
if (!StringUtils.hasLength(password)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_PASSWORD_NULL.getResult());
}
if (!StringUtils.hasLength(verifyCode)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_VERIFY_CODE_NULL.getResult());
}
String kaptchaCode = httpSession.getAttribute(Constants.VERIFY_CODE_KEY) + "";
if (!StringUtils.hasLength(kaptchaCode) || !verifyCode.equals(kaptchaCode)) {
return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_VERIFY_CODE_ERROR.getResult());
}
String loginResult = bbsUserService.login(loginName, MD5Util.MD5Encode(password, "UTF-8"), httpSession);
//登录成功
if (ServiceResultEnum.SUCCESS.getResult().equals(loginResult)) {
httpSession.removeAttribute(Constants.VERIFY_CODE_KEY);//删除session中的验证码
return ResultGenerator.genSuccessResult();
}
//登录失败
return ResultGenerator.genFailResult(loginResult);
}
/**
* 用户信息页面跳转
* @param request
* @return
*/
@GetMapping("/userSet")
public String userSetPage(HttpServletRequest request) {
// 从session中获取登陆用户的信息
BBSUser currentUser = (BBSUser) request.getSession().getAttribute(Constants.USER_SESSION_KEY);
request.setAttribute("bbsUser", currentUser);
return "user/set";
}
/**
* 更新用户基本信息
* @param nickName
* @param userGender
* @param location
* @param introduce
* @param httpSession
* @return
*/
@PostMapping("/updateUserInfo")
@ResponseBody
public Result updateInfo(@RequestParam("nickName") String nickName,
@RequestParam("userGender") int userGender,
@RequestParam("location") String location,
@RequestParam("introduce") String introduce,
HttpSession httpSession) {
if (!StringUtils.hasLength(nickName)) {
return ResultGenerator.genFailResult("nickName参数错误");
}
if (userGender < 1 || userGender > 2) {
return ResultGenerator.genFailResult("userGender参数错误");
}
if (!StringUtils.hasLength(location)) {
return ResultGenerator.genFailResult("location参数错误");
}
if (!StringUtils.hasLength(introduce)) {
return ResultGenerator.genFailResult("introduce参数错误");
}
BBSUser bbsUser = (BBSUser) httpSession.getAttribute(Constants.USER_SESSION_KEY);
bbsUser.setNickName(nickName);
if (userGender == 1) {
bbsUser.setGender("男");
}
if (userGender == 2) {
bbsUser.setGender("女");
}
bbsUser.setLocation(location);
bbsUser.setIntroduce(introduce);
if (bbsUserService.updateUserInfo(bbsUser, httpSession)) {
Result result = ResultGenerator.genSuccessResult();
return result;
} else {
Result result = ResultGenerator.genFailResult("修改失败");
return result;
}
}
/**
* 修改头像
* @param userHeadImg
* @param httpSession
* @return
*/
@PostMapping("/updateHeadImg")
@ResponseBody
public Result updateHeadImg(@RequestParam("userHeadImg") String userHeadImg,
HttpSession httpSession) {
if (!StringUtils.hasLength(userHeadImg)) {
return ResultGenerator.genFailResult("userHeadImg参数错误");
}
BBSUser bbsUser = (BBSUser) httpSession.getAttribute(Constants.USER_SESSION_KEY);
bbsUser.setHeadImgUrl(userHeadImg);
if (bbsUserService.updateUserHeadImg(bbsUser, httpSession)) {
Result result = ResultGenerator.genSuccessResult();
return result;
} else {
Result result = ResultGenerator.genFailResult("修改失败");
评论0