首页>代码>基于ssm的微信小程序商城综合管理后台,包括微信小程序和管理后台>/platform/platform-admin/src/main/java/com/platform/aop/DataFilterAspect.java
package com.platform.aop; import com.platform.annotation.DataFilter; import com.platform.entity.SysUserEntity; import com.platform.service.SysRoleDeptService; import com.platform.utils.Constant; import com.platform.utils.RRException; import com.platform.utils.ShiroUtils; import org.apache.commons.lang.StringUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * 数据过滤,切面处理类 * * @author lipengjun * @email 939961241@qq.com * @date 2017年10月23日 下午13:33:35 */ @Aspect @Component public class DataFilterAspect { @Autowired private SysRoleDeptService sysRoleDeptService; @Pointcut("@annotation(com.platform.annotation.DataFilter)") public void dataFilterCut() { } @Before("dataFilterCut()") public void dataFilter(JoinPoint point) throws Throwable { //获取参数 Object params = point.getArgs()[0]; if (params != null && params instanceof Map) { SysUserEntity user = ShiroUtils.getUserEntity(); //如果不是超级管理员,则只能查询本部门及子部门数据 if (user.getUserId() != Constant.SUPER_ADMIN) { Map map = (Map) params; map.put("filterSql", getFilterSQL(user, point)); } return; } throw new RRException("数据权限接口的参数必须为Map类型,且不能为NULL"); } /** * 获取数据过滤的SQL */ private String getFilterSQL(SysUserEntity user, JoinPoint point) { MethodSignature signature = (MethodSignature) point.getSignature(); DataFilter dataFilter = signature.getMethod().getAnnotation(DataFilter.class); String userAlias = dataFilter.userAlias(); String deptAlias = dataFilter.deptAlias(); StringBuilder filterSql = new StringBuilder(); filterSql.append(" and ( "); if (StringUtils.isNotEmpty(deptAlias) || StringUtils.isNotBlank(userAlias)){ // filterSql.append(" 1 = 1 "); if (StringUtils.isNotEmpty(deptAlias)) { //取出登录用户部门权限 String alias = getAliasByUser(user.getUserId()); // filterSql.append(" and "); filterSql.append(deptAlias); filterSql.append(" in "); filterSql.append(" ( "); filterSql.append(alias); filterSql.append(" ) "); if (StringUtils.isNotBlank(userAlias)) { if (dataFilter.self()) { filterSql.append(" or "); } else { filterSql.append(" and "); } } } if (StringUtils.isNotBlank(userAlias)) { //没有部门数据权限,也能查询本人数据 filterSql.append(userAlias); filterSql.append(" = "); filterSql.append(user.getUserId()); filterSql.append(" "); } } else { return ""; } filterSql.append(" ) "); return filterSql.toString(); } /** * 取出用户权限 * * @param userId 登录用户Id * @return 权限 */ private String getAliasByUser(Long userId) { @SuppressWarnings("unchecked") List<Long> roleOrglist = sysRoleDeptService.queryDeptIdListByUserId(userId); StringBuilder roleStr = new StringBuilder(); String alias = ""; if (roleOrglist != null && !roleOrglist.isEmpty()) { for (Long roleId : roleOrglist) { roleStr.append(","); roleStr.append("'"); roleStr.append(roleId); roleStr.append("'"); } alias = roleStr.toString().substring(1, roleStr.length()); } return alias; } }
最近下载更多
1231321321212 LV1
9月18日
tangyongheng08 LV6
5月23日
mariolc LV6
4月3日
janly989713 LV3
3月4日
n2352441 LV4
3月3日
杨豫川 LV12
1月13日
光头强1024 LV7
1月5日
3263394665 LV9
2023年12月1日
lvllvl LV4
2023年7月18日
shuigang1218 LV1
2023年6月18日
最近浏览更多
微信网友_7223624756105216 LV2
11月15日
3053921631
10月21日
暂无贡献等级
lqzixi LV4
10月10日
1231321321212 LV1
9月18日
GG28GG28070 LV5
9月13日
fff2003 LV9
9月12日
颜菜菜 LV2
9月6日
somexi
8月23日
暂无贡献等级
草帽小小鸡 LV7
8月20日
微信网友_6568636353122304
7月15日
暂无贡献等级