From b200b681bc401bb11c133a79273ba78cb6ebedf8 Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期五, 30 七月 2021 18:16:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/RoleServiceImpl.java | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 212 insertions(+), 0 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/RoleServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/RoleServiceImpl.java
index 95e6933..7cf7b01 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/RoleServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/RoleServiceImpl.java
@@ -1,19 +1,33 @@
package com.panzhihua.service_user.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.panzhihua.common.constants.SecurityConstants;
import com.panzhihua.common.model.vos.MenuVO;
import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.user.MenuRoleVO;
import com.panzhihua.common.model.vos.user.RoleVO;
+import com.panzhihua.common.model.vos.user.SysMenuVO;
import com.panzhihua.service_user.dao.RoleDAO;
+import com.panzhihua.service_user.dao.SysMenuDAO;
+import com.panzhihua.service_user.dao.SysRoleMenuDAO;
+import com.panzhihua.service_user.dao.SysUserRoleDAO;
+import com.panzhihua.service_user.model.dos.SysMenuDO;
import com.panzhihua.service_user.model.dos.SysRoleDO;
+import com.panzhihua.service_user.model.dos.SysRoleMenuDO;
+import com.panzhihua.service_user.model.dos.SysUserRoleDO;
import com.panzhihua.service_user.service.RoleService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
+import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* @program: springcloud_k8s_panzhihuazhihuishequ
@@ -21,10 +35,19 @@
* @author: huang.hongfa weixin hhf9596 qq 959656820
* @create: 2020-11-25 15:59
**/
+@Slf4j
@Service
public class RoleServiceImpl implements RoleService {
@Resource
private RoleDAO roleDAO;
+ @Resource
+ private SysUserRoleDAO sysUserRoleDAO;
+ @Resource
+ private SysMenuDAO sysMenuDAO;
+ @Resource
+ private SysRoleMenuDAO sysRoleMenuDAO;
+ @Resource
+ private StringRedisTemplate stringRedisTemplate;
/**
* 获取平台所有的菜单按钮权限
*
@@ -67,4 +90,193 @@
}
return R.ok(roleVOS);
}
+
+ /**
+ * 角色下拉列表
+ *
+ * @param communityId 对应社区 0 表示运营后台
+ * @return 角色集合
+ */
+ @Override
+ public R listRoleBackstage(Long communityId) {
+ List<SysRoleDO> sysRoleDOS = roleDAO.selectList(new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getCommunityId, communityId));
+ if (ObjectUtils.isEmpty(sysRoleDOS)) {
+ return R.fail("角色列表为空");
+ }
+ List<RoleVO>roleVOS=new ArrayList<>();
+ sysRoleDOS.forEach(sysRoleDO -> {
+ RoleVO roleVO=new RoleVO();
+ BeanUtils.copyProperties(sysRoleDO,roleVO);
+ roleVOS.add(roleVO);
+ });
+ return R.ok(roleVOS);
+ }
+
+ /**
+ * 新增角色
+ *
+ * @param roleVO 角色信息
+ * @return 新增结果
+ */
+ @Override
+ public R addRoleBackstage(RoleVO roleVO) {
+ SysRoleDO sysRoleDO=new SysRoleDO();
+ BeanUtils.copyProperties(roleVO,sysRoleDO);
+ int insert = 0;
+ try {
+ insert = roleDAO.insert(sysRoleDO);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("新增角色失败,失败原因【{}】",e.getMessage());
+ if (e.getMessage().contains("unique_role_name_community_id")) {
+ return R.fail("角色已经存在");
+ }
+ }
+ if (insert>0) {
+ SysRoleDO roleDO = roleDAO.selectOne(new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, roleVO.getRoleKey()).eq(SysRoleDO::getCommunityId, roleVO.getCommunityId()));
+ return R.ok(roleDO.getRoleId());
+ }
+ return R.fail();
+ }
+
+ /**
+ * 删除角色
+ *
+ * @param roleVO 角色主键
+ * @return 删除结果
+ */
+ @Override
+ public R deleteRoleBackstage(RoleVO roleVO) {
+ Integer integer = sysUserRoleDAO.selectCount(new QueryWrapper<SysUserRoleDO>().lambda().eq(SysUserRoleDO::getRoleId, roleVO.getRoleId()));
+ if (integer>0) {
+ return R.fail("该角色的关联用户数量不为0,不能删除");
+ }
+ int delete = roleDAO.deleteById(roleVO.getRoleId());
+ if (delete==0) {
+ return R.fail("角色不存在");
+ }
+ return R.ok();
+ }
+
+ /**
+ * 平台菜单列表
+ * @param communityId 社区id 0 运营平台
+ * @return 菜单集合
+ */
+ @Override
+ public R listMenuBackstage(Long communityId) {
+ List<SysMenuVO> sysMenuVOS=new ArrayList<>();
+ List<SysMenuDO> sysMenuDOS = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getParentId, 0).eq(SysMenuDO::getCommunityId,communityId).orderByAsc(SysMenuDO::getOrderNum));
+ if (!ObjectUtils.isEmpty(sysMenuDOS)) {
+ sysMenuDOS.forEach(sysMenuDO -> {
+ SysMenuVO sysMenuVO=new SysMenuVO();
+ BeanUtils.copyProperties(sysMenuDO,sysMenuVO);
+ Long menuId = sysMenuDO.getMenuId();
+ List<SysMenuDO> sysMenuDOS1 = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getParentId, menuId).orderByAsc(SysMenuDO::getOrderNum));
+ List<SysMenuVO> sysMenuVOS1=new ArrayList<>();
+ if (!ObjectUtils.isEmpty(sysMenuDOS1)) {
+ sysMenuDOS1.forEach(sysMenuDO1 -> {
+ SysMenuVO sysMenuVO1=new SysMenuVO();
+ BeanUtils.copyProperties(sysMenuDO1,sysMenuVO1);
+ sysMenuVOS1.add(sysMenuVO1);
+ });
+ sysMenuVO.setSysMenuVOList(sysMenuVOS1);
+ }
+ sysMenuVOS.add(sysMenuVO);
+ });
+ }
+ return R.ok(sysMenuVOS);
+ }
+
+ /**
+ * 设置角色的权限
+ *
+ * @param menuRoleVO 用户设置的权限id
+ * @return 设置结果
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R putMenuRole(MenuRoleVO menuRoleVO) {
+ List<Long>menuIds=new ArrayList<>();
+ Long roleId = menuRoleVO.getRoleId();
+// 删除旧的
+ sysRoleMenuDAO.delete(new QueryWrapper<SysRoleMenuDO>().lambda().eq(SysRoleMenuDO::getRoleId, roleId));
+// 创建新的
+ Integer isAll = menuRoleVO.getIsAll();
+ if (isAll.intValue()==1) {
+ menuIds = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId,menuRoleVO.getCommunityId())).stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList());
+ }else{
+ menuIds=menuRoleVO.getMenuIds();
+ }
+ for(int i=0;i<menuIds.size();i++){
+ SysRoleMenuDO sysRoleMenuDO=new SysRoleMenuDO();
+ sysRoleMenuDO.setMenuId(menuIds.get(i));
+ sysRoleMenuDO.setRoleId(roleId);
+ sysRoleMenuDAO.insert(sysRoleMenuDO);
+ }
+// 清除缓存
+ stringRedisTemplate.delete(SecurityConstants.ROLE_ALL);
+ return R.ok();
+ }
+
+ /**
+ * 用户菜单获取
+ *
+ * @param userId 登录用户id
+ * @return 用户菜单
+ */
+ @Override
+ public R listmenu(Long userId) {
+ SysUserRoleDO sysUserRoleDO = sysUserRoleDAO.selectOne(new QueryWrapper<SysUserRoleDO>().lambda().eq(SysUserRoleDO::getUserId, userId));
+ if (ObjectUtils.isEmpty(sysUserRoleDO)) {
+ return R.fail("用户未绑定角色");
+ }
+ Long roleId = sysUserRoleDO.getRoleId();
+ List<SysRoleMenuDO> sysRoleMenuDOS = sysRoleMenuDAO.selectList(new QueryWrapper<SysRoleMenuDO>().lambda().eq(SysRoleMenuDO::getRoleId, roleId));
+ if (ObjectUtils.isEmpty(sysRoleMenuDOS)) {
+ return R.fail("用户没有任何权限");
+ }
+ List<Long> collect = sysRoleMenuDOS.stream().map(sysRoleMenuDO -> sysRoleMenuDO.getMenuId()).collect(Collectors.toList());
+ List<SysMenuDO> sysMenuDOS = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().in(SysMenuDO::getMenuId, collect));
+ List<SysMenuVO> sysMenuVOS=new ArrayList<>();
+ sysMenuDOS.forEach(sysMenuDO -> {
+ SysMenuVO sysMenuVO=new SysMenuVO();
+ BeanUtils.copyProperties(sysMenuDO,sysMenuVO);
+ sysMenuVOS.add(sysMenuVO);
+ });
+ List<SysMenuVO> collect1 = sysMenuVOS.stream().filter(sysMenuVO -> sysMenuVO.getParentId() == 0).collect(Collectors.toList());
+ if (!ObjectUtils.isEmpty(collect1)) {
+ collect1.forEach(sysMenuVO -> {
+ Long menuId = sysMenuVO.getMenuId();
+ List<SysMenuVO> sysMenuVOS1=sysMenuVOS.stream().filter(sysMenuVO1 -> sysMenuVO1.getParentId().intValue()==menuId.intValue()).collect(Collectors.toList());
+ sysMenuVO.setSysMenuVOList(sysMenuVOS1);
+ });
+ }
+
+ return R.ok(collect1);
+ }
+
+ /**
+ * 获取角色的权限配置列表
+ *
+ * @param roleId 角色id
+ * @return 菜单列表
+ */
+ @Override
+ public R listMenuBackstageByRole(Long roleId) {
+ List<SysMenuVO> sysMenuVOS=new ArrayList<>();
+ List<SysRoleMenuDO> sysRoleMenuDOS = sysRoleMenuDAO.selectList(new QueryWrapper<SysRoleMenuDO>().lambda().eq(SysRoleMenuDO::getRoleId, roleId));
+ if (!ObjectUtils.isEmpty(sysRoleMenuDOS)) {
+ List<Long> longs = sysRoleMenuDOS.stream().map(sysRoleMenuDO -> sysRoleMenuDO.getMenuId()).collect(Collectors.toList());
+ List<SysMenuDO> sysMenuDOS = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().in(SysMenuDO::getMenuId,longs));
+ if (!ObjectUtils.isEmpty(sysMenuDOS)) {
+ sysMenuDOS.forEach(sysMenuDO -> {
+ SysMenuVO sysMenuVO1=new SysMenuVO();
+ BeanUtils.copyProperties(sysMenuDO,sysMenuVO1);
+ sysMenuVOS.add(sysMenuVO1);
+ });
+ }
+ }
+ return R.ok(sysMenuVOS);
+ }
}
--
Gitblit v1.7.1