diff --git a/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.java b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.java index aa116087..b2f70821 100644 --- a/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.java +++ b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.java @@ -13,4 +13,7 @@ import java.util.List; public interface CardButtonMapper { List listAll(); + + + List listEnableButton(); } diff --git a/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.xml b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.xml index b5d6bfb5..f8f08369 100644 --- a/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.xml +++ b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.xml @@ -36,5 +36,10 @@ from jcl_org_cardbutton where delete_type = 0 + \ No newline at end of file diff --git a/src/com/engine/organization/service/CardAccessService.java b/src/com/engine/organization/service/CardAccessService.java index 8cf599b6..07c0d3e4 100644 --- a/src/com/engine/organization/service/CardAccessService.java +++ b/src/com/engine/organization/service/CardAccessService.java @@ -59,7 +59,7 @@ public interface CardAccessService { * 卡片按钮表单 * @return */ - Map getCardButtonFrom(); + Map getCardButtonTable(); /** * 保存卡片按钮信息 diff --git a/src/com/engine/organization/service/impl/CardAccessServiceImpl.java b/src/com/engine/organization/service/impl/CardAccessServiceImpl.java index c681f981..695a9811 100644 --- a/src/com/engine/organization/service/impl/CardAccessServiceImpl.java +++ b/src/com/engine/organization/service/impl/CardAccessServiceImpl.java @@ -94,18 +94,18 @@ public class CardAccessServiceImpl extends Service implements CardAccessService } @Override - public Map getCardButtonFrom() { + public Map getCardButtonTable() { // 区分主表明细表 String tableName = "JCL_ORG_CARDBUTTON"; List infoPOList = new ArrayList<>(); - infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("name").fieldNameDesc("按钮名称").fieldType("varchar(50)").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"50\"]").showOrder(1).isSystemDefault(0).build()); - infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("status").fieldNameDesc("启用").fieldType("char(1)").controlType(1).browserType("1").customValue("[\"check\"]").showOrder(2).isSystemDefault(0).build()); - infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("url").fieldNameDesc("跳转地址").fieldType("varchar(1000)").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"1000\"]").showOrder(3).isSystemDefault(0).build()); - infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("roles").fieldNameDesc("角色").fieldType("text").controlType(1).browserType("65").customValue("[\"browser\",{\"valueSpan\":\"多角色\",\"replaceDatas\":[{\"itemorderid\":\"65\",\"name\":\"多角色\",\"id\":\"65\",\"parenttitle\":\"人员\",\"title\":\"人员-多角色\"}],\"value\":\"65\"}]").showOrder(4).isSystemDefault(0).build()); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("name").fieldNameDesc("按钮名称").fieldType("varchar(50)").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"50\"]").showOrder(1).isrequired(0).isSystemDefault(0).build()); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("status").fieldNameDesc("启用").fieldType("char(1)").controlType(4).browserType("1").customValue("[\"check\"]").showOrder(2).isrequired(0).isSystemDefault(0).build()); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("url").fieldNameDesc("跳转地址").fieldType("varchar(1000)").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"1000\"]").showOrder(3).isrequired(0).isSystemDefault(0).build()); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("roles").fieldNameDesc("角色").fieldType("text").controlType(3).browserType("65").customValue("[\"browser\",{\"valueSpan\":\"多角色\",\"replaceDatas\":[{\"itemorderid\":\"65\",\"name\":\"多角色\",\"id\":\"65\",\"parenttitle\":\"人员\",\"title\":\"人员-多角色\"}],\"value\":\"65\"}]").showOrder(4).isrequired(0).isSystemDefault(0).build()); - Map tabinfoMap = new HashMap<>(); - tabinfoMap.put("columns", ExtendInfoBO.convertInfoListToTable(user, infoPOList, 2, false)); + Map tabInfoMap = new HashMap<>(); + tabInfoMap.put("columns", ExtendInfoBO.convertInfoListToTable(user, infoPOList, 2, false)); // 去除null 元素 List cardButtonPOS = getCardButtonMapper().listAll(); // 兼容Oracle,map的key转换为小写 @@ -121,10 +121,10 @@ public class CardAccessServiceImpl extends Service implements CardAccessService return resultMap; }).collect(Collectors.toList()); - tabinfoMap.put("datas", collect); - tabinfoMap.put("api_status", true); + tabInfoMap.put("datas", collect); + tabInfoMap.put("api_status", true); - return tabinfoMap; + return tabInfoMap; } @Override diff --git a/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java b/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java index 407cabae..bc86daca 100644 --- a/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java @@ -11,6 +11,7 @@ import com.engine.organization.entity.extend.po.ExtendInfoPO; import com.engine.organization.entity.extend.po.ExtendTitlePO; import com.engine.organization.entity.personnelcard.*; import com.engine.organization.entity.personnelcard.po.CardAccessPO; +import com.engine.organization.entity.personnelcard.po.CardButtonPO; import com.engine.organization.exception.OrganizationRunTimeException; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.extend.ExtendGroupMapper; @@ -18,6 +19,7 @@ import com.engine.organization.mapper.extend.ExtendInfoMapper; import com.engine.organization.mapper.extend.ExtendTitleMapper; import com.engine.organization.mapper.hrmresource.HrmResourceMapper; import com.engine.organization.mapper.personnelcard.CardAccessMapper; +import com.engine.organization.mapper.personnelcard.CardButtonMapper; import com.engine.organization.mapper.personnelcard.PersonnelCardMapper; import com.engine.organization.service.HrmPersonnelCardService; import com.engine.organization.util.OrganizationAssert; @@ -72,6 +74,10 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel return MapperProxyFactory.getProxy(HrmResourceMapper.class); } + private CardButtonMapper getCardButtonMapper() { + return MapperProxyFactory.getProxy(CardButtonMapper.class); + } + @Override public Map getPersonnelCard(Long uId) { @@ -113,7 +119,7 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel for (ResourceBaseTab resourceBaseTab : resourceBaseTabList) { anchorList.add(Anchor.builder().id("tab" + resourceBaseTab.getId()).title(resourceBaseTab.getGroupName()).build()); } - + resultMap.put("button", getButtonList(ecResourceId)); resultMap.put("user", userInfo); resultMap.put("statistical", statistical); resultMap.put("formItems", formItemList); @@ -229,7 +235,7 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel boolean hasAccess = false; CardAccessPO cardAccessPO = MapperProxyFactory.getProxy(CardAccessMapper.class).selectById(typeId); - if(null==cardAccessPO){ + if (null == cardAccessPO) { return false; } // 所有人,返回true @@ -246,31 +252,50 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel } // 所有上级 - if (!hasAccess || "1".equals(Util.null2String(cardAccessPO.getAllSuperior()))) { + if (!hasAccess && "1".equals(Util.null2String(cardAccessPO.getAllSuperior()))) { String managersIDs = resourceComInfo.getManagersIDs(userId); - hasAccess = hasAccess || Arrays.asList(managersIDs.split(",")).contains(Util.null2String(user.getUID())); + hasAccess = Arrays.asList(managersIDs.split(",")).contains(Util.null2String(user.getUID())); } } catch (Exception e) { new BaseBean().writeLog(e); throw new OrganizationRunTimeException("人员卡片权限"); } // 角色判断 - if (!hasAccess || org.apache.commons.lang.StringUtils.isNotBlank(cardAccessPO.getCustom())) { - List accessRoleIds = Arrays.asList(cardAccessPO.getCustom().split(",")); + if (!hasAccess && StringUtils.isNotBlank(cardAccessPO.getCustom())) { HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); - List roleInfo = hrmCommonService.getRoleInfo(user.getUID()); - for (Object o : roleInfo) { - Map roleDetailMap = (Map) o; - int roleId = Util.getIntValue(roleDetailMap.get("roleid"), -1); - // 判断角色是否满足,角色等级是否满足 - hasAccess = hasAccess || accessRoleIds.contains(Util.null2String(roleId)); - if (hasAccess) { - break; - } - } + List roleIds = new ArrayList<>(Arrays.asList(hrmCommonService.getRoleIds(user.getUID()).split(","))); + List accessRoleIds = new ArrayList<>(Arrays.asList(cardAccessPO.getCustom().split(","))); + roleIds.retainAll(accessRoleIds); + hasAccess = CollectionUtils.isNotEmpty(roleIds); + } return hasAccess; } + /** + * 获取当前人员有权限的按钮,系统管理员展示所有,个人卡片展示系统默认按钮、其余按钮依照配置角色展示 + * + * @param ecResourceId + * @return + */ + private List getButtonList(String ecResourceId) { + boolean isMySelf = ecResourceId.equals(Util.null2String(user.getUID())); + boolean isAdmin = user.isAdmin(); + List cardButtonPOS = getCardButtonMapper().listEnableButton(); + List buttonList = new ArrayList<>(); + HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); + List roleIds = new ArrayList<>(Arrays.asList(hrmCommonService.getRoleIds(user.getUID()).split(","))); + + + for (CardButtonPO cardButton : cardButtonPOS) { + List accessRoleIds = new ArrayList<>(Arrays.asList(cardButton.getRoles().split(","))); + roleIds.retainAll(accessRoleIds); + if (isAdmin || (isMySelf && "0".equals(cardButton.getSysDefault())) || CollectionUtils.isNotEmpty(roleIds)) { + buttonList.add(CardButtonPO.builder().name(cardButton.getName()).url(cardButton.getUrl()).sysDefault(cardButton.getSysDefault()).build()); + } + } + return buttonList; + } + } diff --git a/src/com/engine/organization/web/CardAccessController.java b/src/com/engine/organization/web/CardAccessController.java index 0dccfdaf..0775e1b9 100644 --- a/src/com/engine/organization/web/CardAccessController.java +++ b/src/com/engine/organization/web/CardAccessController.java @@ -69,12 +69,12 @@ public class CardAccessController { } @GET - @Path("/getCardButtonFrom") + @Path("/getCardButtonTable") @Produces(MediaType.APPLICATION_JSON) - public ReturnResult getCardButtonFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public ReturnResult getCardButtonTable(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { User user = HrmUserVarify.getUser(request, response); - return ReturnResult.successed(getCardAccessWrapper(user).getCardButtonFrom()); + return ReturnResult.successed(getCardAccessWrapper(user).getCardButtonTable()); } catch (Exception e) { return ReturnResult.exceptionHandle(e); } diff --git a/src/com/engine/organization/wrapper/CardAccessWrapper.java b/src/com/engine/organization/wrapper/CardAccessWrapper.java index da27ef07..fcfc9605 100644 --- a/src/com/engine/organization/wrapper/CardAccessWrapper.java +++ b/src/com/engine/organization/wrapper/CardAccessWrapper.java @@ -32,7 +32,7 @@ public class CardAccessWrapper extends OrganizationWrapper { return getCardAccessService(user).save(params); } - public Map getCardButtonFrom() { - return getCardAccessService(user).getCardButtonFrom(); + public Map getCardButtonTable() { + return getCardAccessService(user).getCardButtonTable(); } }