dao/src/main/java/com/sandu/ximon/dao/mapper/MenuMapper.java
@@ -19,6 +19,8 @@ List<Long> listMenuIfBinding1(Long id); List<Menu> listMenuById(List<Long> menuIdList); List<Menu> getUserPermissionListById(List<Long> menuIds); } dao/src/main/resources/mapper/MenuMapper.xml
@@ -62,4 +62,19 @@ ORDER BY t1.seq ASC </select> <select id="getUserPermissionListById" resultType="com.sandu.ximon.dao.domain.Menu"> SELECT * FROM menu t1 <where> <if test="menuIds != null"> t1.id IN <foreach collection="menuIds" open="(" close=")" item="id" separator=","> #{id} </foreach> </if> </where> </select> </mapper> ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AdminController.java
@@ -168,10 +168,6 @@ @GetMapping(value = "/logout") public ResponseVO<Object> LogOut() { // redisService.set(UserModel.USER_INFO.key(SecurityUtils.getUserId().toString() + SecurityUtils.getUserDetails().getAdministratorType()), null); // redisService.set(UserModel.USER_TOKEN.key(UserModel.USER_TOKEN.key(SecurityUtils.getUserDetails().getToken())), null); String key = String.format("%d_%d", SecurityUtils.getUserDetails().getUserId(), SecurityUtils.getUserDetails().getAdministratorType()); redisService.set(key, null); return ResponseUtil.success("退出登录成功"); @@ -194,31 +190,6 @@ return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.successPage(adminService.listAdmin(baseConditionVO, keyword)); // PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); // LambdaQueryWrapper<Admin> wrapper = Wrappers.lambdaQuery(Admin.class); // if (keyword != null) { // wrapper.like(Admin::getNickName, keyword) // .or(adminLambdaQueryWrapper -> { // adminLambdaQueryWrapper.like(Admin::getUsername, keyword); // }); // } // List<Admin> list = adminService.list(wrapper); // // List<AdminDto> adminDtoList = new ArrayList<>(); // for (Admin demo : list) { // AdminDto adminDto = new AdminDto(); // BeanUtil.copyProperties(demo, adminDto); // AdminRoleRelation one = adminRoleRelationService.getOne(Wrappers.lambdaQuery(AdminRoleRelation.class) // .eq(AdminRoleRelation::getAdminId, demo.getId())); // // if (one != null) { // adminDto.setRoleId(one.getRoleId()); // } // adminDtoList.add(adminDto); // // } // return ResponseUtil.successPage(adminDtoList); } @Log("后台用户注册") @@ -235,7 +206,6 @@ } } // @PreAuthorize("@el.check('admin:edit')") /** * 修改管理员信息 @@ -293,16 +263,6 @@ } } // @PutMapping("/updateStatus/{id}") // public ResponseVO<Object> updateStatus(@PathVariable Long id, @RequestParam(value = "status") Integer status) { // checkLevel(id); // Admin update = new Admin(); // update.setId(id); // update.setStatus(status); // adminService.updateById(update); // return ResponseUtil.success(null); // } @Log("后台用户删除") @PostMapping("/del/{adminId}") public ResponseVO<Object> deleteAdmin(@PathVariable Long adminId) { @@ -339,37 +299,21 @@ } } // /** // * 给管理员分配角色 // * // * @return // */ // @PostMapping("/updateAdminRole") // @PreAuthorize("@el.check('admin:edit')") // public ResponseVO<Object> updateAdminRole(@RequestParam("adminId") Long adminId, // @RequestParam("roleIds") List<Long> roleIds) { // checkLevel(adminId); // adminsRolesService.updateAdminRole(adminId, roleIds); // return ResponseUtil.success(""); // } /** * 获取用户权限 * * @return */ @GetMapping("/getUserPermissionList") public ResponseVO<Object> getUserPermissionList() { List<MenuNode> userPermissionList; if (SecurityUtils.getClientId() == null) { userPermissionList = adminService.getUserPermissionList(); } else { userPermissionList = clientService.getUserPermissionList(); } // /** // * 编辑我的信息 // * // * @param resources // * @return // */ // @PutMapping("/editUserInfo") // public ResponseVO<Object> editUserInfo(@RequestBody AdminParam resources) { // Long userId = SecurityUtils.getUserId(); // Admin admin = new Admin(); // admin.setId(userId); // admin.setMobile(resources.getMobile()); // admin.setEmail(resources.getEmail()); // admin.setNickName(resources.getNickName()); // adminService.updateById(admin); // return ResponseUtil.success(null); // } return ResponseUtil.success(userPermissionList); } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java
@@ -8,21 +8,23 @@ import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.param.AdminParam; import com.sandu.ximon.admin.param.PwdParam; import com.sandu.ximon.admin.param.UserPwsParm; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.bo.AdminBo; import com.sandu.ximon.dao.domain.Admin; import com.sandu.ximon.dao.domain.AdminRoleRelation; import com.sandu.ximon.dao.domain.Client; import com.sandu.ximon.dao.domain.Role; import com.sandu.ximon.dao.bo.MenuNode; import com.sandu.ximon.dao.domain.*; import com.sandu.ximon.dao.enums.AdministratorEnums; import com.sandu.ximon.dao.mapper.AdminMapper; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -194,4 +196,42 @@ return adminMapper.listAdmin(keyword); } /** * 获取用户权限列表地 */ public List<MenuNode> getUserPermissionList() { List<MenuNode> resultList; //判断超管与普通管理员 if (SecurityUtils.getAdministratorIdentity().equals(AdministratorEnums.ADMIN.getCode())) { //参数为null时,获取所有的菜单权限 resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(null); } else { //通过用户UserID获取用户角色 AdminRoleRelation one = SpringContextHolder.getBean(AdminRoleRelationService.class). getOne(Wrappers.lambdaQuery(AdminRoleRelation.class).eq(AdminRoleRelation::getAdminId, SecurityUtils.getUserId())); //判空 if (one == null) { throw new BusinessException("该用户未绑定角色"); } //通过RoleID获取MeunId列表 List<RoleMenuRelation> menuIdList = SpringContextHolder.getBean(RoleMenuRelationService.class) .list(Wrappers.lambdaQuery(RoleMenuRelation.class).eq(RoleMenuRelation::getRoleId, one.getRoleId())); //判空 if (menuIdList.isEmpty()) { return new ArrayList<>(); } List<Long> menuIds = new ArrayList<>(menuIdList.size()); for (RoleMenuRelation bean : menuIdList) { menuIds.add(bean.getMenuId()); } resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(menuIds); } return resultList; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java
@@ -6,20 +6,24 @@ import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.param.AddClientPrarm; import com.sandu.ximon.admin.param.PwdParam; import com.sandu.ximon.admin.param.UpdateClientPrarm; import com.sandu.ximon.admin.param.UserPwsParm; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.domain.Client; import com.sandu.ximon.dao.domain.ClientRoleRelation; import com.sandu.ximon.dao.domain.Role; import com.sandu.ximon.dao.bo.MenuNode; import com.sandu.ximon.dao.domain.*; import com.sandu.ximon.dao.mapper.AdminMapper; import com.sandu.ximon.dao.mapper.ClientMapper; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Service @AllArgsConstructor @@ -293,4 +297,34 @@ one.setIcon(IconUrl); return updateById(one); } /** * 获取用户权限列表地 */ public List<MenuNode> getUserPermissionList() { //通过用户UserID获取用户角色 ClientRoleRelation one = SpringContextHolder.getBean(ClientRoleRelationService.class). getOne(Wrappers.lambdaQuery(ClientRoleRelation.class).eq(ClientRoleRelation::getClientId, SecurityUtils.getUserId())); //判空 if (one == null) { throw new BusinessException("该用户未绑定角色"); } //通过RoleID获取MeunId列表 List<RoleMenuRelation> menuIdList = SpringContextHolder.getBean(RoleMenuRelationService.class) .list(Wrappers.lambdaQuery(RoleMenuRelation.class).eq(RoleMenuRelation::getRoleId, one.getRoleId())); //判空 if (menuIdList.isEmpty()) { return new ArrayList<>(); } List<Long> menuIds = new ArrayList<>(menuIdList.size()); for (RoleMenuRelation bean : menuIdList) { menuIds.add(bean.getMenuId()); } List<MenuNode> resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(menuIds); return resultList; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/MenuService.java
@@ -54,7 +54,6 @@ public boolean addMenu(MenuParam param) { Menu menu = new Menu(); BeanUtils.copyProperties(param, menu); menu.setPermission(param.getRouterName()); return save(menu); } @@ -97,7 +96,6 @@ Menu menu = new Menu(); BeanUtils.copyProperties(param, menu); menu.setPermission(param.getRouterName()); menu.setId(menuId); return updateById(menu); } @@ -131,4 +129,18 @@ } } /** * 通过菜单ID集合获取菜单实体列表 * * @param menuIds 菜单ID集合 */ public List<MenuNode> getUserPermissionListById(List<Long> menuIds) { List<Menu> menuList = menuMapper.getUserPermissionListById(menuIds); List<MenuNode> resultList = menuList.stream() .filter(menu -> menu.getPid().equals(0L)) .map(menu -> covertMenuNode(menu, menuList)).collect(Collectors.toList()); return resultList; } }