Merge pull request '人员卡片按钮自定义' (#53) from feature/dxf into develop

Reviewed-on: #53
pull/56/head
dxfeng 3 years ago
commit afc54c6d1e

@ -13,4 +13,7 @@ import java.util.List;
public interface CardButtonMapper { public interface CardButtonMapper {
List<CardButtonPO> listAll(); List<CardButtonPO> listAll();
List<CardButtonPO> listEnableButton();
} }

@ -36,5 +36,10 @@
from jcl_org_cardbutton where delete_type = 0 from jcl_org_cardbutton where delete_type = 0
</select> </select>
<select id="listEnableButton" resultType="com.engine.organization.entity.personnelcard.po.CardButtonPO">
select
<include refid="baseColumns"/>
from jcl_org_cardbutton t where t.delete_type = 0 and t.status = 1
</select>
</mapper> </mapper>

@ -59,7 +59,7 @@ public interface CardAccessService {
* *
* @return * @return
*/ */
Map<String, Object> getCardButtonFrom(); Map<String, Object> getCardButtonTable();
/** /**
* *

@ -94,18 +94,18 @@ public class CardAccessServiceImpl extends Service implements CardAccessService
} }
@Override @Override
public Map<String, Object> getCardButtonFrom() { public Map<String, Object> getCardButtonTable() {
// 区分主表明细表 // 区分主表明细表
String tableName = "JCL_ORG_CARDBUTTON"; String tableName = "JCL_ORG_CARDBUTTON";
List<ExtendInfoPO> infoPOList = new ArrayList<>(); List<ExtendInfoPO> 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("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(1).browserType("1").customValue("[\"check\"]").showOrder(2).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).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(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("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<String, Object> tabinfoMap = new HashMap<>(); Map<String, Object> tabInfoMap = new HashMap<>();
tabinfoMap.put("columns", ExtendInfoBO.convertInfoListToTable(user, infoPOList, 2, false)); tabInfoMap.put("columns", ExtendInfoBO.convertInfoListToTable(user, infoPOList, 2, false));
// 去除null 元素 // 去除null 元素
List<CardButtonPO> cardButtonPOS = getCardButtonMapper().listAll(); List<CardButtonPO> cardButtonPOS = getCardButtonMapper().listAll();
// 兼容Oracle,map的key转换为小写 // 兼容Oracle,map的key转换为小写
@ -121,10 +121,10 @@ public class CardAccessServiceImpl extends Service implements CardAccessService
return resultMap; return resultMap;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
tabinfoMap.put("datas", collect); tabInfoMap.put("datas", collect);
tabinfoMap.put("api_status", true); tabInfoMap.put("api_status", true);
return tabinfoMap; return tabInfoMap;
} }
@Override @Override

@ -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.extend.po.ExtendTitlePO;
import com.engine.organization.entity.personnelcard.*; import com.engine.organization.entity.personnelcard.*;
import com.engine.organization.entity.personnelcard.po.CardAccessPO; 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.exception.OrganizationRunTimeException;
import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.extend.ExtMapper;
import com.engine.organization.mapper.extend.ExtendGroupMapper; 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.extend.ExtendTitleMapper;
import com.engine.organization.mapper.hrmresource.HrmResourceMapper; import com.engine.organization.mapper.hrmresource.HrmResourceMapper;
import com.engine.organization.mapper.personnelcard.CardAccessMapper; 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.mapper.personnelcard.PersonnelCardMapper;
import com.engine.organization.service.HrmPersonnelCardService; import com.engine.organization.service.HrmPersonnelCardService;
import com.engine.organization.util.OrganizationAssert; import com.engine.organization.util.OrganizationAssert;
@ -72,6 +74,10 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel
return MapperProxyFactory.getProxy(HrmResourceMapper.class); return MapperProxyFactory.getProxy(HrmResourceMapper.class);
} }
private CardButtonMapper getCardButtonMapper() {
return MapperProxyFactory.getProxy(CardButtonMapper.class);
}
@Override @Override
public Map<String, Object> getPersonnelCard(Long uId) { public Map<String, Object> getPersonnelCard(Long uId) {
@ -113,7 +119,7 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel
for (ResourceBaseTab resourceBaseTab : resourceBaseTabList) { for (ResourceBaseTab resourceBaseTab : resourceBaseTabList) {
anchorList.add(Anchor.builder().id("tab" + resourceBaseTab.getId()).title(resourceBaseTab.getGroupName()).build()); anchorList.add(Anchor.builder().id("tab" + resourceBaseTab.getId()).title(resourceBaseTab.getGroupName()).build());
} }
resultMap.put("button", getButtonList(ecResourceId));
resultMap.put("user", userInfo); resultMap.put("user", userInfo);
resultMap.put("statistical", statistical); resultMap.put("statistical", statistical);
resultMap.put("formItems", formItemList); resultMap.put("formItems", formItemList);
@ -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); 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) { } catch (Exception e) {
new BaseBean().writeLog(e); new BaseBean().writeLog(e);
throw new OrganizationRunTimeException("人员卡片权限"); throw new OrganizationRunTimeException("人员卡片权限");
} }
// 角色判断 // 角色判断
if (!hasAccess || org.apache.commons.lang.StringUtils.isNotBlank(cardAccessPO.getCustom())) { if (!hasAccess && StringUtils.isNotBlank(cardAccessPO.getCustom())) {
List<String> accessRoleIds = Arrays.asList(cardAccessPO.getCustom().split(","));
HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); HrmCommonService hrmCommonService = new HrmCommonServiceImpl();
List<Object> roleInfo = hrmCommonService.getRoleInfo(user.getUID()); List<String> roleIds = new ArrayList<>(Arrays.asList(hrmCommonService.getRoleIds(user.getUID()).split(",")));
for (Object o : roleInfo) { List<String> accessRoleIds = new ArrayList<>(Arrays.asList(cardAccessPO.getCustom().split(",")));
Map<String, String> roleDetailMap = (Map<String, String>) o; roleIds.retainAll(accessRoleIds);
int roleId = Util.getIntValue(roleDetailMap.get("roleid"), -1); hasAccess = CollectionUtils.isNotEmpty(roleIds);
// 判断角色是否满足,角色等级是否满足
hasAccess = hasAccess || accessRoleIds.contains(Util.null2String(roleId));
if (hasAccess) {
break;
}
}
} }
return hasAccess; return hasAccess;
} }
/**
*
*
* @param ecResourceId
* @return
*/
private List<CardButtonPO> getButtonList(String ecResourceId) {
boolean isMySelf = ecResourceId.equals(Util.null2String(user.getUID()));
boolean isAdmin = user.isAdmin();
List<CardButtonPO> cardButtonPOS = getCardButtonMapper().listEnableButton();
List<CardButtonPO> buttonList = new ArrayList<>();
HrmCommonService hrmCommonService = new HrmCommonServiceImpl();
List<String> roleIds = new ArrayList<>(Arrays.asList(hrmCommonService.getRoleIds(user.getUID()).split(",")));
for (CardButtonPO cardButton : cardButtonPOS) {
List<String> 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;
}
} }

@ -69,12 +69,12 @@ public class CardAccessController {
} }
@GET @GET
@Path("/getCardButtonFrom") @Path("/getCardButtonTable")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public ReturnResult getCardButtonFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { public ReturnResult getCardButtonTable(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try { try {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return ReturnResult.successed(getCardAccessWrapper(user).getCardButtonFrom()); return ReturnResult.successed(getCardAccessWrapper(user).getCardButtonTable());
} catch (Exception e) { } catch (Exception e) {
return ReturnResult.exceptionHandle(e); return ReturnResult.exceptionHandle(e);
} }

@ -32,7 +32,7 @@ public class CardAccessWrapper extends OrganizationWrapper {
return getCardAccessService(user).save(params); return getCardAccessService(user).save(params);
} }
public Map<String, Object> getCardButtonFrom() { public Map<String, Object> getCardButtonTable() {
return getCardAccessService(user).getCardButtonFrom(); return getCardAccessService(user).getCardButtonTable();
} }
} }

Loading…
Cancel
Save