package com.norteksoft.acs.dao.authority; import java.util.List; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Repository; import com.norteksoft.acs.base.enumeration.PermissionAuthorize; import com.norteksoft.acs.entity.authority.DataRule; import com.norteksoft.acs.entity.authority.Permission; import com.norteksoft.product.orm.Page; import com.norteksoft.product.orm.hibernate.HibernateDao; import com.norteksoft.product.util.ContextUtils; @Repository public class PermissionDao extends HibernateDao<Permission, Long>{ public void getPermissions(Page<Permission> page,Long dataRuleId){ this.searchPageByHql(page, "from Permission p where p.dataRule.id=?", dataRuleId); } public void getPermissionsByMenuId(Page<Permission> page,Long menuId,Boolean fast){ this.searchPageByHql(page, "from Permission p where p.menuId=? and p.fastable=?", menuId,fast); } public List<Permission> getPermissionsByDataRule(Long dataRuleId){ return this.find("from Permission p where p.dataRule.id=?", dataRuleId); } public List<Permission> getAllPermissions(){ return this.find("from Permission p where p.companyId=?", ContextUtils.getCompanyId()); } public List<Permission> getPermissionsByDataTableId(Long dataTableId){ return this.find("select p from Permission p join p.dataRule dr where dr.dataTableId=? and p.companyId=? order by priority desc", dataTableId, ContextUtils.getCompanyId()); } public List<Permission> getPermissionsByListViewId(Long listViewId){ return this.find("select p from Permission p join p.dataRule dr where p.companyId=? and p.listViewId = ? order by priority desc", ContextUtils.getCompanyId(),listViewId); } /** * 根据数据规则id删除数据授权 * @param valueOf */ public void deletePermissionByDataRuleId(Long dataRuleId) { this.batchExecute("delete Permission c where c.companyId=? and c.dataRule.id=? ", ContextUtils.getCompanyId(),dataRuleId); } public Permission getPermissions(Integer priority, Integer authority, Long dataRuleId) { List<Permission> permissions=this.find("from Permission p where p.companyId=? and p.priority=? and p.authority=? and p.dataRule.id=? ",ContextUtils.getCompanyId(),priority,authority,dataRuleId); if(permissions!=null&&permissions.size()>0){ return permissions.get(0); }else{ return null; } } /** * 根据系统id获得数据授权 * @param split * @return */ public List<Permission> getPermissionsBySystemId(String[] systemIds) { StringBuilder hql=new StringBuilder(); hql.append("from Permission p where p.companyId=? "); if(systemIds.length>0){ hql.append(" and ("); String condition=""; for(String systemId:systemIds){ if(StringUtils.isNotEmpty(condition)){ condition+=" or "; } condition+="p.dataRule.systemId="+systemId; } hql.append(condition); hql.append(" )"); } return this.find(hql.toString(), ContextUtils.getCompanyId()); } /** * 根据编码获得授权 * @param code * @return */ public Permission getPermissionsByCode(String code) { StringBuilder hql=new StringBuilder(); hql.append("from Permission p where p.companyId=? and p.code=? "); return this.findUnique(hql.toString(),ContextUtils.getCompanyId(),code); } public List<DataRule> getDataRuleByPermission(Long permissionId){ String hql = "select d from Permission p join p.dataRule d where p.companyId=? and p.id=?"; return this.find(hql,ContextUtils.getCompanyId(),permissionId); } public List<Permission> getDefaultCodePermissions(){ String hql = "from Permission p where p.companyId=? and p.code like 'dataAuth-%' " ; return this.find(hql, ContextUtils.getCompanyId()); } /** * 根据数据分类获得数据授权 * @param page * @param dataRuleId * @param fast */ public void getPermissionPageByDataRule(Page<Permission> page,Long dataRuleId){ this.searchPageByHql(page, "from Permission p where p.dataRule.id=? and p.fastable=?", dataRuleId,false); } }