package com.picc.admin.service.ipml; import com.product.common.lang.StringUtils; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.product.core.permission.PermissionService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.module.sys.entity.SystemUser; /** * 权限管理 * * @author */ @Service public class PermissionManagerService extends PermissionService { @Autowired private BaseDao baseDao; /** * 加载用户的权限 * 绵阳市看所有及子公司,子公司看自已公司,设有团队只能看公司范围内的团队的数据 * 每个表中必须要有 org_level_code字段 team_code字段 * @param tableName * @return */ public String loadPermission(String tableName) { boolean orgLevelCodeFlag = false; boolean teamCodeFlag = false; if (!StringUtils.isEmpty(tableName)) { StringBuilder sql = new StringBuilder(256); sql.append("\nselect group_concat(field_name) all_field_name"); sql.append("\nfrom product_sys_datamodel_field f"); sql.append("\ninner join product_sys_datamodel_table t on f.table_uuid=t.uuid and t.table_name=?"); sql.append("\nwhere field_name in ('org_level_code','team_code');"); FieldSetEntity fse = baseDao.getFieldSetEntityBySQL(sql.toString(), new Object[]{tableName}, false); String allFieldName = fse.getString("all_field_name"); orgLevelCodeFlag = !StringUtils.isEmpty(allFieldName) && allFieldName.contains("org_level_code"); teamCodeFlag = !StringUtils.isEmpty(allFieldName) && allFieldName.contains("team_code"); } if (!orgLevelCodeFlag && !teamCodeFlag) { return ""; } SystemUser user = SpringMVCContextHolder.getCurrentUser(); if(user==null) { return " 1=2 "; } StringBuilder filter=new StringBuilder(); String tricode=user.getOrg_level_code(); String team=null; if(!user.isManager() && user.getCurrentStaff()!=null) { team=user.getCurrentStaff().getString("team_code"); } if (orgLevelCodeFlag) { filter.append("org_level_code like '").append(tricode).append("%'"); } if(team != null && teamCodeFlag) { if (filter.length() > 0) { filter.append(" and "); } filter.append("team_code=").append(team); filter.insert(0,"(").append(")"); } return filter.toString(); } public String loadPermission() { return loadPermission(null); } }