New file |
| | |
| | | package com.ycl.service.user.impl; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.entity.dict.DataDictionary; |
| | | import com.ycl.entity.user.*; |
| | | import com.ycl.mapper.dict.DataDictionaryMapper; |
| | | import com.ycl.mapper.user.UmsMenuMapper; |
| | | import com.ycl.mapper.user.UmsResourceMapper; |
| | | import com.ycl.mapper.user.UmsRoleMapper; |
| | | import com.ycl.service.user.UmsAdminCacheService; |
| | | import com.ycl.service.user.UmsRoleMenuRelationService; |
| | | import com.ycl.service.user.UmsRoleResourceRelationService; |
| | | import com.ycl.service.user.UmsRoleService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 后台角色管理Service实现类 |
| | | * Created by macro on 2018/9/30. |
| | | */ |
| | | @Service |
| | | public class UmsRoleServiceImpl extends ServiceImpl<UmsRoleMapper, UmsRole>implements UmsRoleService { |
| | | @Autowired |
| | | private UmsAdminCacheService adminCacheService; |
| | | @Autowired |
| | | private UmsRoleMenuRelationService roleMenuRelationService; |
| | | @Autowired |
| | | private UmsRoleResourceRelationService roleResourceRelationService; |
| | | @Resource |
| | | private UmsMenuMapper umsMenuMapper; |
| | | @Resource |
| | | private UmsResourceMapper umsResourceMapper; |
| | | @Resource |
| | | private DataDictionaryMapper dataDictionaryMapper; |
| | | @Override |
| | | public boolean create(UmsRole role) { |
| | | role.setCreateTime(new Date()); |
| | | role.setAdminCount(0); |
| | | role.setSort(0); |
| | | return save(role); |
| | | } |
| | | |
| | | @Override |
| | | public boolean delete(List<Long> ids) { |
| | | boolean success = removeByIds(ids); |
| | | adminCacheService.delResourceListByRoleIds(ids); |
| | | return success; |
| | | } |
| | | |
| | | @Override |
| | | public Page<UmsRole> list(String keyword, Integer pageSize, Integer pageNum) { |
| | | Page<UmsRole> page = new Page<>(pageNum,pageSize); |
| | | QueryWrapper<UmsRole> wrapper = new QueryWrapper<>(); |
| | | LambdaQueryWrapper<UmsRole> lambda = wrapper.lambda(); |
| | | if(StrUtil.isNotEmpty(keyword)){ |
| | | lambda.like(UmsRole::getName,keyword); |
| | | } |
| | | Page<UmsRole> resultPage = page(page, wrapper); |
| | | List<UmsRole> roles = resultPage.getRecords(); |
| | | List<Long> types = roles.stream().map(UmsRole::getType).collect(Collectors.toList()); |
| | | |
| | | LambdaQueryWrapper<DataDictionary> dicQuery = new LambdaQueryWrapper<>(); |
| | | dicQuery.in(DataDictionary::getId, types); |
| | | List<DataDictionary> dics = dataDictionaryMapper.selectList(dicQuery); |
| | | for (UmsRole role : roles) { |
| | | for (DataDictionary dic : dics) { |
| | | if (dic.getId().equals(role.getType())) { |
| | | role.setTypeText(dic.getName()); |
| | | } |
| | | } |
| | | } |
| | | return resultPage; |
| | | } |
| | | |
| | | @Override |
| | | public List<UmsMenu> getMenuList(Long adminId) { |
| | | return umsMenuMapper.getMenuList(adminId); |
| | | } |
| | | |
| | | @Override |
| | | public List<UmsMenu> listMenu(Long roleId) { |
| | | return umsMenuMapper.getMenuListByRoleId(roleId); |
| | | } |
| | | |
| | | @Override |
| | | public List<UmsResource> listResource(Long roleId) { |
| | | return umsResourceMapper.getResourceListByRoleId(roleId); |
| | | } |
| | | |
| | | @Override |
| | | public int allocMenu(Long roleId, List<Long> menuIds) { |
| | | //先删除原有关系 |
| | | QueryWrapper<UmsRoleMenuRelation> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda().eq(UmsRoleMenuRelation::getRoleId,roleId); |
| | | roleMenuRelationService.remove(wrapper); |
| | | //批量插入新关系 |
| | | List<UmsRoleMenuRelation> relationList = new ArrayList<>(); |
| | | for (Long menuId : menuIds) { |
| | | UmsRoleMenuRelation relation = new UmsRoleMenuRelation(); |
| | | relation.setRoleId(roleId); |
| | | relation.setMenuId(menuId); |
| | | relationList.add(relation); |
| | | } |
| | | roleMenuRelationService.saveBatch(relationList); |
| | | return menuIds.size(); |
| | | } |
| | | |
| | | @Override |
| | | public int allocResource(Long roleId, List<Long> resourceIds) { |
| | | //先删除原有关系 |
| | | QueryWrapper<UmsRoleResourceRelation> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda().eq(UmsRoleResourceRelation::getRoleId,roleId); |
| | | roleResourceRelationService.remove(wrapper); |
| | | //批量插入新关系 |
| | | List<UmsRoleResourceRelation> relationList = new ArrayList<>(); |
| | | for (Long resourceId : resourceIds) { |
| | | UmsRoleResourceRelation relation = new UmsRoleResourceRelation(); |
| | | relation.setRoleId(roleId); |
| | | relation.setResourceId(resourceId); |
| | | relationList.add(relation); |
| | | } |
| | | roleResourceRelationService.saveBatch(relationList); |
| | | adminCacheService.delResourceListByRole(roleId); |
| | | return resourceIds.size(); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean updateStatusBatch(List<Long> ids, Integer status) { |
| | | List<UmsRole> roles = new ArrayList<>(); |
| | | for (Long id : ids) { |
| | | UmsRole umsRole = UmsRole.builder(). |
| | | id(id).status(status).build(); |
| | | roles.add(umsRole); |
| | | } |
| | | updateBatchById(roles,roles.size()); |
| | | adminCacheService.delResourceListByRoleIds(ids); |
| | | return true; |
| | | } |
| | | } |