diff --git a/src/main/java/com/jsl/oa/aspect/UserControllerAspect.java b/src/main/java/com/jsl/oa/aspect/UserControllerAspect.java index 16cdb90..5859a68 100644 --- a/src/main/java/com/jsl/oa/aspect/UserControllerAspect.java +++ b/src/main/java/com/jsl/oa/aspect/UserControllerAspect.java @@ -1,79 +1,79 @@ -//package com.jsl.oa.aspect; -// -//import com.jsl.oa.utils.ErrorCode; -//import com.jsl.oa.utils.ResultUtil; -//import org.aspectj.lang.ProceedingJoinPoint; -//import org.aspectj.lang.annotation.Around; -//import org.aspectj.lang.annotation.Aspect; -//import org.springframework.stereotype.Component; -//import org.springframework.web.context.request.RequestContextHolder; -//import org.springframework.web.context.request.ServletRequestAttributes; -// -//import javax.servlet.http.HttpServletRequest; -//import java.util.Objects; -// -///** -// *

用户控制器切面

-// *
-// * 用于用户控制器的切面 -// * -// * @since v1.0.0 -// * @version v1.0.0 -// * @author 筱锋xiao_lfeng -// */ -//@Aspect -//@Component -//public class UserControllerAspect { -// -// /** -// *

用户控制器切面

-// *
-// * 用于用户控制器的切面 -// * -// * @since v1.0.0 -// * @param pjp ProceedingJoinPoint对象 -// * @return {@link Object} -// * @throws Throwable 异常 -// */ -// @Around("execution(* com.jsl.oa.controllers.UserController.*(..))") -// public Object controllerAround(ProceedingJoinPoint pjp) throws Throwable { -// // 获取HttpServletRequest对象 -// HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); -// -// // 时间戳检查 -// if (checkTimestamp(request)) { -// // TODO: 2023/12/21 0001 后期固定业务(如:日志处理) -// return pjp.proceed(); -// } else { -// return ResultUtil.error(ErrorCode.TIMESTAMP_ERROR); -// } -// -// } -// -// /** -// *

时间戳检查

-// *
-// * 用于检查时间戳是否合法,合法时间范围正负5秒 -// * -// * @since v1.0.0 -// * @param request HttpServletRequest对象 -// * @return {@link Boolean} -// */ -// public Boolean checkTimestamp(HttpServletRequest request) { -// // 获取请求头中的时间戳 -// String getTimestamp = request.getHeader("Timestamp"); -// // 判断是否为空 -// if (getTimestamp == null || getTimestamp.isEmpty()) { -// return false; -// } else { -// if (getTimestamp.length() == 10) { -// getTimestamp += "000"; -// } -// } -// // 获取当前时间戳 -// long nowTimestamp = System.currentTimeMillis(); -// -// // 时间误差允许前后五秒钟 -// return nowTimestamp - Long.parseLong(getTimestamp) <= 5000 && nowTimestamp - Long.parseLong(getTimestamp) >= -5000; -// } -//} +package com.jsl.oa.aspect; + +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.ResultUtil; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; + +/** + *

用户控制器切面

+ *
+ * 用于用户控制器的切面 + * + * @since v1.0.0 + * @version v1.0.0 + * @author 筱锋xiao_lfeng + */ +@Aspect +@Component +public class UserControllerAspect { + + /** + *

用户控制器切面

+ *
+ * 用于用户控制器的切面 + * + * @since v1.0.0 + * @param pjp ProceedingJoinPoint对象 + * @return {@link Object} + * @throws Throwable 异常 + */ + @Around("execution(* com.jsl.oa.controllers.UserController.*(..))") + public Object controllerAround(ProceedingJoinPoint pjp) throws Throwable { + // 获取HttpServletRequest对象 + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + + // 时间戳检查 + if (checkTimestamp(request)) { + // TODO: 2023/12/21 0001 后期固定业务(如:日志处理) + return pjp.proceed(); + } else { + return ResultUtil.error(ErrorCode.TIMESTAMP_ERROR); + } + + } + + /** + *

时间戳检查

+ *
+ * 用于检查时间戳是否合法,合法时间范围正负5秒 + * + * @since v1.0.0 + * @param request HttpServletRequest对象 + * @return {@link Boolean} + */ + public Boolean checkTimestamp(HttpServletRequest request) { + // 获取请求头中的时间戳 + String getTimestamp = request.getHeader("Timestamp"); + // 判断是否为空 + if (getTimestamp == null || getTimestamp.isEmpty()) { + return false; + } else { + if (getTimestamp.length() == 10) { + getTimestamp += "000"; + } + } + // 获取当前时间戳 + long nowTimestamp = System.currentTimeMillis(); + + // 时间误差允许前后五秒钟 + return nowTimestamp - Long.parseLong(getTimestamp) <= 5000 && nowTimestamp - Long.parseLong(getTimestamp) >= -5000; + } +} diff --git a/src/main/java/com/jsl/oa/common/doData/UserDO.java b/src/main/java/com/jsl/oa/common/doData/UserDO.java index 3f1fa25..62289ff 100644 --- a/src/main/java/com/jsl/oa/common/doData/UserDO.java +++ b/src/main/java/com/jsl/oa/common/doData/UserDO.java @@ -1,5 +1,6 @@ package com.jsl.oa.common.doData; +import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @@ -18,6 +19,7 @@ import java.sql.Date; @Getter @Setter @Accessors(chain = true) +@JsonInclude(JsonInclude.Include.NON_NULL) public class UserDO { private Integer id; private String userNum; @@ -29,5 +31,5 @@ public class UserDO { private String filed; private String hometown; private String kind; - private String status; + private String state; } diff --git a/src/main/java/com/jsl/oa/common/voData/UserLoginVO.java b/src/main/java/com/jsl/oa/common/voData/UserLoginVO.java new file mode 100644 index 0000000..d9773a7 --- /dev/null +++ b/src/main/java/com/jsl/oa/common/voData/UserLoginVO.java @@ -0,0 +1,23 @@ +package com.jsl.oa.common.voData; + +import lombok.Getter; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +/** + *

用户登陆自定义实体类

+ *
+ * 用于处理用户登陆表单输入的数据 + * + * @author 175yunxuan + * @version v1.0.0 + * @since v1.0.0 + */ +@Getter +public class UserLoginVO { + @Pattern(regexp = "^[0-9A-Z]+$", message = "工号格式错误") + private String userNum; + @NotBlank(message = "密码不能为空") + private String password; +} diff --git a/src/main/java/com/jsl/oa/common/voData/UserRegisterVO.java b/src/main/java/com/jsl/oa/common/voData/UserRegisterVO.java index b1a2f3f..e69cc0d 100644 --- a/src/main/java/com/jsl/oa/common/voData/UserRegisterVO.java +++ b/src/main/java/com/jsl/oa/common/voData/UserRegisterVO.java @@ -6,7 +6,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; /** - *

用户登陆自定义实体类

+ *

用户注册自定义实体类

*
* 用于处理用户注册表单输入的数据 * diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index f3f414c..fe79e36 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -1,6 +1,6 @@ package com.jsl.oa.controllers; -import com.jsl.oa.common.doData.UserDO; +import com.jsl.oa.common.voData.UserLoginVO; import com.jsl.oa.common.voData.UserRegisterVO; import com.jsl.oa.services.UserService; import com.jsl.oa.utils.BaseResponse; @@ -44,13 +44,13 @@ public class UserController { * 用户登录接口 * * @since v1.0.0 - * @param userDO 用户登录信息 + * @param userLoginVO 用户登录信息 * @return {@link BaseResponse} * @author 176yunxuan */ @PostMapping("/user/login") - public BaseResponse userLogin(@RequestBody UserDO userDO){ + public BaseResponse userLogin(@RequestBody UserLoginVO userLoginVO){ - return userService.userLogin(userDO); + return userService.userLogin(userLoginVO); } } diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java index 434fc59..aedd2d6 100644 --- a/src/main/java/com/jsl/oa/mapper/UserMapper.java +++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java @@ -1,6 +1,7 @@ package com.jsl.oa.mapper; import com.jsl.oa.common.doData.UserDO; +import com.jsl.oa.common.voData.UserLoginVO; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -16,12 +17,12 @@ public interface UserMapper { @Insert("INSERT INTO organize_oa.users (user_num, username, password, sex, age, unit, field, hometown, kind, state) " + "VALUES " + - "(#{userNum}, #{username}, #{password}, #{sex}, #{age}, #{unit}, #{filed}, #{hometown}, #{kind}, #{status})") + "(#{userNum}, #{username}, #{password}, #{sex}, #{age}, #{unit}, #{filed}, #{hometown}, #{kind}, #{state})") Boolean insertUser(UserDO userDO); - @Select("select * from users where user_num = #{userNum} ") - UserDO login(UserDO userDO); + @Select("select id, user_num, username, sex, age, unit, field, hometown, kind, state from organize_oa.users where user_num = #{userNum} ") + UserDO login(UserLoginVO userLoginVO); - @Select("select password from users where user_num = #{userNum}") - String loginPassword(UserDO userDO); + @Select("select password from organize_oa.users where user_num = #{userNum}") + String loginPassword(UserLoginVO userLoginVO); } diff --git a/src/main/java/com/jsl/oa/services/UserService.java b/src/main/java/com/jsl/oa/services/UserService.java index 1d45364..b578fb1 100644 --- a/src/main/java/com/jsl/oa/services/UserService.java +++ b/src/main/java/com/jsl/oa/services/UserService.java @@ -1,6 +1,6 @@ package com.jsl.oa.services; -import com.jsl.oa.common.doData.UserDO; +import com.jsl.oa.common.voData.UserLoginVO; import com.jsl.oa.common.voData.UserRegisterVO; import com.jsl.oa.utils.BaseResponse; @@ -9,5 +9,5 @@ import java.text.ParseException; public interface UserService { BaseResponse userRegister(UserRegisterVO userRegisterVO) throws ParseException; - BaseResponse userLogin(UserDO userDO); + BaseResponse userLogin(UserLoginVO userLoginVO); } diff --git a/src/main/java/com/jsl/oa/services/UserServiceImpl.java b/src/main/java/com/jsl/oa/services/UserServiceImpl.java index 72bcd5a..04a098f 100644 --- a/src/main/java/com/jsl/oa/services/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/UserServiceImpl.java @@ -1,6 +1,7 @@ package com.jsl.oa.services; import com.jsl.oa.common.doData.UserDO; +import com.jsl.oa.common.voData.UserLoginVO; import com.jsl.oa.common.voData.UserRegisterVO; import com.jsl.oa.exception.BusinessException; import com.jsl.oa.mapper.UserMapper; @@ -36,7 +37,7 @@ public class UserServiceImpl implements UserService { UserDO getUserByUsername = userMapper.getUserByUsername(userRegisterVO.getUsername()); // 用户名已存在 if (getUserByUsername != null) { - return ResultUtil.error(ErrorCode.USERNAME_EXIST); + return ResultUtil.error(ErrorCode.USER_EXIST); } // 生成工号 @@ -57,21 +58,22 @@ public class UserServiceImpl implements UserService { .setFiled(userRegisterVO.getFiled()) .setHometown(userRegisterVO.getHometown()) .setKind("注册用户") - .setStatus("注册状态"); + .setState("注册状态"); // 插入数据 if (userMapper.insertUser(userDO)) { - return ResultUtil.success("注册成功"); + userDO.setPassword(null); + return ResultUtil.success("注册成功", userDO); } else { throw new BusinessException(ErrorCode.DATABASE_INSERT_ERROR); } } @Override - public BaseResponse userLogin(UserDO userDO) { - String pwd = userDO.getPassword(); - String encodePwd = userMapper.loginPassword(userDO); + public BaseResponse userLogin(UserLoginVO userLoginVO) { + String pwd = userLoginVO.getPassword(); + String encodePwd = userMapper.loginPassword(userLoginVO); if (BCrypt.checkpw(pwd, encodePwd)) { - return ResultUtil.success(userMapper.login(userDO)); + return ResultUtil.success("登陆成功", userMapper.login(userLoginVO)); } else return ResultUtil.error(ErrorCode.WRONG_PASSWORD); } diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index 7ece478..02b5895 100644 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -7,8 +7,9 @@ public enum ErrorCode { WRONG_PASSWORD("WrongPassword", 40010, "密码错误"), PARAMETER_ERROR("ParameterError", 40011, "参数错误"), REQUEST_BODY_ERROR("RequestBodyError", 40012, "请求体错误"), - USERNAME_EXIST("UsernameExist", 40013, "用户名已存在"), + USER_EXIST("UserExist", 40013, "用户名已存在"), TIMESTAMP_ERROR("TimestampError", 40014, "时间戳错误"), + USER_NOT_EXIST("UserNotExist", 40015, "用户不存在"), DATABASE_INSERT_ERROR("DatabaseInsertError", 50010, "数据库插入错误"), DATABASE_UPDATE_ERROR("DatabaseUpdateError", 50011, "数据库更新错误"), DATABASE_DELETE_ERROR("DatabaseDeleteError", 50012, "数据库删除错误");