package com.gkhy.safePlatform.account.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.gkhy.safePlatform.account.model.dto.req.PermissionAddReqDTO; import com.gkhy.safePlatform.account.model.dto.req.PermissionModReqDTO; import com.gkhy.safePlatform.account.model.dto.resp.PermissionRespDTO; import com.gkhy.safePlatform.account.entity.user.PermissionInfo; import com.gkhy.safePlatform.account.entity.user.PermissionInfoDO; import com.gkhy.safePlatform.account.enums.PermissionStatusEnum; import com.gkhy.safePlatform.account.service.PermissionService; import com.gkhy.safePlatform.account.service.baseService.PermissionInfoService; import com.gkhy.safePlatform.account.service.baseService.RolePermissionInfoService; import com.gkhy.safePlatform.commons.co.ContextCacheUser; import com.gkhy.safePlatform.commons.enums.E; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.exception.AusinessException; import com.gkhy.safePlatform.commons.exception.BusinessException; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import com.gkhy.safePlatform.commons.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service("permissionService") public class PermissionServiceImpl implements PermissionService { @Autowired private PermissionInfoService permissionInfoService; @Autowired private RolePermissionInfoService rolePermissionInfoService; @Override public List getEnablePermissions() { List permissions = permissionInfoService.getPermissionsByStatus(PermissionStatusEnum.ENABLED); List result = new ArrayList<>(); PermissionRespDTO permissionRespDTO; for (PermissionInfoDO permissionInfoDO:permissions ) { permissionRespDTO = new PermissionRespDTO(); permissionRespDTO.setPermissionId(permissionInfoDO.getId()); permissionRespDTO.setPermissionCode(permissionInfoDO.getCode()); permissionRespDTO.setPermissionName(permissionInfoDO.getName()); result.add(permissionRespDTO); } return result; } /** * @Description: 新增权限 */ @Override public void addPermission(ContextCacheUser currentUser, PermissionAddReqDTO permissionAddReqDTO) { ; if (StringUtils.isBlank(permissionAddReqDTO.getCode())) { throw new AusinessException(E.DATA_PARAM_NULL,"权限编码不能为空"); } if (StringUtils.isBlank(permissionAddReqDTO.getName())) { throw new AusinessException(E.DATA_PARAM_NULL, "权限名不能为空"); } String code = permissionAddReqDTO.getCode().trim(); String name = permissionAddReqDTO.getName().trim(); PermissionInfo permission; // 编码重复校验 permission = permissionInfoService.getPermissionInfoByCode(code); if (permission != null) { throw new AusinessException(E.DATA_DATABASE_DUPLICATED, "权限编码已存在"); } // 名称校验 permission = permissionInfoService.getPermissionInfoByName(name); if (permission != null) { throw new AusinessException(E.DATA_DATABASE_DUPLICATED, "权限名称已存在"); } PermissionInfo permissionInfo = new PermissionInfo(); permissionInfo.setCode(code); permissionInfo.setName(name); permissionInfo.setInfo(permissionAddReqDTO.getInfo()); permissionInfo.setStatus(PermissionStatusEnum.ENABLED.getCode()); permissionInfo.setGmtCreate(new Date()); permissionInfoService.savePermissionInfo(permissionInfo); } /** * @Description: 修改权限 */ @Override public void modPermission(ContextCacheUser currentUser, PermissionModReqDTO permissionModReqDTO) { ; if (permissionModReqDTO.getId() == null) { throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL); } if (StringUtils.isBlank(permissionModReqDTO.getCode())) { throw new AusinessException(E.DATA_PARAM_NULL,"权限编码不能为空"); } if (StringUtils.isBlank(permissionModReqDTO.getName())) { throw new AusinessException(E.DATA_PARAM_NULL, "权限名不能为空"); } PermissionInfo permissionInfo = permissionInfoService.getById(permissionModReqDTO.getId()); assert permissionInfo.getStatus() != null; PermissionStatusEnum status = PermissionStatusEnum.parse(permissionInfo.getStatus()); if (status != PermissionStatusEnum.ENABLED) { throw new BusinessException(ResultCodes.CLIENT_PERMISSION_NOT_EXIST); } String code = permissionModReqDTO.getCode().trim(); String name = permissionModReqDTO.getName().trim(); PermissionInfo permissionDO; // 编码重复校验 permissionDO = permissionInfoService.getPermissionInfoByCode(code); if (permissionDO != null && !permissionDO.getId().equals(permissionInfo.getId()) ) { throw new AusinessException(E.DATA_DATABASE_DUPLICATED, "权限编码已存在"); } // 名称校验 permissionDO = permissionInfoService.getPermissionInfoByName(name); if (permissionDO != null && !permissionDO.getId().equals(permissionInfo.getId())) { throw new AusinessException(E.DATA_DATABASE_DUPLICATED, "权限名称已存在"); } PermissionInfo permission = new PermissionInfo(); permission.setId(permissionInfo.getId()); permission.setName(name); permission.setCode(code); permission.setInfo(permissionModReqDTO.getInfo()); permission.setGmtModified(new Date()); permissionInfoService.updatePermissionInfo(permission); } @Override @Transactional public void delPermission(ContextCacheUser currentUser, Long id) { if (id == null) { throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL); } PermissionInfo permission = permissionInfoService.getById(id); if (permission == null) { throw new BusinessException(ResultCodes.CLIENT_PERMISSION_NOT_EXIST); } assert permission.getStatus() != null; PermissionStatusEnum status = PermissionStatusEnum.parse(permission.getStatus()); if (status != PermissionStatusEnum.ENABLED) { throw new BusinessException(ResultCodes.CLIENT_PERMISSION_NOT_EXIST); } // 1.更新权限状态 PermissionInfo permissionInfo = new PermissionInfo(); permissionInfo.setId(permission.getId()); permissionInfo.setStatus(PermissionStatusEnum.ABANDONED.getCode()); permissionInfo.setGmtModified(new Date()); permissionInfoService.updatePermissionInfo(permissionInfo); // 2.删除rolePermission 关系 rolePermissionInfoService.unbindByPermissionId(permissionInfo.getId()); } }