diff --git a/novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java b/novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java index cb26ae9..882f830 100644 --- a/novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java +++ b/novel-common/src/main/java/com/java2nb/novel/core/advice/CommonExceptionHandler.java @@ -1,21 +1,30 @@ package com.java2nb.novel.core.advice; import com.java2nb.novel.core.bean.ResultBean; +import com.java2nb.novel.core.enums.ResponseStatus; import com.java2nb.novel.core.exception.BusinessException; 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.ResponseBody; +import org.springframework.web.bind.annotation.RestControllerAdvice; /** * 通用的异常处理器 * * @author 11797*/ @Slf4j -@ControllerAdvice -@ResponseBody +@RestControllerAdvice public class CommonExceptionHandler { + /** + * 处理后台数据校验异常 + * */ + @ExceptionHandler(BindException.class) + public ResultBean handlerBindException(BindException e){ + log.error(e.getMessage(),e); + return ResultBean.fail(ResponseStatus.PARAM_ERROR); + } + /** * 处理业务异常 * */ diff --git a/novel-common/src/main/java/com/java2nb/novel/core/valid/AddGroup.java b/novel-common/src/main/java/com/java2nb/novel/core/valid/AddGroup.java new file mode 100644 index 0000000..8bb5974 --- /dev/null +++ b/novel-common/src/main/java/com/java2nb/novel/core/valid/AddGroup.java @@ -0,0 +1,11 @@ +package com.java2nb.novel.core.valid; + +/** + * 新增数据的校验分组 + * @author xiongxiaoyang + */ +public interface AddGroup { + + + +} diff --git a/novel-common/src/main/java/com/java2nb/novel/core/valid/UpdateGroup.java b/novel-common/src/main/java/com/java2nb/novel/core/valid/UpdateGroup.java new file mode 100644 index 0000000..502b2fc --- /dev/null +++ b/novel-common/src/main/java/com/java2nb/novel/core/valid/UpdateGroup.java @@ -0,0 +1,11 @@ +package com.java2nb.novel.core.valid; + +/** + * 更新数据的校验分组 + * @author xiongxiaoyang + */ +public interface UpdateGroup { + + + +} diff --git a/novel-common/src/main/java/com/java2nb/novel/entity/User.java b/novel-common/src/main/java/com/java2nb/novel/entity/User.java index e51e1cf..00be48e 100644 --- a/novel-common/src/main/java/com/java2nb/novel/entity/User.java +++ b/novel-common/src/main/java/com/java2nb/novel/entity/User.java @@ -1,36 +1,56 @@ package com.java2nb.novel.entity; +import com.java2nb.novel.core.valid.AddGroup; +import com.java2nb.novel.core.valid.UpdateGroup; + import java.util.Date; import javax.annotation.Generated; +import javax.validation.constraints.*; public class User { + + @Null(groups = {AddGroup.class, UpdateGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") 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") private String username; + @NotBlank(groups = {AddGroup.class},message="密码不能为空!") + @Null(groups = {UpdateGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") private String password; + @Null(groups = {AddGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") private String nickName; + @Null(groups = {AddGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") 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") private Byte userSex; + @Null(groups = {AddGroup.class,UpdateGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") private Long accountBalance; + @Null(groups = {AddGroup.class,UpdateGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") private Byte status; + @Null(groups = {AddGroup.class,UpdateGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") private Date createTime; + @Null(groups = {AddGroup.class,UpdateGroup.class}) @Generated("org.mybatis.generator.api.MyBatisGenerator") private Date updateTime; diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java b/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java index 509ff78..2d52820 100644 --- a/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java +++ b/novel-front/src/main/java/com/java2nb/novel/controller/UserController.java @@ -6,15 +6,16 @@ import com.java2nb.novel.core.bean.UserDetails; import com.java2nb.novel.core.cache.CacheService; import com.java2nb.novel.core.enums.ResponseStatus; 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.UserBuyRecord; -import com.java2nb.novel.form.UserForm; import com.java2nb.novel.service.BookService; import com.java2nb.novel.service.UserService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -42,12 +43,7 @@ public class UserController extends BaseController { * 登陆 */ @PostMapping("login") - public ResultBean login(@Valid UserForm user, BindingResult result) { - //判断参数是否合法 - if (result.hasErrors()) { - log.info(result.getAllErrors().toString()); - return ResultBean.fail(ResponseStatus.PARAM_ERROR); - } + public ResultBean login(User user) { //登陆 UserDetails userDetails = userService.login(user); @@ -64,13 +60,8 @@ public class UserController extends BaseController { * 注册 */ @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))) { @@ -225,7 +216,7 @@ public class UserController extends BaseController { * 更新个人信息 * */ @PostMapping("updateUserInfo") - public ResultBean updateUserInfo(User user,HttpServletRequest request) { + public ResultBean updateUserInfo(@Validated({UpdateGroup.class}) User user, HttpServletRequest request) { UserDetails userDetails = getUserDetails(request); if (userDetails == null) { return ResultBean.fail(ResponseStatus.NO_LOGIN); diff --git a/novel-front/src/main/java/com/java2nb/novel/form/UserForm.java b/novel-front/src/main/java/com/java2nb/novel/form/UserForm.java deleted file mode 100644 index 8a4d137..0000000 --- a/novel-front/src/main/java/com/java2nb/novel/form/UserForm.java +++ /dev/null @@ -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; - -} diff --git a/novel-front/src/main/java/com/java2nb/novel/service/UserService.java b/novel-front/src/main/java/com/java2nb/novel/service/UserService.java index a1bbdd1..8d08a57 100644 --- a/novel-front/src/main/java/com/java2nb/novel/service/UserService.java +++ b/novel-front/src/main/java/com/java2nb/novel/service/UserService.java @@ -3,7 +3,6 @@ package com.java2nb.novel.service; import com.java2nb.novel.core.bean.UserDetails; import com.java2nb.novel.entity.UserBuyRecord; -import com.java2nb.novel.form.UserForm; import com.java2nb.novel.vo.BookReadHistoryVO; import com.java2nb.novel.vo.BookShelfVO; import com.java2nb.novel.entity.User; @@ -19,17 +18,17 @@ public interface UserService { /** * 用户注册 - * @param form 用户注册提交信息类 + * @param user 用户注册信息类 * @return jwt载体信息类 * */ - UserDetails register(UserForm form); + UserDetails register(User user); /** * 用户登陆 - * @param form 用户登陆提交信息类 + * @param user 用户登陆信息类 * @return jwt载体信息类 * */ - UserDetails login(UserForm form); + UserDetails login(User user); /** * 查询小说是否已加入书架 diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java index da8281f..6b85319 100644 --- a/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java +++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/UserServiceImpl.java @@ -5,7 +5,6 @@ import com.java2nb.novel.core.bean.UserDetails; import com.java2nb.novel.core.utils.BeanUtil; import com.java2nb.novel.entity.*; import com.java2nb.novel.entity.User; -import com.java2nb.novel.form.UserForm; import com.java2nb.novel.service.UserService; import com.java2nb.novel.core.enums.ResponseStatus; import com.java2nb.novel.core.exception.BusinessException; @@ -29,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Date; 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.UserBookshelfDynamicSqlSupport.userBookshelf; import static com.java2nb.novel.mapper.UserDynamicSqlSupport.*; @@ -59,11 +57,11 @@ public class UserServiceImpl implements UserService { @Override - public UserDetails register(UserForm form) { + public UserDetails register(User user) { //查询用户名是否已注册 SelectStatementProvider selectStatement = select(count(id)) - .from(user) - .where(username, isEqualTo(form.getUsername())) + .from(UserDynamicSqlSupport.user) + .where(username, isEqualTo(user.getUsername())) .build() .render(RenderingStrategies.MYBATIS3); long count = userMapper.count(selectStatement); @@ -72,7 +70,7 @@ public class UserServiceImpl implements UserService { throw new BusinessException(ResponseStatus.USERNAME_EXIST); } User entity = new User(); - BeanUtils.copyProperties(form,entity); + BeanUtils.copyProperties(user,entity); //数据库生成注册记录 Long id = new IdWorker().nextId(); entity.setId(id); @@ -91,12 +89,12 @@ public class UserServiceImpl implements UserService { } @Override - public UserDetails login(UserForm form) { + public UserDetails login(User user) { //根据用户名密码查询记录 SelectStatementProvider selectStatement = select(id, username,nickName) - .from(user) - .where(username, isEqualTo(form.getUsername())) - .and(password, isEqualTo(MD5Util.MD5Encode(form.getPassword(), Charsets.UTF_8.name()))) + .from(UserDynamicSqlSupport.user) + .where(username, isEqualTo(user.getUsername())) + .and(password, isEqualTo(MD5Util.MD5Encode(user.getPassword(), Charsets.UTF_8.name()))) .build() .render(RenderingStrategies.MYBATIS3); List users = userMapper.selectMany(selectStatement); @@ -105,10 +103,10 @@ public class UserServiceImpl implements UserService { } //生成UserDetail对象并返回 UserDetails userDetails = new UserDetails(); - User user = users.get(0); + user = users.get(0); userDetails.setId(user.getId()); userDetails.setNickName(user.getNickName()); - userDetails.setUsername(form.getUsername()); + userDetails.setUsername(user.getUsername()); return userDetails; } @@ -232,12 +230,9 @@ public class UserServiceImpl implements UserService { @Override public void updateUserInfo(Long userId, User user) { - User updateUser = new User(); - updateUser.setId(userId); - updateUser.setNickName(user.getNickName()); - updateUser.setUserSex(user.getUserSex()); - updateUser.setUpdateTime(new Date()); - userMapper.updateByPrimaryKeySelective(updateUser); + user.setId(userId); + user.setUpdateTime(new Date()); + userMapper.updateByPrimaryKeySelective(user); }