mirror of
https://github.com/201206030/novel-plus.git
synced 2025-04-27 01:30:51 +00:00
后台数据校验优化
This commit is contained in:
parent
612555dbe6
commit
1046a7ffc1
@ -1,21 +1,30 @@
|
|||||||
package com.java2nb.novel.core.advice;
|
package com.java2nb.novel.core.advice;
|
||||||
|
|
||||||
import com.java2nb.novel.core.bean.ResultBean;
|
import com.java2nb.novel.core.bean.ResultBean;
|
||||||
|
import com.java2nb.novel.core.enums.ResponseStatus;
|
||||||
import com.java2nb.novel.core.exception.BusinessException;
|
import com.java2nb.novel.core.exception.BusinessException;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.validation.BindException;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通用的异常处理器
|
* 通用的异常处理器
|
||||||
*
|
*
|
||||||
* @author 11797*/
|
* @author 11797*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ControllerAdvice
|
@RestControllerAdvice
|
||||||
@ResponseBody
|
|
||||||
public class CommonExceptionHandler {
|
public class CommonExceptionHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理后台数据校验异常
|
||||||
|
* */
|
||||||
|
@ExceptionHandler(BindException.class)
|
||||||
|
public ResultBean handlerBindException(BindException e){
|
||||||
|
log.error(e.getMessage(),e);
|
||||||
|
return ResultBean.fail(ResponseStatus.PARAM_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理业务异常
|
* 处理业务异常
|
||||||
* */
|
* */
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.java2nb.novel.core.valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增数据的校验分组
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
*/
|
||||||
|
public interface AddGroup {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.java2nb.novel.core.valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新数据的校验分组
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
*/
|
||||||
|
public interface UpdateGroup {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,36 +1,56 @@
|
|||||||
package com.java2nb.novel.entity;
|
package com.java2nb.novel.entity;
|
||||||
|
|
||||||
|
import com.java2nb.novel.core.valid.AddGroup;
|
||||||
|
import com.java2nb.novel.core.valid.UpdateGroup;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import javax.annotation.Generated;
|
import javax.annotation.Generated;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
public class User {
|
public class User {
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class, UpdateGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
|
||||||
|
@NotBlank(groups = {AddGroup.class},message="手机号不能为空!")
|
||||||
|
@Pattern(groups = {AddGroup.class},regexp="^1[3|4|5|6|7|8|9][0-9]{9}$",message="手机号格式不正确!")
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
|
@NotBlank(groups = {AddGroup.class},message="密码不能为空!")
|
||||||
|
@Null(groups = {UpdateGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private String nickName;
|
private String nickName;
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private String userPhoto;
|
private String userPhoto;
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class})
|
||||||
|
@Min(value = 0,groups = {UpdateGroup.class})
|
||||||
|
@Max(value = 1,groups = {UpdateGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private Byte userSex;
|
private Byte userSex;
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class,UpdateGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private Long accountBalance;
|
private Long accountBalance;
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class,UpdateGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private Byte status;
|
private Byte status;
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class,UpdateGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
|
@Null(groups = {AddGroup.class,UpdateGroup.class})
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private Date updateTime;
|
private Date updateTime;
|
||||||
|
|
||||||
|
@ -6,15 +6,16 @@ import com.java2nb.novel.core.bean.UserDetails;
|
|||||||
import com.java2nb.novel.core.cache.CacheService;
|
import com.java2nb.novel.core.cache.CacheService;
|
||||||
import com.java2nb.novel.core.enums.ResponseStatus;
|
import com.java2nb.novel.core.enums.ResponseStatus;
|
||||||
import com.java2nb.novel.core.utils.RandomValidateCodeUtil;
|
import com.java2nb.novel.core.utils.RandomValidateCodeUtil;
|
||||||
|
import com.java2nb.novel.core.valid.AddGroup;
|
||||||
|
import com.java2nb.novel.core.valid.UpdateGroup;
|
||||||
import com.java2nb.novel.entity.User;
|
import com.java2nb.novel.entity.User;
|
||||||
import com.java2nb.novel.entity.UserBuyRecord;
|
import com.java2nb.novel.entity.UserBuyRecord;
|
||||||
import com.java2nb.novel.form.UserForm;
|
|
||||||
import com.java2nb.novel.service.BookService;
|
import com.java2nb.novel.service.BookService;
|
||||||
import com.java2nb.novel.service.UserService;
|
import com.java2nb.novel.service.UserService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -42,12 +43,7 @@ public class UserController extends BaseController {
|
|||||||
* 登陆
|
* 登陆
|
||||||
*/
|
*/
|
||||||
@PostMapping("login")
|
@PostMapping("login")
|
||||||
public ResultBean login(@Valid UserForm user, BindingResult result) {
|
public ResultBean login(User user) {
|
||||||
//判断参数是否合法
|
|
||||||
if (result.hasErrors()) {
|
|
||||||
log.info(result.getAllErrors().toString());
|
|
||||||
return ResultBean.fail(ResponseStatus.PARAM_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
//登陆
|
//登陆
|
||||||
UserDetails userDetails = userService.login(user);
|
UserDetails userDetails = userService.login(user);
|
||||||
@ -64,13 +60,8 @@ public class UserController extends BaseController {
|
|||||||
* 注册
|
* 注册
|
||||||
*/
|
*/
|
||||||
@PostMapping("register")
|
@PostMapping("register")
|
||||||
public ResultBean register(@Valid UserForm user, @RequestParam(value = "velCode", defaultValue = "") String velCode, BindingResult result) {
|
public ResultBean register(@Validated({AddGroup.class}) User user, @RequestParam(value = "velCode", defaultValue = "") String velCode) {
|
||||||
|
|
||||||
//判断参数是否合法
|
|
||||||
if (result.hasErrors()) {
|
|
||||||
log.info(result.getAllErrors().toString());
|
|
||||||
return ResultBean.fail(ResponseStatus.PARAM_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
//判断验证码是否正确
|
//判断验证码是否正确
|
||||||
if (!velCode.equals(cacheService.get(RandomValidateCodeUtil.RANDOM_CODE_KEY))) {
|
if (!velCode.equals(cacheService.get(RandomValidateCodeUtil.RANDOM_CODE_KEY))) {
|
||||||
@ -225,7 +216,7 @@ public class UserController extends BaseController {
|
|||||||
* 更新个人信息
|
* 更新个人信息
|
||||||
* */
|
* */
|
||||||
@PostMapping("updateUserInfo")
|
@PostMapping("updateUserInfo")
|
||||||
public ResultBean updateUserInfo(User user,HttpServletRequest request) {
|
public ResultBean updateUserInfo(@Validated({UpdateGroup.class}) User user, HttpServletRequest request) {
|
||||||
UserDetails userDetails = getUserDetails(request);
|
UserDetails userDetails = getUserDetails(request);
|
||||||
if (userDetails == null) {
|
if (userDetails == null) {
|
||||||
return ResultBean.fail(ResponseStatus.NO_LOGIN);
|
return ResultBean.fail(ResponseStatus.NO_LOGIN);
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package com.java2nb.novel.form;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import javax.annotation.Generated;
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.Pattern;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class UserForm {
|
|
||||||
@NotBlank(message="手机号不能为空!")
|
|
||||||
@Pattern(regexp="^1[3|4|5|6|7|8|9][0-9]{9}$",message="手机号格式不正确!")
|
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
|
||||||
private String username;
|
|
||||||
|
|
||||||
@NotBlank(message="密码不能为空!")
|
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
|
||||||
private String password;
|
|
||||||
|
|
||||||
}
|
|
@ -3,7 +3,6 @@ package com.java2nb.novel.service;
|
|||||||
|
|
||||||
import com.java2nb.novel.core.bean.UserDetails;
|
import com.java2nb.novel.core.bean.UserDetails;
|
||||||
import com.java2nb.novel.entity.UserBuyRecord;
|
import com.java2nb.novel.entity.UserBuyRecord;
|
||||||
import com.java2nb.novel.form.UserForm;
|
|
||||||
import com.java2nb.novel.vo.BookReadHistoryVO;
|
import com.java2nb.novel.vo.BookReadHistoryVO;
|
||||||
import com.java2nb.novel.vo.BookShelfVO;
|
import com.java2nb.novel.vo.BookShelfVO;
|
||||||
import com.java2nb.novel.entity.User;
|
import com.java2nb.novel.entity.User;
|
||||||
@ -19,17 +18,17 @@ public interface UserService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户注册
|
* 用户注册
|
||||||
* @param form 用户注册提交信息类
|
* @param user 用户注册信息类
|
||||||
* @return jwt载体信息类
|
* @return jwt载体信息类
|
||||||
* */
|
* */
|
||||||
UserDetails register(UserForm form);
|
UserDetails register(User user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户登陆
|
* 用户登陆
|
||||||
* @param form 用户登陆提交信息类
|
* @param user 用户登陆信息类
|
||||||
* @return jwt载体信息类
|
* @return jwt载体信息类
|
||||||
* */
|
* */
|
||||||
UserDetails login(UserForm form);
|
UserDetails login(User user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询小说是否已加入书架
|
* 查询小说是否已加入书架
|
||||||
|
@ -5,7 +5,6 @@ import com.java2nb.novel.core.bean.UserDetails;
|
|||||||
import com.java2nb.novel.core.utils.BeanUtil;
|
import com.java2nb.novel.core.utils.BeanUtil;
|
||||||
import com.java2nb.novel.entity.*;
|
import com.java2nb.novel.entity.*;
|
||||||
import com.java2nb.novel.entity.User;
|
import com.java2nb.novel.entity.User;
|
||||||
import com.java2nb.novel.form.UserForm;
|
|
||||||
import com.java2nb.novel.service.UserService;
|
import com.java2nb.novel.service.UserService;
|
||||||
import com.java2nb.novel.core.enums.ResponseStatus;
|
import com.java2nb.novel.core.enums.ResponseStatus;
|
||||||
import com.java2nb.novel.core.exception.BusinessException;
|
import com.java2nb.novel.core.exception.BusinessException;
|
||||||
@ -29,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.java2nb.novel.mapper.BookDynamicSqlSupport.book;
|
|
||||||
import static com.java2nb.novel.mapper.BookDynamicSqlSupport.id;
|
import static com.java2nb.novel.mapper.BookDynamicSqlSupport.id;
|
||||||
import static com.java2nb.novel.mapper.UserBookshelfDynamicSqlSupport.userBookshelf;
|
import static com.java2nb.novel.mapper.UserBookshelfDynamicSqlSupport.userBookshelf;
|
||||||
import static com.java2nb.novel.mapper.UserDynamicSqlSupport.*;
|
import static com.java2nb.novel.mapper.UserDynamicSqlSupport.*;
|
||||||
@ -59,11 +57,11 @@ public class UserServiceImpl implements UserService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserDetails register(UserForm form) {
|
public UserDetails register(User user) {
|
||||||
//查询用户名是否已注册
|
//查询用户名是否已注册
|
||||||
SelectStatementProvider selectStatement = select(count(id))
|
SelectStatementProvider selectStatement = select(count(id))
|
||||||
.from(user)
|
.from(UserDynamicSqlSupport.user)
|
||||||
.where(username, isEqualTo(form.getUsername()))
|
.where(username, isEqualTo(user.getUsername()))
|
||||||
.build()
|
.build()
|
||||||
.render(RenderingStrategies.MYBATIS3);
|
.render(RenderingStrategies.MYBATIS3);
|
||||||
long count = userMapper.count(selectStatement);
|
long count = userMapper.count(selectStatement);
|
||||||
@ -72,7 +70,7 @@ public class UserServiceImpl implements UserService {
|
|||||||
throw new BusinessException(ResponseStatus.USERNAME_EXIST);
|
throw new BusinessException(ResponseStatus.USERNAME_EXIST);
|
||||||
}
|
}
|
||||||
User entity = new User();
|
User entity = new User();
|
||||||
BeanUtils.copyProperties(form,entity);
|
BeanUtils.copyProperties(user,entity);
|
||||||
//数据库生成注册记录
|
//数据库生成注册记录
|
||||||
Long id = new IdWorker().nextId();
|
Long id = new IdWorker().nextId();
|
||||||
entity.setId(id);
|
entity.setId(id);
|
||||||
@ -91,12 +89,12 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserDetails login(UserForm form) {
|
public UserDetails login(User user) {
|
||||||
//根据用户名密码查询记录
|
//根据用户名密码查询记录
|
||||||
SelectStatementProvider selectStatement = select(id, username,nickName)
|
SelectStatementProvider selectStatement = select(id, username,nickName)
|
||||||
.from(user)
|
.from(UserDynamicSqlSupport.user)
|
||||||
.where(username, isEqualTo(form.getUsername()))
|
.where(username, isEqualTo(user.getUsername()))
|
||||||
.and(password, isEqualTo(MD5Util.MD5Encode(form.getPassword(), Charsets.UTF_8.name())))
|
.and(password, isEqualTo(MD5Util.MD5Encode(user.getPassword(), Charsets.UTF_8.name())))
|
||||||
.build()
|
.build()
|
||||||
.render(RenderingStrategies.MYBATIS3);
|
.render(RenderingStrategies.MYBATIS3);
|
||||||
List<User> users = userMapper.selectMany(selectStatement);
|
List<User> users = userMapper.selectMany(selectStatement);
|
||||||
@ -105,10 +103,10 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
//生成UserDetail对象并返回
|
//生成UserDetail对象并返回
|
||||||
UserDetails userDetails = new UserDetails();
|
UserDetails userDetails = new UserDetails();
|
||||||
User user = users.get(0);
|
user = users.get(0);
|
||||||
userDetails.setId(user.getId());
|
userDetails.setId(user.getId());
|
||||||
userDetails.setNickName(user.getNickName());
|
userDetails.setNickName(user.getNickName());
|
||||||
userDetails.setUsername(form.getUsername());
|
userDetails.setUsername(user.getUsername());
|
||||||
return userDetails;
|
return userDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,12 +230,9 @@ public class UserServiceImpl implements UserService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateUserInfo(Long userId, User user) {
|
public void updateUserInfo(Long userId, User user) {
|
||||||
User updateUser = new User();
|
user.setId(userId);
|
||||||
updateUser.setId(userId);
|
user.setUpdateTime(new Date());
|
||||||
updateUser.setNickName(user.getNickName());
|
userMapper.updateByPrimaryKeySelective(user);
|
||||||
updateUser.setUserSex(user.getUserSex());
|
|
||||||
updateUser.setUpdateTime(new Date());
|
|
||||||
userMapper.updateByPrimaryKeySelective(updateUser);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user