package cn.huge.module.rsoper.service; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.ctrole.domain.bo.CtRoleBO; import cn.huge.module.ctuser.domain.po.CtUnit; import cn.huge.module.ctuser.service.CtUnitService; import cn.huge.module.ctuser.service.CtUserService; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.rsoper.dao.mapper.RsRoleMapper; import cn.huge.module.rsoper.domain.dto.RoleMenuTreeDTO; import cn.huge.module.rsoper.domain.dto.RsRoleDTO; import cn.huge.module.rsoper.domain.po.RsRole; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; /** * @author liyj * @version 1.0.0 * @title: 系统角色定义表业务逻辑处理 * @Description 系统角色定义表业务逻辑处理 * @company hugeinfo * @Time 2024-09-10 10:57:02 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class RsRoleService extends ServiceImpl { @Autowired private RsRoleMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private RsRolefunService rsRolefunService; @Resource private CtUserService ctUserService; @Resource private CtUnitService ctUnitService; /** * 更新对象 * * @param entity 对象 */ public void updateRsRole(RsRole entity) { try { mapper.updateRsRole(entity); } catch (Exception e) { log.error("[RsRoleService.updateRsRole]调用失败,异常信息:" + e, e); throw new ServiceException("RsRoleService.updateRsRole", e); } } /** * 条件更新对象 * * @param entity 对象 * @param terms 条件 */ public void updateRsRoleTerms(RsRole entity, Map terms) { try { mapper.updateRsRoleTerms(entity, terms); } catch (Exception e) { log.error("[RsRoleService.updateRsRoleTerms]调用失败,异常信息:" + e, e); throw new ServiceException("RsRoleService.updateRsRoleTerms", e); } } /** * 根据编号物理删除 * * @param id 查询条件集合 */ public void deleteRsRole(String id) { try { mapper.deleteRsRole(id); } catch (Exception e) { log.error("[RsRoleService.deleteRsRole]调用失败,异常信息:" + e, e); throw new ServiceException("RsRoleService.deleteRsRole", e); } } /** * 按条件查询 * * @param terms 条件 * @return List */ public List listTerms(Map terms) { return mapper.listTerms(terms); } /** * 按条件统计 * * @param terms 条件 * @return long */ public long countTerms(Map terms) { return mapper.countTerms(terms); } /** * 按条件分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms) { long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * * @param rsRole 实体对象 */ public void saveRsRole(RsRole rsRole) { try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(rsRole.getId())) { rsRole.setId(utilsClient.getNewTimeId()); rsRole.setCreateTime(nowDate); } rsRole.setUpdateTime(nowDate); this.saveOrUpdate(rsRole); } catch (Exception e) { log.error("[RsRoleService.saveRsRole]调用失败,异常信息:" + e, e); throw new ServiceException("RsRoleService.saveRsRole", e); } } /** * 获取角色的菜单权限 * * @param roleId * @param userId * @return */ public RsRoleDTO webGetRoleMenu(String roleId, String userId) { try { // 查询角色权限树形结构 List roleTrees = rsRolefunService.getRolefunTree(roleId); boolean isBy = false; boolean isFy = false; // 获取当前登录用户 CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); if (loginUser != null) { CtUnit unit = ctUnitService.getById(loginUser.getUnitId()); if (unit != null && "440111".equals(unit.getArea())) { isBy = true; } if (unit != null && unit.getUnitType() != null && 104 == unit.getUnitType()) { isFy = true; } } if (!isBy) { if (roleTrees.size() > 0) { for (RoleMenuTreeDTO dto : roleTrees) { if ("业务处理".equals(dto.getLabel())) { List children = dto.getChildren(); Iterator iterator = children.iterator(); while (iterator.hasNext()) { RoleMenuTreeDTO next = iterator.next(); if ("转入申请".equals(next.getLabel())) { iterator.remove(); } if ("转入初审".equals(next.getLabel())) { iterator.remove(); } if ("转入终审".equals(next.getLabel())) { iterator.remove(); } if ("申请确认".equals(next.getLabel())) { iterator.remove(); } if ("司法确认".equals(next.getLabel())) { iterator.remove(); } if ("法院审查".equals(next.getLabel())) { iterator.remove(); } } } } } } else { if (!isFy) { if (roleTrees.size() > 0) { for (RoleMenuTreeDTO dto : roleTrees) { if ("业务处理".equals(dto.getLabel())) { List children = dto.getChildren(); Iterator iterator = children.iterator(); while (iterator.hasNext()) { RoleMenuTreeDTO next = iterator.next(); if ("司法确认".equals(next.getLabel())) { iterator.remove(); } if ("法院审查".equals(next.getLabel())) { iterator.remove(); } } } } } } } // 封装角色权限信息 RsRole rsRole = this.getById(roleId); RsRoleDTO rsRoleDTO = new RsRoleDTO(); BeanUtils.copyProperties(rsRole, rsRoleDTO); rsRoleDTO.setRoleCode(rsRole.getId()); rsRoleDTO.setRoleTreeBOS(roleTrees); return rsRoleDTO; } catch (Exception e) { log.error("[RsRoleService.webGetRoleMenu]调用失败,异常信息:" + e, e); throw new ServiceException("RsRoleService.webGetRoleMenu", e); } } }