|
@@ -1,11 +1,20 @@
|
|
|
package com.qmth.digit.print.business.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qmth.digit.print.business.bean.dto.PrivilegeDto;
|
|
|
import com.qmth.digit.print.business.entity.SysPrivilege;
|
|
|
+import com.qmth.digit.print.business.entity.SysRolePrivilege;
|
|
|
import com.qmth.digit.print.business.mapper.SysPrivilegeMapper;
|
|
|
import com.qmth.digit.print.business.service.SysPrivilegeService;
|
|
|
+import com.qmth.digit.print.business.service.SysRolePrivilegeService;
|
|
|
+import com.qmth.digit.print.common.enums.ExceptionResultEnum;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 菜单权限表 服务实现类
|
|
@@ -17,4 +26,91 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, SysPrivilege> implements SysPrivilegeService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysRolePrivilegeService sysRolePrivilegeService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<PrivilegeDto> listOrgTree(Long schoolId) {
|
|
|
+ QueryWrapper<SysPrivilege> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(SysPrivilege::getSchoolId, schoolId).orderByAsc(SysPrivilege::getParentId, SysPrivilege::getSortNumber);
|
|
|
+ List<SysPrivilege> orgList = this.list(queryWrapper);
|
|
|
+ Map<Long, PrivilegeDto> map = new LinkedHashMap<>();
|
|
|
+ for (SysPrivilege privilege : orgList) {
|
|
|
+ PrivilegeDto privilegeDto = new PrivilegeDto();
|
|
|
+ privilegeDto.setId(privilege.getId());
|
|
|
+ privilegeDto.setSchoolId(privilege.getSchoolId());
|
|
|
+ privilegeDto.setName(privilege.getName());
|
|
|
+ privilegeDto.setUrl(privilege.getUrl());
|
|
|
+ privilegeDto.setType(privilege.getType());
|
|
|
+ privilegeDto.setParentId(privilege.getParentId());
|
|
|
+ privilegeDto.setSortNumber(privilege.getSortNumber());
|
|
|
+ map.put(privilege.getId(), privilegeDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ Iterator<Long> iterator = map.keySet().iterator();
|
|
|
+ Set<Long> deleteKeys = new HashSet<>();
|
|
|
+ while (iterator.hasNext()) {
|
|
|
+ Long parentId = iterator.next();
|
|
|
+ if (map.get(parentId).getParentId() != null) {
|
|
|
+ map.get(map.get(parentId).getParentId()).getChildren().add(map.get(parentId));
|
|
|
+ deleteKeys.add(parentId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (Long key : deleteKeys) {
|
|
|
+ map.remove(key);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ArrayList<>(map.values());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean savePrivilege(SysPrivilege privilege) {
|
|
|
+ QueryWrapper<SysPrivilege> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(SysPrivilege::getSchoolId, privilege.getSchoolId()).eq(SysPrivilege::getName, privilege.getName());
|
|
|
+ SysPrivilege sysPrivilege = this.getOne(queryWrapper);
|
|
|
+
|
|
|
+ boolean isSuccess;
|
|
|
+
|
|
|
+ // 新增
|
|
|
+ if (privilege.getId() == null) {
|
|
|
+ if (sysPrivilege != null) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("名称已存在");
|
|
|
+ }
|
|
|
+ privilege.setCreateTime(System.currentTimeMillis());
|
|
|
+ isSuccess = this.save(privilege);
|
|
|
+ }
|
|
|
+ // 修改
|
|
|
+ else {
|
|
|
+ if (sysPrivilege != null && privilege.getId() != sysPrivilege.getId()) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("名称已存在");
|
|
|
+ }
|
|
|
+ privilege.setUpdateTime(System.currentTimeMillis());
|
|
|
+ isSuccess = this.updateById(privilege);
|
|
|
+ }
|
|
|
+
|
|
|
+ return isSuccess;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean remove(Long id) {
|
|
|
+ QueryWrapper<SysRolePrivilege> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(SysRolePrivilege::getPrivilegeId, id);
|
|
|
+ List<SysRolePrivilege> sysRolePrivileges = sysRolePrivilegeService.list(queryWrapper);
|
|
|
+ if (sysRolePrivileges != null && sysRolePrivileges.size() > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("权限已绑定,不能删除");
|
|
|
+ }
|
|
|
+ return this.removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> getRolePrivileges(Long roleId) {
|
|
|
+ QueryWrapper<SysRolePrivilege> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(SysRolePrivilege::getRoleId, roleId);
|
|
|
+ List<SysRolePrivilege> sysRolePrivileges = sysRolePrivilegeService.list(queryWrapper);
|
|
|
+ List<Long> list = null;
|
|
|
+ if (sysRolePrivileges != null && sysRolePrivileges.size() > 0) {
|
|
|
+ list = sysRolePrivileges.stream().map(m -> m.getPrivilegeId()).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
}
|