refactor: 对权限组的重新配置
This commit is contained in:
parent
f0f6e53ba2
commit
a2cd19675e
|
@ -14,7 +14,7 @@ import java.lang.annotation.*;
|
|||
@Documented
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface NeedRoleGroup {
|
||||
public @interface NeedPermission {
|
||||
/**
|
||||
* <h2>权限名称</h2>
|
||||
* <hr/>
|
|
@ -31,7 +31,7 @@ public class CheckUserAbleToUseAspect {
|
|||
|
||||
private final UserDAO userDAO;
|
||||
|
||||
@Around("@annotation(com.jsl.oa.annotations.NeedRoleGroup)")
|
||||
@Around("@annotation(com.jsl.oa.annotations.NeedPermission)")
|
||||
public Object checkUse(ProceedingJoinPoint pjp) throws Throwable {
|
||||
// 从ServletRequest中获取用户信息
|
||||
ServletRequestAttributes servletRequestAttributes =
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.jsl.oa.aspect;
|
||||
|
||||
import com.jsl.oa.annotations.NeedRoleGroup;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.jsl.oa.annotations.NeedPermission;
|
||||
import com.jsl.oa.dao.RoleDAO;
|
||||
import com.jsl.oa.exception.library.NotLoginException;
|
||||
import com.jsl.oa.exception.library.PermissionDeniedException;
|
||||
|
@ -16,14 +18,16 @@ import org.springframework.stereotype.Component;
|
|||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检查用户权限切面
|
||||
* <hr/>
|
||||
* 检查访问的用户是否包含正确的访问权限,若用户有正确的访问权限则允许访问,若没有指定的权限将会返回错误的权限信息。
|
||||
*
|
||||
* @since v1.2.0
|
||||
* @version v1.2.0
|
||||
* @author xiao_lfeng
|
||||
* @version v1.2.0
|
||||
* @since v1.2.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Aspect
|
||||
|
@ -32,6 +36,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
|
|||
public class CheckUserPermissionAspect {
|
||||
|
||||
private final RoleDAO roleDAO;
|
||||
private final Gson gson;
|
||||
|
||||
/**
|
||||
* 检查权限
|
||||
|
@ -41,7 +46,7 @@ public class CheckUserPermissionAspect {
|
|||
* @param pjp {@link ProceedingJoinPoint}
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@Around("@annotation(com.jsl.oa.annotations.NeedRoleGroup)")
|
||||
@Around("@annotation(com.jsl.oa.annotations.NeedPermission)")
|
||||
public Object checkPermission(ProceedingJoinPoint pjp) throws Throwable {
|
||||
// 从ServletRequest中获取用户信息
|
||||
ServletRequestAttributes servletRequestAttributes =
|
||||
|
@ -55,20 +60,23 @@ public class CheckUserPermissionAspect {
|
|||
}
|
||||
// 获取方法签名
|
||||
MethodSignature signature = (MethodSignature) pjp.getSignature();
|
||||
NeedRoleGroup checkAccountPermission = signature.getMethod().getAnnotation(NeedRoleGroup.class);
|
||||
NeedPermission checkAccountPermission = signature.getMethod().getAnnotation(NeedPermission.class);
|
||||
String getRoleAtAnnotation = checkAccountPermission.value();
|
||||
|
||||
// 获取用户所在权限组
|
||||
RoleDO getUserRole = roleDAO.getRoleNameByUid(getUserId);
|
||||
if (getUserRole != null) {
|
||||
if (getUserRole.getRoleName().equals(getRoleAtAnnotation)) {
|
||||
return pjp.proceed();
|
||||
} else {
|
||||
throw new PermissionDeniedException("用户组不匹配", getRoleAtAnnotation);
|
||||
List<String> permissions = gson.fromJson(getUserRole.getPermissions(), new TypeToken<List<String>>() {
|
||||
}.getType());
|
||||
if (permissions != null) {
|
||||
for (String it : permissions) {
|
||||
if (it.equals(getRoleAtAnnotation)) {
|
||||
return pjp.proceed();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new PermissionDeniedException("用户组不匹配", getRoleAtAnnotation);
|
||||
}
|
||||
throw new PermissionDeniedException("权限不匹配", getRoleAtAnnotation);
|
||||
} else {
|
||||
throw new RuntimeException("无法获取信息");
|
||||
}
|
||||
|
|
|
@ -73,7 +73,6 @@ public class StartupConfiguration {
|
|||
prepareData.checkDatabase("oa_message");
|
||||
prepareData.checkDatabase("oa_news_user");
|
||||
prepareData.checkDatabase("oa_project_daily");
|
||||
prepareData.checkDatabase("oa_role_permissions");
|
||||
prepareData.checkDatabase("oa_role_user");
|
||||
prepareData.checkDatabase("oa_user_tags");
|
||||
};
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
package com.jsl.oa.controllers;
|
||||
|
||||
import com.jsl.oa.model.vodata.PermissionEditVO;
|
||||
import com.jsl.oa.services.PermissionService;
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
|
@ -30,24 +28,6 @@ public class PermissionController {
|
|||
*/
|
||||
private final PermissionService permissionService;
|
||||
|
||||
/**
|
||||
* 添加新的权限。
|
||||
*
|
||||
* @param request HTTP请求对象。
|
||||
* @param rid 角色ID。
|
||||
* @param pid 权限ID。
|
||||
* @return {@link BaseResponse} 对象,包含操作结果。
|
||||
*/
|
||||
@PostMapping("/permission/add")
|
||||
public BaseResponse permissionAdd(HttpServletRequest request, @RequestParam Long rid, @RequestParam Long pid) {
|
||||
// 判断是否有参数错误
|
||||
if (rid == null || pid == null) {
|
||||
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
|
||||
} else {
|
||||
return permissionService.permissionAdd(request, rid, pid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的权限信息。
|
||||
*
|
||||
|
@ -75,42 +55,4 @@ public class PermissionController {
|
|||
public BaseResponse permissionGet(HttpServletRequest request) {
|
||||
return permissionService.permissionGet(request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑权限信息。
|
||||
*
|
||||
* @param permissionEditVo {@link PermissionEditVO} 对象,包含更新后的权限信息。
|
||||
* @param bindingResult Binding结果对象,包含任何验证错误。
|
||||
* @param request HTTP请求对象。
|
||||
* @return {@link BaseResponse} 对象,包含操作结果。
|
||||
*/
|
||||
@PutMapping("/permission/edit")
|
||||
public BaseResponse permissionEdit(
|
||||
@RequestBody @Validated PermissionEditVO permissionEditVo,
|
||||
BindingResult bindingResult,
|
||||
HttpServletRequest request
|
||||
) {
|
||||
// 判断是否有参数错误
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
|
||||
}
|
||||
return permissionService.permissionEdit(permissionEditVo, request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除权限。
|
||||
*
|
||||
* @param pid 权限ID。
|
||||
* @param request HTTP请求对象。
|
||||
* @return {@link BaseResponse} 对象,包含操作结果。
|
||||
*/
|
||||
@DeleteMapping("/permission/delete")
|
||||
public BaseResponse permissionDelete(@RequestParam Long pid, HttpServletRequest request) {
|
||||
// 判断是否有参数错误
|
||||
if (pid == null) {
|
||||
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
|
||||
} else {
|
||||
return permissionService.permissionDelete(request, pid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,9 @@ import com.google.gson.Gson;
|
|||
import com.google.gson.reflect.TypeToken;
|
||||
import com.jsl.oa.common.constant.BusinessConstants;
|
||||
import com.jsl.oa.mapper.PermissionMapper;
|
||||
import com.jsl.oa.mapper.RoleMapper;
|
||||
import com.jsl.oa.model.dodata.PermissionDO;
|
||||
import com.jsl.oa.model.dodata.RoleDO;
|
||||
import com.jsl.oa.utils.redis.RoleRedisUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -30,6 +32,7 @@ public class PermissionDAO {
|
|||
private final PermissionMapper permissionMapper;
|
||||
private final RoleRedisUtil<String> roleRedisUtil;
|
||||
private final Gson gson;
|
||||
private final RoleMapper roleMapper;
|
||||
|
||||
/**
|
||||
* <h2>获取用户权限信息</h2>
|
||||
|
@ -40,12 +43,13 @@ public class PermissionDAO {
|
|||
* @return {@link List<String>}
|
||||
*/
|
||||
public List<String> getPermission(@NotNull Long uid) {
|
||||
// 查询用户所在角色组
|
||||
RoleDO getRole = roleMapper.getRoleByUserId(uid);
|
||||
List<String> getPermissionForString;
|
||||
String permissionRedisString = roleRedisUtil.getData(BusinessConstants.NONE, uid.toString());
|
||||
if (permissionRedisString == null) {
|
||||
List<PermissionDO> permissionList = permissionMapper.permissionUserPid(uid);
|
||||
getPermissionForString = new ArrayList<>();
|
||||
forPermissionToBuildString(permissionList, getPermissionForString);
|
||||
String permissionList = permissionMapper.getPermissionByRole(getRole.getRoleName());
|
||||
getPermissionForString = gson.fromJson(permissionList, new TypeToken<List<String>>() { }.getType());
|
||||
// 存入 Redis
|
||||
roleRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440);
|
||||
} else {
|
||||
|
@ -55,127 +59,25 @@ public class PermissionDAO {
|
|||
}
|
||||
|
||||
public List<String> getAllPermissionBuildString() {
|
||||
List<String> getPermissionForString;
|
||||
List<String> getPermission;
|
||||
String getRedisData = roleRedisUtil.getData(BusinessConstants.ALL_PERMISSION, "string");
|
||||
if (getRedisData == null) {
|
||||
getPermission = new ArrayList<>();
|
||||
List<PermissionDO> permissionList = permissionMapper.getAllPermission();
|
||||
permissionList.removeIf(it -> it.getPid() != null);
|
||||
getPermissionForString = new ArrayList<>();
|
||||
forPermissionToBuildString(permissionList, getPermissionForString);
|
||||
permissionList.forEach(it -> getPermission.add(it.getName()));
|
||||
// 存入 Redis
|
||||
roleRedisUtil.setData(
|
||||
BusinessConstants.ALL_PERMISSION,
|
||||
"string",
|
||||
gson.toJson(getPermissionForString),
|
||||
gson.toJson(permissionList),
|
||||
1440);
|
||||
} else {
|
||||
getPermissionForString = gson.fromJson(getRedisData, new TypeToken<List<String>>() { }.getType());
|
||||
getPermission = gson.fromJson(getRedisData, new TypeToken<List<String>>() { }.getType());
|
||||
}
|
||||
return getPermissionForString;
|
||||
return getPermission;
|
||||
}
|
||||
|
||||
public List<PermissionDO> getRootPermission() {
|
||||
String getRedisData = roleRedisUtil.getData(BusinessConstants.ALL_PERMISSION, "all");
|
||||
if (getRedisData == null) {
|
||||
List<PermissionDO> permissionList = permissionMapper.getAllPermission();
|
||||
if (!permissionList.isEmpty()) {
|
||||
List<PermissionDO> getPermissionList = new ArrayList<>();
|
||||
for (PermissionDO permission : permissionList) {
|
||||
if (permission.getPid() == null) {
|
||||
getPermissionList.add(permission);
|
||||
}
|
||||
}
|
||||
roleRedisUtil.setData(BusinessConstants.ALL_PERMISSION, "all", gson.toJson(getPermissionList), 1440);
|
||||
return getPermissionList;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return gson.fromJson(getRedisData, new TypeToken<List<PermissionDO>>() {
|
||||
}.getType());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取全部权限信息</h2>
|
||||
* <hr/>
|
||||
* 获取全部权限信息
|
||||
*
|
||||
* @param permissionList 权限信息
|
||||
* @param getPermissionForString 存储权限信息
|
||||
*/
|
||||
private void forPermissionToBuildString(
|
||||
@NotNull List<PermissionDO> permissionList,
|
||||
List<String> getPermissionForString) {
|
||||
for (PermissionDO permission : permissionList) {
|
||||
// 寻找是否存在父亲
|
||||
StringBuilder permissionString = new StringBuilder();
|
||||
if (permission.getPid() != null) {
|
||||
// 存在父亲
|
||||
this.getFatherPermission(permissionString, permission.getPid());
|
||||
} else {
|
||||
// 不存在父亲
|
||||
permissionString.append(permission.getName());
|
||||
}
|
||||
// 寻找子类
|
||||
this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
|
||||
getPermissionForString.add(permissionString.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取子类权限信息</h2>
|
||||
* <hr/>
|
||||
* 通过父类 ID 获取子类权限信息<br/>
|
||||
* 递归调用
|
||||
*
|
||||
* @param permissionString 父类权限信息
|
||||
* @param id 父类 ID
|
||||
* @param getPermissionForString 存储权限信息
|
||||
*/
|
||||
private void getChildPermission(StringBuilder permissionString, Long id, List<String> getPermissionForString) {
|
||||
// 获取子类权限信息
|
||||
List<PermissionDO> permissionList = permissionMapper.getChildPermission(id);
|
||||
// 判断是否存在子类
|
||||
if (!permissionList.isEmpty()) {
|
||||
// 存在子类
|
||||
for (PermissionDO permission : permissionList) {
|
||||
StringBuilder childPermissionString = new StringBuilder(permissionString);
|
||||
// 遍历数据检查是否依旧存在子类
|
||||
List<PermissionDO> childPermissionList = permissionMapper.getChildPermission(permission.getId());
|
||||
if (!childPermissionList.isEmpty()) {
|
||||
// 存在子类
|
||||
permissionString.append(".").append(permission.getName());
|
||||
this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
|
||||
} else {
|
||||
// 不存在子类
|
||||
permissionString.append(".").append(permission.getName());
|
||||
getPermissionForString.add(permissionString.toString());
|
||||
}
|
||||
permissionString = childPermissionString;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取父类权限信息</h2>
|
||||
* <hr/>
|
||||
* 通过子类 ID 获取父类权限信息<br/>
|
||||
* 递归调用
|
||||
*
|
||||
* @param permissionString 父类权限信息
|
||||
* @param pid 父类 ID
|
||||
*/
|
||||
public void getFatherPermission(StringBuilder permissionString, Long pid) {
|
||||
// 获取权限信息
|
||||
PermissionDO permissionDO = permissionMapper.getPermissionById(pid);
|
||||
// 判断是否存在父亲
|
||||
if (permissionDO.getPid() != null) {
|
||||
// 存在父亲
|
||||
this.getFatherPermission(permissionString, permissionDO.getPid());
|
||||
} else {
|
||||
// 不存在父亲
|
||||
permissionString.append(permissionDO.getCode());
|
||||
}
|
||||
public List<PermissionDO> getAllPermission() {
|
||||
return permissionMapper.getAllPermission();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -134,4 +134,8 @@ public class RoleDAO {
|
|||
public RoleDO getRoleByRoleName(String roleName) {
|
||||
return roleMapper.getRoleByRoleName(roleName);
|
||||
}
|
||||
|
||||
public RoleDO getRoleByUserId(Long uid) {
|
||||
return roleMapper.getRoleByUserId(uid);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,7 +123,7 @@ public class UserDAO {
|
|||
userCurrentBackVO.setUsers(new ArrayList<>())
|
||||
.setCount(userMapper.getUsersCount());
|
||||
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers()
|
||||
.add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
|
||||
.add(Processing.returnUserInfo(it, roleDAO, gson)));
|
||||
return userCurrentBackVO;
|
||||
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ public class UserDAO {
|
|||
userCurrentBackVO.setUsers(new ArrayList<>())
|
||||
.setCount(userMapper.getUsersCount());
|
||||
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers()
|
||||
.add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
|
||||
.add(Processing.returnUserInfo(it, roleDAO, gson)));
|
||||
return userCurrentBackVO;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.jsl.oa.exception;
|
||||
|
||||
import com.jsl.oa.exception.library.PermissionDeniedException;
|
||||
import com.jsl.oa.utils.BaseResponse;
|
||||
import com.jsl.oa.utils.ErrorCode;
|
||||
import com.jsl.oa.utils.ResultUtil;
|
||||
|
@ -103,4 +104,10 @@ public class ProcessException {
|
|||
log.error(e.getMessage(), e);
|
||||
return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误");
|
||||
}
|
||||
|
||||
@ExceptionHandler(value = PermissionDeniedException.class)
|
||||
public BaseResponse businessPermissionDeniedException(PermissionDeniedException e) {
|
||||
log.warn("[EXCEPTION] 无权限操作,需要权限: {}", e.getNeedPermission());
|
||||
return ResultUtil.error("需要权限: " + e.getNeedPermission(), ErrorCode.PERMISSION_NOT_EXIST);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,10 +13,10 @@ import lombok.Getter;
|
|||
*/
|
||||
@Getter
|
||||
public class PermissionDeniedException extends RuntimeException {
|
||||
private final String needGroup;
|
||||
private final String needPermission;
|
||||
|
||||
public PermissionDeniedException(String message, String needGroup) {
|
||||
public PermissionDeniedException(String message, String needPermission) {
|
||||
super(message);
|
||||
this.needGroup = needGroup;
|
||||
this.needPermission = needPermission;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,44 +1,17 @@
|
|||
package com.jsl.oa.mapper;
|
||||
|
||||
import com.jsl.oa.model.dodata.PermissionDO;
|
||||
import com.jsl.oa.model.dodata.RolePermissionDO;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface PermissionMapper {
|
||||
|
||||
@Insert("INSERT INTO organize_oa.oa_role_permissions(rid, pid) VALUE (#{rid},#{pid})")
|
||||
void permissionAdd(Long rid, Long pid);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_permissions WHERE id IN "
|
||||
+ "(SELECT pid FROM organize_oa.oa_role_permissions WHERE rid IN "
|
||||
+ "(SELECT rid FROM organize_oa.oa_role_user WHERE uid = #{uid}))")
|
||||
List<PermissionDO> permissionUserPid(Long uid);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_permissions where id=#{id}")
|
||||
PermissionDO getPermissionById(Long id);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_role_permissions where pid=#{pid}")
|
||||
RolePermissionDO rolePermissionGetByPid(Long pid);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_permissions")
|
||||
List<PermissionDO> getAllPermission();
|
||||
|
||||
@Update("UPDATE organize_oa.oa_permissions SET pid = #{pid}, name = #{name}, code = #{code}, "
|
||||
+ "type = #{type} WHERE id = #{id}")
|
||||
boolean updatePermission(PermissionDO permissionDO);
|
||||
|
||||
@Delete("DELETE FROM organize_oa.oa_permissions where id=#{pid}")
|
||||
boolean deletePermission(Long pid);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_permissions WHERE id IN (#{permissionList})")
|
||||
List<PermissionDO> permissionGet(String permissionList);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_permissions WHERE id = #{pid}")
|
||||
PermissionDO getPermissionByPid(Long pid);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_permissions WHERE pid = #{id}")
|
||||
List<PermissionDO> getChildPermission(Long id);
|
||||
@Select("SELECT permissions FROM organize_oa.oa_role WHERE role_name = #{roleName}")
|
||||
String getPermissionByRole(String roleName);
|
||||
}
|
||||
|
|
|
@ -40,8 +40,6 @@ public interface RoleMapper {
|
|||
@Delete("DELETE FROM organize_oa.oa_role WHERE id=#{id}")
|
||||
boolean roleDelete(Long id);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_role WHERE id = (SELECT rid FROM organize_oa.oa_role_user WHERE uid=#{uid})")
|
||||
RoleDO getRoleByUserId(Long uid);
|
||||
}
|
||||
|
|
|
@ -19,10 +19,12 @@ import java.sql.Timestamp;
|
|||
@Accessors(chain = true)
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class PermissionDO {
|
||||
// 主键
|
||||
private Long id;
|
||||
private Long pid;
|
||||
// 权限名称
|
||||
private String name;
|
||||
private String code;
|
||||
private Short type;
|
||||
private Timestamp deletedAt;
|
||||
// 权限描述
|
||||
private String description;
|
||||
// 创建时间
|
||||
private Timestamp createdAt;
|
||||
}
|
||||
|
|
|
@ -12,14 +12,21 @@ import java.sql.Timestamp;
|
|||
*
|
||||
* @author 筱锋xiao_lfeng
|
||||
* @since v1.1.0
|
||||
* @version v1.1.0
|
||||
* @version v1.2.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class RoleDO {
|
||||
// 角色id
|
||||
private Long id;
|
||||
// 角色名称
|
||||
private String roleName;
|
||||
// 中文描述
|
||||
private String displayName;
|
||||
// 用户组权限
|
||||
private String permissions;
|
||||
// 创建时间
|
||||
private Timestamp createdAt;
|
||||
// 修改时间
|
||||
private Timestamp updatedAt;
|
||||
}
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
package com.jsl.oa.model.dodata;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
|
||||
/**
|
||||
* <h1>role 数据表</h1>
|
||||
* <hr/>
|
||||
* 映射 oa_role 数据表内容进入自定义实体类
|
||||
*
|
||||
* @author 筱锋xiao_lfeng
|
||||
* @since v1.1.0
|
||||
* @version v1.1.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class RolePermissionDO {
|
||||
private Long rid;
|
||||
private Long pid;
|
||||
private Timestamp createdAt;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PermissionContentVO {
|
||||
// 主键
|
||||
private Long id;
|
||||
// 权限名称
|
||||
private String name;
|
||||
// 权限描述
|
||||
private String description;
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PermissionContentVo {
|
||||
|
||||
private Long id;
|
||||
private String name;
|
||||
private String code;
|
||||
private Short type;
|
||||
private List<PermissionContentVo> children;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1,19 +1,12 @@
|
|||
package com.jsl.oa.services;
|
||||
|
||||
import com.jsl.oa.model.vodata.PermissionEditVO;
|
||||
import com.jsl.oa.utils.BaseResponse;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
public interface PermissionService {
|
||||
|
||||
BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid);
|
||||
|
||||
BaseResponse permissionUser(HttpServletRequest request, Long uid);
|
||||
|
||||
BaseResponse permissionGet(HttpServletRequest request);
|
||||
|
||||
BaseResponse permissionEdit(PermissionEditVO permissionEditVo, HttpServletRequest request);
|
||||
|
||||
BaseResponse permissionDelete(HttpServletRequest request, Long pid);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.jsl.oa.services.impl;
|
||||
|
||||
import com.jsl.oa.annotations.NeedRoleGroup;
|
||||
import com.jsl.oa.annotations.NeedPermission;
|
||||
import com.jsl.oa.dao.InfoDAO;
|
||||
import com.jsl.oa.dao.RoleDAO;
|
||||
import com.jsl.oa.dao.UserDAO;
|
||||
|
@ -41,7 +41,7 @@ public class InfoServiceImpl implements InfoService {
|
|||
private final RoleDAO roleDAO;
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("info.image.add")
|
||||
@NeedPermission("info.image.add")
|
||||
public BaseResponse addHeaderImage(HttpServletRequest request, @NotNull CarouselVO carouselVO) {
|
||||
// 获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
@ -74,7 +74,7 @@ public class InfoServiceImpl implements InfoService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("info.image.edit")
|
||||
@NeedPermission("info.image.edit")
|
||||
public BaseResponse editHeaderImage(HttpServletRequest request, @NotNull CarouselVO carouselVO) {
|
||||
// 获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
@ -124,7 +124,7 @@ public class InfoServiceImpl implements InfoService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("info.image.del")
|
||||
@NeedPermission("info.image.del")
|
||||
public BaseResponse delHeaderImage(HttpServletRequest request, Integer id) {
|
||||
// 用户权限校验
|
||||
if (!Processing.checkUserIsConsole(request, roleDAO)) {
|
||||
|
@ -146,7 +146,7 @@ public class InfoServiceImpl implements InfoService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("info.image.setting.edit")
|
||||
@NeedPermission("info.image.setting.edit")
|
||||
public BaseResponse editSettingHeaderImage(HttpServletRequest request, Boolean showType) {
|
||||
// 用户权限校验
|
||||
if (!Processing.checkUserIsConsole(request, roleDAO)) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.jsl.oa.services.impl;
|
||||
|
||||
|
||||
import com.jsl.oa.annotations.NeedRoleGroup;
|
||||
import com.jsl.oa.annotations.NeedPermission;
|
||||
import com.jsl.oa.dao.NewsDAO;
|
||||
import com.jsl.oa.model.dodata.NewsDO;
|
||||
import com.jsl.oa.model.vodata.NewsAddVO;
|
||||
|
@ -35,7 +35,7 @@ public class NewsServiceImpl implements NewsService {
|
|||
private final NewsDAO newsDAO;
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("news.add")
|
||||
@NeedPermission("news.add")
|
||||
public BaseResponse newsAdd(NewsAddVO newsAddVO, @NotNull HttpServletRequest request) {
|
||||
// 拷贝新闻数据到实体类
|
||||
NewsDO newsDO = new NewsDO();
|
||||
|
|
|
@ -1,24 +1,22 @@
|
|||
package com.jsl.oa.services.impl;
|
||||
|
||||
import com.jsl.oa.annotations.NeedRoleGroup;
|
||||
import com.jsl.oa.dao.PermissionDAO;
|
||||
import com.jsl.oa.dao.RoleDAO;
|
||||
import com.jsl.oa.dao.UserDAO;
|
||||
import com.jsl.oa.mapper.PermissionMapper;
|
||||
import com.jsl.oa.model.dodata.PermissionDO;
|
||||
import com.jsl.oa.model.dodata.RoleUserDO;
|
||||
import com.jsl.oa.model.vodata.PermissionContentVo;
|
||||
import com.jsl.oa.model.vodata.PermissionEditVO;
|
||||
import com.jsl.oa.model.vodata.PermissionContentVO;
|
||||
import com.jsl.oa.services.PermissionService;
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -26,29 +24,20 @@ import java.util.List;
|
|||
* <hr/>
|
||||
* 用于权限服务层的实现类,实现权限的增删改查,以及用户权限的获取
|
||||
*
|
||||
* @since v1.0.0
|
||||
* @version v1.1.0
|
||||
* @author xiao_lfeng | xiangZr-hhh | 176yunxuan
|
||||
* @version v1.1.0
|
||||
* @since v1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class PermissionServiceImpl implements PermissionService {
|
||||
|
||||
private final PermissionMapper permissionMapper;
|
||||
private final RoleDAO roleDAO;
|
||||
private final PermissionDAO permissionDAO;
|
||||
private final UserDAO userDAO;
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("permission.add")
|
||||
public BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid) {
|
||||
permissionMapper.permissionAdd(rid, pid);
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("permission.user")
|
||||
public BaseResponse permissionUser(HttpServletRequest request, Long uid) {
|
||||
if (userDAO.isExistUser(uid)) {
|
||||
// 此用户是否为管理员
|
||||
|
@ -68,40 +57,11 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("permission.get")
|
||||
public BaseResponse permissionGet(HttpServletRequest request) {
|
||||
//获取所有权限数据
|
||||
List<PermissionDO> permissionDOList = permissionMapper.getAllPermission();
|
||||
//将数据按父子类封装
|
||||
List<PermissionContentVo> permissionContentVos = Processing.convertToVoList(permissionDOList);
|
||||
|
||||
return ResultUtil.success(permissionContentVos);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("permission.edit")
|
||||
public BaseResponse permissionEdit(PermissionEditVO permissionEditVo, HttpServletRequest request) {
|
||||
//根据id获取对应permission数据
|
||||
PermissionDO permissionDO = permissionMapper.getPermissionById(permissionEditVo.getId());
|
||||
if (permissionDO == null) {
|
||||
return ResultUtil.error(ErrorCode.PERMISSION_NOT_EXIST);
|
||||
}
|
||||
//传递要编辑的数据
|
||||
Processing.copyProperties(permissionEditVo, permissionDO);
|
||||
//更新permission
|
||||
if (!permissionMapper.updatePermission(permissionDO)) {
|
||||
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
|
||||
}
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("permission.delete")
|
||||
public BaseResponse permissionDelete(HttpServletRequest request, Long pid) {
|
||||
//删除权限
|
||||
if (!permissionMapper.deletePermission(pid)) {
|
||||
return ResultUtil.error(ErrorCode.DATABASE_DELETE_ERROR);
|
||||
}
|
||||
return ResultUtil.success();
|
||||
List<PermissionDO> permissionDOList = permissionDAO.getAllPermission();
|
||||
List<PermissionContentVO> permissionContentVO = new ArrayList<>();
|
||||
BeanUtils.copyProperties(permissionDOList, permissionContentVO);
|
||||
return ResultUtil.success(permissionContentVO);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ package com.jsl.oa.services.impl;
|
|||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jsl.oa.annotations.NeedRoleGroup;
|
||||
import com.jsl.oa.annotations.NeedPermission;
|
||||
import com.jsl.oa.dao.ProjectDAO;
|
||||
import com.jsl.oa.dao.RoleDAO;
|
||||
import com.jsl.oa.dao.UserDAO;
|
||||
|
@ -232,7 +232,7 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("info.project.add")
|
||||
@NeedPermission("info.project.add")
|
||||
public BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO) {
|
||||
// 获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
@ -258,7 +258,7 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("info.project.del")
|
||||
@NeedPermission("info.project.del")
|
||||
public BaseResponse delHeader(Integer id, HttpServletRequest request) {
|
||||
// 获取展示信息
|
||||
ProjectShowDO projectShowDO = projectDAO.getHeader();
|
||||
|
@ -276,7 +276,7 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("info.project.edit")
|
||||
@NeedPermission("info.project.edit")
|
||||
public BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id) {
|
||||
// 获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.jsl.oa.services.impl;
|
||||
|
||||
import com.jsl.oa.annotations.NeedRoleGroup;
|
||||
import com.jsl.oa.annotations.NeedPermission;
|
||||
import com.jsl.oa.dao.RoleDAO;
|
||||
import com.jsl.oa.dao.UserDAO;
|
||||
import com.jsl.oa.exception.ClassCopyException;
|
||||
|
@ -42,7 +42,7 @@ public class RoleServiceImpl implements RoleService {
|
|||
private final UserDAO userDAO;
|
||||
|
||||
@Override
|
||||
@NeedRoleGroup("role.add")
|
||||
@NeedPermission("role.add")
|
||||
public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) {
|
||||
if (Processing.checkUserIsConsole(request, roleDAO)) {
|
||||
roleDAO.addRoleUser(uid, rid);
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package com.jsl.oa.services.impl;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.jsl.oa.annotations.NeedPermission;
|
||||
import com.jsl.oa.annotations.UserAbleToUse;
|
||||
import com.jsl.oa.dao.PermissionDAO;
|
||||
import com.jsl.oa.dao.RoleDAO;
|
||||
import com.jsl.oa.dao.UserDAO;
|
||||
import com.jsl.oa.model.dodata.RoleDO;
|
||||
import com.jsl.oa.model.dodata.RoleUserDO;
|
||||
import com.jsl.oa.model.dodata.UserDO;
|
||||
import com.jsl.oa.model.vodata.*;
|
||||
import com.jsl.oa.services.UserService;
|
||||
|
@ -21,8 +21,6 @@ import org.springframework.stereotype.Service;
|
|||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
|
@ -43,6 +41,7 @@ public class UserServiceImpl implements UserService {
|
|||
private final UserDAO userDAO;
|
||||
private final RoleDAO roleDAO;
|
||||
private final PermissionDAO permissionDAO;
|
||||
private final Gson gson;
|
||||
|
||||
@Override
|
||||
public UserDO getUserInfoByUsername(String username) {
|
||||
|
@ -125,46 +124,23 @@ public class UserServiceImpl implements UserService {
|
|||
return ResultUtil.success(userCurrentBackVO);
|
||||
}
|
||||
|
||||
@SuppressWarnings("checkstyle:NestedIfDepth")
|
||||
@Override
|
||||
@UserAbleToUse
|
||||
public BaseResponse userCurrent(HttpServletRequest request,
|
||||
String id,
|
||||
String username,
|
||||
String email,
|
||||
String phone) {
|
||||
@NeedPermission("user:current")
|
||||
public BaseResponse userCurrent(
|
||||
HttpServletRequest request,
|
||||
String id,
|
||||
String username,
|
||||
String email,
|
||||
String phone
|
||||
) {
|
||||
UserDO userDO;
|
||||
if (id == null && username == null && email == null && phone == null) {
|
||||
// Token获取信息
|
||||
UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
|
||||
if (userDO != null) {
|
||||
return ResultUtil.success(Processing.returnUserInfo(userDO, roleDAO, permissionDAO));
|
||||
} else {
|
||||
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
|
||||
}
|
||||
userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
|
||||
} else {
|
||||
// 检查是否是管理员用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
if (userId != null) {
|
||||
List<String> getPermission = permissionDAO.getPermission(userId);
|
||||
// 匹配权限
|
||||
if (!getPermission.contains("user.current")) {
|
||||
log.info("\t> 用户权限不足,检查是否是管理员");
|
||||
// 检查用户是管理员
|
||||
RoleUserDO roleUserDO = roleDAO
|
||||
.getRoleUserByUid(Objects.requireNonNull(Processing.getAuthHeaderToUserId(request)));
|
||||
if (roleUserDO == null) {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
}
|
||||
RoleDO roleDO = roleDAO.getRoleByRoleName("console");
|
||||
if (!roleUserDO.getRid().equals(roleDO.getId())) {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return ResultUtil.error(ErrorCode.TOKEN_NOT_EXIST);
|
||||
}
|
||||
// 根据顺序优先级进行用户信息获取
|
||||
UserDO userDO = null;
|
||||
userDO = null;
|
||||
if (id != null && !id.isEmpty()) {
|
||||
userDO = userDAO.getUserById(Long.valueOf(id));
|
||||
} else if (username != null && !username.isEmpty()) {
|
||||
|
@ -174,12 +150,12 @@ public class UserServiceImpl implements UserService {
|
|||
} else if (phone != null && !phone.isEmpty()) {
|
||||
userDO = userDAO.getUserByPhone(phone);
|
||||
}
|
||||
// 返回结果
|
||||
if (userDO != null) {
|
||||
return ResultUtil.success(Processing.returnUserInfo(userDO, roleDAO, permissionDAO));
|
||||
} else {
|
||||
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
|
||||
}
|
||||
}
|
||||
// 返回结果
|
||||
if (userDO != null) {
|
||||
return ResultUtil.success(Processing.returnUserInfo(userDO, roleDAO, gson));
|
||||
} else {
|
||||
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,24 +3,30 @@ package com.jsl.oa.utils;
|
|||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jsl.oa.dao.PermissionDAO;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.jsl.oa.dao.RoleDAO;
|
||||
import com.jsl.oa.dao.UserDAO;
|
||||
import com.jsl.oa.exception.ClassCopyException;
|
||||
import com.jsl.oa.model.dodata.*;
|
||||
import com.jsl.oa.model.vodata.PermissionContentVo;
|
||||
import com.jsl.oa.model.dodata.ProjectDO;
|
||||
import com.jsl.oa.model.dodata.RoleDO;
|
||||
import com.jsl.oa.model.dodata.RoleUserDO;
|
||||
import com.jsl.oa.model.dodata.UserDO;
|
||||
import com.jsl.oa.model.vodata.ProjectSimpleVO;
|
||||
import com.jsl.oa.model.vodata.UserCurrentBackVO;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.ObjectError;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.lang.reflect.Field;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* <h1>自定义快捷工具类</h1>
|
||||
|
@ -164,7 +170,7 @@ public class Processing {
|
|||
* <hr/>
|
||||
* 该方法用于检查用户是否是管理员,类型封装后字节返回结果
|
||||
*
|
||||
* @param request 请求
|
||||
* @param request 请求
|
||||
* @return 如果为 true 是管理员,false 不是管理员
|
||||
*/
|
||||
public static @NotNull Boolean checkUserIsConsole(HttpServletRequest request, @NotNull RoleDAO roleDAO) {
|
||||
|
@ -180,7 +186,7 @@ public class Processing {
|
|||
/**
|
||||
* 检查用户是否是老师
|
||||
*
|
||||
* @param request 请求
|
||||
* @param request 请求
|
||||
* @return 如果为 true 是老师,false 不是老师
|
||||
*/
|
||||
public static @NotNull Boolean checkUserIsPrincipal(HttpServletRequest request, @NotNull RoleDAO roleDAO) {
|
||||
|
@ -263,9 +269,12 @@ public class Processing {
|
|||
@Contract(pure = true)
|
||||
public static @NotNull String getSex(short sex) {
|
||||
switch (sex) {
|
||||
case 1: return "男";
|
||||
case 2: return "女";
|
||||
default: return "保密";
|
||||
case 1:
|
||||
return "男";
|
||||
case 2:
|
||||
return "女";
|
||||
default:
|
||||
return "保密";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -278,56 +287,23 @@ public class Processing {
|
|||
* @return {@link BaseResponse}
|
||||
*/
|
||||
public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo(
|
||||
@NotNull UserDO userDO, RoleDAO roleDAO, PermissionDAO permissionDAO) {
|
||||
@NotNull UserDO userDO, RoleDAO roleDAO, Gson gson) {
|
||||
UserCurrentBackVO.UserCurrent userCurrent = new UserCurrentBackVO.UserCurrent();
|
||||
// 获取用户角色
|
||||
RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId());
|
||||
if (getUserRole == null) {
|
||||
getUserRole = new RoleUserDO();
|
||||
getUserRole.setRid(0L).setCreatedAt(new Timestamp(System.currentTimeMillis()));
|
||||
} else {
|
||||
getUserRole.setUid(null);
|
||||
}
|
||||
// 获取用户权限
|
||||
RoleUserDO roleUserDO = roleDAO.getRoleUserByUid(userDO.getId());
|
||||
RoleDO getRole = roleDAO.getRoleByUserId(userDO.getId());
|
||||
List<String> getPermissionForString;
|
||||
if (roleUserDO != null) {
|
||||
// 获取全部根权限
|
||||
getPermissionForString = permissionDAO.getAllPermissionBuildString();
|
||||
} else {
|
||||
// 获取权限列表信息
|
||||
getPermissionForString = permissionDAO.getPermission(userDO.getId());
|
||||
}
|
||||
RoleDO getRole = roleDAO.getRoleById(getUserRole.getRid());
|
||||
String getRoleString;
|
||||
if (getRole != null) {
|
||||
getRoleString = getRole.getRoleName();
|
||||
// 获取全部根权限
|
||||
getPermissionForString = gson.fromJson(getRole.getPermissions(), new TypeToken<List<String>>() {
|
||||
}.getType());
|
||||
} else {
|
||||
getRoleString = "default";
|
||||
getPermissionForString = null;
|
||||
}
|
||||
UserCurrentBackVO.ReturnUser returnUser = new UserCurrentBackVO.ReturnUser();
|
||||
BeanUtils.copyProperties(userDO, returnUser);
|
||||
userCurrent
|
||||
.setUser(new UserCurrentBackVO.ReturnUser()
|
||||
.setId(userDO.getId())
|
||||
.setJobId(userDO.getJobId())
|
||||
.setUsername(userDO.getUsername())
|
||||
.setAddress(userDO.getAddress())
|
||||
.setPhone(userDO.getPhone())
|
||||
.setEmail(userDO.getEmail())
|
||||
.setAge(userDO.getAge())
|
||||
.setSignature(userDO.getSignature())
|
||||
.setAvatar(userDO.getAvatar())
|
||||
.setNickname(userDO.getNickname())
|
||||
.setSex(userDO.getSex())
|
||||
.setEnabled(userDO.getEnabled())
|
||||
.setAccountNoExpired(userDO.getAccountNoExpired())
|
||||
.setCredentialsNoExpired(userDO.getCredentialsNoExpired())
|
||||
.setRecommend(userDO.getRecommend())
|
||||
.setAccountNoLocked(userDO.getAccountNoLocked())
|
||||
.setDescription(userDO.getDescription())
|
||||
.setCreatedAt(userDO.getCreatedAt())
|
||||
.setUpdatedAt(userDO.getUpdatedAt())
|
||||
.setIsDelete(userDO.getIsDelete()))
|
||||
.setRole(getRoleString)
|
||||
.setUser(returnUser)
|
||||
.setRole(getRole != null ? getRole.getRoleName() : "default")
|
||||
.setPermission(getPermissionForString);
|
||||
return userCurrent;
|
||||
}
|
||||
|
@ -384,56 +360,6 @@ public class Processing {
|
|||
//return ProjectSimpleVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 将Permission归纳为父子关系的json形式
|
||||
* @Date: 2024/1/20
|
||||
* @Param permissions: 权限实体类
|
||||
**/
|
||||
public static List<PermissionContentVo> convertToVoList(List<PermissionDO> permissions) {
|
||||
List<PermissionContentVo> vos = new ArrayList<>();
|
||||
Map<Long, List<PermissionDO>> childrenMap = new HashMap<>();
|
||||
|
||||
for (PermissionDO permission : permissions) {
|
||||
if (permission.getPid() != null) {
|
||||
List<PermissionDO> children = childrenMap.getOrDefault(permission.getPid(), new ArrayList<>());
|
||||
children.add(permission);
|
||||
childrenMap.put(permission.getPid(), children);
|
||||
}
|
||||
}
|
||||
|
||||
for (PermissionDO permission : permissions) {
|
||||
if (permission.getPid() == null) {
|
||||
PermissionContentVo vo = convertToVo(permission, childrenMap);
|
||||
vos.add(vo);
|
||||
}
|
||||
}
|
||||
|
||||
return vos;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 封装PermissionContentVo的子类,被convertToVoList方法调用
|
||||
* @Date: 2024/1/20
|
||||
* @Param permission: 权限实体类
|
||||
* @Param childrenMap: 要封装的子类
|
||||
**/
|
||||
public static PermissionContentVo convertToVo(PermissionDO permission, Map<Long, List<PermissionDO>> childrenMap) {
|
||||
PermissionContentVo vo = new PermissionContentVo();
|
||||
copyProperties(permission, vo);
|
||||
|
||||
List<PermissionDO> children = childrenMap.get(permission.getId());
|
||||
if (children != null) {
|
||||
List<PermissionContentVo> childVos = new ArrayList<>();
|
||||
for (PermissionDO child : children) {
|
||||
PermissionContentVo childVo = convertToVo(child, childrenMap);
|
||||
childVos.add(childVo);
|
||||
}
|
||||
vo.setChildren(childVos);
|
||||
}
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 转换审核的类别属性为字符串
|
||||
|
@ -443,11 +369,11 @@ public class Processing {
|
|||
public static String turnReviewCategory(short category) {
|
||||
switch (category) {
|
||||
case 0:
|
||||
return "子系统";
|
||||
return "子系统";
|
||||
case 1:
|
||||
return "模块";
|
||||
return "模块";
|
||||
default:
|
||||
return "其他";
|
||||
return "其他";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -465,7 +391,4 @@ public class Processing {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
create table oa_permissions
|
||||
(
|
||||
id bigint unsigned auto_increment comment '主键'
|
||||
id bigint unsigned auto_increment comment '主键'
|
||||
primary key,
|
||||
pid bigint unsigned null comment '权限父id',
|
||||
name varchar(100) not null comment '权限名称',
|
||||
code varchar(50) not null comment '权限编码',
|
||||
type tinyint(1) default 1 not null comment '0为菜单,1为权限',
|
||||
deleted_at timestamp null comment '删除时间(没有删除应当为空)',
|
||||
constraint oa_permissions_oa_permissions_id_fk
|
||||
foreign key (pid) references oa_permissions (id)
|
||||
on update cascade on delete cascade
|
||||
name varchar(100) not null comment '权限名称',
|
||||
description varchar(100) not null comment '权限描述',
|
||||
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||
constraint oa_permissions_name_uindex
|
||||
unique (name)
|
||||
)
|
||||
comment '权限表';
|
|
@ -4,6 +4,7 @@ create table oa_role
|
|||
primary key,
|
||||
role_name varchar(20) not null comment '角色名称',
|
||||
display_name varchar(10) null comment '中文描述',
|
||||
permissions json null comment '用户组权限',
|
||||
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||
updated_at timestamp null comment '修改时间'
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user