diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java
index 7a6a318..5a30f92 100644
--- a/src/main/java/com/jsl/oa/controllers/UserController.java
+++ b/src/main/java/com/jsl/oa/controllers/UserController.java
@@ -9,11 +9,14 @@ import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.NotNull;
+import org.springframework.lang.Nullable;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.regex.Pattern;
/**
*
用户控制器
@@ -75,6 +78,42 @@ public class UserController {
return userService.userEditProfile(userEditProfileVO);
}
+ @GetMapping("/user/current")
+ public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) {
+ // 判断是否有参数错误
+ if (id == null && username == null && email == null && phone == null) {
+ return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
+ }
+ // 检查数据是否有问题
+ ArrayList arrayForError = new ArrayList<>();
+ if (id != null) {
+ if (!Pattern.matches("^[0-9]+$", id)) {
+ arrayForError.add("id 只能为数字");
+ }
+ }
+ if (username != null) {
+ if (!Pattern.matches("^[0-9A-Za-z_]+$", username)) {
+ arrayForError.add("username 只允许 0-9、A-Z、a-z、_");
+ }
+ }
+ if (email != null) {
+ if (!Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email)) {
+ arrayForError.add("email 格式不正确");
+ }
+ }
+ if (phone != null) {
+ if (!Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", phone)) {
+ arrayForError.add("手机格式不正确");
+ }
+ }
+ // 检查是否出现错误
+ if (arrayForError.isEmpty()) {
+ return userService.userCurrent(request, id, username, email, phone);
+ } else {
+ return ResultUtil.error(ErrorCode.PARAMETER_ERROR, arrayForError);
+ }
+ }
+
/**
* 获取全部的用户信息
*
diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java
index 5d0a6ae..e625ed3 100755
--- a/src/main/java/com/jsl/oa/dao/UserDAO.java
+++ b/src/main/java/com/jsl/oa/dao/UserDAO.java
@@ -97,4 +97,61 @@ public class UserDAO {
});
return userCurrentDO;
}
+
+ /**
+ * 获取当前用户信息
+ *
+ * @param uid 用户id
+ * @return {@link UserCurrentDO}
+ */
+ public UserCurrentDO userCurrentById(Long uid) {
+ UserCurrentDO userCurrentDO = userMapper.getUserCurrentById(uid);
+ return getUserCurrentForRole(userCurrentDO);
+ }
+
+ /**
+ * 获取当前用户信息
+ *
+ * @param username 用户名
+ * @return {@link UserCurrentDO}
+ */
+ public UserCurrentDO userCurrentByUsername(String username) {
+ UserCurrentDO userCurrentDO = userMapper.getUserCurrentByUsername(username);
+ return getUserCurrentForRole(userCurrentDO);
+ }
+
+ /**
+ * 获取当前用户信息
+ *
+ * @param email 邮箱
+ * @return {@link UserCurrentDO}
+ */
+ public UserCurrentDO userCurrentByEmail(String email) {
+ UserCurrentDO userCurrentDO = userMapper.getUserCurrentByEmail(email);
+ return getUserCurrentForRole(userCurrentDO);
+ }
+
+ /**
+ * 获取当前用户信息
+ *
+ * @param phone 手机号
+ * @return {@link UserCurrentDO}
+ */
+ public UserCurrentDO userCurrentByPhone(String phone) {
+ UserCurrentDO userCurrentDO = userMapper.getUserCurrentByPhone(phone);
+ return getUserCurrentForRole(userCurrentDO);
+ }
+
+ private UserCurrentDO getUserCurrentForRole(UserCurrentDO userCurrentDO) {
+ if (userCurrentDO != null) {
+ RoleUserDO newRoleUserDO = new RoleUserDO();
+ newRoleUserDO.setRid(0L)
+ .setUid(userCurrentDO.getId())
+ .setCreatedAt(new Timestamp(System.currentTimeMillis()));
+ userCurrentDO.setRole(newRoleUserDO);
+ return userCurrentDO;
+ } else {
+ return null;
+ }
+ }
}
diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java
index b2d98df..d65fe75 100755
--- a/src/main/java/com/jsl/oa/mapper/UserMapper.java
+++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java
@@ -57,4 +57,16 @@ public interface UserMapper {
"OR phone LIKE CONCAT('%',#{search},'%') " +
"ORDER BY `id` LIMIT #{page},#{limit}")
List getAllUserBySearch(UserAllCurrentVO userAllCurrentVO);
+
+ @Select("SELECT * FROM organize_oa.oa_user WHERE id = #{uid}")
+ UserCurrentDO getUserCurrentById(Long uid);
+
+ @Select("SELECT * FROM organize_oa.oa_user WHERE username = #{username}")
+ UserCurrentDO getUserCurrentByUsername(String username);
+
+ @Select("SELECT * FROM organize_oa.oa_user WHERE email = #{email}")
+ UserCurrentDO getUserCurrentByEmail(String email);
+
+ @Select("SELECT * FROM organize_oa.oa_user WHERE phone = #{phone}")
+ UserCurrentDO getUserCurrentByPhone(String phone);
}
diff --git a/src/main/java/com/jsl/oa/services/UserService.java b/src/main/java/com/jsl/oa/services/UserService.java
index 5f71696..eb9d9b3 100755
--- a/src/main/java/com/jsl/oa/services/UserService.java
+++ b/src/main/java/com/jsl/oa/services/UserService.java
@@ -18,8 +18,8 @@ import javax.servlet.http.HttpServletRequest;
public interface UserService {
/**
* 根据用户名获取用户信息
- *
- * 该方法用于根据用户名获取用户信息
+ *
+ * 该方法用于根据用户名获取用户信息
*
* @param username 用户名
* @return 用户信息
@@ -27,21 +27,33 @@ public interface UserService {
UserDO getUserInfoByUsername(String username);
/**
- * 用户账号删除
+ * 用户账号删除
+ *
+ * 该方法用于用户账号删除
*
- * @param id
- * @return
+ * @param id 用户id
+ * @return {@link BaseResponse}
*/
BaseResponse userDelete(Long id);
/**
- * 用户账号锁定
+ * 账号锁定
+ *
+ * 该方法用于用户账号锁定
*
- * @param id
- * @return
+ * @param id 用户id
+ * @return {@link BaseResponse}
*/
BaseResponse userLock(Long id);
+ /**
+ * 用户编辑自己的信息
+ *
+ * 该方法用于用户编辑自己的信息
+ *
+ * @param userEditProfileVO 用户编辑自己的信息
+ * @return {@link BaseResponse}
+ */
BaseResponse userEditProfile(UserEditProfileVO userEditProfileVO);
/**
@@ -54,4 +66,18 @@ public interface UserService {
* @return {@link BaseResponse}
*/
BaseResponse userCurrentAll(HttpServletRequest request, UserAllCurrentVO userAllCurrentVO);
+
+ /**
+ * 获取当前用户信息
+ *
+ * 该方法用于获取当前用户信息
+ *
+ * @param request 请求
+ * @param id 用户id
+ * @param username 用户名
+ * @param email 邮箱
+ * @param phone 手机号
+ * @return {@link BaseResponse}
+ */
+ BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone);
}
diff --git a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
index 5d077da..19dc272 100755
--- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
@@ -67,13 +67,7 @@ public class UserServiceImpl implements UserService {
@Override
public BaseResponse userCurrentAll(HttpServletRequest request, @NotNull UserAllCurrentVO userAllCurrentVO) {
// 检查是否是管理员用户
- RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
- if (roleUserDO != null) {
- RoleDO roleDO = roleMapper.getRoleByRoleName("admin");
- if (!roleUserDO.getRid().equals(roleDO.getId())) {
- return ResultUtil.error(ErrorCode.NOT_ADMIN);
- }
- } else {
+ if (!checkUserIsAdmin(request)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 检查数据
@@ -106,4 +100,47 @@ public class UserServiceImpl implements UserService {
}
return ResultUtil.success(userAllCurrentVOList);
}
+
+ @Override
+ public BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone) {
+ // 检查是否是管理员用户
+ if (!checkUserIsAdmin(request)) {
+ return ResultUtil.error(ErrorCode.NOT_ADMIN);
+ }
+ // 根据顺序优先级进行用户信息获取
+ UserCurrentDO userCurrentDO = null;
+ if (id != null && !id.isEmpty()) {
+ userCurrentDO = userDAO.userCurrentById(Long.valueOf(id));
+ } else if (username != null && !username.isEmpty()) {
+ userCurrentDO = userDAO.userCurrentByUsername(username);
+ } else if (email != null && !email.isEmpty()) {
+ userCurrentDO = userDAO.userCurrentByEmail(email);
+ } else if (phone != null && !phone.isEmpty()) {
+ userCurrentDO = userDAO.userCurrentByPhone(phone);
+ }
+ // 返回结果
+ if (userCurrentDO != null) {
+ return ResultUtil.success(userCurrentDO);
+ } else {
+ return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
+ }
+ }
+
+ /**
+ * 检查用户是否是管理员
+ *
+ * 该方法用于检查用户是否是管理员,类型封装后字节返回结果
+ *
+ * @param request 请求
+ * @return 如果为 true 是管理员,false 不是管理员
+ */
+ private @NotNull Boolean checkUserIsAdmin(HttpServletRequest request) {
+ RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
+ if (roleUserDO != null) {
+ RoleDO roleDO = roleMapper.getRoleByRoleName("admin");
+ return roleUserDO.getRid().equals(roleDO.getId());
+ } else {
+ return false;
+ }
+ }
}