package com.lxb.aclservice.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.lxb.aclservice.entity.Permission;
import com.lxb.aclservice.entity.RolePermission;
import com.lxb.aclservice.entity.User;
import com.lxb.aclservice.helper.MemuHelper;
import com.lxb.aclservice.helper.PermissionHelper;
import com.lxb.aclservice.mapper.PermissionMapper;
import com.lxb.aclservice.service.PermissionService;
import com.lxb.aclservice.service.RolePermissionService;
import com.lxb.aclservice.service.UserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 权限 服务实现类
* </p>
*
* @author testjava
* @since 2020-01-12
*/
@Service
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
@Autowired
private RolePermissionService rolePermissionService;
@Autowired
private UserService userService;
//获取全部菜单
@Override
public List<Permission> queryAllMenu() {
QueryWrapper<Permission> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("id");
List<Permission> permissionList = baseMapper.selectList(wrapper);
List<Permission> result = bulid(permissionList);
return result;
}
//根据角色获取菜单
@Override
public List<Permission> selectAllMenu(String roleId) {
List<Permission> allPermissionList = baseMapper.selectList(new QueryWrapper<Permission>().orderByAsc("CAST(id AS SIGNED)"));
//根据角色id获取角色权限
List<RolePermission> rolePermissionList = rolePermissionService.list(new QueryWrapper<RolePermission>().eq("role_id",roleId));
//转换给角色id与角色权限对应Map对象
// List<String> permissionIdList = rolePermissionList.stream().map(e -> e.getPermissionId()).collect(Collectors.toList());
// allPermissionList.forEach(permission -> {
// if(permissionIdList.contains(permission.getId())) {
// permission.setSelect(true);
// } else {
// permission.setSelect(false);
// }
// });
for (int i = 0; i < allPermissionList.size(); i++) {
Permission permission = allPermissionList.get(i);
for (int m = 0; m < rolePermissionList.size(); m++) {
RolePermission rolePermission = rolePermissionList.get(m);
if(rolePermission.getPermissionId().equals(permission.getId())) {
permission.setSelect(true);
}
}
}
List<Permission> permissionList = bulid(allPermissionList);
return permissionList;
}
//给角色分配权限
@Override
public void saveRolePermissionRealtionShip(String roleId, String[] permissionIds) {
rolePermissionService.remove(new QueryWrapper<RolePermission>().eq("role_id", roleId));
List<RolePermission> rolePermissionList = new ArrayList<>();
for(String permissionId : permissionIds) {
if(StringUtils.isEmpty(permissionId)) continue;
RolePermission rolePermission = new RolePermission();
rolePermission.setRoleId(roleId);
rolePermission.setPermissionId(permissionId);
rolePermissionList.add(rolePermission);
}
rolePermissionService.saveBatch(rolePermissionList);
}
//递归删除菜单
@Override
public void removeChildById(String id) {
List<String> idList = new ArrayList<>();
this.selectChildListById(id, idList);
idList.add(id);
baseMapper.deleteBatchIds(idList);
}
//根据用户id获取用户菜单
@Override
public List<String> selectPermissionValueByUserId(String id) {
List<String> selectPermissionValueList = null;
if(this.isSysAdmin(id)) {
//如果是系统管理员,获取所有权限
selectPermissionValueList = baseMapper.selectAllPermissionValue();
} else {
selectPermissionValueList = baseMapper.selectPermissionValueByUserId(id);
}
return selectPermissionValueList;
}
@Override
public List<JSONObject> selectPermissionByUserId(String userId) {
List<Permission> selectPermissionList = null;
if(this.isSysAdmin(userId)) {
//如果是超级管理员,获取所有菜单
selectPermissionList = baseMapper.selectList(null);
} else {
selectPermissionList = baseMapper.selectPermissionByUserId(userId);
}
List<Permission> permissionList = PermissionHelper.bulid(selectPermissionList);
List<JSONObject> result = MemuHelper.bulid(permissionList);
return result;
}
/**
* 判断用户是否系统管理员
* @param userId
* @return
*/
private boolean isSysAdmin(String userId) {
User user = userService.getById(userId);
if(null != user && "admin".equals(user.getUsername())) {
return true;
}
return false;
}
/**
* 递归获取子节点
* @param id
* @param idList
*/
private void selectChildListById(String id, List<String> idList) {
List<Permission> childList = baseMapper.selectList(new QueryWrapper<Permission>().eq("pid", id).select("id"));
childList.stream().forEach(item -> {
idList.add(item.getId());
this.selectChildListById(item.getId(), idList);
});
}
/**
* 使用递归方法建菜单
* @param treeNodes
* @return
*/
private static List<Permission> bulid(List<Permission> treeNodes) {
List<Permission> trees = new ArrayList<>();
for (Permission treeNode : treeNodes) {
if ("0".equals(treeNode.getPid())) {
treeNode.setLevel(1);
trees.add(findChildren(treeNode,treeNodes));
}
}
return trees;
}
/**
* 递归查找子节点
* @param treeNodes
* @return
*/
private static Permission findChildren(Permission treeNode,List<Permission> treeNodes) {
treeNode.setChildren(new ArrayList<Permission>());
for (Permission it : treeNodes) {
if(treeNode.getId().equals(it.getPid())) {
int level = treeNode.getLevel() + 1;
it.setLevel(level);
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<>());
}
treeNode.getChildren().add(findChildren(it,treeNodes));
}
}
return treeNode;
}
//========================递归查询所有菜单================================================
//获取全部菜单
@Override
public List<Permission> queryAllMenuGuli() {
//1 查询菜单表所有数据
QueryWrapper<Permission> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("id");
List<Permission> permissionList = baseMapper.selectList(wrapper);
//2 把查询所有菜单list集合按照要求进行封装
List<Permission> resultList = bulidPermission(permissionList);
return resultList;
}
//把返回所有菜单list集合进行封装的方法
public static List<Permission> bulidPermission(List<Permission> permissionList) {
//创建list集合,用于数据最终封装
List<Permission> finalNode = new ArrayList<>();
//把所有菜单list集合遍历,得到顶层菜单 pid=0菜单,设置level是1
for(Permission permissionNode : permissionList) {
//得到顶层菜单 pid=0菜单
if
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本项目是基于Java的大学生校园在线教育服务平台微服务设计源码,包含244个文件,其中主要包含193个Java源代码文件,35个xml配置文件,5个properties配置文件,5个yaml配置文件等。系统采用了微服务架构,为大学生提供了一个便捷的在线教育服务平台,支持多种文件格式。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的大学生校园在线教育服务平台微服务设计源码 (244个子文件)
mvnw.cmd 6KB
.gitignore 338B
maven-wrapper.jar 50KB
PermissionServiceImpl.java 12KB
HttpClientUtils.java 11KB
EduCourseServiceImpl.java 8KB
WxApiController.java 8KB
EduMsmServiceImpl.java 8KB
EduCourseController.java 7KB
PayLogServiceImpl.java 7KB
EduTeacherController.java 6KB
UcenterMemberServiceImpl.java 5KB
MavenWrapperDownloader.java 5KB
HttpClient.java 4KB
TestVod.java 4KB
StatisticsDailyServiceImpl.java 4KB
EduCommentController.java 4KB
VodServiceImpl.java 4KB
CourseFrontController.java 4KB
VodController.java 4KB
EduChapterServiceImpl.java 3KB
TokenLoginFilter.java 3KB
RedisConfig.java 3KB
TokenWebSecurityConfig.java 3KB
SubjectEasyExcelListener.java 3KB
UserController.java 3KB
TokenAuthenticationFilter.java 3KB
UcenterMemberController.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
EduSubjectServiceImpl.java 3KB
RoleServiceImpl.java 3KB
EduChapterController.java 3KB
MsmController.java 3KB
MemuHelper.java 3KB
BannerAdminController.java 3KB
AuthGlobalFilter.java 3KB
ErrorHandlerConfig.java 3KB
EduVideoController.java 3KB
PermissionController.java 3KB
EduCommentServiceImpl.java 3KB
JwtUtils.java 3KB
IndexServiceImpl.java 3KB
OssServiceImpl.java 3KB
RoleController.java 2KB
CrmBannerServiceImpl.java 2KB
CorsConfig.java 2KB
Send_Mail.java 2KB
OrderServiceImpl.java 2KB
EduCourse.java 2KB
OrderController.java 2KB
EduVideo.java 2KB
Permission.java 2KB
Order.java 2KB
UcenterMember.java 2KB
EduComment.java 2KB
EduVideoServiceImpl.java 2KB
JsonExceptionHandler.java 2KB
IndexFrontController.java 2KB
UserDetailsServiceImpl.java 2KB
EduTeacherServiceImpl.java 2KB
PayLogController.java 2KB
TeacherFrontController.java 2KB
SecurityUser.java 2KB
CrmBanner.java 2KB
PayLog.java 2KB
EduTeacher.java 2KB
StatisticsDaily.java 2KB
EduCommentVo.java 2KB
R.java 2KB
CourseWebVo.java 2KB
EduCourseVo.java 2KB
User.java 1KB
EduSubjectController.java 1KB
SwaggerConfig.java 1KB
UcenterMemberVO.java 1KB
PermissionHelper.java 1KB
StatisticsDailyController.java 1KB
EduChapter.java 1KB
EduSubject.java 1KB
IndexController.java 1KB
RandomUtil.java 1KB
EduCourseService.java 1KB
GlobalExceptionHandel.java 1KB
EasyExcelTest.java 1KB
Role.java 1KB
TokenLogoutHandler.java 1KB
EduCourseDescription.java 1KB
UserRole.java 1KB
CourseInfoFormDto.java 1KB
DateUtil.java 1KB
RolePermission.java 1KB
ConstantPropertiesUtil.java 1KB
BannerFrontController.java 1KB
MD5.java 1KB
OssController.java 1KB
EduCourseDescriptionServiceImpl.java 1KB
共 244 条
- 1
- 2
- 3
资源评论
沐知全栈开发
- 粉丝: 4949
- 资源: 4984
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功