diff --git a/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java b/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java
index f9f0383..fa54554 100755
--- a/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java
+++ b/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java
@@ -41,7 +41,7 @@ public class AuthControllerAspect {
* @throws Throwable 异常
* @since v1.0.0
*/
- @Around("execution(* com.jsl.oa.controllers.*.*(..))")
+ @Around("execution(* com.jsl.oa.controllers.*.*(..)) && !execution(* com.jsl.oa.controllers.IndexController.*(..))")
public Object controllerAround(ProceedingJoinPoint pjp) throws Throwable {
// 获取HttpServletRequest对象
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
@@ -56,6 +56,15 @@ public class AuthControllerAspect {
}
+ /**
+ *
Token检查切面
+ *
+ * 用于检查Token是否有效
+ *
+ * @param pjp ProceedingJoinPoint对象
+ * @return {@link Object}
+ * @throws Throwable
+ */
@Around("execution(* com.jsl.oa.controllers.AuthController.authLogout(..)) || execution(* com.jsl.oa.controllers.AuthController.authChangePassword(..))")
public Object tokenControllerAround(ProceedingJoinPoint pjp) throws Throwable {
// 获取 HttpServletRequest 对象
@@ -99,6 +108,6 @@ public class AuthControllerAspect {
long nowTimestamp = System.currentTimeMillis();
// 时间误差允许前后五秒钟
- return nowTimestamp - Long.parseLong(getTimestamp) <= 5000 && nowTimestamp - Long.parseLong(getTimestamp) >= -5000;
+ return nowTimestamp - Long.parseLong(getTimestamp) <= 10000 && nowTimestamp - Long.parseLong(getTimestamp) >= -10000;
}
}
diff --git a/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java b/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java
index be2569e..c697e1f 100755
--- a/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java
+++ b/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java
@@ -1,5 +1,6 @@
package com.jsl.oa.config.redis;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -21,9 +22,17 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
*/
@Configuration
public class RedisConfiguration {
+ @Value("${spring.redis.host}")
+ private String host;
+ @Value("${spring.redis.port}")
+ private Integer port;
+ @Value("${spring.redis.password}")
+ private String password;
+
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
- RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("localhost");
+ RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, port);
+ config.setPassword(password);
return new JedisConnectionFactory(config);
}
diff --git a/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java b/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java
index ab7e474..bbf96ed 100755
--- a/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java
+++ b/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java
@@ -27,7 +27,7 @@ public class ShiroConfiguration {
Map filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/auth/**/**", "anon"); // 登录接口允许匿名访问
filterChainDefinitionMap.put("/unauthorized", "anon"); // 未授权接口允许匿名访问
- filterChainDefinitionMap.put("/", "jwt"); // 首页允许匿名访问
+ filterChainDefinitionMap.put("/", "anon"); // 首页允许匿名访问
filterChainDefinitionMap.put("/**/**", "jwt"); // 其他接口一律拦截(需要Token)
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java
index 093af5e..bb81360 100755
--- a/src/main/java/com/jsl/oa/controllers/RoleController.java
+++ b/src/main/java/com/jsl/oa/controllers/RoleController.java
@@ -1,35 +1,54 @@
package com.jsl.oa.controllers;
-import com.jsl.oa.model.voData.RoleAddUserVO;
-import com.jsl.oa.model.voData.RoleRemoveUserVO;
import com.jsl.oa.services.RoleService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
-import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
-import org.springframework.validation.BindingResult;
-import org.springframework.validation.annotation.Validated;
+import org.springframework.lang.Nullable;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 角色控制器
+ *
+ * 角色控制器,包含角色获取接口
+ *
+ * @version v1.1.0
+ * @see RoleService
+ * @since v1.1.0
+ */
@RestController
@RequiredArgsConstructor
-
public class RoleController {
private final RoleService roleService;
+ /**
+ * 角色获取
+ *
+ * 角色获取接口
+ *
+ * @param id 角色id
+ * @return {@link BaseResponse}
+ */
+ @GetMapping("/role/get")
+ public BaseResponse roleGet(HttpServletRequest request, @RequestParam @Nullable String id) {
+ return roleService.roleGet(request, id);
+ }
+
/**
* 用户权限授予
*
* @return
*/
@PostMapping("role/user/add")
- public BaseResponse roleAddUser(@RequestParam Long uid,@RequestParam Long rid){
+ public BaseResponse roleAddUser(@RequestParam Long uid, @RequestParam Long rid) {
// 判断是否有参数错误
if (uid == null || rid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
- return roleService.roleAddUser(uid,rid);
+ return roleService.roleAddUser(uid, rid);
}
/**
@@ -38,9 +57,9 @@ public class RoleController {
* @return
*/
@DeleteMapping("role/user/remove")
- public BaseResponse roleRemoveUser(@RequestParam Long uid){
+ public BaseResponse roleRemoveUser(@RequestParam Long uid) {
// 判断是否有参数错误
- if (uid==null) {
+ if (uid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
return roleService.roleRemoveUser(uid);
diff --git a/src/main/java/com/jsl/oa/dao/RoleDAO.java b/src/main/java/com/jsl/oa/dao/RoleDAO.java
index 7eb8950..8f1eed1 100644
--- a/src/main/java/com/jsl/oa/dao/RoleDAO.java
+++ b/src/main/java/com/jsl/oa/dao/RoleDAO.java
@@ -1,15 +1,17 @@
package com.jsl.oa.dao;
import com.jsl.oa.mapper.RoleMapper;
-import com.jsl.oa.model.voData.RoleAddUserVO;
-import com.jsl.oa.model.voData.RoleRemoveUserVO;
+import com.jsl.oa.model.doData.RoleDO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
+import java.util.ArrayList;
+import java.util.List;
+
@Component
@RequiredArgsConstructor
public class RoleDAO {
- private final RoleMapper roleMapper;
+ public final RoleMapper roleMapper;
public void roleAddUser(Long uid,Long rid) {
roleMapper.roleAddUser(uid,rid);
@@ -18,4 +20,14 @@ public class RoleDAO {
public void roleRemoveUser(Long uid) {
roleMapper.roleRemoveUser(uid);
}
+
+ public List getRoleById(String id) {
+ ArrayList getRoleList = new ArrayList<>();
+ getRoleList.add(roleMapper.getRoleById(Long.valueOf(id)));
+ return getRoleList;
+ }
+
+ public List getRole() {
+ return roleMapper.getRole();
+ }
}
diff --git a/src/main/java/com/jsl/oa/mapper/RoleMapper.java b/src/main/java/com/jsl/oa/mapper/RoleMapper.java
index 2a3400f..970a919 100644
--- a/src/main/java/com/jsl/oa/mapper/RoleMapper.java
+++ b/src/main/java/com/jsl/oa/mapper/RoleMapper.java
@@ -7,6 +7,8 @@ import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
+import java.util.List;
+
@Mapper
public interface RoleMapper {
@@ -21,4 +23,10 @@ public interface RoleMapper {
@Select("SELECT * FROM organize_oa.oa_role WHERE role_name=#{roleName}")
RoleDO getRoleByRoleName(String roleName);
+
+ @Select("SELECT * FROM organize_oa.oa_role WHERE id=#{id}")
+ RoleDO getRoleById(Long id);
+
+ @Select("SELECT * FROM organize_oa.oa_role ORDER BY id DESC")
+ List getRole();
}
diff --git a/src/main/java/com/jsl/oa/model/doData/RoleDO.java b/src/main/java/com/jsl/oa/model/doData/RoleDO.java
index e5121b2..04148c3 100755
--- a/src/main/java/com/jsl/oa/model/doData/RoleDO.java
+++ b/src/main/java/com/jsl/oa/model/doData/RoleDO.java
@@ -1,6 +1,5 @@
package com.jsl.oa.model.doData;
-import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -17,7 +16,6 @@ import java.sql.Timestamp;
*/
@Data
@Accessors(chain = true)
-@JsonInclude(JsonInclude.Include.NON_NULL)
public class RoleDO {
private Long id;
private String roleName;
diff --git a/src/main/java/com/jsl/oa/services/MailService.java b/src/main/java/com/jsl/oa/services/MailService.java
index a1c3c20..b8f48a9 100755
--- a/src/main/java/com/jsl/oa/services/MailService.java
+++ b/src/main/java/com/jsl/oa/services/MailService.java
@@ -40,8 +40,7 @@ public interface MailService {
*
* @param email 邮箱
* @param code 验证码
- * @return 是否发送成功
*/
- boolean sendMailAboutUserLogin(String email, Integer code);
+ void sendMailAboutUserLogin(String email, Integer code);
}
diff --git a/src/main/java/com/jsl/oa/services/RoleService.java b/src/main/java/com/jsl/oa/services/RoleService.java
index eea254d..7da9e3b 100644
--- a/src/main/java/com/jsl/oa/services/RoleService.java
+++ b/src/main/java/com/jsl/oa/services/RoleService.java
@@ -1,11 +1,21 @@
package com.jsl.oa.services;
-import com.jsl.oa.model.voData.RoleAddUserVO;
-import com.jsl.oa.model.voData.RoleRemoveUserVO;
import com.jsl.oa.utils.BaseResponse;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 角色控制器接口
+ *
+ * 该接口用于定义角色控制器的方法
+ *
+ * @version 1.1.0
+ * @since v1.1.0
+ */
public interface RoleService {
- BaseResponse roleAddUser(Long uid,Long rid);
+ BaseResponse roleAddUser(Long uid, Long rid);
BaseResponse roleRemoveUser(Long uid);
+
+ BaseResponse roleGet(HttpServletRequest request, String id);
}
diff --git a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java
index 32fe4ff..e4aae3a 100755
--- a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java
@@ -138,11 +138,8 @@ public class AuthServiceImpl implements AuthService {
// 存储验证码
if (emailRedisUtil.setData(BusinessConstants.BUSINESS_LOGIN, email, code, 5)) {
// 发送邮件
- if (mailService.sendMailAboutUserLogin(email, code)) {
- return ResultUtil.success("验证码已发送");
- } else {
- return ResultUtil.error(ErrorCode.EMAIL_LOGIN_NOT_SUPPORT);
- }
+ mailService.sendMailAboutUserLogin(email, code);
+ return ResultUtil.success("验证码已发送");
} else {
return ResultUtil.error(ErrorCode.DATABASE_INSERT_ERROR);
}
diff --git a/src/main/java/com/jsl/oa/services/impl/MailServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MailServiceImpl.java
index 5cd7904..c0bd8e9 100755
--- a/src/main/java/com/jsl/oa/services/impl/MailServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/MailServiceImpl.java
@@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
@@ -60,7 +61,8 @@ public class MailServiceImpl implements MailService {
}
@Override
- public boolean sendMailAboutUserLogin(String email, Integer code) {
+ @Async
+ public void sendMailAboutUserLogin(String email, Integer code) {
// 发送邮件带HTML模块部分
try {
MimeMessage message = javaMailSender.createMimeMessage();
@@ -72,14 +74,12 @@ public class MailServiceImpl implements MailService {
Context context = new Context();
context.setVariable("code", code);
context.setVariable("email", email);
- String emailContent = templateEngine.process("/mail/user-login.html", context);
+ String emailContent = templateEngine.process("./mail/user-login.html", context);
mimeMessage.setText(emailContent, true);
javaMailSender.send(message);
- return true;
} catch (MessagingException e) {
//TODO: 10001-发送邮件失败处理
- return false;
}
}
}
diff --git a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java
index 3dcd359..2e1ef48 100644
--- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java
@@ -2,15 +2,19 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
-import com.jsl.oa.model.voData.RoleAddUserVO;
-import com.jsl.oa.model.voData.RoleRemoveUserVO;
+import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.services.RoleService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
+import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
@Service
@RequiredArgsConstructor
public class RoleServiceImpl implements RoleService {
@@ -19,18 +23,42 @@ public class RoleServiceImpl implements RoleService {
private final UserDAO userDAO;
@Override
- public BaseResponse roleAddUser(Long uid,Long rid) {
- if(userDAO.isExistUser(uid)) {
- roleDAO.roleAddUser(uid,rid);
+ public BaseResponse roleAddUser(Long uid, Long rid) {
+ if (userDAO.isExistUser(uid)) {
+ roleDAO.roleAddUser(uid, rid);
return ResultUtil.success();
} else return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
@Override
public BaseResponse roleRemoveUser(Long uid) {
- if(userDAO.isExistUser(uid)) {
+ if (userDAO.isExistUser(uid)) {
roleDAO.roleRemoveUser(uid);
return ResultUtil.success();
} else return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
+
+ @Override
+ public BaseResponse roleGet(HttpServletRequest request, String id) {
+ // 检查用户权限
+ if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
+ return ResultUtil.error(ErrorCode.NOT_ADMIN);
+ }
+ // 获取 Role 权限组
+ ArrayList getRoleList;
+ if (id != null && !id.isEmpty()) {
+ if (Pattern.matches("^[0-9]+$", id)) {
+ getRoleList = (ArrayList) roleDAO.getRoleById(id);
+ } else {
+ ArrayList error = new ArrayList<>();
+ error.add("id 只能为数字");
+ return ResultUtil.error(ErrorCode.PARAMETER_ERROR, error);
+ }
+ } else {
+ getRoleList = (ArrayList) roleDAO.getRole();
+ getRoleList.add(getRoleList.size(), new RoleDO().setId(0L).setRoleName("none"));
+ }
+ // 返回数据
+ return ResultUtil.success(getRoleList);
+ }
}
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 0d16f15..bb7bfef 100755
--- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
@@ -3,7 +3,6 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.exception.BusinessException;
import com.jsl.oa.mapper.RoleMapper;
-import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.doData.UserCurrentDO;
import com.jsl.oa.model.doData.UserDO;
@@ -33,10 +32,10 @@ public class UserServiceImpl implements UserService {
}
@Override
- public BaseResponse userDelete(HttpServletRequest request,Long id) {
+ public BaseResponse userDelete(HttpServletRequest request, Long id) {
//判断用户是否存在
if (userDAO.isExistUser(id)) {
- if(!Processing.checkUserIsAdmin(request,roleMapper)){
+ if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
userDAO.userDelete(id);
@@ -45,10 +44,10 @@ public class UserServiceImpl implements UserService {
}
@Override
- public BaseResponse userLock(HttpServletRequest request,Long id) {
+ public BaseResponse userLock(HttpServletRequest request, Long id) {
//判断用户是否存在
if (userDAO.isExistUser(id)) {
- if (!Processing.checkUserIsAdmin(request,roleMapper)){
+ if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
userDAO.userLock(id);
@@ -127,19 +126,17 @@ public class UserServiceImpl implements UserService {
}
-
-
@Override
public BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request) {
//检测用户是否为管理员
BaseResponse checkManagerResult = isManager(request);
- if(checkManagerResult.getCode() != 200){
+ if (checkManagerResult.getCode() != 200) {
return checkManagerResult;
}
//如果用户不重复,添加用户
- if(!userDAO.isRepeatUser(userAddVo.getUsername())){
+ if (!userDAO.isRepeatUser(userAddVo.getUsername())) {
// 生成工号
String userNum;
do {
@@ -164,27 +161,26 @@ public class UserServiceImpl implements UserService {
} else {
throw new BusinessException(ErrorCode.DATABASE_INSERT_ERROR);
}
- }else return ResultUtil.error(ErrorCode.USER_EXIST);
+ } else return ResultUtil.error(ErrorCode.USER_EXIST);
}
-
@Override
public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) {
//检测用户是否为管理员
BaseResponse checkManagerResult = isManager(request);
- if(checkManagerResult.getCode() != 200){
+ if (checkManagerResult.getCode() != 200) {
return checkManagerResult;
}
//根据id获取用户信息
UserDO userDO = userDAO.getUserById(userEditVo.getId());
- if(userDO == null){
+ if (userDO == null) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
//修改非空属性
try {
- Processing.copyProperties(userEditVo,userDO);
+ Processing.copyProperties(userEditVo, userDO);
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -199,12 +195,12 @@ public class UserServiceImpl implements UserService {
public BaseResponse userProflieGet(Long id) {
UserDO userDO = userDAO.getUserById(id);
- if(userDO == null){
+ if (userDO == null) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
UserProfile userProfile = new UserProfile();
try {
- Processing.copyProperties(userDO,userProfile);
+ Processing.copyProperties(userDO, userProfile);
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -218,18 +214,18 @@ public class UserServiceImpl implements UserService {
* @Date: 2024/1/18
* @Param request: 请求头
**/
- public BaseResponse isManager(HttpServletRequest request){
+ public BaseResponse isManager(HttpServletRequest request) {
//获取token
String originalAuthorization = request.getHeader("Authorization");
String token = originalAuthorization.replace("Bearer ", "");
//获取操作用户的权限
RoleUserDO roleUserDO = userDAO.getRoleFromUser(JwtUtil.getUserId(token));
//用户权限不为空
- if(roleUserDO == null){
+ if (roleUserDO == null) {
return ResultUtil.error(ErrorCode.USER_ROLE_NOT_EXIST);
}
//用户权限应为管理员
- if(!userDAO.isManagerByRoleId(roleUserDO.getRid())){
+ if (!userDAO.isManagerByRoleId(roleUserDO.getRid())) {
return ResultUtil.error(ErrorCode.USER_ROLE_NOT_MANAGER);
}
return ResultUtil.success();
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index f378642..90a6aa2 100755
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -12,7 +12,7 @@ spring:
host: localhost
port: 6379
profiles:
- active: dev
+ active: test
mail:
host: 171.38.91.172
username: zrx